1 import Base 2 import ./plugin/type.bend as Pl 3 4 # A package on the Bend hub: its name, version (four numbers), entry file and the components it ships. 5 type Package is Data: 6 Package{name: String, version: String, entry: String, components: List<&2, String>} 7 8 # The system's repository on GitHub (owner/name), and whether it is public. 9 type Repository is Data: 10 Repository{name: String, public: Bool} 11 12 # A plugin for Claude Code and Codex: built by its entry's `plugin ` command at its version (semver), 13 # shipping its components, and released into a marketplace: a GitHub repository holding each plugin under 14 # plugins/, listed for Claude Code in .claude-plugin/marketplace.json and for Codex in 15 # .agents/plugins/marketplace.json, and tagged -v. The marketplace is named after its 16 # repository. 17 type Plugin is Data: 18 Plugin{name: String, version: Pl.Version, entry: String, components: List<&2, String>, marketplace: Repository} 19 20 # What the system publishes. 21 type Release is Data: 22 Release{repository: Repository, packages: List<&2, Package>, plugins: List<&2, Plugin>}