Skip to main content
← Back to list
01Issue
BugShippedSwamp CLI
Assigneesstack72

extension source add does not discover brand new types — only overrides already-pulled types

Opened by bixu · 4/21/2026· Shipped 4/21/2026

Description

swamp extension source add is documented as a way to load extensions from a local path, including new types under development. In practice, it only overrides types that were previously pulled from the registry. Brand new types in the source directory are silently ignored.

Steps to Reproduce

  1. Initialize a fresh swamp repo (swamp repo init) with no extensions pulled yet
  2. In a sister repo, create a new extension model with a manifest:
    • extensions/models/my-model.ts exporting @collective/my-model
    • extensions/models/my_model.manifest.yaml
  3. Add the sister repo's models dir as a source:
    swamp extension source add /path/to/sister-repo/extensions/models
    Returns: { "action": "added", "status": "valid" }
  4. Search for the new type:
    swamp model type search my-model
  5. Attempt to describe the new type:
    swamp model type describe @collective/my-model

Expected Behavior

The new type @collective/my-model appears in swamp model type search and is describable/usable without requiring a prior registry publish.

Actual Behavior

  • The type does not appear in swamp model type search
  • swamp model type describe @collective/my-model returns "Model type not found"
  • swamp extension source rm + swamp extension source add (re-adding) does not help
  • swamp repo index does not help

The source directory also contains a manifest for @collective/existing-model, which IS a previously-pulled type. That type continues to appear in search (from its existing pulled bundle), confirming the source path is valid and readable. Only the brand new, never-pulled type is silently ignored.

Environment

  • Swamp version: 20260420.232916.0-sha.858cc512
  • Platform: macOS (darwin)
  • Source path structure:
    extensions/models/
      existing_model.manifest.yaml   # previously-pulled type — works via source override
      my_model.manifest.yaml         # new type, never published — NOT discovered
      my_model.ts

Workaround

Copying or symlinking the .ts file into the consumer repo's own extensions/models/ directory works, since local extensions are always discovered. This suggests the bundling/discovery step for source extensions is skipped when the type has no prior pulled bundle to override.

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 10 MOREREVIEW+ 3 MOREPR_MERGEDSHIPPED

Shipped

4/21/2026, 7:18:29 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack724/21/2026, 3:02:11 PM

Sign in to post a ripple.