# GooseFactory — Shared Package **Owner:** Architect (maintained by all agents) Canonical TypeScript types, constants, and Zod validation schemas. Every type in this package is derived from `CONTRACTS.md`. ## Rules 1. **This package is the SINGLE source of TypeScript types.** 2. All other packages import from `@goosefactory/shared`. 3. If you need a new type that crosses package boundaries, add it HERE first. 4. Never define the same type in two packages. ## Structure ``` src/ ├── types/ │ ├── pipeline.ts # Pipeline, PipelineStage, PipelineStatus │ ├── task.ts # Task, TaskType, TaskStatus, TaskDecision │ ├── approval.ts # Approval, ApprovalType, ApprovalStatus │ ├── agent.ts # Agent, AgentType, AgentHealth │ ├── asset.ts # Asset, AssetType │ ├── feedback.ts # FeedbackEvent, FeedbackPayload, all feedback subtypes │ ├── modal.ts # ModalMessage, ModalResponse, ModalMetrics │ ├── api.ts # ApiResponse, ApiError, PaginationParams │ ├── ws.ts # WsEvent, WsChannel, all event payloads │ └── index.ts # Re-exports everything ├── constants/ │ ├── stages.ts # KANBAN_STAGES, stage order, stage transitions │ ├── errors.ts # ErrorCode values │ └── sla.ts # Default SLA durations └── schemas/ ├── feedback.schema.ts # Zod schema for FeedbackEvent validation ├── pipeline.schema.ts # Zod schema for Pipeline validation └── task.schema.ts # Zod schema for Task validation ``` ## Usage ```typescript import type { Pipeline, Task, FeedbackEvent } from "@goosefactory/shared"; import { KANBAN_STAGES, DEFAULT_SLA } from "@goosefactory/shared/constants"; import { feedbackSchema } from "@goosefactory/shared/schemas"; ```