target

package
v0.14.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 20, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package target provides a GitHub Issues export adapter.

Package target provides a Jira export adapter.

Package target provides export adapters for different execution systems.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Available

func Available() []string

Available returns all registered target names.

func Register

func Register(target Target)

Register adds a target to the registry.

func SyncableTargets added in v0.7.0

func SyncableTargets() []string

SyncableTargets returns names of targets that support sync.

Types

type AIDLCTarget added in v0.6.0

type AIDLCTarget struct{}

AIDLCTarget exports to AWS AI-DLC Workflows format. The target generates input documents for the AIDLC Inception phase: - vision-document.md (from MRD/Press/PRD) - technical-environment.md (from TRD/IRD/context) - imported-requirements.md (combined requirements)

func (*AIDLCTarget) Capabilities added in v0.6.0

func (t *AIDLCTarget) Capabilities() Capabilities

Capabilities returns what this target supports.

func (*AIDLCTarget) Description added in v0.6.0

func (t *AIDLCTarget) Description() string

Description returns a description of the target.

func (*AIDLCTarget) Export added in v0.6.0

func (t *AIDLCTarget) Export(spec string, config ExportConfig) (*ExportResult, error)

Export exports the spec to AIDLC format. The config.Options may include: - "mrd": MRD content for vision document - "prd": PRD content for vision document - "press": Press release content for vision document - "trd": TRD content for technical environment - "ird": IRD content for technical environment - "context": Codebase context for technical environment

func (*AIDLCTarget) Name added in v0.6.0

func (t *AIDLCTarget) Name() string

Name returns the target name.

func (*AIDLCTarget) Validate added in v0.6.0

func (t *AIDLCTarget) Validate(spec string) error

Validate checks if the spec can be exported to this target.

type Agent

type Agent struct {
	ID           string
	Name         string
	Role         string
	Capabilities []string
	Priority     int
}

Agent represents a GasCity agent.

type Bead

type Bead struct {
	ID          string
	Name        string
	Description string
	Status      string   // ready, blocked, done
	BlockedBy   []string // IDs of beads that must complete first
	Agent       string   // Which agent handles this
	Priority    int
}

Bead represents a GasTown bead (unit of work).

type Capabilities

type Capabilities struct {
	SequentialTasks   bool `json:"sequential_tasks"`
	ParallelExecution bool `json:"parallel_execution"`
	MultiAgent        bool `json:"multi_agent"`
	Verification      bool `json:"verification"`
	DependencyGraph   bool `json:"dependency_graph"`
}

Capabilities describes what a target supports.

type ExportConfig

type ExportConfig struct {
	ProjectName string         `json:"project_name"`
	OutputDir   string         `json:"output_dir"`
	Options     map[string]any `json:"options,omitempty"`
}

ExportConfig contains configuration for export.

func ProjectTargetConfig

func ProjectTargetConfig(project *types.Project, targetName string) *ExportConfig

ProjectTargetConfig returns the target config from a project.

type ExportResult

type ExportResult struct {
	Target    string   `json:"target"`
	OutputDir string   `json:"output_dir"`
	Files     []string `json:"files"`
	Success   bool     `json:"success"`
	Message   string   `json:"message,omitempty"`
}

ExportResult contains the result of an export.

type GSDTarget

type GSDTarget struct{}

GSDTarget exports to GSD (Get Shit Done) format. GSD uses PLAN.md with YAML frontmatter, STATE.md for tracking, and .planning/config.json for configuration.

func (*GSDTarget) CanSync added in v0.7.0

func (t *GSDTarget) CanSync(config ExportConfig) bool

CanSync returns whether this target supports syncing.

func (*GSDTarget) Capabilities

func (t *GSDTarget) Capabilities() Capabilities

Capabilities returns what this target supports.

func (*GSDTarget) Description

func (t *GSDTarget) Description() string

Description returns a description of the target.

func (*GSDTarget) Export

func (t *GSDTarget) Export(spec string, config ExportConfig) (*ExportResult, error)

Export exports the spec to GSD format.

func (*GSDTarget) Name

func (t *GSDTarget) Name() string

Name returns the target name.

func (*GSDTarget) Sync added in v0.7.0

func (t *GSDTarget) Sync(config ExportConfig) (*SyncResult, error)

Sync retrieves task state from the exported GSD target.

func (*GSDTarget) Validate

func (t *GSDTarget) Validate(spec string) error

Validate checks if the spec can be exported to this target.

type GasCityTarget

type GasCityTarget struct{}

GasCityTarget exports to GasCity multi-agent format. GasCity orchestrates multiple agents with city.toml, agent definitions, and orders.

func (*GasCityTarget) Capabilities

func (t *GasCityTarget) Capabilities() Capabilities

Capabilities returns what this target supports.

func (*GasCityTarget) Description

func (t *GasCityTarget) Description() string

Description returns a description of the target.

func (*GasCityTarget) Export

func (t *GasCityTarget) Export(spec string, config ExportConfig) (*ExportResult, error)

Export exports the spec to GasCity format.

func (*GasCityTarget) Name

func (t *GasCityTarget) Name() string

Name returns the target name.

func (*GasCityTarget) Validate

func (t *GasCityTarget) Validate(spec string) error

Validate checks if the spec can be exported to this target.

type GasTownTarget

type GasTownTarget struct{}

GasTownTarget exports to GasTown TOML formula format. GasTown uses convoy, workflow, and expansion formulas with Bead definitions.

func (*GasTownTarget) CanSync added in v0.7.0

func (t *GasTownTarget) CanSync(config ExportConfig) bool

CanSync returns whether this target supports syncing.

func (*GasTownTarget) Capabilities

func (t *GasTownTarget) Capabilities() Capabilities

Capabilities returns what this target supports.

func (*GasTownTarget) Description

func (t *GasTownTarget) Description() string

Description returns a description of the target.

func (*GasTownTarget) Export

func (t *GasTownTarget) Export(spec string, config ExportConfig) (*ExportResult, error)

Export exports the spec to GasTown format.

func (*GasTownTarget) Name

func (t *GasTownTarget) Name() string

Name returns the target name.

func (*GasTownTarget) Sync added in v0.7.0

func (t *GasTownTarget) Sync(config ExportConfig) (*SyncResult, error)

Sync retrieves task state from the exported GasTown target.

func (*GasTownTarget) Validate

func (t *GasTownTarget) Validate(spec string) error

Validate checks if the spec can be exported to this target.

type GitHubIssue added in v0.10.0

type GitHubIssue struct {
	Title      string   `json:"title"`
	Body       string   `json:"body"`
	Labels     []string `json:"labels,omitempty"`
	Assignees  []string `json:"assignees,omitempty"`
	Milestone  string   `json:"milestone,omitempty"`
	Project    string   `json:"project,omitempty"`
	State      string   `json:"state,omitempty"`
	Priority   string   `json:"priority,omitempty"`
	TaskID     string   `json:"task_id,omitempty"`
	RequireID  string   `json:"requirement_id,omitempty"`
	AcceptCrit []string `json:"acceptance_criteria,omitempty"`
}

GitHubIssue represents a GitHub issue structure.

type GitHubIssuesExport added in v0.10.0

type GitHubIssuesExport struct {
	Repository string        `json:"repository"`
	ExportedAt time.Time     `json:"exported_at"`
	Source     string        `json:"source"`
	Issues     []GitHubIssue `json:"issues"`
	Milestones []string      `json:"milestones,omitempty"`
	Labels     []string      `json:"labels,omitempty"`
}

GitHubIssuesExport contains the full export structure.

func (*GitHubIssuesExport) GenerateCLICommands added in v0.10.0

func (e *GitHubIssuesExport) GenerateCLICommands() string

GenerateCLICommands generates gh CLI commands to create issues.

type GitHubIssuesTarget added in v0.10.0

type GitHubIssuesTarget struct{}

GitHubIssuesTarget exports specs as GitHub Issues.

func (*GitHubIssuesTarget) Capabilities added in v0.10.0

func (t *GitHubIssuesTarget) Capabilities() Capabilities

Capabilities returns what this target supports.

func (*GitHubIssuesTarget) Convert added in v0.10.0

func (t *GitHubIssuesTarget) Convert(spec string, config ExportConfig) *GitHubIssuesExport

Convert transforms spec content to GitHubIssuesExport.

func (*GitHubIssuesTarget) Description added in v0.10.0

func (t *GitHubIssuesTarget) Description() string

Description returns a description of the target.

func (*GitHubIssuesTarget) Export added in v0.10.0

func (t *GitHubIssuesTarget) Export(spec string, config ExportConfig) (*ExportResult, error)

Export exports the spec to this target.

func (*GitHubIssuesTarget) Name added in v0.10.0

func (t *GitHubIssuesTarget) Name() string

Name returns the target name.

func (*GitHubIssuesTarget) Validate added in v0.10.0

func (t *GitHubIssuesTarget) Validate(spec string) error

Validate checks if the spec can be exported to this target.

type JiraExport added in v0.10.0

type JiraExport struct {
	Project    JiraProject `json:"project"`
	ExportedAt time.Time   `json:"exportedAt"`
	Source     string      `json:"source"`
	Issues     []JiraIssue `json:"issues"`
	Epics      []JiraIssue `json:"epics,omitempty"`
	Components []string    `json:"components,omitempty"`
	Versions   []string    `json:"versions,omitempty"`
}

JiraExport contains the full Jira export structure.

func (*JiraExport) GenerateCSV added in v0.10.0

func (e *JiraExport) GenerateCSV() string

GenerateCSV generates CSV for Jira import.

type JiraIssue added in v0.10.0

type JiraIssue struct {
	Key          string            `json:"key,omitempty"`
	Summary      string            `json:"summary"`
	Description  string            `json:"description"`
	IssueType    string            `json:"issuetype"`
	Priority     string            `json:"priority,omitempty"`
	Labels       []string          `json:"labels,omitempty"`
	Components   []string          `json:"components,omitempty"`
	FixVersions  []string          `json:"fixVersions,omitempty"`
	Sprint       string            `json:"sprint,omitempty"`
	Epic         string            `json:"epic,omitempty"`
	Assignee     string            `json:"assignee,omitempty"`
	Reporter     string            `json:"reporter,omitempty"`
	Status       string            `json:"status,omitempty"`
	StoryPoints  float64           `json:"storyPoints,omitempty"`
	AcceptCrit   string            `json:"acceptanceCriteria,omitempty"`
	CustomFields map[string]string `json:"customFields,omitempty"`
	SubTasks     []JiraIssue       `json:"subtasks,omitempty"`
	RequireID    string            `json:"requirementId,omitempty"`
}

JiraIssue represents a Jira issue structure.

type JiraProject added in v0.10.0

type JiraProject struct {
	Key  string `json:"key"`
	Name string `json:"name,omitempty"`
	URL  string `json:"url,omitempty"`
}

JiraProject contains project metadata.

type JiraTarget added in v0.10.0

type JiraTarget struct{}

JiraTarget exports specs as Jira issues.

func (*JiraTarget) Capabilities added in v0.10.0

func (t *JiraTarget) Capabilities() Capabilities

Capabilities returns what this target supports.

func (*JiraTarget) Convert added in v0.10.0

func (t *JiraTarget) Convert(spec string, config ExportConfig) *JiraExport

Convert transforms spec content to JiraExport.

func (*JiraTarget) Description added in v0.10.0

func (t *JiraTarget) Description() string

Description returns a description of the target.

func (*JiraTarget) Export added in v0.10.0

func (t *JiraTarget) Export(spec string, config ExportConfig) (*ExportResult, error)

Export exports the spec to this target.

func (*JiraTarget) Name added in v0.10.0

func (t *JiraTarget) Name() string

Name returns the target name.

func (*JiraTarget) Validate added in v0.10.0

func (t *JiraTarget) Validate(spec string) error

Validate checks if the spec can be exported to this target.

type MustHaves

type MustHaves struct {
	Truths    []string `json:"truths"`
	Artifacts []string `json:"artifacts"`
	KeyLinks  []string `json:"key_links"`
}

MustHaves represents the GSD must_haves structure.

type OpenSpecAppendix added in v0.10.0

type OpenSpecAppendix struct {
	Glossary    map[string]string   `json:"glossary,omitempty" yaml:"glossary,omitempty"`
	References  []OpenSpecReference `json:"references,omitempty" yaml:"references,omitempty"`
	Diagrams    []string            `json:"diagrams,omitempty" yaml:"diagrams,omitempty"`
	RawSections map[string]string   `json:"raw_sections,omitempty" yaml:"raw_sections,omitempty"`
}

OpenSpecAppendix contains additional reference material.

type OpenSpecConstraint added in v0.10.0

type OpenSpecConstraint struct {
	ID          string `json:"id" yaml:"id"`
	Type        string `json:"type" yaml:"type"` // technical, business, regulatory, timeline
	Description string `json:"description" yaml:"description"`
	Impact      string `json:"impact,omitempty" yaml:"impact,omitempty"`
	Mitigation  string `json:"mitigation,omitempty" yaml:"mitigation,omitempty"`
}

OpenSpecConstraint represents a project constraint.

type OpenSpecCriteria added in v0.10.0

type OpenSpecCriteria struct {
	ID          string `json:"id" yaml:"id"`
	FeatureID   string `json:"feature_id,omitempty" yaml:"feature_id,omitempty"`
	Description string `json:"description" yaml:"description"`
	Type        string `json:"type" yaml:"type"` // functional, performance, security, usability
	Given       string `json:"given,omitempty" yaml:"given,omitempty"`
	When        string `json:"when,omitempty" yaml:"when,omitempty"`
	Then        string `json:"then,omitempty" yaml:"then,omitempty"`
	Status      string `json:"status" yaml:"status"` // pending, passed, failed
}

OpenSpecCriteria represents acceptance criteria.

type OpenSpecDocument added in v0.10.0

type OpenSpecDocument struct {
	Version     string               `json:"version" yaml:"version"`
	Metadata    OpenSpecMetadata     `json:"metadata" yaml:"metadata"`
	Overview    OpenSpecOverview     `json:"overview" yaml:"overview"`
	Features    []OpenSpecFeature    `json:"features" yaml:"features"`
	Tasks       []OpenSpecTask       `json:"tasks" yaml:"tasks"`
	Acceptance  []OpenSpecCriteria   `json:"acceptance" yaml:"acceptance"`
	Constraints []OpenSpecConstraint `json:"constraints,omitempty" yaml:"constraints,omitempty"`
	Appendix    *OpenSpecAppendix    `json:"appendix,omitempty" yaml:"appendix,omitempty"`
}

OpenSpecDocument is the root document structure.

type OpenSpecFeature added in v0.10.0

type OpenSpecFeature struct {
	ID           string                 `json:"id" yaml:"id"`
	Name         string                 `json:"name" yaml:"name"`
	Description  string                 `json:"description" yaml:"description"`
	Priority     string                 `json:"priority" yaml:"priority"` // must, should, could, wont
	Status       string                 `json:"status" yaml:"status"`     // proposed, approved, implemented, verified
	Category     string                 `json:"category,omitempty" yaml:"category,omitempty"`
	Requirements []OpenSpecRequirement  `json:"requirements" yaml:"requirements"`
	Dependencies []string               `json:"dependencies,omitempty" yaml:"dependencies,omitempty"`
	Metadata     map[string]interface{} `json:"metadata,omitempty" yaml:"metadata,omitempty"`
}

OpenSpecFeature represents a product feature.

type OpenSpecMetadata added in v0.10.0

type OpenSpecMetadata struct {
	Project     string            `json:"project" yaml:"project"`
	Title       string            `json:"title,omitempty" yaml:"title,omitempty"`
	Description string            `json:"description,omitempty" yaml:"description,omitempty"`
	Author      string            `json:"author,omitempty" yaml:"author,omitempty"`
	CreatedAt   time.Time         `json:"created_at" yaml:"created_at"`
	UpdatedAt   time.Time         `json:"updated_at" yaml:"updated_at"`
	Status      string            `json:"status" yaml:"status"` // draft, approved, implemented
	Tags        []string          `json:"tags,omitempty" yaml:"tags,omitempty"`
	Labels      map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
	SourceSpec  string            `json:"source_spec,omitempty" yaml:"source_spec,omitempty"`
}

OpenSpecMetadata contains document metadata.

type OpenSpecOverview added in v0.10.0

type OpenSpecOverview struct {
	Problem    string   `json:"problem" yaml:"problem"`
	Solution   string   `json:"solution" yaml:"solution"`
	Goals      []string `json:"goals" yaml:"goals"`
	NonGoals   []string `json:"non_goals,omitempty" yaml:"non_goals,omitempty"`
	Audience   []string `json:"audience,omitempty" yaml:"audience,omitempty"`
	Milestones []string `json:"milestones,omitempty" yaml:"milestones,omitempty"`
}

OpenSpecOverview provides project overview.

type OpenSpecReference added in v0.10.0

type OpenSpecReference struct {
	Title string `json:"title" yaml:"title"`
	URL   string `json:"url,omitempty" yaml:"url,omitempty"`
	Type  string `json:"type,omitempty" yaml:"type,omitempty"`
}

OpenSpecReference represents a reference document.

type OpenSpecRequirement added in v0.10.0

type OpenSpecRequirement struct {
	ID           string `json:"id" yaml:"id"`
	Type         string `json:"type" yaml:"type"` // functional, nonfunctional, constraint
	Description  string `json:"description" yaml:"description"`
	Rationale    string `json:"rationale,omitempty" yaml:"rationale,omitempty"`
	Priority     string `json:"priority" yaml:"priority"`
	Status       string `json:"status" yaml:"status"`
	Verification string `json:"verification,omitempty" yaml:"verification,omitempty"`
}

OpenSpecRequirement represents a specific requirement.

type OpenSpecTarget added in v0.10.0

type OpenSpecTarget struct{}

OpenSpecTarget exports to OpenSpec portable format. OpenSpec is a standardized JSON/YAML schema for requirements that can be imported by various tools and systems.

func (*OpenSpecTarget) Capabilities added in v0.10.0

func (t *OpenSpecTarget) Capabilities() Capabilities

Capabilities returns what this target supports.

func (*OpenSpecTarget) Description added in v0.10.0

func (t *OpenSpecTarget) Description() string

Description returns a description of the target.

func (*OpenSpecTarget) Export added in v0.10.0

func (t *OpenSpecTarget) Export(spec string, config ExportConfig) (*ExportResult, error)

Export exports the spec to OpenSpec format.

func (*OpenSpecTarget) Name added in v0.10.0

func (t *OpenSpecTarget) Name() string

Name returns the target name.

func (*OpenSpecTarget) Validate added in v0.10.0

func (t *OpenSpecTarget) Validate(spec string) error

Validate checks if the spec can be exported to this target.

type OpenSpecTask added in v0.10.0

type OpenSpecTask struct {
	ID          string   `json:"id" yaml:"id"`
	Title       string   `json:"title" yaml:"title"`
	Description string   `json:"description,omitempty" yaml:"description,omitempty"`
	Type        string   `json:"type" yaml:"type"` // feature, bugfix, refactor, docs, test
	Priority    string   `json:"priority" yaml:"priority"`
	Status      string   `json:"status" yaml:"status"` // todo, in_progress, done, blocked
	Assignee    string   `json:"assignee,omitempty" yaml:"assignee,omitempty"`
	FeatureID   string   `json:"feature_id,omitempty" yaml:"feature_id,omitempty"`
	DependsOn   []string `json:"depends_on,omitempty" yaml:"depends_on,omitempty"`
	Blocks      []string `json:"blocks,omitempty" yaml:"blocks,omitempty"`
	Estimate    string   `json:"estimate,omitempty" yaml:"estimate,omitempty"`
	Labels      []string `json:"labels,omitempty" yaml:"labels,omitempty"`
}

OpenSpecTask represents an implementation task.

type Order

type Order struct {
	ID          string
	Description string
	AssignedTo  string   // Agent ID
	DependsOn   []string // Order IDs
	Status      string   // pending, in_progress, complete
	Priority    int
}

Order represents a GasCity order (task assignment).

type Phase

type Phase struct {
	Name        string   `json:"name"`
	Description string   `json:"description"`
	Tasks       []string `json:"tasks"`
	Wave        int      `json:"wave"`
}

Phase represents a GSD phase.

type SpecKitTarget

type SpecKitTarget struct{}

SpecKitTarget exports to GitHub Spec-Kit format.

func (*SpecKitTarget) CanSync added in v0.7.0

func (t *SpecKitTarget) CanSync(config ExportConfig) bool

CanSync returns whether this target supports syncing.

func (*SpecKitTarget) Capabilities

func (t *SpecKitTarget) Capabilities() Capabilities

Capabilities returns what this target supports.

func (*SpecKitTarget) Description

func (t *SpecKitTarget) Description() string

Description returns a description of the target.

func (*SpecKitTarget) Export

func (t *SpecKitTarget) Export(spec string, config ExportConfig) (*ExportResult, error)

Export exports the spec to SpecKit format.

func (*SpecKitTarget) Name

func (t *SpecKitTarget) Name() string

Name returns the target name.

func (*SpecKitTarget) Sync added in v0.7.0

func (t *SpecKitTarget) Sync(config ExportConfig) (*SyncResult, error)

Sync retrieves task state from the exported SpecKit target.

func (*SpecKitTarget) Validate

func (t *SpecKitTarget) Validate(spec string) error

Validate checks if the spec can be exported to this target.

type SyncResult added in v0.7.0

type SyncResult struct {
	Target   string      `json:"target"`
	SyncedAt time.Time   `json:"synced_at"`
	Tasks    []TaskState `json:"tasks"`
	Summary  SyncSummary `json:"summary"`
}

SyncResult contains the result of a sync operation.

type SyncSummary added in v0.7.0

type SyncSummary struct {
	TotalTasks int `json:"total_tasks"`
	TodoCount  int `json:"todo_count"`
	InProgress int `json:"in_progress"`
	DoneCount  int `json:"done_count"`
}

SyncSummary provides aggregate task statistics.

type Syncer added in v0.7.0

type Syncer interface {
	// CanSync returns whether this target supports syncing.
	CanSync(config ExportConfig) bool

	// Sync retrieves task state from the exported target.
	Sync(config ExportConfig) (*SyncResult, error)
}

Syncer defines the interface for targets that support bidirectional sync. This is an optional interface that targets can implement.

func GetSyncer added in v0.7.0

func GetSyncer(name string) (Syncer, error)

GetSyncer checks if a target implements Syncer and returns it.

type Target

type Target interface {
	// Name returns the target name.
	Name() string

	// Description returns a description of the target.
	Description() string

	// Capabilities returns what this target supports.
	Capabilities() Capabilities

	// Validate checks if the spec can be exported to this target.
	Validate(spec string) error

	// Export exports the spec to this target.
	Export(spec string, config ExportConfig) (*ExportResult, error)
}

Target defines the interface for export adapters.

func Get

func Get(name string) (Target, error)

Get retrieves a target by name.

type TargetInfo

type TargetInfo struct {
	Name         string       `json:"name"`
	Description  string       `json:"description"`
	Capabilities Capabilities `json:"capabilities"`
}

TargetInfo contains information about a target.

func ListTargets

func ListTargets() []TargetInfo

ListTargets returns information about all registered targets.

type Task

type Task struct {
	ID          string   `json:"id"`
	Description string   `json:"description"`
	Status      string   `json:"status"` // todo, in_progress, done
	Priority    string   `json:"priority"`
	DependsOn   []string `json:"depends_on,omitempty"`
}

Task represents a GSD task.

type TaskState added in v0.7.0

type TaskState struct {
	ID     string `json:"id"`
	Title  string `json:"title"`
	Status string `json:"status"` // todo, in_progress, done, blocked
}

TaskState represents the state of a single task.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL