Skip to content

Releases: systeminit/swamp

swamp 20260323.195102.0-sha.ab35f1c5

23 Mar 19:52
Immutable release. Only release title and notes can be modified.
ab35f1c

Choose a tag to compare

What's Changed

  • fix: prevent vault secrets from leaking into report data files (#839)

Summary

  • Fix report context in libswamp/models/run.ts to capture args before vault resolution, so reports receive vault expressions (${{ vault.default.password }}) instead of resolved secrets
  • Update design/reports.md: document sensitive argument redaction, pre-vault arg capture, and remove stale buildReportDataHandles reference

Test Plan

  • deno check — passes
  • deno run test — 3501 tests pass
  • deno run compile — succeeds
  • Fixes UAT security_audit_test.ts failure: "Secret found in plaintext in data file: report-swamp-method-summary"

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260323.195102.0-sha.ab35f1c5/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/v20260323.195102.0-sha.ab35f1c5/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/v20260323.195102.0-sha.ab35f1c5/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/v20260323.195102.0-sha.ab35f1c5/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260323.190123.0-sha.661708ca

23 Mar 19:02
Immutable release. Only release title and notes can be modified.
661708c

Choose a tag to compare

What's Changed

  • feat: add built-in method and workflow summary reports (#838)

Summary

  • Add built-in @swamp/method-summary and @swamp/workflow-summary reports that run automatically after method/workflow executions
  • Reports produce both markdown (terminal) and JSON output with consolidated headers, actionable retrieval commands, and sensitive argument redaction
  • Add redactSensitiveArgs() helper on the report context so any report (builtin or extension) can redact values marked { sensitive: true } in Zod schemas
  • Redesigned report output: single-line H1 header, merged arguments section, bold data names, swamp data get retrieval commands, per-handle commands for failed workflow steps

Test Plan

  • All new report logic covered by unit tests (method summary: 11 tests, workflow summary: 7 tests)
  • deno check — passes
  • deno lint — passes
  • deno fmt --check — passes
  • deno run test — 3492 tests pass
  • deno run compile — succeeds

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260323.190123.0-sha.661708ca/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/v20260323.190123.0-sha.661708ca/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/v20260323.190123.0-sha.661708ca/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/v20260323.190123.0-sha.661708ca/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260323.185009.0-sha.f837554b

23 Mar 18:51
Immutable release. Only release title and notes can be modified.
f837554

Choose a tag to compare

What's Changed

  • refactor: port model evaluate and workflow evaluate to libswamp generator + renderer pattern (#837)

Summary

  • Port model evaluate and workflow evaluate CLI commands to the libswamp generator + renderer architecture (Batch 7 of issue #739)
  • Move domain logic from CLI handlers into testable libswamp generators with dependency injection interfaces
  • Create dedicated renderers that reproduce existing log and JSON output byte-for-byte

Details

Model Evaluate

  • New generator src/libswamp/models/evaluate.ts with ModelEvaluateDeps interface, createModelEvaluateDeps() factory, modelEvaluate() async generator, and isModelEvaluateAllData() type guard
  • New renderer src/presentation/renderers/model_evaluate.ts with log and JSON modes matching the exact format strings from the deleted output file
  • CLI handler rewritten as pure orchestration: repo init, pre-lookup for lock target, lock acquisition, consumeStream(), lock release

Workflow Evaluate

  • New generator src/libswamp/workflows/evaluate.ts — the ~200-line evaluateWorkflow() function and resolveForEachTaskExpressions() helper are ported from the CLI handler with only these substitutions:
    • celEvaluator.evaluate()deps.evaluateCel()
    • modelResolver.buildContext()deps.buildExpressionContext()
    • evaluatedWorkflowRepo.save()deps.saveEvaluatedWorkflow()
    • evaluatedWorkflowRepo.getPath()deps.getEvaluatedPath()
    • console.warn()ctx.logger.warn() (routes through LogTape instead of raw stderr — the only intentional behavioral change)
  • New renderer src/presentation/renderers/workflow_evaluate.ts reproducing exact log output including the workflow-specific forEach expansion display
  • CLI handler rewritten as pure orchestration, with input validation and model reference extraction for locking remaining in the CLI layer

Cleanup

  • Deleted src/presentation/output/model_evaluate_output.ts
  • Deleted src/presentation/output/workflow_evaluate_output.ts
  • Added all new types and factories to src/libswamp/mod.ts exports

Files changed

Action File
Create src/libswamp/models/evaluate.ts
Create src/libswamp/models/evaluate_test.ts
Create src/presentation/renderers/model_evaluate.ts
Create src/libswamp/workflows/evaluate.ts
Create src/libswamp/workflows/evaluate_test.ts
Create src/presentation/renderers/workflow_evaluate.ts
Modify src/cli/commands/model_evaluate.ts
Modify src/cli/commands/workflow_evaluate.ts
Modify src/libswamp/mod.ts
Delete src/presentation/output/model_evaluate_output.ts
Delete src/presentation/output/workflow_evaluate_output.ts

Notable design decisions

  • console.warnctx.logger.warn: The workflow evaluate generator had one console.warn call for CEL expression evaluation failures. This now routes through LogTape with the libswamp logger category, which is consistent with the rest of the codebase (no other console.warn calls exist in libswamp or CLI). The message format is unchanged but the output destination shifts from raw stderr to the structured logging pipeline.
  • CLI pre-lookup for locking: Both CLI handlers pre-lookup the model/workflow before acquiring locks (matching the model_method_run.ts pattern), then the generator does its own independent lookup via deps. This means two lookups happen for single-item mode, which is the established pattern for the lock-then-operate flow.
  • Input validation stays in CLI: For workflow evaluate, input schema validation and model reference extraction for per-model locking remain in the CLI layer since they depend on repoContext and are pre-conditions for lock acquisition, not part of the evaluate domain logic.

Test plan

  • deno check — type checking passes
  • deno lint — no lint errors
  • deno fmt — formatting correct
  • deno run test — 3488 tests pass, 0 failures
  • deno run compile — binary recompiles
  • New unit tests for both generators (9 tests total)
  • Integration tests pass: model_evaluate (3), workflow_evaluate (6), forEach (8), vault_cel (11), inputs (16)

Closes #739 (Batch 7)

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260323.185009.0-sha.f837554b/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/v20260323.185009.0-sha.f837554b/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/v20260323.185009.0-sha.f837554b/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/v20260323.185009.0-sha.f837554b/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260323.180018.0-sha.ee1e73ac

23 Mar 18:01
Immutable release. Only release title and notes can be modified.
ee1e73a

Choose a tag to compare

What's Changed

  • fix: always include array fields in extension search JSON output (#836)

Summary

  • Fix regression where extension search --json conditionally omitted platforms, labels, and contentTypes fields when they were empty arrays
  • Consumers (including swamp-uat) expect these fields to always be present as arrays, causing ZodError: expected array, received undefined schema validation failures
  • The conditional pattern was inherited from the old extension_search_output.tsx and carried over during the renderer pattern port in #833

Test plan

  • deno check — type checking passes
  • deno lint — no lint errors
  • Verified JSON output now always includes platforms, labels, and contentTypes as arrays

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260323.180018.0-sha.ee1e73ac/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/v20260323.180018.0-sha.ee1e73ac/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/v20260323.180018.0-sha.ee1e73ac/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/v20260323.180018.0-sha.ee1e73ac/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260323.172311.0-sha.af3271af

23 Mar 17:24
Immutable release. Only release title and notes can be modified.
af3271a

Choose a tag to compare

What's Changed

  • refactor: port extension pull and rm to libswamp generator + renderer pattern (#835)

Summary

  • Port extension pull and extension rm CLI commands to the libswamp generator + renderer pattern, completing Batch 5 of #739
  • Move all domain logic into event-yielding generators (extensionPull, extensionRm) in src/libswamp/extensions/ with testable deps injection
  • Create ExtensionPullRenderer and ExtensionRmRenderer in src/presentation/renderers/ matching existing output exactly
  • Slim CLI commands to pure orchestration: create context → preview → prompt → consumeStream
  • Abstract ExtensionApiClient behind function signatures in deps interfaces (matching extension_push.ts pattern)
  • Define libswamp-local types (ExtensionSafetyWarning, ExtensionRegistryInfo, UpstreamMap) to avoid leaking infrastructure types
  • Factory functions (createExtensionPullDeps, createExtensionRmDeps, createInstallContext) encapsulate infrastructure instantiation

Test plan

  • deno check — type checking passes
  • deno lint — no lint errors
  • deno fmt — formatting clean
  • deno run test — all 3479 tests pass (including 8 new rm tests + 8 new pull tests)
  • deno run compile — binary compiles
  • Verified no CLI commands or renderers import from internal libswamp paths
  • Verified no infrastructure types in deps interfaces
  • Verified output is unchanged (same log lines, same JSON shapes)

Closes #739

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260323.172311.0-sha.af3271af/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/v20260323.172311.0-sha.af3271af/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/v20260323.172311.0-sha.af3271af/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/v20260323.172311.0-sha.af3271af/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260323.140317.0-sha.528d1939

23 Mar 14:04
Immutable release. Only release title and notes can be modified.
528d193

Choose a tag to compare

What's Changed

  • fix: restore extensions key in extension search JSON output (#834)

PR #833 inadvertently renamed the top-level JSON key from "extensions" to "results" in the extension search --json output, breaking the JSON contract for downstream consumers.


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260323.140317.0-sha.528d1939/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/v20260323.140317.0-sha.528d1939/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/v20260323.140317.0-sha.528d1939/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/v20260323.140317.0-sha.528d1939/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260323.133031.0-sha.7ef1c346

23 Mar 13:31
Immutable release. Only release title and notes can be modified.
7ef1c34

Choose a tag to compare

What's Changed

  • refactor: port search commands to libswamp generator + renderer pattern (#833)

refactor: port search commands to libswamp generator + renderer pattern

Summary

Ports all 11 search commands to the libswamp generator + renderer pattern, completing Batch 4 of the CLI migration tracked in #739. This is the largest single batch — search commands required a new SearchRenderer<E, T> interface and a shared generic SearchTUI<T> component to extract the common fzf + keyboard navigation pattern used across all interactive search UIs.

What changed

Every search command now follows the three-layer architecture established in Batches 1-3:

  • Generator (src/libswamp/<domain>/search.ts) — async generator yielding typed resolving | completed | error events. Owns all domain logic: data fetching, entity-to-item conversion, structured filtering, sorting. Dependencies injected via XxxDeps interface for testability.
  • Renderer (src/presentation/renderers/<name>_search.tsx) — implements SearchRenderer<E, T> extending the base Renderer<E> with selectedItem(): T | undefined. Json renderer outputs filtered JSON; Ink renderer launches the interactive TUI and stores the user's selection. Factory function selects renderer by OutputMode.
  • CLI handler — pure orchestration: wire deps from repo context, call consumeStream(generator(...), renderer.handlers()), check renderer.selectedItem(), chain follow-up generators (e.g., modelGet, vaultDescribe) for detail views.

New shared infrastructure

File Purpose
src/presentation/renderers/search_renderer.ts SearchRenderer<E, T> interface extending Renderer<E> with selectedItem()
src/presentation/renderers/components/search_tui.tsx Generic SearchTUI<T> component — fzf fuzzy matching, useScrollableList pagination, keyboard navigation. Each command provides selector and renderItem callbacks.

Commands ported (11)

Command Generator Key detail
type search types/search.ts No repo init, in-memory registry
vault type search vaults/type_search.ts No repo init, vault type registry
model search models/search.ts Repo read-only, JSON auto-select chains modelGet
vault search vaults/search.ts Repo read-only, chains vaultDescribe
model output search models/output_search.ts Shared with method history search
model method history search models/output_search.ts Same generator as model output search
data search data/search.ts Rich filtering (type, lifetime, since, tags, etc.)
workflow run search workflows/run_search.ts Imports parseDuration from data search
workflow history search workflows/history_search.ts Shares item type with run search
workflow search workflows/search.ts JSON auto-select, action menu stays in CLI
extension search extensions/search.ts HTTP API deps, extended selectedAction() interface

Files changed

  • 20 new libswamp files (10 generators + 10 test files with 37 tests)
  • 12 new presentation files (10 renderers + 1 shared interface + 1 shared component)
  • 11 modified CLI command files (rewritten to pure orchestration)
  • 8 deleted old src/presentation/output/*_search_output.tsx files
  • 5 modified adjacent files (import updates for parseDuration/parseTags moved to libswamp)
  • src/libswamp/mod.ts updated with all new exports

Why this is correct

  • Output parity: JSON shapes are unchanged. Interactive TUI uses the same fzf + useScrollableList pattern with identical renderItem layouts.
  • All 3478 tests pass (0 failures), including the existing integration tests for workflow run search --json, workflow search single-match auto-select, filter options, etc.
  • Import rule compliance: All CLI commands and renderers import exclusively from src/libswamp/mod.ts. All internal libswamp modules use relative sibling imports.
  • Pattern consistency: All 10 generators use AsyncGenerator<XxxEvent>, (ctx, deps, input) parameter order, and resolving | completed | error event kinds.
  • deno check, deno lint, deno fmt, deno run test, and deno run compile all pass cleanly.

Not in scope

3 old output files retained (model_search_output.tsx, vault_search_output.tsx, workflow_search_output.tsx) — still imported by edit commands (model edit, vault edit, workflow edit) which are not in Batch 4's scope. These will be cleaned up when the edit commands' search-first mode is migrated.

Closes #739 (Batch 4)

Test plan

  • deno check — type checking passes
  • deno lint — no lint errors (849 files)
  • deno fmt — properly formatted
  • deno run test — 3478 passed, 0 failed
  • deno run compile — binary compiles successfully
  • Manual: run each search command in both --json and interactive modes, verify output parity

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260323.133031.0-sha.7ef1c346/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/v20260323.133031.0-sha.7ef1c346/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/v20260323.133031.0-sha.7ef1c346/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/v20260323.133031.0-sha.7ef1c346/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260323.101947.0-sha.9a83defa

23 Mar 10:20
Immutable release. Only release title and notes can be modified.
9a83def

Choose a tag to compare

What's Changed

  • fix: zodToJsonSchema fallback for z.record(), z.uuid(), z.iso.datetime() (#832)

Summary

  • Add manual fallback converter in zodToJsonSchema() that catches crashes from
    Zod v4's toJSONSchema() on z.record(z.unknown()), z.uuid(), and
    z.iso.datetime() — unblocking extension authors from using these types in
    globalArguments and method schemas
  • Remove duplicate zodToJsonSchema function in type_search.ts, importing
    from libswamp/mod.ts instead
  • Update extension-model skill with a "Supported Zod Types" reference table and
    Quick Start examples using z.uuid(), z.iso.datetime(), and z.record()

Fixes #830

Test plan

  • New schema_helpers_test.ts with 8 test cases covering crash cases
    (z.record, z.uuid, z.iso.datetime), nested combinations, and
    existing working types
  • deno check passes
  • deno lint passes
  • deno fmt passes
  • Full test suite passes (3511 tests)
  • deno run compile succeeds

Co-authored-by: Raymond Masciarella rmasciarella@acrlabs.io


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260323.101947.0-sha.9a83defa/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/v20260323.101947.0-sha.9a83defa/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/v20260323.101947.0-sha.9a83defa/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/v20260323.101947.0-sha.9a83defa/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260323.095644.0-sha.a5378ce7

23 Mar 09:57
Immutable release. Only release title and notes can be modified.
a5378ce

Choose a tag to compare

What's Changed

  • chore: Reintroduce issue responder (#831)

A previous PR removed this because it used the same name as the old file


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260323.095644.0-sha.a5378ce7/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/v20260323.095644.0-sha.a5378ce7/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/v20260323.095644.0-sha.a5378ce7/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/v20260323.095644.0-sha.a5378ce7/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/

swamp 20260322.230849.0-sha.2c936cd8

22 Mar 23:09
Immutable release. Only release title and notes can be modified.
2c936cd

Choose a tag to compare

What's Changed

  • refactor: port datastore commands to libswamp pattern (#829)

Summary

Ports all 4 datastore commands from batch 8 of #739 to the libswamp generator + renderer architecture:

  • datastore status — simple generator yielding config + health data with filesystem/S3/custom verifier support
  • datastore sync — streaming generator with push/pull/full modes; handles S3 (S3CacheSyncService), custom (createSyncService), and unsupported types
  • datastore setup — two generators (datastoreSetupFilesystem, datastoreSetupS3) with validatingmigratingcompleted events; factory includes requireUpgradedRepo/hasSymlinks helpers
  • datastore lock — lock status yields model_lock events before completed; lock release preserves TOCTOU-protected nonce verification via forceRelease(nonce)

Each command follows the established pattern:

Layer Location Responsibility
Generator src/libswamp/datastores/*.ts Domain orchestration via deps injection
Factory createXxxDeps() in generator file Wire real infrastructure
Renderer src/presentation/renderers/datastore_*.ts Log + JSON output matching old shapes
CLI src/cli/commands/datastore_*.ts Pure orchestration

Known trade-offs

  1. datastoreStatus never yields error events — An unhealthy datastore returns completed with healthy: false. Health check failure is data, not an error. The error variant exists for infrastructure exceptions that would bubble uncaught, matching the authLogout pattern.

  2. Raw Deno I/O helpers at module scoperequireUpgradedRepo/hasSymlinks (setup.ts) and scanModelLocks (lock.ts) use Deno.lstat/Deno.readDir/walk. They're private functions only called by factory functions, never by generators. Same accepted pattern as auth/login.ts with readLine/readPassword.

  3. _input on lock release — Generator takes _input: Record<string, never> for (ctx, deps, input) signature consistency. Model-vs-global lock selection happens via which DistributedLock gets injected into deps.

Changes

New files (12):

  • Generators: src/libswamp/datastores/{status,sync,setup,lock}.ts
  • Tests: *_test.ts for each generator (22 total tests)
  • Renderers: src/presentation/renderers/datastore_{status,sync,setup,lock}.ts

Modified (5):

  • CLI commands refactored to pure orchestration
  • src/libswamp/mod.ts — all new types, generators, and factory functions exported

Deleted (1):

  • src/presentation/output/datastore_output.ts — all render functions moved to renderers

Test plan

  • deno check — 0 type errors
  • deno lint — 824 files clean
  • deno fmt --check — 907 files clean
  • deno run test — 3503 passed, 0 failed
  • deno run compile — binary compiles successfully

Partially addresses #739 (batch 8: datastore commands).

🤖 Generated with Claude Code


Installation

macOS (Apple Silicon):

curl -L https://github.com/systeminit/swamp/releases/download/v20260322.230849.0-sha.2c936cd8/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/v20260322.230849.0-sha.2c936cd8/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/v20260322.230849.0-sha.2c936cd8/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/v20260322.230849.0-sha.2c936cd8/swamp-linux-aarch64 -o swamp
chmod +x swamp && sudo mv swamp /usr/local/bin/