Skip to content

Releases: systeminit/swamp

swamp 20260303.011043.0-sha.990678e2

03 Mar 01:11
Immutable release. Only release title and notes can be modified.
990678e

Choose a tag to compare

What's Changed

  • fix: use absolute path for swamp binary in kiro hooks (#574)

Summary

  • Kiro-cli does not perform PATH resolution when executing hook commands, causing No such file or directory (os error 2) errors when the swamp audit record hook fires
  • Resolve the absolute path to the swamp binary at init/upgrade time using which and embed it in the kiro hook configuration
  • Falls back to bare swamp if resolution fails
  • Only affects kiro hooks — Claude, Cursor, and OpenCode handle PATH correctly

Test plan

  • All 63 repo_service tests pass
  • deno check passes
  • deno lint passes
  • deno fmt passes
  • Manual: swamp repo init --tool kiro then verify .kiro/hooks/swamp-audit.json contains absolute path
  • Manual: start kiro-cli and confirm audit hook no longer errors

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260303.011043.0-sha.990678e2/swamp-darwin-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

macOS (Intel):

curl -L https://github.com/systeminit/swamp/releases/download/v20260303.011043.0-sha.990678e2/swamp-darwin-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (x86_64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260303.011043.0-sha.990678e2/swamp-linux-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (aarch64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260303.011043.0-sha.990678e2/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260303.005604.0-sha.bab2b48f

03 Mar 00:56
Immutable release. Only release title and notes can be modified.
bab2b48

Choose a tag to compare

What's Changed

  • feat: add swamp extension yank command (#575)

Summary

  • Add swamp extension yank <extension> [version] --reason <reason> command for yanking extensions from the registry
  • Extension owners can yank their own extensions, admins can yank any extension (authorization enforced server-side)
  • Add yankExtension() method to ExtensionApiClient calling POST /api/v1/extensions/{name}/yank and POST /api/v1/extensions/{name}@{version}/yank

Server-side implementation: https://github.com/systeminit/swamp-club/pull/158
Closes #571

Test plan

  • deno fmt --check — formatting clean
  • deno lint — linting clean
  • deno check — type checking clean
  • deno run test — 2512 tests pass, 0 failures
  • deno run compile — binary recompiled
  • API client tests: POST to correct endpoints (version/extension), auth header, request body, 410 already-yanked error, connection failure
  • Output rendering tests: JSON mode with/without version, cancellation output
  • Manual test against live registry after swamp-club#158 merges

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260303.005604.0-sha.bab2b48f/swamp-darwin-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

macOS (Intel):

curl -L https://github.com/systeminit/swamp/releases/download/v20260303.005604.0-sha.bab2b48f/swamp-darwin-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (x86_64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260303.005604.0-sha.bab2b48f/swamp-linux-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (aarch64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260303.005604.0-sha.bab2b48f/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260302.235049.0-sha.05292a33

02 Mar 23:51
Immutable release. Only release title and notes can be modified.
05292a3

Choose a tag to compare

What's Changed

  • fix: swamp repo upgrade overwrites managed instructions file (#573)

Summary

  • swamp repo upgrade now overwrites the instructions file (CLAUDE.md, .cursor/rules/swamp.mdc, etc.) when content has changed, keeping it in sync with swamp's template
  • Adds updateInstructionsFile method using the existing overwriteIfChanged helper
  • Adds instructionsUpdated field to RepoUpgradeResult and output types
  • Refactors init/upgrade tool dispatch from if/else chains to exhaustive switch statements with assertNever
  • Extracts shared createFileIfNotExists and overwriteIfChanged helpers, eliminating duplicated file-creation logic across tool-specific methods

Test plan

  • Updated test asserting upgrade now overwrites stale instructions content
  • Added test asserting instructionsUpdated: false when content is already current
  • All 63 repo_service tests pass
  • deno check passes
  • deno lint passes
  • deno fmt passes

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.235049.0-sha.05292a33/swamp-darwin-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

macOS (Intel):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.235049.0-sha.05292a33/swamp-darwin-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (x86_64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.235049.0-sha.05292a33/swamp-linux-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (aarch64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.235049.0-sha.05292a33/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260302.232225.0-sha.16e1ce94

02 Mar 23:23
Immutable release. Only release title and notes can be modified.
16e1ce9

Choose a tag to compare

What's Changed

  • feat: add swamp audit command for tracking AI agent actions (#572)

Summary

Introduces swamp audit — a new command that captures every bash tool invocation from AI coding agents via PostToolUse hooks, providing visibility into which commands were run through swamp's managed workflow versus executed directly by the agent.

  • Multi-tool support: Works with Claude Code, Cursor, Kiro, and OpenCode. Each tool has its own hook mechanism; a normalization layer (hook_input.ts) handles payload differences. Codex is unsupported (no per-command hooks) and shows a warning.
  • Hook-based capture: swamp repo init --tool <tool> generates tool-specific hook configs (.claude/settings.local.json, .cursor/hooks.json, .kiro/hooks/swamp-audit.json, .opencode/plugins/swamp-audit.ts). Hooks pipe JSON to swamp audit record --from-hook --tool <tool>.
  • Timeline view: swamp audit reads JSONL logs and categorizes commands as "swamp" (managed) or "direct" (unmanaged), with noise filtering, session filtering, and 7-day retention.
  • Hidden for now: The audit command is hidden from --help while the feature is being tested in real repositories.

Closes #427

Test plan

  • deno check — type checking passes
  • deno lint — linting passes
  • deno fmt — formatting passes
  • deno run test — all 2576 tests pass
  • deno run compile — binary compiles
  • Manual testing: verified audit capture works with OpenCode in a real repository

🤖 Generated with Claude Code

Co-authored-by: Walter Heck walterheck@helixiora.com


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.232225.0-sha.16e1ce94/swamp-darwin-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

macOS (Intel):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.232225.0-sha.16e1ce94/swamp-darwin-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (x86_64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.232225.0-sha.16e1ce94/swamp-linux-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (aarch64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.232225.0-sha.16e1ce94/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260302.220424.0-sha.cc1fb239

02 Mar 22:05
Immutable release. Only release title and notes can be modified.
cc1fb23

Choose a tag to compare

What's Changed

  • docs: remove CLI command sections from design documents (#570)

Summary

  • Remove ## CLI Commands sections from all 7 design documents: agent, extension, inputs, models, repo, vaults, and workflow
  • Fix minor markdown formatting (table alignment, trailing whitespace, italic syntax)

Why

The design documents in design/ describe domain concepts and architecture — entities, aggregates, data flows, and invariants. The ## CLI Commands sections were originally written as implementation specs when building the CLI, but they serve no ongoing purpose:

  1. They drift. The CLI evolves faster than these docs get updated, so the sections become misleading rather than helpful.
  2. They're redundant. Every command already has authoritative --help output and the swamp-* skills provide structured guidance for agents.
  3. They blur the purpose. Design docs should describe what the domain is, not how to invoke it from a terminal. Mixing the two makes the docs harder to use as architectural references.

Files changed

File What was removed
design/agent.md swamp-model and swamp-workflow skill CLI recipes
design/extension.md extension push/pull/rm/list command docs
design/inputs.md CLI input syntax section (key=value, JSON, YAML)
design/models.md model type describe/search, model create/search/get/validate/edit, model method describe/run
design/repo.md repo init/upgrade/index command docs
design/vaults.md vault type search/create/search/get/edit/put/list-keys
design/workflow.md workflow create/validate/search/get/run/edit/history/schema

Test plan

  • No code changes — design docs only
  • Verified no broken cross-references within the remaining content

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.220424.0-sha.cc1fb239/swamp-darwin-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

macOS (Intel):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.220424.0-sha.cc1fb239/swamp-darwin-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (x86_64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.220424.0-sha.cc1fb239/swamp-linux-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (aarch64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.220424.0-sha.cc1fb239/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260302.215131.0-sha.4d0c44f0

02 Mar 21:52
Immutable release. Only release title and notes can be modified.
4d0c44f

Choose a tag to compare

What's Changed

  • feat: add Kiro IDE support to swamp repo init (#569)

Summary

Closes #565

Adds Kiro IDE as a supported AI coding tool for swamp repo init --tool kiro, requested by @danmcclain.

  • Skills: copied to .kiro/skills/ (Kiro's standard skills directory)
  • Steering: .kiro/steering/swamp-rules.md with inclusion: always YAML frontmatter, ensuring rules are loaded in every Kiro session
  • Settings: .vscode/settings.local.json with kiroAgent.trustedCommands: ["swamp *"] — uses Kiro's prefix matching to trust all swamp subcommands with a single entry
  • Gitignore: .kiro/skills/ added to managed section and legacy migration patterns
  • Upgrade: full updateKiroSettings() with merge logic, matching the existing Claude upgrade path

Design differences from the contributor's reference commit

@danmcclain provided a helpful reference commit. This PR takes a different approach in several areas:

Aspect Reference commit This PR
Settings key kiro.allowedCommands kiroAgent.trustedCommands — matches the documented Kiro setting
Trusted commands 26 per-command entries (e.g. swamp model type search *) Single "swamp *" prefix — Kiro uses prefix matching, so one entry trusts all subcommands
Code structure Refactored getClaudeAllowedCommands() into shared getSwampCommands() base Kept getClaudeAllowedCommands() unchanged; Kiro doesn't need per-command entries so a shared base doesn't apply
Steering frontmatter Not added inclusion: always YAML frontmatter per Kiro steering conventions
Upgrade support Not implemented Full updateKiroSettings() with merge logic for swamp repo upgrade --tool kiro
Legacy gitignore Not updated Added .kiro/skills/ and # Kiro skills to migration patterns
Tests 1 test 4 tests covering init, upgrade tool-switch, settings isolation, and gitignore

Test plan

  • deno check — type checking passes
  • deno lint — linting passes
  • deno fmt — formatting passes
  • deno run test src/domain/repo/repo_service_test.ts — all 54 tests pass (4 new)
  • deno run test — full suite (2505 tests) passes
  • deno run compile — binary compiles
  • Manual verification: swamp repo init /tmp/test --tool kiro --include-gitignore creates correct files

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.215131.0-sha.4d0c44f0/swamp-darwin-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

macOS (Intel):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.215131.0-sha.4d0c44f0/swamp-darwin-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (x86_64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.215131.0-sha.4d0c44f0/swamp-linux-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (aarch64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.215131.0-sha.4d0c44f0/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260302.211941.0-sha.9cb888e5

02 Mar 21:20
Immutable release. Only release title and notes can be modified.
9cb888e

Choose a tag to compare

What's Changed

  • feat: send repository URL to registry during extension push (#566)

Summary

  • Add optional repository field to PushMetadata interface in the extension API client
  • Wire manifest.repository through to the push metadata in the extension push command

Why this is correct

The swamp-club registry backend already accepts an optional repository field in both push API endpoints, but the CLI was never sending it — even though the manifest parser already reads the field. This change closes that gap with two minimal additions:

  1. PushMetadata interface (extension_api_client.ts): Adding repository?: string makes the type reflect what the API accepts. The field is optional, so all existing callers remain valid without changes.

  2. Push metadata construction (extension_push.ts): manifest.repository || undefined uses logical-OR coercion so that empty strings ("") become undefined, which JSON.stringify omits entirely. The registry receives either a real URL or no field at all — never a blank string.

User impact

Extension authors who set repository in their extension.yaml manifest will now have that URL visible on the registry after pushing. Authors who don't set it (or leave it empty) see no change — the field is simply absent from the API payload.

Test plan

  • deno check — type-checks pass
  • deno lint — no lint issues
  • deno fmt — formatting clean
  • deno run test — all 2488 tests pass

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.211941.0-sha.9cb888e5/swamp-darwin-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

macOS (Intel):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.211941.0-sha.9cb888e5/swamp-darwin-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (x86_64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.211941.0-sha.9cb888e5/swamp-linux-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (aarch64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.211941.0-sha.9cb888e5/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260302.205621.0-sha.ea0fde08

02 Mar 20:57
Immutable release. Only release title and notes can be modified.
ea0fde0

Choose a tag to compare

What's Changed

  • fix: add spinner progress feedback to swamp update (#564)

Summary

  • Add spinner to swamp update so it no longer appears to hang during download/install
  • Shows "Checking for updates..." for --check and "Updating swamp..." for full update
  • Follows the same Spinner pattern already used in auth login, with try/finally for cleanup
  • Spinner is skipped in --json mode

Test plan

  • deno check passes
  • deno lint passes
  • deno fmt passes
  • New tests in update_test.ts pass (5 tests covering start/stop, error cleanup, and JSON-mode skip)

Fixes #561

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.205621.0-sha.ea0fde08/swamp-darwin-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

macOS (Intel):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.205621.0-sha.ea0fde08/swamp-darwin-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (x86_64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.205621.0-sha.ea0fde08/swamp-linux-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (aarch64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.205621.0-sha.ea0fde08/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260302.205225.0-sha.018ec6d8

02 Mar 20:53
Immutable release. Only release title and notes can be modified.
018ec6d

Choose a tag to compare

What's Changed

  • fix: extract core install logic from pullExtension for clean extension updates (#563)

Summary

Extracts the core install pipeline (download → verify → extract → copy → track)
from pullExtension() into a new installExtension() function that returns
structured data instead of rendering output as a side effect. This fixes several
problems with extension update:

  • Broken JSON outputpullExtension emitted its own JSON objects mid-flow,
    so update output was multiple JSON fragments instead of one valid document
  • Double API calls — update called getExtension() to check versions, then
    pullExtension called it again internally to resolve the version
  • Noisy output — pull-specific messages (resolved, integrity, file list) were
    interleaved with update messages
  • Wrong error types — pull failures were recorded as not_found regardless of
    actual cause (could be safety error, integrity failure, etc.)

Design

installExtension as the shared boundary. Every caller (pull, update,
search) needs the same download→verify→extract→copy→track sequence. They differ
only in what they show the user. The I/O is the shared concern; rendering is
per-caller. installExtension returns an InstallResult with all the data
callers need to render their own way.

Throws on conflicts instead of prompting. The interactive prompt is a UX
decision that belongs to the command layer. Update always forces (overwriting is
the point of an update). Pull wants to ask. By throwing a ConflictError, each
caller handles conflicts its way.

New failed status distinct from not_found. not_found means "extension
doesn't exist in registry" (permanent, from the check phase). failed means
"install blew up" (could be transient network error, safety rejection, integrity
failure). Users and JSON consumers need to distinguish these cases.

Changes

src/cli/commands/extension_pull.ts

  • New InstallResult type — structured return with name, version, files,
    integrity status, safety warnings, conflicts, dependency results
  • New InstallContext type — like PullContext without outputMode
  • New ConflictError — thrown when conflicts exist and !force
  • New installExtension() — pure I/O, no rendering, returns InstallResult
  • Rewrote pullExtension() as thin wrapper: calls installExtension, renders
    result, handles ConflictError with interactive prompt + retry

src/domain/extensions/extension_update_service.ts

  • Added FailedStatus interface (status: "failed")
  • Added to ExtensionUpdateStatus union
  • buildUpdateResult counts "failed" in the failed bucket

src/cli/commands/extension_update.ts

  • Uses installExtension directly instead of pullExtension
  • Passes explicit version: s.latestVersion — no redundant API call
  • Always force: true — updates should overwrite
  • Errors recorded as "failed" (not "not_found") with actual error message

src/presentation/output/extension_update_output.ts

  • Added "failed" case to both renderExtensionUpdateCheck and
    renderExtensionUpdateResult

Test files

  • 11 new tests across service, CLI, and output layers for the failed variant

User Impact

  • swamp extension update now produces clean, non-interleaved output
  • swamp extension update --json returns a single valid JSON document
  • Update errors show the actual failure reason (e.g., "safety error",
    "integrity check failed") instead of misleadingly saying "not found"
  • swamp extension pull behavior is unchanged — same interactive prompts,
    same rendering

Test Plan

  • deno check — all types pass
  • deno lint — clean
  • deno fmt — formatted
  • deno run test — 2488 tests pass, 0 failures
  • deno run compile — binary compiles
  • Manual: installed @stack72/system-extensions@2026.02.26.2, ran
    extension update → upgraded to 2026.02.28.1, ran again → "up to date"
  • Manual: extension update --json produces single valid JSON document

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.205225.0-sha.018ec6d8/swamp-darwin-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

macOS (Intel):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.205225.0-sha.018ec6d8/swamp-darwin-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (x86_64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.205225.0-sha.018ec6d8/swamp-linux-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (aarch64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.205225.0-sha.018ec6d8/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260302.203912.0-sha.b250bb5e

02 Mar 20:40
Immutable release. Only release title and notes can be modified.
b250bb5

Choose a tag to compare

What's Changed

  • feat: check community extensions before building custom models (#562)

Summary

Closes #546

When AI agents are asked to create models for services (e.g., "I need a model
for Tailscale"), they immediately build custom extension models from scratch.
The swamp extension search command already exists (PR #555) but isn't wired
into the model creation workflow — agents and users have no guidance to check
community extensions first.

This PR closes the gap at two levels:

1. Agent guidance updates

  • CLAUDE.md: Adds step 3 to the "Building Automation with Swamp" workflow
    swamp extension search <query> — between local type search and building
    from scratch.
  • swamp-extension-model skill (SKILL.md): Updates the "When to Create a
    Custom Model" decision flow to check community extensions before creating a
    model. Adds a "Search community" row to the Quick Reference table.
  • swamp-extension-model scenarios (references/scenarios.md): Updates all
    4 scenario decision trees to start with checking local types and community
    extensions.

2. User-facing hint in model type search

When model type search returns zero results and the user typed a query, a tip
is shown suggesting swamp extension search <query>:

  • Interactive UI: Displays the hint below "No matching types found" (only
    when a query is present, not when the list is simply empty).
  • JSON output: Adds an optional hint field to TypeSearchData when no
    results match.

Why this is the correct fix

The agent workflow previously was:

local type search → not found → build from scratch

Now it's:

local type search → community extension search → install or build

The guidance changes fix the agent workflow (the primary consumer of skills
and CLAUDE.md). The hint fixes the human workflow — a user who runs
swamp model type search tailscale, gets zero results, and doesn't know what
to do next. Both close the same gap: the missing link between "no local type
found" and "check the community registry."

User impact

  • Agents will now check community extensions before building custom models,
    avoiding duplicate work when a community extension already exists.
  • Users running model type search with no results will see a helpful tip
    pointing them to extension search.
  • No breaking changes — the hint field is optional in TypeSearchData,
    and the interactive hint only appears conditionally.

Test Plan

  • 5 new tests covering hint behavior in both interactive and JSON modes
  • All 2454 existing tests pass
  • deno check, deno lint, deno fmt all pass
  • Binary recompiled successfully

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.203912.0-sha.b250bb5e/swamp-darwin-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

macOS (Intel):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.203912.0-sha.b250bb5e/swamp-darwin-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (x86_64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.203912.0-sha.b250bb5e/swamp-linux-x86_64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

Linux (aarch64):

curl -L https://github.com/systeminit/swamp/releases/download/v20260302.203912.0-sha.b250bb5e/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/