generated

package
v0.19.0 Latest Latest
Warning

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

Go to latest
Published: Jul 2, 2026 License: MIT Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ActivityResponse

type ActivityResponse struct {
	// List of activity entries
	Activities []ActivitySchema `json:"activities" yaml:"activities" mapstructure:"activities"`
}

Response from GET /api/activity

type ActivitySchema

type ActivitySchema struct {
	// Type of action (create, update, close, approve, reject, etc.)
	Action string `json:"action" yaml:"action" mapstructure:"action"`

	// Who performed the action (user name or agent)
	Actor string `json:"actor" yaml:"actor" mapstructure:"actor"`

	// Additional action-specific data
	Data ActivitySchemaData `json:"data,omitempty,omitzero" yaml:"data,omitempty" mapstructure:"data,omitempty"`

	// Parent epic ID if the tick belongs to an epic
	Epic *string `json:"epic,omitempty,omitzero" yaml:"epic,omitempty" mapstructure:"epic,omitempty"`

	// ID of the tick this activity is about
	Tick string `json:"tick" yaml:"tick" mapstructure:"tick"`

	// ISO timestamp when the activity occurred
	Ts time.Time `json:"ts" yaml:"ts" mapstructure:"ts"`
}

Activity log entry tracking changes to ticks

type ActivitySchemaData

type ActivitySchemaData map[string]interface{}

Additional action-specific data

type AddNoteRequest

type AddNoteRequest struct {
	// Note content to add
	Message string `json:"message" yaml:"message" mapstructure:"message"`
}

Request body for POST /api/ticks/:id/note

type AddNoteResponse

type AddNoteResponse struct {
	// Criteria that must be met for completion
	AcceptanceCriteria *string `` /* 127-byte string literal not displayed */

	// Tick IDs to preferably work first if feasible; soft ordering only, never gates
	// readiness (use blocked_by for that). Missing or closed targets are ignored
	After []string `json:"after,omitempty,omitzero" yaml:"after,omitempty" mapstructure:"after,omitempty"`

	// Current wait state - what the tick is waiting for
	Awaiting *TickAwaiting `json:"awaiting,omitempty,omitzero" yaml:"awaiting,omitempty" mapstructure:"awaiting,omitempty"`

	// IDs of ticks that block this one
	BlockedBy []string `json:"blocked_by,omitempty,omitzero" yaml:"blocked_by,omitempty" mapstructure:"blocked_by,omitempty"`

	// ISO timestamp when the tick was closed
	ClosedAt *time.Time `json:"closed_at,omitempty,omitzero" yaml:"closed_at,omitempty" mapstructure:"closed_at,omitempty"`

	// Reason for closing (e.g., completed, wont-fix, duplicate)
	ClosedReason *string `json:"closed_reason,omitempty,omitzero" yaml:"closed_reason,omitempty" mapstructure:"closed_reason,omitempty"`

	// Computed kanban column
	Column TickColumn `json:"column" yaml:"column" mapstructure:"column"`

	// ISO timestamp when the tick was created
	CreatedAt time.Time `json:"created_at" yaml:"created_at" mapstructure:"created_at"`

	// Who created this tick
	CreatedBy string `json:"created_by" yaml:"created_by" mapstructure:"created_by"`

	// ISO timestamp - tick is deferred until this time
	DeferUntil *time.Time `json:"defer_until,omitempty,omitzero" yaml:"defer_until,omitempty" mapstructure:"defer_until,omitempty"`

	// Detailed description of the work to be done
	Description *string `json:"description,omitempty,omitzero" yaml:"description,omitempty" mapstructure:"description,omitempty"`

	// ID of tick during which this tick was discovered
	DiscoveredFrom *string `json:"discovered_from,omitempty,omitzero" yaml:"discovered_from,omitempty" mapstructure:"discovered_from,omitempty"`

	// Reference to external issue tracker (e.g., GitHub issue URL)
	ExternalRef *string `json:"external_ref,omitempty,omitzero" yaml:"external_ref,omitempty" mapstructure:"external_ref,omitempty"`

	// Unique identifier for the tick
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Whether this tick is blocked
	IsBlocked bool `json:"isBlocked" yaml:"isBlocked" mapstructure:"isBlocked"`

	// Optional labels for categorization
	Labels []string `json:"labels,omitempty,omitzero" yaml:"labels,omitempty" mapstructure:"labels,omitempty"`

	// Legacy field - use awaiting instead. True means awaiting=work
	Manual *bool `json:"manual,omitempty,omitzero" yaml:"manual,omitempty" mapstructure:"manual,omitempty"`

	// Timestamped notes appended during work
	Notes *string `json:"notes,omitempty,omitzero" yaml:"notes,omitempty" mapstructure:"notes,omitempty"`

	// Updated parsed notes
	NotesList []Note `json:"notesList" yaml:"notesList" mapstructure:"notesList"`

	// Who is responsible for this tick (agent or human)
	Owner string `json:"owner" yaml:"owner" mapstructure:"owner"`

	// Parent epic ID if this tick belongs to an epic
	Parent *string `json:"parent,omitempty,omitzero" yaml:"parent,omitempty" mapstructure:"parent,omitempty"`

	// Priority level (0=highest, 4=lowest)
	Priority int `json:"priority" yaml:"priority" mapstructure:"priority"`

	// Pre-declared gate that must be satisfied before closing
	Requires *TickRequires `json:"requires,omitempty,omitzero" yaml:"requires,omitempty" mapstructure:"requires,omitempty"`

	// Process-tick role in an epic's skeleton: review (final review) or closeout
	// (retro + plan next). Absent means a normal work tick
	Role *TickRole `json:"role,omitempty,omitzero" yaml:"role,omitempty" mapstructure:"role,omitempty"`

	// ISO timestamp when the tick entered in_progress status
	StartedAt *time.Time `json:"started_at,omitempty,omitzero" yaml:"started_at,omitempty" mapstructure:"started_at,omitempty"`

	// Status corresponds to the JSON schema field "status".
	Status TickStatus `json:"status" yaml:"status" mapstructure:"status"`

	// Optional precise ISO calendar day (YYYY-MM-DD) the tick targets; no
	// time-of-day, no fuzziness. Absent is the common case. Feeds the derived
	// overdue/on-track signal and never gates execution
	TargetDate *string `json:"target_date,omitempty,omitzero" yaml:"target_date,omitempty" mapstructure:"target_date,omitempty"`

	// Short title describing the work item
	Title string `json:"title" yaml:"title" mapstructure:"title"`

	// Type corresponds to the JSON schema field "type".
	Type TickType `json:"type" yaml:"type" mapstructure:"type"`

	// ISO timestamp when the tick was last updated
	UpdatedAt time.Time `json:"updated_at" yaml:"updated_at" mapstructure:"updated_at"`

	// Human response to an awaiting state
	Verdict *TickVerdict `json:"verdict,omitempty,omitzero" yaml:"verdict,omitempty" mapstructure:"verdict,omitempty"`
}

Response from POST /api/ticks/:id/note

type ApproveTickResponse

type ApproveTickResponse struct {
	// Criteria that must be met for completion
	AcceptanceCriteria *string `` /* 127-byte string literal not displayed */

	// Tick IDs to preferably work first if feasible; soft ordering only, never gates
	// readiness (use blocked_by for that). Missing or closed targets are ignored
	After []string `json:"after,omitempty,omitzero" yaml:"after,omitempty" mapstructure:"after,omitempty"`

	// Current wait state - what the tick is waiting for
	Awaiting *TickAwaiting `json:"awaiting,omitempty,omitzero" yaml:"awaiting,omitempty" mapstructure:"awaiting,omitempty"`

	// IDs of ticks that block this one
	BlockedBy []string `json:"blocked_by,omitempty,omitzero" yaml:"blocked_by,omitempty" mapstructure:"blocked_by,omitempty"`

	// Whether the tick was closed as a result of approval
	Closed bool `json:"closed" yaml:"closed" mapstructure:"closed"`

	// ISO timestamp when the tick was closed
	ClosedAt *time.Time `json:"closed_at,omitempty,omitzero" yaml:"closed_at,omitempty" mapstructure:"closed_at,omitempty"`

	// Reason for closing (e.g., completed, wont-fix, duplicate)
	ClosedReason *string `json:"closed_reason,omitempty,omitzero" yaml:"closed_reason,omitempty" mapstructure:"closed_reason,omitempty"`

	// Computed kanban column
	Column TickColumn `json:"column" yaml:"column" mapstructure:"column"`

	// ISO timestamp when the tick was created
	CreatedAt time.Time `json:"created_at" yaml:"created_at" mapstructure:"created_at"`

	// Who created this tick
	CreatedBy string `json:"created_by" yaml:"created_by" mapstructure:"created_by"`

	// ISO timestamp - tick is deferred until this time
	DeferUntil *time.Time `json:"defer_until,omitempty,omitzero" yaml:"defer_until,omitempty" mapstructure:"defer_until,omitempty"`

	// Detailed description of the work to be done
	Description *string `json:"description,omitempty,omitzero" yaml:"description,omitempty" mapstructure:"description,omitempty"`

	// ID of tick during which this tick was discovered
	DiscoveredFrom *string `json:"discovered_from,omitempty,omitzero" yaml:"discovered_from,omitempty" mapstructure:"discovered_from,omitempty"`

	// Reference to external issue tracker (e.g., GitHub issue URL)
	ExternalRef *string `json:"external_ref,omitempty,omitzero" yaml:"external_ref,omitempty" mapstructure:"external_ref,omitempty"`

	// Unique identifier for the tick
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Whether this tick is blocked
	IsBlocked bool `json:"isBlocked" yaml:"isBlocked" mapstructure:"isBlocked"`

	// Optional labels for categorization
	Labels []string `json:"labels,omitempty,omitzero" yaml:"labels,omitempty" mapstructure:"labels,omitempty"`

	// Legacy field - use awaiting instead. True means awaiting=work
	Manual *bool `json:"manual,omitempty,omitzero" yaml:"manual,omitempty" mapstructure:"manual,omitempty"`

	// Timestamped notes appended during work
	Notes *string `json:"notes,omitempty,omitzero" yaml:"notes,omitempty" mapstructure:"notes,omitempty"`

	// Who is responsible for this tick (agent or human)
	Owner string `json:"owner" yaml:"owner" mapstructure:"owner"`

	// Parent epic ID if this tick belongs to an epic
	Parent *string `json:"parent,omitempty,omitzero" yaml:"parent,omitempty" mapstructure:"parent,omitempty"`

	// Priority level (0=highest, 4=lowest)
	Priority int `json:"priority" yaml:"priority" mapstructure:"priority"`

	// Pre-declared gate that must be satisfied before closing
	Requires *TickRequires `json:"requires,omitempty,omitzero" yaml:"requires,omitempty" mapstructure:"requires,omitempty"`

	// Process-tick role in an epic's skeleton: review (final review) or closeout
	// (retro + plan next). Absent means a normal work tick
	Role *TickRole `json:"role,omitempty,omitzero" yaml:"role,omitempty" mapstructure:"role,omitempty"`

	// ISO timestamp when the tick entered in_progress status
	StartedAt *time.Time `json:"started_at,omitempty,omitzero" yaml:"started_at,omitempty" mapstructure:"started_at,omitempty"`

	// Status corresponds to the JSON schema field "status".
	Status TickStatus `json:"status" yaml:"status" mapstructure:"status"`

	// Optional precise ISO calendar day (YYYY-MM-DD) the tick targets; no
	// time-of-day, no fuzziness. Absent is the common case. Feeds the derived
	// overdue/on-track signal and never gates execution
	TargetDate *string `json:"target_date,omitempty,omitzero" yaml:"target_date,omitempty" mapstructure:"target_date,omitempty"`

	// Short title describing the work item
	Title string `json:"title" yaml:"title" mapstructure:"title"`

	// Type corresponds to the JSON schema field "type".
	Type TickType `json:"type" yaml:"type" mapstructure:"type"`

	// ISO timestamp when the tick was last updated
	UpdatedAt time.Time `json:"updated_at" yaml:"updated_at" mapstructure:"updated_at"`

	// Human response to an awaiting state
	Verdict *TickVerdict `json:"verdict,omitempty,omitzero" yaml:"verdict,omitempty" mapstructure:"verdict,omitempty"`
}

Response from POST /api/ticks/:id/approve

type BlockerDetail

type BlockerDetail struct {
	// Blocker tick ID
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Blocker tick status
	Status string `json:"status" yaml:"status" mapstructure:"status"`

	// Blocker tick title
	Title string `json:"title" yaml:"title" mapstructure:"title"`
}

Details about a blocking tick

type ClientMessage

type ClientMessage interface{}

Union of all messages sent from clients to server/DO

type CloseTickRequest

type CloseTickRequest struct {
	// Reason for closing
	Reason *string `json:"reason,omitempty,omitzero" yaml:"reason,omitempty" mapstructure:"reason,omitempty"`
}

Request body for POST /api/ticks/:id/close

type CloseTickResponse

type CloseTickResponse struct {
	// Criteria that must be met for completion
	AcceptanceCriteria *string `` /* 127-byte string literal not displayed */

	// Tick IDs to preferably work first if feasible; soft ordering only, never gates
	// readiness (use blocked_by for that). Missing or closed targets are ignored
	After []string `json:"after,omitempty,omitzero" yaml:"after,omitempty" mapstructure:"after,omitempty"`

	// Current wait state - what the tick is waiting for
	Awaiting *TickAwaiting `json:"awaiting,omitempty,omitzero" yaml:"awaiting,omitempty" mapstructure:"awaiting,omitempty"`

	// IDs of ticks that block this one
	BlockedBy []string `json:"blocked_by,omitempty,omitzero" yaml:"blocked_by,omitempty" mapstructure:"blocked_by,omitempty"`

	// ISO timestamp when the tick was closed
	ClosedAt *time.Time `json:"closed_at,omitempty,omitzero" yaml:"closed_at,omitempty" mapstructure:"closed_at,omitempty"`

	// Reason for closing (e.g., completed, wont-fix, duplicate)
	ClosedReason *string `json:"closed_reason,omitempty,omitzero" yaml:"closed_reason,omitempty" mapstructure:"closed_reason,omitempty"`

	// Computed kanban column
	Column TickColumn `json:"column" yaml:"column" mapstructure:"column"`

	// ISO timestamp when the tick was created
	CreatedAt time.Time `json:"created_at" yaml:"created_at" mapstructure:"created_at"`

	// Who created this tick
	CreatedBy string `json:"created_by" yaml:"created_by" mapstructure:"created_by"`

	// ISO timestamp - tick is deferred until this time
	DeferUntil *time.Time `json:"defer_until,omitempty,omitzero" yaml:"defer_until,omitempty" mapstructure:"defer_until,omitempty"`

	// Detailed description of the work to be done
	Description *string `json:"description,omitempty,omitzero" yaml:"description,omitempty" mapstructure:"description,omitempty"`

	// ID of tick during which this tick was discovered
	DiscoveredFrom *string `json:"discovered_from,omitempty,omitzero" yaml:"discovered_from,omitempty" mapstructure:"discovered_from,omitempty"`

	// Reference to external issue tracker (e.g., GitHub issue URL)
	ExternalRef *string `json:"external_ref,omitempty,omitzero" yaml:"external_ref,omitempty" mapstructure:"external_ref,omitempty"`

	// Unique identifier for the tick
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Whether this tick is blocked
	IsBlocked bool `json:"isBlocked" yaml:"isBlocked" mapstructure:"isBlocked"`

	// Optional labels for categorization
	Labels []string `json:"labels,omitempty,omitzero" yaml:"labels,omitempty" mapstructure:"labels,omitempty"`

	// Legacy field - use awaiting instead. True means awaiting=work
	Manual *bool `json:"manual,omitempty,omitzero" yaml:"manual,omitempty" mapstructure:"manual,omitempty"`

	// Timestamped notes appended during work
	Notes *string `json:"notes,omitempty,omitzero" yaml:"notes,omitempty" mapstructure:"notes,omitempty"`

	// Who is responsible for this tick (agent or human)
	Owner string `json:"owner" yaml:"owner" mapstructure:"owner"`

	// Parent epic ID if this tick belongs to an epic
	Parent *string `json:"parent,omitempty,omitzero" yaml:"parent,omitempty" mapstructure:"parent,omitempty"`

	// Priority level (0=highest, 4=lowest)
	Priority int `json:"priority" yaml:"priority" mapstructure:"priority"`

	// Pre-declared gate that must be satisfied before closing
	Requires *TickRequires `json:"requires,omitempty,omitzero" yaml:"requires,omitempty" mapstructure:"requires,omitempty"`

	// Process-tick role in an epic's skeleton: review (final review) or closeout
	// (retro + plan next). Absent means a normal work tick
	Role *TickRole `json:"role,omitempty,omitzero" yaml:"role,omitempty" mapstructure:"role,omitempty"`

	// ISO timestamp when the tick entered in_progress status
	StartedAt *time.Time `json:"started_at,omitempty,omitzero" yaml:"started_at,omitempty" mapstructure:"started_at,omitempty"`

	// Status corresponds to the JSON schema field "status".
	Status TickStatus `json:"status" yaml:"status" mapstructure:"status"`

	// Optional precise ISO calendar day (YYYY-MM-DD) the tick targets; no
	// time-of-day, no fuzziness. Absent is the common case. Feeds the derived
	// overdue/on-track signal and never gates execution
	TargetDate *string `json:"target_date,omitempty,omitzero" yaml:"target_date,omitempty" mapstructure:"target_date,omitempty"`

	// Short title describing the work item
	Title string `json:"title" yaml:"title" mapstructure:"title"`

	// Type corresponds to the JSON schema field "type".
	Type TickType `json:"type" yaml:"type" mapstructure:"type"`

	// ISO timestamp when the tick was last updated
	UpdatedAt time.Time `json:"updated_at" yaml:"updated_at" mapstructure:"updated_at"`

	// Human response to an awaiting state
	Verdict *TickVerdict `json:"verdict,omitempty,omitzero" yaml:"verdict,omitempty" mapstructure:"verdict,omitempty"`
}

Response from POST /api/ticks/:id/close

type ConnectedMessage

type ConnectedMessage struct {
	// ConnectionId corresponds to the JSON schema field "connectionId".
	ConnectionId string `json:"connectionId" yaml:"connectionId" mapstructure:"connectionId"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Server confirms WebSocket connection

type CreateTickRequest

type CreateTickRequest struct {
	// Detailed description
	Description *string `json:"description,omitempty,omitzero" yaml:"description,omitempty" mapstructure:"description,omitempty"`

	// Parent epic ID
	Parent *string `json:"parent,omitempty,omitzero" yaml:"parent,omitempty" mapstructure:"parent,omitempty"`

	// Priority level (defaults to 2)
	Priority *int `json:"priority,omitempty,omitzero" yaml:"priority,omitempty" mapstructure:"priority,omitempty"`

	// Pre-declared gate for closing
	Requires *TickRequires `json:"requires,omitempty,omitzero" yaml:"requires,omitempty" mapstructure:"requires,omitempty"`

	// Title of the new tick
	Title string `json:"title" yaml:"title" mapstructure:"title"`

	// Type of tick (defaults to task)
	Type *TickType `json:"type,omitempty,omitzero" yaml:"type,omitempty" mapstructure:"type,omitempty"`
}

Request body for POST /api/ticks

type CreateTickResponse

type CreateTickResponse struct {
	// Criteria that must be met for completion
	AcceptanceCriteria *string `` /* 127-byte string literal not displayed */

	// Tick IDs to preferably work first if feasible; soft ordering only, never gates
	// readiness (use blocked_by for that). Missing or closed targets are ignored
	After []string `json:"after,omitempty,omitzero" yaml:"after,omitempty" mapstructure:"after,omitempty"`

	// Current wait state - what the tick is waiting for
	Awaiting *TickAwaiting `json:"awaiting,omitempty,omitzero" yaml:"awaiting,omitempty" mapstructure:"awaiting,omitempty"`

	// IDs of ticks that block this one
	BlockedBy []string `json:"blocked_by,omitempty,omitzero" yaml:"blocked_by,omitempty" mapstructure:"blocked_by,omitempty"`

	// ISO timestamp when the tick was closed
	ClosedAt *time.Time `json:"closed_at,omitempty,omitzero" yaml:"closed_at,omitempty" mapstructure:"closed_at,omitempty"`

	// Reason for closing (e.g., completed, wont-fix, duplicate)
	ClosedReason *string `json:"closed_reason,omitempty,omitzero" yaml:"closed_reason,omitempty" mapstructure:"closed_reason,omitempty"`

	// Computed kanban column
	Column TickColumn `json:"column" yaml:"column" mapstructure:"column"`

	// ISO timestamp when the tick was created
	CreatedAt time.Time `json:"created_at" yaml:"created_at" mapstructure:"created_at"`

	// Who created this tick
	CreatedBy string `json:"created_by" yaml:"created_by" mapstructure:"created_by"`

	// ISO timestamp - tick is deferred until this time
	DeferUntil *time.Time `json:"defer_until,omitempty,omitzero" yaml:"defer_until,omitempty" mapstructure:"defer_until,omitempty"`

	// Detailed description of the work to be done
	Description *string `json:"description,omitempty,omitzero" yaml:"description,omitempty" mapstructure:"description,omitempty"`

	// ID of tick during which this tick was discovered
	DiscoveredFrom *string `json:"discovered_from,omitempty,omitzero" yaml:"discovered_from,omitempty" mapstructure:"discovered_from,omitempty"`

	// Reference to external issue tracker (e.g., GitHub issue URL)
	ExternalRef *string `json:"external_ref,omitempty,omitzero" yaml:"external_ref,omitempty" mapstructure:"external_ref,omitempty"`

	// Unique identifier for the tick
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Whether this tick is blocked
	IsBlocked bool `json:"isBlocked" yaml:"isBlocked" mapstructure:"isBlocked"`

	// Optional labels for categorization
	Labels []string `json:"labels,omitempty,omitzero" yaml:"labels,omitempty" mapstructure:"labels,omitempty"`

	// Legacy field - use awaiting instead. True means awaiting=work
	Manual *bool `json:"manual,omitempty,omitzero" yaml:"manual,omitempty" mapstructure:"manual,omitempty"`

	// Timestamped notes appended during work
	Notes *string `json:"notes,omitempty,omitzero" yaml:"notes,omitempty" mapstructure:"notes,omitempty"`

	// Who is responsible for this tick (agent or human)
	Owner string `json:"owner" yaml:"owner" mapstructure:"owner"`

	// Parent epic ID if this tick belongs to an epic
	Parent *string `json:"parent,omitempty,omitzero" yaml:"parent,omitempty" mapstructure:"parent,omitempty"`

	// Priority level (0=highest, 4=lowest)
	Priority int `json:"priority" yaml:"priority" mapstructure:"priority"`

	// Pre-declared gate that must be satisfied before closing
	Requires *TickRequires `json:"requires,omitempty,omitzero" yaml:"requires,omitempty" mapstructure:"requires,omitempty"`

	// Process-tick role in an epic's skeleton: review (final review) or closeout
	// (retro + plan next). Absent means a normal work tick
	Role *TickRole `json:"role,omitempty,omitzero" yaml:"role,omitempty" mapstructure:"role,omitempty"`

	// ISO timestamp when the tick entered in_progress status
	StartedAt *time.Time `json:"started_at,omitempty,omitzero" yaml:"started_at,omitempty" mapstructure:"started_at,omitempty"`

	// Status corresponds to the JSON schema field "status".
	Status TickStatus `json:"status" yaml:"status" mapstructure:"status"`

	// Optional precise ISO calendar day (YYYY-MM-DD) the tick targets; no
	// time-of-day, no fuzziness. Absent is the common case. Feeds the derived
	// overdue/on-track signal and never gates execution
	TargetDate *string `json:"target_date,omitempty,omitzero" yaml:"target_date,omitempty" mapstructure:"target_date,omitempty"`

	// Short title describing the work item
	Title string `json:"title" yaml:"title" mapstructure:"title"`

	// Type corresponds to the JSON schema field "type".
	Type TickType `json:"type" yaml:"type" mapstructure:"type"`

	// ISO timestamp when the tick was last updated
	UpdatedAt time.Time `json:"updated_at" yaml:"updated_at" mapstructure:"updated_at"`

	// Human response to an awaiting state
	Verdict *TickVerdict `json:"verdict,omitempty,omitzero" yaml:"verdict,omitempty" mapstructure:"verdict,omitempty"`
}

Response from POST /api/ticks

type EpicInfo

type EpicInfo struct {
	// Epic ID
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Epic title
	Title string `json:"title" yaml:"title" mapstructure:"title"`
}

Summary info about an epic for dropdown lists

type ErrorMessage

type ErrorMessage struct {
	// Message corresponds to the JSON schema field "message".
	Message string `json:"message" yaml:"message" mapstructure:"message"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Error notification

type GetTickResponse

type GetTickResponse struct {
	// Criteria that must be met for completion
	AcceptanceCriteria *string `` /* 127-byte string literal not displayed */

	// Tick IDs to preferably work first if feasible; soft ordering only, never gates
	// readiness (use blocked_by for that). Missing or closed targets are ignored
	After []string `json:"after,omitempty,omitzero" yaml:"after,omitempty" mapstructure:"after,omitempty"`

	// Current wait state - what the tick is waiting for
	Awaiting *TickAwaiting `json:"awaiting,omitempty,omitzero" yaml:"awaiting,omitempty" mapstructure:"awaiting,omitempty"`

	// IDs of ticks that block this one
	BlockedBy []string `json:"blocked_by,omitempty,omitzero" yaml:"blocked_by,omitempty" mapstructure:"blocked_by,omitempty"`

	// Details about blocking ticks
	BlockerDetails []BlockerDetail `json:"blockerDetails" yaml:"blockerDetails" mapstructure:"blockerDetails"`

	// ISO timestamp when the tick was closed
	ClosedAt *time.Time `json:"closed_at,omitempty,omitzero" yaml:"closed_at,omitempty" mapstructure:"closed_at,omitempty"`

	// Reason for closing (e.g., completed, wont-fix, duplicate)
	ClosedReason *string `json:"closed_reason,omitempty,omitzero" yaml:"closed_reason,omitempty" mapstructure:"closed_reason,omitempty"`

	// Computed kanban column
	Column TickColumn `json:"column" yaml:"column" mapstructure:"column"`

	// ISO timestamp when the tick was created
	CreatedAt time.Time `json:"created_at" yaml:"created_at" mapstructure:"created_at"`

	// Who created this tick
	CreatedBy string `json:"created_by" yaml:"created_by" mapstructure:"created_by"`

	// ISO timestamp - tick is deferred until this time
	DeferUntil *time.Time `json:"defer_until,omitempty,omitzero" yaml:"defer_until,omitempty" mapstructure:"defer_until,omitempty"`

	// Detailed description of the work to be done
	Description *string `json:"description,omitempty,omitzero" yaml:"description,omitempty" mapstructure:"description,omitempty"`

	// ID of tick during which this tick was discovered
	DiscoveredFrom *string `json:"discovered_from,omitempty,omitzero" yaml:"discovered_from,omitempty" mapstructure:"discovered_from,omitempty"`

	// Reference to external issue tracker (e.g., GitHub issue URL)
	ExternalRef *string `json:"external_ref,omitempty,omitzero" yaml:"external_ref,omitempty" mapstructure:"external_ref,omitempty"`

	// Unique identifier for the tick
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Whether this tick is blocked
	IsBlocked bool `json:"isBlocked" yaml:"isBlocked" mapstructure:"isBlocked"`

	// Optional labels for categorization
	Labels []string `json:"labels,omitempty,omitzero" yaml:"labels,omitempty" mapstructure:"labels,omitempty"`

	// Legacy field - use awaiting instead. True means awaiting=work
	Manual *bool `json:"manual,omitempty,omitzero" yaml:"manual,omitempty" mapstructure:"manual,omitempty"`

	// Timestamped notes appended during work
	Notes *string `json:"notes,omitempty,omitzero" yaml:"notes,omitempty" mapstructure:"notes,omitempty"`

	// Parsed notes from tick.notes
	NotesList []Note `json:"notesList" yaml:"notesList" mapstructure:"notesList"`

	// Who is responsible for this tick (agent or human)
	Owner string `json:"owner" yaml:"owner" mapstructure:"owner"`

	// Parent epic ID if this tick belongs to an epic
	Parent *string `json:"parent,omitempty,omitzero" yaml:"parent,omitempty" mapstructure:"parent,omitempty"`

	// Priority level (0=highest, 4=lowest)
	Priority int `json:"priority" yaml:"priority" mapstructure:"priority"`

	// Pre-declared gate that must be satisfied before closing
	Requires *TickRequires `json:"requires,omitempty,omitzero" yaml:"requires,omitempty" mapstructure:"requires,omitempty"`

	// Process-tick role in an epic's skeleton: review (final review) or closeout
	// (retro + plan next). Absent means a normal work tick
	Role *TickRole `json:"role,omitempty,omitzero" yaml:"role,omitempty" mapstructure:"role,omitempty"`

	// ISO timestamp when the tick entered in_progress status
	StartedAt *time.Time `json:"started_at,omitempty,omitzero" yaml:"started_at,omitempty" mapstructure:"started_at,omitempty"`

	// Status corresponds to the JSON schema field "status".
	Status TickStatus `json:"status" yaml:"status" mapstructure:"status"`

	// Optional precise ISO calendar day (YYYY-MM-DD) the tick targets; no
	// time-of-day, no fuzziness. Absent is the common case. Feeds the derived
	// overdue/on-track signal and never gates execution
	TargetDate *string `json:"target_date,omitempty,omitzero" yaml:"target_date,omitempty" mapstructure:"target_date,omitempty"`

	// Short title describing the work item
	Title string `json:"title" yaml:"title" mapstructure:"title"`

	// Type corresponds to the JSON schema field "type".
	Type TickType `json:"type" yaml:"type" mapstructure:"type"`

	// ISO timestamp when the tick was last updated
	UpdatedAt time.Time `json:"updated_at" yaml:"updated_at" mapstructure:"updated_at"`

	// Human response to an awaiting state
	Verdict *TickVerdict `json:"verdict,omitempty,omitzero" yaml:"verdict,omitempty" mapstructure:"verdict,omitempty"`
}

Detailed tick response with parsed notes and blocker details

type HeartbeatMessage

type HeartbeatMessage struct {
	// Token corresponds to the JSON schema field "token".
	Token *string `json:"token,omitempty,omitzero" yaml:"token,omitempty" mapstructure:"token,omitempty"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Heartbeat ping

type HeartbeatResponseMessage

type HeartbeatResponseMessage struct {
	// Unix timestamp when session expires
	ExpiresAt int `json:"expiresAt" yaml:"expiresAt" mapstructure:"expiresAt"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Heartbeat pong

type InfoResponse

type InfoResponse struct {
	// List of epics for dropdown
	Epics []EpicInfo `json:"epics" yaml:"epics" mapstructure:"epics"`

	// Full repository name (owner/repo[:worktree])
	RepoName string `json:"repoName" yaml:"repoName" mapstructure:"repoName"`
}

Response from GET /api/info

type ListTicksResponse

type ListTicksResponse struct {
	// List of ticks matching the query
	Ticks []TickResponse `json:"ticks" yaml:"ticks" mapstructure:"ticks"`
}

Response from GET /api/ticks

type LocalStatusMessage

type LocalStatusMessage struct {
	// Connected corresponds to the JSON schema field "connected".
	Connected bool `json:"connected" yaml:"connected" mapstructure:"connected"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Local agent online/offline status

type Note

type Note struct {
	// Note author (human or agent)
	Author *string `json:"author,omitempty,omitzero" yaml:"author,omitempty" mapstructure:"author,omitempty"`

	// Note content
	Text string `json:"text" yaml:"text" mapstructure:"text"`

	// Timestamp portion (YYYY-MM-DD HH:MM)
	Timestamp *string `json:"timestamp,omitempty,omitzero" yaml:"timestamp,omitempty" mapstructure:"timestamp,omitempty"`
}

Parsed note entry from tick.notes

type RejectTickRequest

type RejectTickRequest struct {
	// Feedback explaining why the tick was rejected
	Feedback *string `json:"feedback,omitempty,omitzero" yaml:"feedback,omitempty" mapstructure:"feedback,omitempty"`
}

Request body for POST /api/ticks/:id/reject

type RejectTickResponse

type RejectTickResponse struct {
	// Criteria that must be met for completion
	AcceptanceCriteria *string `` /* 127-byte string literal not displayed */

	// Tick IDs to preferably work first if feasible; soft ordering only, never gates
	// readiness (use blocked_by for that). Missing or closed targets are ignored
	After []string `json:"after,omitempty,omitzero" yaml:"after,omitempty" mapstructure:"after,omitempty"`

	// Current wait state - what the tick is waiting for
	Awaiting *TickAwaiting `json:"awaiting,omitempty,omitzero" yaml:"awaiting,omitempty" mapstructure:"awaiting,omitempty"`

	// IDs of ticks that block this one
	BlockedBy []string `json:"blocked_by,omitempty,omitzero" yaml:"blocked_by,omitempty" mapstructure:"blocked_by,omitempty"`

	// Whether the tick was closed as a result of rejection
	Closed bool `json:"closed" yaml:"closed" mapstructure:"closed"`

	// ISO timestamp when the tick was closed
	ClosedAt *time.Time `json:"closed_at,omitempty,omitzero" yaml:"closed_at,omitempty" mapstructure:"closed_at,omitempty"`

	// Reason for closing (e.g., completed, wont-fix, duplicate)
	ClosedReason *string `json:"closed_reason,omitempty,omitzero" yaml:"closed_reason,omitempty" mapstructure:"closed_reason,omitempty"`

	// Computed kanban column
	Column TickColumn `json:"column" yaml:"column" mapstructure:"column"`

	// ISO timestamp when the tick was created
	CreatedAt time.Time `json:"created_at" yaml:"created_at" mapstructure:"created_at"`

	// Who created this tick
	CreatedBy string `json:"created_by" yaml:"created_by" mapstructure:"created_by"`

	// ISO timestamp - tick is deferred until this time
	DeferUntil *time.Time `json:"defer_until,omitempty,omitzero" yaml:"defer_until,omitempty" mapstructure:"defer_until,omitempty"`

	// Detailed description of the work to be done
	Description *string `json:"description,omitempty,omitzero" yaml:"description,omitempty" mapstructure:"description,omitempty"`

	// ID of tick during which this tick was discovered
	DiscoveredFrom *string `json:"discovered_from,omitempty,omitzero" yaml:"discovered_from,omitempty" mapstructure:"discovered_from,omitempty"`

	// Reference to external issue tracker (e.g., GitHub issue URL)
	ExternalRef *string `json:"external_ref,omitempty,omitzero" yaml:"external_ref,omitempty" mapstructure:"external_ref,omitempty"`

	// Unique identifier for the tick
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Whether this tick is blocked
	IsBlocked bool `json:"isBlocked" yaml:"isBlocked" mapstructure:"isBlocked"`

	// Optional labels for categorization
	Labels []string `json:"labels,omitempty,omitzero" yaml:"labels,omitempty" mapstructure:"labels,omitempty"`

	// Legacy field - use awaiting instead. True means awaiting=work
	Manual *bool `json:"manual,omitempty,omitzero" yaml:"manual,omitempty" mapstructure:"manual,omitempty"`

	// Timestamped notes appended during work
	Notes *string `json:"notes,omitempty,omitzero" yaml:"notes,omitempty" mapstructure:"notes,omitempty"`

	// Who is responsible for this tick (agent or human)
	Owner string `json:"owner" yaml:"owner" mapstructure:"owner"`

	// Parent epic ID if this tick belongs to an epic
	Parent *string `json:"parent,omitempty,omitzero" yaml:"parent,omitempty" mapstructure:"parent,omitempty"`

	// Priority level (0=highest, 4=lowest)
	Priority int `json:"priority" yaml:"priority" mapstructure:"priority"`

	// Pre-declared gate that must be satisfied before closing
	Requires *TickRequires `json:"requires,omitempty,omitzero" yaml:"requires,omitempty" mapstructure:"requires,omitempty"`

	// Process-tick role in an epic's skeleton: review (final review) or closeout
	// (retro + plan next). Absent means a normal work tick
	Role *TickRole `json:"role,omitempty,omitzero" yaml:"role,omitempty" mapstructure:"role,omitempty"`

	// ISO timestamp when the tick entered in_progress status
	StartedAt *time.Time `json:"started_at,omitempty,omitzero" yaml:"started_at,omitempty" mapstructure:"started_at,omitempty"`

	// Status corresponds to the JSON schema field "status".
	Status TickStatus `json:"status" yaml:"status" mapstructure:"status"`

	// Optional precise ISO calendar day (YYYY-MM-DD) the tick targets; no
	// time-of-day, no fuzziness. Absent is the common case. Feeds the derived
	// overdue/on-track signal and never gates execution
	TargetDate *string `json:"target_date,omitempty,omitzero" yaml:"target_date,omitempty" mapstructure:"target_date,omitempty"`

	// Short title describing the work item
	Title string `json:"title" yaml:"title" mapstructure:"title"`

	// Type corresponds to the JSON schema field "type".
	Type TickType `json:"type" yaml:"type" mapstructure:"type"`

	// ISO timestamp when the tick was last updated
	UpdatedAt time.Time `json:"updated_at" yaml:"updated_at" mapstructure:"updated_at"`

	// Human response to an awaiting state
	Verdict *TickVerdict `json:"verdict,omitempty,omitzero" yaml:"verdict,omitempty" mapstructure:"verdict,omitempty"`
}

Response from POST /api/ticks/:id/reject

type RunEventData

type RunEventData struct {
	// ActiveTool corresponds to the JSON schema field "activeTool".
	ActiveTool *RunEventTool `json:"activeTool,omitempty,omitzero" yaml:"activeTool,omitempty" mapstructure:"activeTool,omitempty"`

	// Iteration corresponds to the JSON schema field "iteration".
	Iteration *int `json:"iteration,omitempty,omitzero" yaml:"iteration,omitempty" mapstructure:"iteration,omitempty"`

	// Human-readable message
	Message *string `json:"message,omitempty,omitzero" yaml:"message,omitempty" mapstructure:"message,omitempty"`

	// Metrics corresponds to the JSON schema field "metrics".
	Metrics *RunEventMetrics `json:"metrics,omitempty,omitzero" yaml:"metrics,omitempty" mapstructure:"metrics,omitempty"`

	// Number of API turns
	NumTurns *int `json:"numTurns,omitempty,omitzero" yaml:"numTurns,omitempty" mapstructure:"numTurns,omitempty"`

	// Current output text
	Output *string `json:"output,omitempty,omitzero" yaml:"output,omitempty" mapstructure:"output,omitempty"`

	// Status text
	Status *string `json:"status,omitempty,omitzero" yaml:"status,omitempty" mapstructure:"status,omitempty"`

	// Success corresponds to the JSON schema field "success".
	Success *bool `json:"success,omitempty,omitzero" yaml:"success,omitempty" mapstructure:"success,omitempty"`

	// Number of tasks (context events)
	TaskCount *int `json:"taskCount,omitempty,omitzero" yaml:"taskCount,omitempty" mapstructure:"taskCount,omitempty"`

	// Timestamp corresponds to the JSON schema field "timestamp".
	Timestamp time.Time `json:"timestamp" yaml:"timestamp" mapstructure:"timestamp"`

	// Token count (context events)
	TokenCount *int `json:"tokenCount,omitempty,omitzero" yaml:"tokenCount,omitempty" mapstructure:"tokenCount,omitempty"`

	// Type corresponds to the JSON schema field "type".
	Type RunEventType `json:"type" yaml:"type" mapstructure:"type"`
}

Run event payload data

type RunEventMessage

type RunEventMessage struct {
	// Epic being worked on
	EpicId string `json:"epicId" yaml:"epicId" mapstructure:"epicId"`

	// Event corresponds to the JSON schema field "event".
	Event RunEventData `json:"event" yaml:"event" mapstructure:"event"`

	// Source corresponds to the JSON schema field "source".
	Source RunEventSource `json:"source" yaml:"source" mapstructure:"source"`

	// Task ID (if task-level event)
	TaskId *string `json:"taskId,omitempty,omitzero" yaml:"taskId,omitempty" mapstructure:"taskId,omitempty"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Live run output event from local agent

type RunEventMetrics

type RunEventMetrics struct {
	// CacheCreationTokens corresponds to the JSON schema field "cacheCreationTokens".
	CacheCreationTokens *int `` /* 127-byte string literal not displayed */

	// CacheReadTokens corresponds to the JSON schema field "cacheReadTokens".
	CacheReadTokens *int `json:"cacheReadTokens,omitempty,omitzero" yaml:"cacheReadTokens,omitempty" mapstructure:"cacheReadTokens,omitempty"`

	// CostUsd corresponds to the JSON schema field "costUsd".
	CostUsd *float64 `json:"costUsd,omitempty,omitzero" yaml:"costUsd,omitempty" mapstructure:"costUsd,omitempty"`

	// DurationMs corresponds to the JSON schema field "durationMs".
	DurationMs *int `json:"durationMs,omitempty,omitzero" yaml:"durationMs,omitempty" mapstructure:"durationMs,omitempty"`

	// InputTokens corresponds to the JSON schema field "inputTokens".
	InputTokens *int `json:"inputTokens,omitempty,omitzero" yaml:"inputTokens,omitempty" mapstructure:"inputTokens,omitempty"`

	// OutputTokens corresponds to the JSON schema field "outputTokens".
	OutputTokens *int `json:"outputTokens,omitempty,omitzero" yaml:"outputTokens,omitempty" mapstructure:"outputTokens,omitempty"`
}

Token and cost metrics during run

type RunEventSource

type RunEventSource string
const RunEventSourceRalph RunEventSource = "ralph"
const RunEventSourceSwarmOrchestrator RunEventSource = "swarm-orchestrator"
const RunEventSourceSwarmSubagent RunEventSource = "swarm-subagent"

type RunEventTool

type RunEventTool struct {
	// Duration corresponds to the JSON schema field "duration".
	Duration *int `json:"duration,omitempty,omitzero" yaml:"duration,omitempty" mapstructure:"duration,omitempty"`

	// Input corresponds to the JSON schema field "input".
	Input *string `json:"input,omitempty,omitzero" yaml:"input,omitempty" mapstructure:"input,omitempty"`

	// Name corresponds to the JSON schema field "name".
	Name string `json:"name" yaml:"name" mapstructure:"name"`
}

Active tool information

type RunEventType

type RunEventType string
const RunEventTypeContextFailed RunEventType = "context-failed"
const RunEventTypeContextGenerated RunEventType = "context-generated"
const RunEventTypeContextGenerating RunEventType = "context-generating"
const RunEventTypeContextLoaded RunEventType = "context-loaded"
const RunEventTypeContextSkipped RunEventType = "context-skipped"
const RunEventTypeEpicCompleted RunEventType = "epic-completed"
const RunEventTypeEpicStarted RunEventType = "epic-started"
const RunEventTypeTaskCompleted RunEventType = "task-completed"
const RunEventTypeTaskStarted RunEventType = "task-started"
const RunEventTypeTaskUpdate RunEventType = "task-update"
const RunEventTypeToolActivity RunEventType = "tool-activity"

type ServerMessage

type ServerMessage interface{}

Union of all messages sent from server/DO to clients

type StateFullMessage

type StateFullMessage struct {
	// Ticks corresponds to the JSON schema field "ticks".
	Ticks StateFullMessageTicks `json:"ticks" yaml:"ticks" mapstructure:"ticks"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Full tick state on connection

type StateFullMessageTicks

type StateFullMessageTicks map[string]TickSchema_1

type SyncFullMessage

type SyncFullMessage struct {
	// Ticks corresponds to the JSON schema field "ticks".
	Ticks SyncFullMessageTicks `json:"ticks" yaml:"ticks" mapstructure:"ticks"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Local agent sends full tick state to DO

type SyncFullMessageTicks

type SyncFullMessageTicks map[string]TickSchema_1

type TickAwaiting

type TickAwaiting string
const TickAwaitingApproval TickAwaiting = "approval"
const TickAwaitingCheckpoint TickAwaiting = "checkpoint"
const TickAwaitingContent TickAwaiting = "content"
const TickAwaitingEscalation TickAwaiting = "escalation"
const TickAwaitingInput TickAwaiting = "input"
const TickAwaitingReview TickAwaiting = "review"
const TickAwaitingWork TickAwaiting = "work"

type TickColumn

type TickColumn string
const TickColumnAgent TickColumn = "agent"
const TickColumnBlocked TickColumn = "blocked"
const TickColumnDone TickColumn = "done"
const TickColumnHuman TickColumn = "human"
const TickColumnReady TickColumn = "ready"

type TickCreateRequest

type TickCreateRequest struct {
	// Tick corresponds to the JSON schema field "tick".
	Tick TickSchema_1 `json:"tick" yaml:"tick" mapstructure:"tick"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Client request to create tick

type TickCreatedMessage added in v0.14.0

type TickCreatedMessage struct {
	// Tick corresponds to the JSON schema field "tick".
	Tick TickSchema_1 `json:"tick" yaml:"tick" mapstructure:"tick"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Single tick created. Broadcast by the DO when a previously-unknown tick is synced; clients apply it identically to tick_updated.

type TickDeleteRequest

type TickDeleteRequest struct {
	// Id corresponds to the JSON schema field "id".
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Client request to delete tick

type TickDeletedMessage

type TickDeletedMessage struct {
	// Id corresponds to the JSON schema field "id".
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Tick deleted

type TickOperationRequest

type TickOperationRequest struct {
	// Authenticated session user id (opaque, not an email) of the cloud user who
	// initiated the operation. Used to attribute activity log entries.
	Actor *string `json:"actor,omitempty,omitzero" yaml:"actor,omitempty" mapstructure:"actor,omitempty"`

	// Operation corresponds to the JSON schema field "operation".
	Operation TickOperationType `json:"operation" yaml:"operation" mapstructure:"operation"`

	// Payload corresponds to the JSON schema field "payload".
	Payload *TickOperationRequestPayload `json:"payload,omitempty,omitzero" yaml:"payload,omitempty" mapstructure:"payload,omitempty"`

	// RequestId corresponds to the JSON schema field "requestId".
	RequestId string `json:"requestId" yaml:"requestId" mapstructure:"requestId"`

	// TickId corresponds to the JSON schema field "tickId".
	TickId string `json:"tickId" yaml:"tickId" mapstructure:"tickId"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

RPC request for tick operation

type TickOperationRequestPayload

type TickOperationRequestPayload struct {
	// Message corresponds to the JSON schema field "message".
	Message *string `json:"message,omitempty,omitzero" yaml:"message,omitempty" mapstructure:"message,omitempty"`

	// Reason corresponds to the JSON schema field "reason".
	Reason *string `json:"reason,omitempty,omitzero" yaml:"reason,omitempty" mapstructure:"reason,omitempty"`
}

type TickOperationResponse

type TickOperationResponse struct {
	// Error corresponds to the JSON schema field "error".
	Error *string `json:"error,omitempty,omitzero" yaml:"error,omitempty" mapstructure:"error,omitempty"`

	// RequestId corresponds to the JSON schema field "requestId".
	RequestId string `json:"requestId" yaml:"requestId" mapstructure:"requestId"`

	// Success corresponds to the JSON schema field "success".
	Success bool `json:"success" yaml:"success" mapstructure:"success"`

	// Tick corresponds to the JSON schema field "tick".
	Tick *TickSchema_1 `json:"tick,omitempty,omitzero" yaml:"tick,omitempty" mapstructure:"tick,omitempty"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

RPC response for tick operation

type TickOperationType

type TickOperationType string
const TickOperationTypeAddNote TickOperationType = "add_note"
const TickOperationTypeApprove TickOperationType = "approve"
const TickOperationTypeClose TickOperationType = "close"
const TickOperationTypeReject TickOperationType = "reject"
const TickOperationTypeReopen TickOperationType = "reopen"

type TickRequires

type TickRequires string
const TickRequiresApproval TickRequires = "approval"
const TickRequiresContent TickRequires = "content"
const TickRequiresReview TickRequires = "review"

type TickResponse

type TickResponse struct {
	// Criteria that must be met for completion
	AcceptanceCriteria *string `` /* 127-byte string literal not displayed */

	// Tick IDs to preferably work first if feasible; soft ordering only, never gates
	// readiness (use blocked_by for that). Missing or closed targets are ignored
	After []string `json:"after,omitempty,omitzero" yaml:"after,omitempty" mapstructure:"after,omitempty"`

	// Current wait state - what the tick is waiting for
	Awaiting *TickAwaiting `json:"awaiting,omitempty,omitzero" yaml:"awaiting,omitempty" mapstructure:"awaiting,omitempty"`

	// IDs of ticks that block this one
	BlockedBy []string `json:"blocked_by,omitempty,omitzero" yaml:"blocked_by,omitempty" mapstructure:"blocked_by,omitempty"`

	// ISO timestamp when the tick was closed
	ClosedAt *time.Time `json:"closed_at,omitempty,omitzero" yaml:"closed_at,omitempty" mapstructure:"closed_at,omitempty"`

	// Reason for closing (e.g., completed, wont-fix, duplicate)
	ClosedReason *string `json:"closed_reason,omitempty,omitzero" yaml:"closed_reason,omitempty" mapstructure:"closed_reason,omitempty"`

	// Computed kanban column
	Column TickColumn `json:"column" yaml:"column" mapstructure:"column"`

	// ISO timestamp when the tick was created
	CreatedAt time.Time `json:"created_at" yaml:"created_at" mapstructure:"created_at"`

	// Who created this tick
	CreatedBy string `json:"created_by" yaml:"created_by" mapstructure:"created_by"`

	// ISO timestamp - tick is deferred until this time
	DeferUntil *time.Time `json:"defer_until,omitempty,omitzero" yaml:"defer_until,omitempty" mapstructure:"defer_until,omitempty"`

	// Detailed description of the work to be done
	Description *string `json:"description,omitempty,omitzero" yaml:"description,omitempty" mapstructure:"description,omitempty"`

	// ID of tick during which this tick was discovered
	DiscoveredFrom *string `json:"discovered_from,omitempty,omitzero" yaml:"discovered_from,omitempty" mapstructure:"discovered_from,omitempty"`

	// Reference to external issue tracker (e.g., GitHub issue URL)
	ExternalRef *string `json:"external_ref,omitempty,omitzero" yaml:"external_ref,omitempty" mapstructure:"external_ref,omitempty"`

	// Unique identifier for the tick
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Whether this tick is blocked by unresolved dependencies
	IsBlocked bool `json:"isBlocked" yaml:"isBlocked" mapstructure:"isBlocked"`

	// Optional labels for categorization
	Labels []string `json:"labels,omitempty,omitzero" yaml:"labels,omitempty" mapstructure:"labels,omitempty"`

	// Legacy field - use awaiting instead. True means awaiting=work
	Manual *bool `json:"manual,omitempty,omitzero" yaml:"manual,omitempty" mapstructure:"manual,omitempty"`

	// Timestamped notes appended during work
	Notes *string `json:"notes,omitempty,omitzero" yaml:"notes,omitempty" mapstructure:"notes,omitempty"`

	// Who is responsible for this tick (agent or human)
	Owner string `json:"owner" yaml:"owner" mapstructure:"owner"`

	// Parent epic ID if this tick belongs to an epic
	Parent *string `json:"parent,omitempty,omitzero" yaml:"parent,omitempty" mapstructure:"parent,omitempty"`

	// Priority level (0=highest, 4=lowest)
	Priority int `json:"priority" yaml:"priority" mapstructure:"priority"`

	// Pre-declared gate that must be satisfied before closing
	Requires *TickRequires `json:"requires,omitempty,omitzero" yaml:"requires,omitempty" mapstructure:"requires,omitempty"`

	// Process-tick role in an epic's skeleton: review (final review) or closeout
	// (retro + plan next). Absent means a normal work tick
	Role *TickRole `json:"role,omitempty,omitzero" yaml:"role,omitempty" mapstructure:"role,omitempty"`

	// ISO timestamp when the tick entered in_progress status
	StartedAt *time.Time `json:"started_at,omitempty,omitzero" yaml:"started_at,omitempty" mapstructure:"started_at,omitempty"`

	// Status corresponds to the JSON schema field "status".
	Status TickStatus `json:"status" yaml:"status" mapstructure:"status"`

	// Optional precise ISO calendar day (YYYY-MM-DD) the tick targets; no
	// time-of-day, no fuzziness. Absent is the common case. Feeds the derived
	// overdue/on-track signal and never gates execution
	TargetDate *string `json:"target_date,omitempty,omitzero" yaml:"target_date,omitempty" mapstructure:"target_date,omitempty"`

	// Short title describing the work item
	Title string `json:"title" yaml:"title" mapstructure:"title"`

	// Type corresponds to the JSON schema field "type".
	Type TickType `json:"type" yaml:"type" mapstructure:"type"`

	// ISO timestamp when the tick was last updated
	UpdatedAt time.Time `json:"updated_at" yaml:"updated_at" mapstructure:"updated_at"`

	// Human response to an awaiting state
	Verdict *TickVerdict `json:"verdict,omitempty,omitzero" yaml:"verdict,omitempty" mapstructure:"verdict,omitempty"`
}

Tick with computed board fields (used in list responses)

type TickRole added in v0.19.0

type TickRole string
const TickRoleCloseout TickRole = "closeout"
const TickRoleReview TickRole = "review"

type TickSchema

type TickSchema struct {
	// Criteria that must be met for completion
	AcceptanceCriteria *string `` /* 127-byte string literal not displayed */

	// Tick IDs to preferably work first if feasible; soft ordering only, never gates
	// readiness (use blocked_by for that). Missing or closed targets are ignored
	After []string `json:"after,omitempty,omitzero" yaml:"after,omitempty" mapstructure:"after,omitempty"`

	// Current wait state - what the tick is waiting for
	Awaiting *TickAwaiting `json:"awaiting,omitempty,omitzero" yaml:"awaiting,omitempty" mapstructure:"awaiting,omitempty"`

	// IDs of ticks that block this one
	BlockedBy []string `json:"blocked_by,omitempty,omitzero" yaml:"blocked_by,omitempty" mapstructure:"blocked_by,omitempty"`

	// ISO timestamp when the tick was closed
	ClosedAt *time.Time `json:"closed_at,omitempty,omitzero" yaml:"closed_at,omitempty" mapstructure:"closed_at,omitempty"`

	// Reason for closing (e.g., completed, wont-fix, duplicate)
	ClosedReason *string `json:"closed_reason,omitempty,omitzero" yaml:"closed_reason,omitempty" mapstructure:"closed_reason,omitempty"`

	// ISO timestamp when the tick was created
	CreatedAt time.Time `json:"created_at" yaml:"created_at" mapstructure:"created_at"`

	// Who created this tick
	CreatedBy string `json:"created_by" yaml:"created_by" mapstructure:"created_by"`

	// ISO timestamp - tick is deferred until this time
	DeferUntil *time.Time `json:"defer_until,omitempty,omitzero" yaml:"defer_until,omitempty" mapstructure:"defer_until,omitempty"`

	// Detailed description of the work to be done
	Description *string `json:"description,omitempty,omitzero" yaml:"description,omitempty" mapstructure:"description,omitempty"`

	// ID of tick during which this tick was discovered
	DiscoveredFrom *string `json:"discovered_from,omitempty,omitzero" yaml:"discovered_from,omitempty" mapstructure:"discovered_from,omitempty"`

	// Reference to external issue tracker (e.g., GitHub issue URL)
	ExternalRef *string `json:"external_ref,omitempty,omitzero" yaml:"external_ref,omitempty" mapstructure:"external_ref,omitempty"`

	// Unique identifier for the tick
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Optional labels for categorization
	Labels []string `json:"labels,omitempty,omitzero" yaml:"labels,omitempty" mapstructure:"labels,omitempty"`

	// Legacy field - use awaiting instead. True means awaiting=work
	Manual *bool `json:"manual,omitempty,omitzero" yaml:"manual,omitempty" mapstructure:"manual,omitempty"`

	// Timestamped notes appended during work
	Notes *string `json:"notes,omitempty,omitzero" yaml:"notes,omitempty" mapstructure:"notes,omitempty"`

	// Who is responsible for this tick (agent or human)
	Owner string `json:"owner" yaml:"owner" mapstructure:"owner"`

	// Parent epic ID if this tick belongs to an epic
	Parent *string `json:"parent,omitempty,omitzero" yaml:"parent,omitempty" mapstructure:"parent,omitempty"`

	// Priority level (0=highest, 4=lowest)
	Priority int `json:"priority" yaml:"priority" mapstructure:"priority"`

	// Pre-declared gate that must be satisfied before closing
	Requires *TickRequires `json:"requires,omitempty,omitzero" yaml:"requires,omitempty" mapstructure:"requires,omitempty"`

	// Process-tick role in an epic's skeleton: review (final review) or closeout
	// (retro + plan next). Absent means a normal work tick
	Role *TickRole `json:"role,omitempty,omitzero" yaml:"role,omitempty" mapstructure:"role,omitempty"`

	// ISO timestamp when the tick entered in_progress status
	StartedAt *time.Time `json:"started_at,omitempty,omitzero" yaml:"started_at,omitempty" mapstructure:"started_at,omitempty"`

	// Status corresponds to the JSON schema field "status".
	Status TickStatus `json:"status" yaml:"status" mapstructure:"status"`

	// Optional precise ISO calendar day (YYYY-MM-DD) the tick targets; no
	// time-of-day, no fuzziness. Absent is the common case. Feeds the derived
	// overdue/on-track signal and never gates execution
	TargetDate *string `json:"target_date,omitempty,omitzero" yaml:"target_date,omitempty" mapstructure:"target_date,omitempty"`

	// Short title describing the work item
	Title string `json:"title" yaml:"title" mapstructure:"title"`

	// Type corresponds to the JSON schema field "type".
	Type TickType `json:"type" yaml:"type" mapstructure:"type"`

	// ISO timestamp when the tick was last updated
	UpdatedAt time.Time `json:"updated_at" yaml:"updated_at" mapstructure:"updated_at"`

	// Human response to an awaiting state
	Verdict *TickVerdict `json:"verdict,omitempty,omitzero" yaml:"verdict,omitempty" mapstructure:"verdict,omitempty"`
}

A single work item (task, bug, feature, epic, or chore)

type TickSchema_1

type TickSchema_1 struct {
	// Criteria that must be met for completion
	AcceptanceCriteria *string `` /* 127-byte string literal not displayed */

	// Tick IDs to preferably work first if feasible; soft ordering only, never gates
	// readiness (use blocked_by for that). Missing or closed targets are ignored
	After []string `json:"after,omitempty,omitzero" yaml:"after,omitempty" mapstructure:"after,omitempty"`

	// Current wait state - what the tick is waiting for
	Awaiting *TickAwaiting `json:"awaiting,omitempty,omitzero" yaml:"awaiting,omitempty" mapstructure:"awaiting,omitempty"`

	// IDs of ticks that block this one
	BlockedBy []string `json:"blocked_by,omitempty,omitzero" yaml:"blocked_by,omitempty" mapstructure:"blocked_by,omitempty"`

	// ISO timestamp when the tick was closed
	ClosedAt *time.Time `json:"closed_at,omitempty,omitzero" yaml:"closed_at,omitempty" mapstructure:"closed_at,omitempty"`

	// Reason for closing (e.g., completed, wont-fix, duplicate)
	ClosedReason *string `json:"closed_reason,omitempty,omitzero" yaml:"closed_reason,omitempty" mapstructure:"closed_reason,omitempty"`

	// ISO timestamp when the tick was created
	CreatedAt time.Time `json:"created_at" yaml:"created_at" mapstructure:"created_at"`

	// Who created this tick
	CreatedBy string `json:"created_by" yaml:"created_by" mapstructure:"created_by"`

	// ISO timestamp - tick is deferred until this time
	DeferUntil *time.Time `json:"defer_until,omitempty,omitzero" yaml:"defer_until,omitempty" mapstructure:"defer_until,omitempty"`

	// Detailed description of the work to be done
	Description *string `json:"description,omitempty,omitzero" yaml:"description,omitempty" mapstructure:"description,omitempty"`

	// ID of tick during which this tick was discovered
	DiscoveredFrom *string `json:"discovered_from,omitempty,omitzero" yaml:"discovered_from,omitempty" mapstructure:"discovered_from,omitempty"`

	// Reference to external issue tracker (e.g., GitHub issue URL)
	ExternalRef *string `json:"external_ref,omitempty,omitzero" yaml:"external_ref,omitempty" mapstructure:"external_ref,omitempty"`

	// Unique identifier for the tick
	Id string `json:"id" yaml:"id" mapstructure:"id"`

	// Optional labels for categorization
	Labels []string `json:"labels,omitempty,omitzero" yaml:"labels,omitempty" mapstructure:"labels,omitempty"`

	// Legacy field - use awaiting instead. True means awaiting=work
	Manual *bool `json:"manual,omitempty,omitzero" yaml:"manual,omitempty" mapstructure:"manual,omitempty"`

	// Timestamped notes appended during work
	Notes *string `json:"notes,omitempty,omitzero" yaml:"notes,omitempty" mapstructure:"notes,omitempty"`

	// Who is responsible for this tick (agent or human)
	Owner string `json:"owner" yaml:"owner" mapstructure:"owner"`

	// Parent epic ID if this tick belongs to an epic
	Parent *string `json:"parent,omitempty,omitzero" yaml:"parent,omitempty" mapstructure:"parent,omitempty"`

	// Priority level (0=highest, 4=lowest)
	Priority int `json:"priority" yaml:"priority" mapstructure:"priority"`

	// Pre-declared gate that must be satisfied before closing
	Requires *TickRequires `json:"requires,omitempty,omitzero" yaml:"requires,omitempty" mapstructure:"requires,omitempty"`

	// Process-tick role in an epic's skeleton: review (final review) or closeout
	// (retro + plan next). Absent means a normal work tick
	Role *TickRole `json:"role,omitempty,omitzero" yaml:"role,omitempty" mapstructure:"role,omitempty"`

	// ISO timestamp when the tick entered in_progress status
	StartedAt *time.Time `json:"started_at,omitempty,omitzero" yaml:"started_at,omitempty" mapstructure:"started_at,omitempty"`

	// Status corresponds to the JSON schema field "status".
	Status TickStatus `json:"status" yaml:"status" mapstructure:"status"`

	// Optional precise ISO calendar day (YYYY-MM-DD) the tick targets; no
	// time-of-day, no fuzziness. Absent is the common case. Feeds the derived
	// overdue/on-track signal and never gates execution
	TargetDate *string `json:"target_date,omitempty,omitzero" yaml:"target_date,omitempty" mapstructure:"target_date,omitempty"`

	// Short title describing the work item
	Title string `json:"title" yaml:"title" mapstructure:"title"`

	// Type corresponds to the JSON schema field "type".
	Type TickType `json:"type" yaml:"type" mapstructure:"type"`

	// ISO timestamp when the tick was last updated
	UpdatedAt time.Time `json:"updated_at" yaml:"updated_at" mapstructure:"updated_at"`

	// Human response to an awaiting state
	Verdict *TickVerdict `json:"verdict,omitempty,omitzero" yaml:"verdict,omitempty" mapstructure:"verdict,omitempty"`
}

A single work item (task, bug, feature, epic, or chore)

type TickStatus

type TickStatus string
const TickStatusClosed TickStatus = "closed"
const TickStatusInProgress TickStatus = "in_progress"
const TickStatusOpen TickStatus = "open"

type TickType

type TickType string
const TickTypeBug TickType = "bug"
const TickTypeChore TickType = "chore"
const TickTypeEpic TickType = "epic"
const TickTypeFeature TickType = "feature"
const TickTypeTask TickType = "task"

type TickUpdateRequest

type TickUpdateRequest struct {
	// Tick corresponds to the JSON schema field "tick".
	Tick TickSchema_1 `json:"tick" yaml:"tick" mapstructure:"tick"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Client request to update tick

type TickUpdatedMessage

type TickUpdatedMessage struct {
	// Tick corresponds to the JSON schema field "tick".
	Tick TickSchema_1 `json:"tick" yaml:"tick" mapstructure:"tick"`

	// Type corresponds to the JSON schema field "type".
	Type interface{} `json:"type" yaml:"type" mapstructure:"type"`
}

Single tick updated

type TickVerdict

type TickVerdict string
const TickVerdictApproved TickVerdict = "approved"
const TickVerdictRejected TickVerdict = "rejected"

type UpdateTickRequest

type UpdateTickRequest struct {
	// New owner
	Owner *string `json:"owner,omitempty,omitzero" yaml:"owner,omitempty" mapstructure:"owner,omitempty"`

	// New parent epic ID
	Parent *string `json:"parent,omitempty,omitzero" yaml:"parent,omitempty" mapstructure:"parent,omitempty"`

	// New priority level
	Priority *int `json:"priority,omitempty,omitzero" yaml:"priority,omitempty" mapstructure:"priority,omitempty"`

	// Pre-declared gate for closing
	Requires *TickRequires `json:"requires,omitempty,omitzero" yaml:"requires,omitempty" mapstructure:"requires,omitempty"`

	// New tick type
	Type *TickType `json:"type,omitempty,omitzero" yaml:"type,omitempty" mapstructure:"type,omitempty"`
}

Request body for PATCH /api/ticks/:id

Jump to

Keyboard shortcuts

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