refactor(types): remove Gas Town type constants from beads core (bd-w2zz4)
Remove Gas Town-specific type constants (TypeMolecule, TypeGate, TypeConvoy, TypeMergeRequest, TypeSlot, TypeAgent, TypeRole, TypeRig, TypeEvent, TypeMessage) from internal/types/types.go. Beads now only has core work types built-in: - bug, feature, task, epic, chore All Gas Town types are now purely custom types with no special handling in beads. Use string literals like "gate" or "molecule" when needed, and configure types.custom in config.yaml for validation. Changes: - Remove Gas Town type constants from types.go - Remove mr/mol aliases from Normalize() - Update bd types command to only show core types - Replace all constant usages with string literals throughout codebase - Update tests to use string literals This decouples beads from Gas Town, making it a generic issue tracker. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -77,7 +77,7 @@ func findExistingSwarm(ctx context.Context, s SwarmStorage, epicID string) (*typ
|
||||
// Find a swarm molecule with relates-to dependency to this epic
|
||||
for _, dep := range dependents {
|
||||
// Only consider molecules (GetDependents doesn't populate mol_type, so we fetch full issue)
|
||||
if dep.IssueType != types.TypeMolecule {
|
||||
if dep.IssueType != "molecule" {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ Examples:
|
||||
}
|
||||
|
||||
// Verify it's an epic
|
||||
if epic.IssueType != types.TypeEpic && epic.IssueType != types.TypeMolecule {
|
||||
if epic.IssueType != types.TypeEpic && epic.IssueType != "molecule" {
|
||||
FatalErrorRespectJSON("'%s' is not an epic or molecule (type: %s)", epicID, epic.IssueType)
|
||||
}
|
||||
|
||||
@@ -655,7 +655,7 @@ Examples:
|
||||
var epic *types.Issue
|
||||
|
||||
// Check if it's a swarm molecule - if so, follow the link to the epic
|
||||
if issue.IssueType == types.TypeMolecule && issue.MolType == types.MolTypeSwarm {
|
||||
if issue.IssueType == "molecule" && issue.MolType == types.MolTypeSwarm {
|
||||
// Find linked epic via relates-to dependency
|
||||
deps, err := store.GetDependencyRecords(ctx, issue.ID)
|
||||
if err != nil {
|
||||
@@ -673,7 +673,7 @@ Examples:
|
||||
if epic == nil {
|
||||
FatalErrorRespectJSON("swarm molecule '%s' has no linked epic", issueID)
|
||||
}
|
||||
} else if issue.IssueType == types.TypeEpic || issue.IssueType == types.TypeMolecule {
|
||||
} else if issue.IssueType == types.TypeEpic || issue.IssueType == "molecule" {
|
||||
epic = issue
|
||||
} else {
|
||||
FatalErrorRespectJSON("'%s' is not an epic or swarm molecule (type: %s)", issueID, issue.IssueType)
|
||||
@@ -950,7 +950,7 @@ Examples:
|
||||
var epicTitle string
|
||||
|
||||
// Check if it's an epic or single issue that needs wrapping
|
||||
if issue.IssueType == types.TypeEpic || issue.IssueType == types.TypeMolecule {
|
||||
if issue.IssueType == types.TypeEpic || issue.IssueType == "molecule" {
|
||||
epicID = issue.ID
|
||||
epicTitle = issue.Title
|
||||
} else {
|
||||
@@ -1042,7 +1042,7 @@ Examples:
|
||||
Description: fmt.Sprintf("Swarm molecule orchestrating epic %s.\n\nEpic: %s\nCoordinator: %s", epicID, epicID, coordinator),
|
||||
Status: types.StatusOpen,
|
||||
Priority: epic.Priority,
|
||||
IssueType: types.TypeMolecule,
|
||||
IssueType: "molecule",
|
||||
MolType: types.MolTypeSwarm,
|
||||
Assignee: coordinator,
|
||||
CreatedBy: actor,
|
||||
|
||||
Reference in New Issue
Block a user