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:
@@ -39,7 +39,7 @@ func TestGateFieldsPreservedAcrossConnections(t *testing.T) {
|
||||
Title: "Test Gate",
|
||||
Status: types.StatusOpen,
|
||||
Priority: 1,
|
||||
IssueType: types.TypeGate,
|
||||
IssueType: "gate",
|
||||
Ephemeral: true,
|
||||
AwaitType: "timer",
|
||||
AwaitID: "5s",
|
||||
|
||||
@@ -292,7 +292,7 @@ func TestRepliesTo(t *testing.T) {
|
||||
Description: "Original content",
|
||||
Status: types.StatusOpen,
|
||||
Priority: 2,
|
||||
IssueType: types.TypeMessage,
|
||||
IssueType: "message",
|
||||
Sender: "alice",
|
||||
Assignee: "bob",
|
||||
Ephemeral: true,
|
||||
@@ -304,7 +304,7 @@ func TestRepliesTo(t *testing.T) {
|
||||
Description: "Reply content",
|
||||
Status: types.StatusOpen,
|
||||
Priority: 2,
|
||||
IssueType: types.TypeMessage,
|
||||
IssueType: "message",
|
||||
Sender: "bob",
|
||||
Assignee: "alice",
|
||||
Ephemeral: true,
|
||||
@@ -360,7 +360,7 @@ func TestRepliesTo_Chain(t *testing.T) {
|
||||
Title: "Message",
|
||||
Status: types.StatusOpen,
|
||||
Priority: 2,
|
||||
IssueType: types.TypeMessage,
|
||||
IssueType: "message",
|
||||
Sender: "user",
|
||||
Assignee: "inbox",
|
||||
Ephemeral: true,
|
||||
@@ -414,7 +414,7 @@ func TestWispField(t *testing.T) {
|
||||
Title: "Wisp Issue",
|
||||
Status: types.StatusOpen,
|
||||
Priority: 2,
|
||||
IssueType: types.TypeMessage,
|
||||
IssueType: "message",
|
||||
Ephemeral: true,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
@@ -467,7 +467,7 @@ func TestWispFilter(t *testing.T) {
|
||||
Title: "Wisp",
|
||||
Status: types.StatusClosed, // Closed for cleanup test
|
||||
Priority: 2,
|
||||
IssueType: types.TypeMessage,
|
||||
IssueType: "message",
|
||||
Ephemeral: true,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
@@ -534,7 +534,7 @@ func TestSenderField(t *testing.T) {
|
||||
Title: "Message",
|
||||
Status: types.StatusOpen,
|
||||
Priority: 2,
|
||||
IssueType: types.TypeMessage,
|
||||
IssueType: "message",
|
||||
Sender: "alice@example.com",
|
||||
Assignee: "bob@example.com",
|
||||
CreatedAt: time.Now(),
|
||||
@@ -565,7 +565,7 @@ func TestMessageType(t *testing.T) {
|
||||
Title: "Test Message",
|
||||
Status: types.StatusOpen,
|
||||
Priority: 2,
|
||||
IssueType: types.TypeMessage,
|
||||
IssueType: "message",
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
}
|
||||
@@ -579,12 +579,12 @@ func TestMessageType(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("GetIssue failed: %v", err)
|
||||
}
|
||||
if saved.IssueType != types.TypeMessage {
|
||||
t.Errorf("IssueType = %q, want %q", saved.IssueType, types.TypeMessage)
|
||||
if saved.IssueType != "message" {
|
||||
t.Errorf("IssueType = %q, want %q", saved.IssueType, "message")
|
||||
}
|
||||
|
||||
// Filter by message type
|
||||
messageType := types.TypeMessage
|
||||
messageType := types.IssueType("message")
|
||||
filter := types.IssueFilter{
|
||||
IssueType: &messageType,
|
||||
}
|
||||
|
||||
@@ -1128,7 +1128,7 @@ func TestUpsertPreservesGateFields(t *testing.T) {
|
||||
Title: "Test Gate",
|
||||
Status: types.StatusOpen,
|
||||
Priority: 1,
|
||||
IssueType: types.TypeGate,
|
||||
IssueType: "gate",
|
||||
Ephemeral: true,
|
||||
AwaitType: "gh:run",
|
||||
AwaitID: "123456789",
|
||||
@@ -1170,7 +1170,7 @@ func TestUpsertPreservesGateFields(t *testing.T) {
|
||||
Title: "Test Gate Updated", // Different title to trigger update
|
||||
Status: types.StatusOpen,
|
||||
Priority: 1,
|
||||
IssueType: types.TypeGate,
|
||||
IssueType: "gate",
|
||||
AwaitType: "", // Empty - simulating JSONL without await fields
|
||||
AwaitID: "", // Empty
|
||||
Timeout: 0,
|
||||
|
||||
@@ -524,14 +524,14 @@ func TestTransactionAddDependency_RepliesTo(t *testing.T) {
|
||||
Title: "Original Message",
|
||||
Status: types.StatusOpen,
|
||||
Priority: 2,
|
||||
IssueType: types.TypeMessage,
|
||||
IssueType: "message",
|
||||
Sender: "alice",
|
||||
}
|
||||
reply := &types.Issue{
|
||||
Title: "Re: Original Message",
|
||||
Status: types.StatusOpen,
|
||||
Priority: 2,
|
||||
IssueType: types.TypeMessage,
|
||||
IssueType: "message",
|
||||
Sender: "bob",
|
||||
}
|
||||
if err := store.CreateIssue(ctx, original, "test-actor"); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user