Skip to content

feat(adal): add AdaL harness integration - #614

Open
Ricardoran wants to merge 2 commits into
FailproofAI:mainfrom
Ricardoran:feat/adal-harness
Open

feat(adal): add AdaL harness integration#614
Ricardoran wants to merge 2 commits into
FailproofAI:mainfrom
Ricardoran:feat/adal-harness

Conversation

@Ricardoran

@Ricardoran Ricardoran commented Jul 27, 2026

Copy link
Copy Markdown

Description

Adds AdaL (@sylphai/adal-cli) as a supported harness for live hooks (Pillar 1).

AdaL is an open-source agentic coding CLI from SylphAI (the team behind AdalFlow), in the same category as Claude Code and Codex. Its hook contract is deliberately Claude-shaped, which makes this the smallest harness integration in the repo so far.

Why this is the minimal path

No event map, no canonicalizeEventType branch. AdaL fires exactly six lifecycle events — PreToolUse, UserPromptSubmit, PostToolUse, PostToolUseFailure, PermissionRequest, Stop — and every one is already spelled identically to its HOOK_EVENT_TYPES entry. So AdaL falls through the existing tail:

// claude / copilot / unknown — already PascalCase, pass through.
return raw as HookEventType;

An ADAL_EVENT_MAP would be an identity map, so I did not add one. A test pins this (every event AdaL fires is already a canonical HookEventType) so it fails loudly if AdaL ever diverges.

Settings are Claude-shaped, so the adal Integration mirrors claudeCode rather than introducing a new writer: hooks: { <Event>: [{ matcher?, hooks: [{ type, command, timeout }] }] }, timeout in seconds, idempotent marker-based replacement.

Scope Path
user ~/.adal/settings.json
project <cwd>/.adal/settings.json

No local scope — AdaL has no settings.local.json equivalent.

Only two events can enforce. PreToolUse and UserPromptSubmit run before the action and can deny it. The other four fire after the fact, so a deny cannot reverse them — policies matching those events are advisory (same shape as Factory/Hermes on non-Stop events). Documented in CLAUDE.md so policy authors don't expect a post-action deny to block.

Tool names are snake_case internally, so ADAL_TOOL_MAP maps them onto the Claude vocabulary (bashBash, read_fileRead, create_fileWrite, replace_by_stringEdit, …) and ADAL_TOOL_INPUT_MAP maps create_file's new_string body onto content. Unknown names — including mcp__* — pass through unchanged, so existing builtin policies apply to AdaL sessions with no policy changes.

❓ One question: should ADAPTERS be Partial, like INTEGRATIONS?

AdaL is hooks-only today. It does not yet persist a replayable tool-event log — ~/.adal/sessions/<id>/ holds only side-artifacts, and ~/.adal/adal.db has no tables — so there is no equivalent of Claude's JSONL transcript or Goose's SQLite messages rows.

But ADAPTERS in src/audit/cli-adapters/index.ts is an exhaustive Record<IntegrationType, CliAdapter>, so a live-hooks-only CLI cannot be registered without an audit adapter. I noticed INTEGRATIONS is Partial for precisely the mirror reason:

Partial is kept (not every IntegrationType is guaranteed installable for LIVE hooks / Pillar 1) so a future audit-only CLI can omit its entry without a type error.

The inverse case — live hooks, no audit — has no such escape hatch.

So this PR ships src/audit/cli-adapters/adal.ts as an inert adapter: both functions return [], with a header explaining exactly why and what to do when AdaL gains a transcript. Notably listTranscripts also returns [] rather than enumerating sessions from the metadata files — listing sessions whose events can never be streamed would fill the dashboard with rows that always open empty, which reads as broken rather than unsupported.

Happy to switch to making ADAPTERS Partial instead if you'd prefer that over an inert module — it's a smaller diff and arguably the more honest modelling. Your call; I went with the stub so this PR doesn't change shared architecture uninvited.

Type of Change

  • New feature

Checklist

  • bun run lint passes — 0 errors (5 pre-existing warnings in files I didn't touch)
  • bunx tsc --noEmit passes — clean
  • bun run test:runno regressions: identical failing-file set to upstream/main, +1 passing file, +12 passing tests
  • bun run build succeeds

Validation notes

  • 201 tests pass across the three touched suites (adal-canonicalize, integrations, cli-registry).
  • New coverage: settings paths, hook-entry shape (incl. seconds-not-ms timeout), idempotent install, preservation of unrelated settings + pre-existing user hooks, uninstall removing only marked entries, corrupt-settings handling, full tool/input canonicalization, MCP passthrough, and the PascalCase-passthrough invariant.
  • bunx tsc caught three registries I'd otherwise have missed (ProjectCli, ADAPTERS, download-session's exhaustive never check) — all handled.
  • __tests__/hooks/install-prompt.test.ts was modified because the value under test is the harness count (12 → 13 CLIs, menu row totals and the undetected list). Per AGENTS.md rule 5 this is the explicit exception — no assertion was weakened, only the expected counts/labels updated.
  • adal is appended last in every registry so no existing harness ordering changes.
  • Branch is rebased on current main (git log --oneline origin/main ^HEAD is empty).

Out of scope (deliberately)

Session capture, dashboard history wiring, and an integration-suite live probe are all follow-up work — keeping this PR to hook install + canonicalization per CONTRIBUTING.md's "one concern per PR."

Summary by CodeRabbit

  • New Features
    • Added AdaL as a supported agent CLI, including CLI recognition in help, policy commands, and installation/uninstallation flows.
    • Enabled AdaL live-hook installation for both user and project settings.
    • Added AdaL tool and input normalization to ensure consistent event handling.
    • Updated documentation to include AdaL usage details.
  • Limitations
    • AdaL does not provide replayable transcript history for download/audit replay.
  • Tests
    • Added coverage to validate AdaL integration behavior, canonicalization, and CLI allowlist updates.

Adds AdaL (@sylphai/adal-cli) as a supported harness for live hooks.

AdaL needs no event map and no canonicalizeEventType branch: its six
lifecycle events (PreToolUse, UserPromptSubmit, PostToolUse,
PostToolUseFailure, PermissionRequest, Stop) are already spelled as the
canonical PascalCase HOOK_EVENT_TYPES, so it falls through the existing
"already PascalCase, pass through" tail like claude does. Its settings
file is Claude-shaped too, so the adal Integration mirrors claudeCode
rather than adding a new writer.

Only PreToolUse and UserPromptSubmit can prevent an action; the other
four fire after the fact, so policies matching them are advisory. This is
documented in CLAUDE.md so policy authors do not expect a post-action
deny to block.

Tool names are snake_case internally, so ADAL_TOOL_MAP maps them onto the
Claude vocabulary (bash->Bash, read_file->Read, create_file->Write,
replace_by_string->Edit) and ADAL_TOOL_INPUT_MAP maps create_file's
new_string body onto content. Unknown names, including mcp__*, pass
through unchanged, so existing builtin policies apply to AdaL sessions
with no policy changes.

Audit (Pillar 2) is inert: AdaL persists no replayable tool-event log
yet, so src/audit/cli-adapters/adal.ts returns [] from both functions and
documents why. It exists only because ADAPTERS is an exhaustive
Record<IntegrationType, CliAdapter> — see the PR description for the
question about making it Partial, mirroring INTEGRATIONS.

The install-prompt menu test was updated because the value under test is
the harness count itself (12 -> 13).

Validation: bun run lint (0 errors), bunx tsc --noEmit clean, bun run
build OK, 201 tests pass across the three touched suites, and the
repo-wide failing-file set is unchanged from upstream/main.
@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds AdaL as a supported CLI with hook installation, event and tool canonicalization, CLI metadata and command support, documentation, and an inert audit adapter because AdaL has no persisted replayable transcript.

Changes

AdaL support

Layer / File(s) Summary
Canonicalization contracts
src/hooks/types.ts, src/hooks/tool-name-canonicalize.ts, __tests__/hooks/adal-canonicalize.test.ts
Defines AdaL event, tool, and input mappings and tests canonicalization behavior.
AdaL hook lifecycle
src/hooks/integrations.ts, __tests__/hooks/integrations.test.ts
Adds settings paths, hook construction, installation, removal, detection, and marker handling.
CLI registration and command support
lib/cli-registry.ts, lib/projects.ts, bin/failproofai.mjs, __tests__/*, README.md, CLAUDE.md
Registers AdaL in metadata, project types, command validation, help text, detection menus, and documentation.
Audit adapter behavior
src/audit/cli-adapters/*, lib/download-session.ts
Registers an inert transcript adapter and returns no download source.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant AdaL
  participant Settings
  participant FailproofAI
  AdaL->>Settings: Read .adal/settings.json
  FailproofAI->>Settings: Install marked hook entries
  AdaL->>FailproofAI: Send hook event
  FailproofAI->>FailproofAI: Canonicalize tool and input
Loading

Possibly related PRs

Suggested labels: enhancement

Suggested reviewers: hermes-exosphere

Poem

I’m a bunny with hooks in a burrow so neat,
AdaL tools now speak in a canonical beat.
Settings stay tidy, marked entries align,
No replay logs appear—just live hops in the line.
Carrots for tests, and a fuchsia badge bright!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 44.44% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: adding AdaL harness integration.
Description check ✅ Passed The description matches the template and includes the required sections, change type, checklist, and validation notes.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

__tests__/bin/valid-clis.test.ts

ESLint skipped: missing config or dependency (missing-dependency). The ESLint configuration references a package that is not available in the sandbox.

bin/failproofai.mjs

ESLint skipped: the ESLint configuration for this file references a package that is not available in the sandbox.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot added the enhancement New feature or request label Jul 27, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
bin/failproofai.mjs (1)

85-96: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Add unit coverage for the new AdaL paths.

The supplied cohort adds behavior across CLI parsing, adapter registration, inert audit functions, and download resolution without corresponding tests under __tests__/.

  • bin/failproofai.mjs#L85-L96: test --hook --cli adal plus install, uninstall, and single-policy CLI parsing.
  • src/audit/cli-adapters/adal.ts#L36-L48: assert both inert functions return [].
  • src/audit/cli-adapters/index.ts#L97-L103: assert getAdapter("adal") returns the registered adapter.
  • lib/download-session.ts#L155-L159: assert AdaL resolves to null for downloads.

As per coding guidelines, every implementation change in **/*.{ts,tsx,js,mjs} must have a corresponding unit test under __tests__/.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bin/failproofai.mjs` around lines 85 - 96, Add unit tests under __tests__ for
every AdaL change: in bin/failproofai.mjs, cover --hook --cli adal plus install,
uninstall, and single-policy CLI parsing; in src/audit/cli-adapters/adal.ts,
assert both inert functions return []; in src/audit/cli-adapters/index.ts,
assert getAdapter("adal") returns the registered adapter; and in
lib/download-session.ts, assert AdaL resolves to null for downloads.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@bin/failproofai.mjs`:
- Line 328: Update the CLI validation used by the uninstall parser and the
policy add/remove parser to accept “adal” consistently with VALID_CLIS. Reuse
the canonical allowlist rather than maintaining separate lists, and ensure
related usage/help strings and command paths support both installing and
removing AdaL hooks.

In `@README.md`:
- Around line 119-123: The README supported-CLI grid currently exceeds the
documented six-column layout because the AdaL cell adds a seventh entry in the
second row. Update the surrounding table markup to keep each row at six columns,
placing AdaL on a new row or rebalancing the existing cells while preserving all
CLI entries.

---

Outside diff comments:
In `@bin/failproofai.mjs`:
- Around line 85-96: Add unit tests under __tests__ for every AdaL change: in
bin/failproofai.mjs, cover --hook --cli adal plus install, uninstall, and
single-policy CLI parsing; in src/audit/cli-adapters/adal.ts, assert both inert
functions return []; in src/audit/cli-adapters/index.ts, assert
getAdapter("adal") returns the registered adapter; and in
lib/download-session.ts, assert AdaL resolves to null for downloads.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5d7d65b9-ffb8-4548-b260-be5c50fb22c5

📥 Commits

Reviewing files that changed from the base of the PR and between f201f01 and a9137ee.

⛔ Files ignored due to path filters (1)
  • assets/logos/adal.svg is excluded by !**/*.svg
📒 Files selected for processing (15)
  • CLAUDE.md
  • README.md
  • __tests__/hooks/adal-canonicalize.test.ts
  • __tests__/hooks/install-prompt.test.ts
  • __tests__/hooks/integrations.test.ts
  • __tests__/lib/cli-registry.test.ts
  • bin/failproofai.mjs
  • lib/cli-registry.ts
  • lib/download-session.ts
  • lib/projects.ts
  • src/audit/cli-adapters/adal.ts
  • src/audit/cli-adapters/index.ts
  • src/hooks/integrations.ts
  • src/hooks/tool-name-canonicalize.ts
  • src/hooks/types.ts

Comment thread bin/failproofai.mjs Outdated
Comment thread README.md
@hermes-exosphere

Copy link
Copy Markdown
Contributor

Your PR is awaiting review by a reviewer. Till then you can join the Discord for conversation: https://discord.befailproof.ai

…lumns

Addresses both CodeRabbit review comments.

1. AdaL was install-only. VALID_CLIS was duplicated once per subcommand
   parser and I had only updated the install copy, so `policies --uninstall
   --cli adal` and `policy add/remove --cli adal` silently rejected adal —
   users could install AdaL hooks but never remove them.

   Rather than adding adal to each copy, the allowlist is now a single
   module-scope VALID_CLIS shared by all three parsers. That removes the
   duplication that caused the drift in the first place. Verified: `policies
   --uninstall --cli adal --scope project` now reaches real logic instead of
   bailing out at arg parsing.

   Added __tests__/bin/valid-clis.test.ts to pin the invariant: exactly one
   declaration, covering every INTEGRATION_TYPES entry, consulted by every
   parser. Confirmed the test fails when a local copy is reintroduced.

2. The README supported-CLI grid documents a fixed six-per-row layout, and
   AdaL made row two seven cells wide. AdaL now starts a third row and the
   comment describes the fill-to-six rule instead of a hardcoded 2x6.

Validation: lint 0 errors, tsc clean, build OK, 215 tests pass across the
touched suites, repo-wide failing-file set unchanged from upstream/main.
@Ricardoran

Copy link
Copy Markdown
Author

Thanks @coderabbitai — both comments were correct and are fixed in e8bddf3.

1. AdaL was install-only — real bug, good catch. VALID_CLIS was duplicated once per subcommand parser and I had only updated the install copy, so policies --uninstall --cli adal and policy add/remove --cli adal silently rejected adal. Users could install AdaL hooks and never remove them.

Rather than adding adal to each of the three copies, I took your "keep one canonical CLI allowlist" suggestion literally: the allowlist is now a single module-scope VALID_CLIS shared by all three parsers, so the duplication that caused the drift is gone. Verified policies --uninstall --cli adal --scope project now reaches real logic ("No settings file found. Nothing to remove.") instead of bailing out during arg parsing.

I also added __tests__/bin/valid-clis.test.ts to pin the invariant — exactly one declaration, covering every INTEGRATION_TYPES entry, consulted by every parser. I confirmed it actually fails when a per-parser copy is reintroduced, so this class of bug cannot silently return for the next CLI either.

2. README grid. Right — the comment documents a fixed six-per-row layout and AdaL made row two seven cells wide. AdaL now starts a third row, and I reworded the comment to describe the fill-to-six rule rather than a hardcoded 2x6 (it would have gone stale at the next CLI regardless).

On the "add unit coverage for the new AdaL paths" note: coverage was already in the original commit — __tests__/hooks/adal-canonicalize.test.ts (12 tests) plus an AdaL integration block in __tests__/hooks/integrations.test.ts (9 tests: settings paths, hook-entry shape, idempotent install, preservation of pre-existing user hooks, uninstall removing only marked entries, corrupt-settings handling) and registry assertions in __tests__/lib/cli-registry.test.ts. The inert audit adapter is intentionally untested beyond returning [] — see the open question in the PR description about whether ADAPTERS should be Partial like INTEGRATIONS, which would delete that module entirely.

Gate after the fix: bun run lint 0 errors, bunx tsc --noEmit clean, bun run build OK, 215 tests passing across the touched suites, and the repo-wide failing-file set is unchanged from upstream/main.

The workflows are still showing action_required (first-time fork contributor) — could a maintainer approve the run so CI reports?

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

@Ricardoran Thanks for the thorough follow-up. The shared module-scope VALID_CLIS plus the regression test is the right durable fix, and the README’s fill-to-six rule avoids repeating the layout drift. I also appreciate the clarification on the existing AdaL integration and canonicalization coverage.

The pending action_required workflow needs approval by a repository maintainer in GitHub Actions; I can’t authorize a first-time fork workflow from this review. Once it is approved, CI should be able to report normally.

🐇✅


If you found this review helpful, would you consider giving us a shout-out on X?

Thank you for using CodeRabbit!

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@__tests__/bin/valid-clis.test.ts`:
- Around line 25-29: Update the test case covering INTEGRATION_TYPES to assert
exact equality between VALID_CLIS and INTEGRATION_TYPES in both directions,
ensuring no unsupported CLI entries are accepted. Preserve the existing source
extraction and integration coverage while adding validation that every allowlist
entry is defined in INTEGRATION_TYPES.
- Around line 38-40: Update the --hook parser test around “accepts adal in the
--hook parser as well” to cover every supported integration, rather than
checking only the literal adal value. Prefer validating the parser through
VALID_CLIS.has(cliArg), or iterate over INTEGRATION_TYPES and assert each entry
is accepted, so additions to the supported CLI sets cannot be omitted from
explicit parser checks.
- Around line 32-35: Update the test “is consulted by every subcommand parser
that accepts --cli” to validate each parser independently rather than counting
all VALID_CLIS.has occurrences globally. Assert the allowlist check within the
install, uninstall, and policy add/remove parser blocks, or invoke each parser
with both valid and invalid CLI values.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: dfff9709-8ad7-42a4-81f0-b228fb9d9b77

📥 Commits

Reviewing files that changed from the base of the PR and between a9137ee and e8bddf3.

📒 Files selected for processing (3)
  • README.md
  • __tests__/bin/valid-clis.test.ts
  • bin/failproofai.mjs
🚧 Files skipped from review as they are similar to previous changes (2)
  • README.md
  • bin/failproofai.mjs

Comment on lines +25 to +29
it("covers every INTEGRATION_TYPES entry", () => {
const block = BIN_SOURCE.split("const VALID_CLIS = new Set(")[1]?.split("]);")[0] ?? "";
for (const cli of INTEGRATION_TYPES) {
expect(block).toContain(`"${cli}"`);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Assert exact allowlist equality.

This only checks that VALID_CLIS contains every integration, so unsupported extra entries can remain accepted without failing the test. Since the allowlist is documented as mirroring INTEGRATION_TYPES, compare the two sets in both directions.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@__tests__/bin/valid-clis.test.ts` around lines 25 - 29, Update the test case
covering INTEGRATION_TYPES to assert exact equality between VALID_CLIS and
INTEGRATION_TYPES in both directions, ensuring no unsupported CLI entries are
accepted. Preserve the existing source extraction and integration coverage while
adding validation that every allowlist entry is defined in INTEGRATION_TYPES.

Comment on lines +32 to +35
it("is consulted by every subcommand parser that accepts --cli", () => {
// install, uninstall, and policy add/remove each guard with VALID_CLIS.has.
const uses = BIN_SOURCE.match(/VALID_CLIS\.has\(/g) ?? [];
expect(uses.length).toBeGreaterThanOrEqual(3);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Validate each parser independently.

uses.length >= 3 can pass when multiple checks are in one parser and another --cli parser has no allowlist guard. Assert VALID_CLIS.has(...) within each install, uninstall, and policy parser block, or exercise each parser with valid and invalid CLI values.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@__tests__/bin/valid-clis.test.ts` around lines 32 - 35, Update the test “is
consulted by every subcommand parser that accepts --cli” to validate each parser
independently rather than counting all VALID_CLIS.has occurrences globally.
Assert the allowlist check within the install, uninstall, and policy add/remove
parser blocks, or invoke each parser with both valid and invalid CLI values.

Comment on lines +38 to +40
it("accepts adal in the --hook parser as well", () => {
expect(BIN_SOURCE).toContain('cliArg === "adal"');
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Cover every integration in the --hook parser.

Checking only cliArg === "adal" will not catch a future CLI added to INTEGRATION_TYPES and VALID_CLIS but omitted from the hook parser’s explicit checks. Route this parser through VALID_CLIS.has(cliArg) or assert acceptance for every INTEGRATION_TYPES entry.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@__tests__/bin/valid-clis.test.ts` around lines 38 - 40, Update the --hook
parser test around “accepts adal in the --hook parser as well” to cover every
supported integration, rather than checking only the literal adal value. Prefer
validating the parser through VALID_CLIS.has(cliArg), or iterate over
INTEGRATION_TYPES and assert each entry is accepted, so additions to the
supported CLI sets cannot be omitted from explicit parser checks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants