{"version":3,"sources":["../src/http/errors.ts","../src/http/fetcher.ts","../src/resources/teams.ts","../src/resources/activities.ts","../src/resources/boards.ts","../src/resources/cards.ts","../src/resources/agents.ts","../src/resources/agent-drafts.ts","../src/resources/notifications.ts","../src/resources/apps.ts","../src/resources/integrations.ts","../src/resources/positions.ts","../src/resources/resources.ts","../src/client.ts","../../api-v2/src/types/profile.type.ts","../../api-v2/src/types/team-member.type.ts","../../api-v2/src/types/agent.type.ts","../../api-v2/src/types/board.type.ts","../../api-v2/src/types/card.type.ts","../../api-v2/src/types/activity.type.ts","../../api-v2/src/types/notification.type.ts","../../api-v2/src/types/agent-draft.type.ts","../../api-v2/src/types/position.type.ts","../../api-v2/src/types/resource.type.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["// ── SDK v2 — Error types ───────────────────────────────────────────────────────\n//\n// All SDK errors extend KaibanError so callers can do:\n//   catch (err) { if (err instanceof KaibanError) ... }\n//\n// RFC 9457 problem details are preserved in `problem` when the API returns them.\n\n/** RFC 9457 problem detail shape returned by the API on errors. */\nexport interface ProblemDetail {\n  type:      string;\n  title:     string;\n  status:    number;\n  detail?:   string;\n  instance?: string;\n  [key: string]: unknown;\n}\n\n// ── Base ───────────────────────────────────────────────────────────────────────\n\n/** Base class for all Kaiban SDK errors. */\nexport class KaibanError extends Error {\n  readonly status:  number;\n  readonly problem: ProblemDetail | undefined;\n\n  constructor(message: string, status: number, problem?: ProblemDetail) {\n    super(message);\n    this.name    = \"KaibanError\";\n    this.status  = status;\n    this.problem = problem;\n  }\n}\n\n// ── HTTP error subclasses ──────────────────────────────────────────────────────\n\n/** 400 — malformed request or invalid DSL query. */\nexport class BadRequestError extends KaibanError {\n  constructor(problem?: ProblemDetail) {\n    super(problem?.detail ?? \"Bad request\", 400, problem);\n    this.name = \"BadRequestError\";\n  }\n}\n\n/** 401 — missing or invalid authentication credentials. */\nexport class UnauthorizedError extends KaibanError {\n  constructor(problem?: ProblemDetail) {\n    super(problem?.detail ?? \"Unauthorized\", 401, problem);\n    this.name = \"UnauthorizedError\";\n  }\n}\n\n/** 403 — authenticated but insufficient permissions. */\nexport class ForbiddenError extends KaibanError {\n  constructor(problem?: ProblemDetail) {\n    super(problem?.detail ?? \"Forbidden\", 403, problem);\n    this.name = \"ForbiddenError\";\n  }\n}\n\n/** 404 — resource not found. */\nexport class NotFoundError extends KaibanError {\n  constructor(problem?: ProblemDetail) {\n    super(problem?.detail ?? \"Not found\", 404, problem);\n    this.name = \"NotFoundError\";\n  }\n}\n\n/** 409 — conflict (e.g. alias already in use). */\nexport class ConflictError extends KaibanError {\n  constructor(problem?: ProblemDetail) {\n    super(problem?.detail ?? \"Conflict\", 409, problem);\n    this.name = \"ConflictError\";\n  }\n}\n\n/** 422 — validation error. Includes `errors` array from the API response. */\nexport class ValidationError extends KaibanError {\n  readonly errors: Array<{ path: string[]; message: string }>;\n\n  constructor(problem?: ProblemDetail & { errors?: Array<{ path: string[]; message: string }> }) {\n    super(problem?.detail ?? \"Validation error\", 422, problem);\n    this.name   = \"ValidationError\";\n    this.errors = problem?.errors ?? [];\n  }\n}\n\n/** 429 — rate limit exceeded. */\nexport class RateLimitError extends KaibanError {\n  constructor(problem?: ProblemDetail) {\n    super(problem?.detail ?? \"Rate limit exceeded\", 429, problem);\n    this.name = \"RateLimitError\";\n  }\n}\n\n/** 500 — internal server error. */\nexport class ServerError extends KaibanError {\n  constructor(problem?: ProblemDetail) {\n    super(problem?.detail ?? \"Internal server error\", 500, problem);\n    this.name = \"ServerError\";\n  }\n}\n\n/** 503 — service unavailable (e.g. cold start, DB not ready). */\nexport class ServiceUnavailableError extends KaibanError {\n  constructor(problem?: ProblemDetail) {\n    super(problem?.detail ?? \"Service unavailable\", 503, problem);\n    this.name = \"ServiceUnavailableError\";\n  }\n}\n\n/** Request timed out before the server responded. */\nexport class TimeoutError extends KaibanError {\n  constructor() {\n    super(\"Request timed out\", 0);\n    this.name = \"TimeoutError\";\n  }\n}\n\n/** Request was cancelled via AbortSignal. */\nexport class AbortedError extends KaibanError {\n  constructor() {\n    super(\"Request aborted\", 0);\n    this.name = \"AbortedError\";\n  }\n}\n\n// ── Factory ────────────────────────────────────────────────────────────────────\n\n/** Maps an HTTP status code + optional problem body to the correct error subclass. */\nexport function mapStatusToError(status: number, problem?: ProblemDetail): KaibanError {\n  switch (status) {\n    case 400: return new BadRequestError(problem);\n    case 401: return new UnauthorizedError(problem);\n    case 403: return new ForbiddenError(problem);\n    case 404: return new NotFoundError(problem);\n    case 409: return new ConflictError(problem);\n    case 422: return new ValidationError(problem as any);\n    case 429: return new RateLimitError(problem);\n    case 503: return new ServiceUnavailableError(problem);\n    default:\n      if (status >= 500) return new ServerError(problem);\n      return new KaibanError(problem?.detail ?? `HTTP ${status}`, status, problem);\n  }\n}\n","// ── SDK v2 — Universal HTTP fetcher ───────────────────────────────────────────\n//\n// Wraps globalThis.fetch with:\n//   - Tenant + auth headers injected automatically\n//   - Timeout via AbortSignal.any() (or manual composition on older runtimes)\n//   - RFC 9457 error mapping\n//   - Zero dependencies beyond the Fetch API\n\nimport type { ClientConfig, RequestOptions } from \"./types\";\nimport {\n  AbortedError,\n  TimeoutError,\n  mapStatusToError,\n  type ProblemDetail,\n} from \"./errors\";\nimport type { ListParams, Paginated } from \"../types/index\";\n\nconst DEFAULT_BASE_URL = \"https://agi.kaiban.io/api/v2\";\nconst DEFAULT_TIMEOUT = 30_000;\n\n// ── Query string builder ───────────────────────────────────────────────────────\n\nfunction buildQuery(params?: Record<string, unknown>): string {\n  if (!params) return \"\";\n  const entries = Object.entries(params).filter(\n    ([, v]) => v !== undefined && v !== null && v !== \"\",\n  );\n  if (entries.length === 0) return \"\";\n  const qs = new URLSearchParams(\n    entries.map(([k, v]) => [k, String(v)]),\n  ).toString();\n  return `?${qs}`;\n}\n\n// ── AbortSignal composition ────────────────────────────────────────────────────\n// AbortSignal.any() is available in Node 20+ and modern browsers.\n// For older environments we fall back to a manual approach.\n\nfunction combineSignals(a: AbortSignal, b?: AbortSignal): AbortSignal {\n  if (!b) return a;\n  if (typeof AbortSignal.any === \"function\") return AbortSignal.any([a, b]);\n  // Fallback: first abort wins\n  const ctrl = new AbortController();\n  const abort = () => ctrl.abort();\n  a.addEventListener(\"abort\", abort, { once: true });\n  b.addEventListener(\"abort\", abort, { once: true });\n  return ctrl.signal;\n}\n\n// ── Fetcher class ──────────────────────────────────────────────────────────────\n\nexport class Fetcher {\n  private readonly config: Required<\n    Omit<ClientConfig, \"token\" | \"getToken\" | \"apiKey\">\n  > &\n    Pick<ClientConfig, \"token\" | \"getToken\" | \"apiKey\">;\n\n  constructor(config: ClientConfig) {\n    this.config = {\n      tenant: config.tenant,\n      baseUrl: (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\"),\n      timeoutMs: config.timeoutMs ?? DEFAULT_TIMEOUT,\n      fetch: config.fetch ?? globalThis.fetch.bind(globalThis),\n      apiKey: config.apiKey,\n      token: config.token,\n      getToken: config.getToken,\n    };\n  }\n\n  // ── Auth resolution ──────────────────────────────────────────────────────────\n  // Returns the correct header key + value for the configured auth method.\n  // API key takes precedence; Bearer (static token or getToken factory) is fallback.\n\n  private async resolveAuth(): Promise<\n    | { header: \"X-Api-Key\"; value: string }\n    | { header: \"Authorization\"; value: string }\n    | null\n  > {\n    if (this.config.apiKey) {\n      return { header: \"X-Api-Key\", value: this.config.apiKey };\n    }\n    const token = this.config.getToken\n      ? await this.config.getToken()\n      : this.config.token;\n    if (token) return { header: \"Authorization\", value: `Bearer ${token}` };\n    return null;\n  }\n\n  // ── Core request ─────────────────────────────────────────────────────────────\n\n  async request<T>(\n    method: string,\n    path: string,\n    options: {\n      query?: Record<string, unknown>;\n      body?: unknown;\n      request?: RequestOptions;\n    } = {},\n  ): Promise<T> {\n    const auth = await this.resolveAuth();\n    const timeoutMs = options.request?.timeoutMs ?? this.config.timeoutMs;\n    const timeoutSignal = AbortSignal.timeout(timeoutMs);\n    const signal = combineSignals(timeoutSignal, options.request?.signal);\n\n    const url = `${this.config.baseUrl}${path}${buildQuery(options.query)}`;\n\n    const headers: Record<string, string> = {\n      \"Content-Type\": \"application/json\",\n      \"x-tenant\": this.config.tenant,\n      ...options.request?.headers,\n    };\n    if (auth) headers[auth.header] = auth.value;\n\n    let response: Response;\n    try {\n      response = await this.config.fetch(url, {\n        method,\n        headers,\n        body:\n          options.body !== undefined ? JSON.stringify(options.body) : undefined,\n        signal,\n      });\n    } catch (err: unknown) {\n      if (err instanceof Error) {\n        if (err.name === \"AbortError\") throw new AbortedError();\n        if (err.name === \"TimeoutError\") throw new TimeoutError();\n      }\n      throw err;\n    }\n\n    if (!response.ok) {\n      let problem: ProblemDetail | undefined;\n      try {\n        problem = (await response.json()) as ProblemDetail;\n      } catch {\n        // non-JSON error body — leave problem undefined\n      }\n      throw mapStatusToError(response.status, problem);\n    }\n\n    // 204 No Content\n    if (response.status === 204) return undefined as T;\n\n    return response.json() as Promise<T>;\n  }\n\n  // ── Convenience methods ───────────────────────────────────────────────────────\n\n  get<T>(\n    path: string,\n    query?: Record<string, unknown>,\n    opts?: RequestOptions,\n  ): Promise<T> {\n    return this.request<T>(\"GET\", path, { query, request: opts });\n  }\n\n  post<T>(path: string, body?: unknown, opts?: RequestOptions): Promise<T> {\n    return this.request<T>(\"POST\", path, { body, request: opts });\n  }\n\n  patch<T>(path: string, body?: unknown, opts?: RequestOptions): Promise<T> {\n    return this.request<T>(\"PATCH\", path, { body, request: opts });\n  }\n\n  delete<T = void>(path: string, opts?: RequestOptions): Promise<T> {\n    return this.request<T>(\"DELETE\", path, { request: opts });\n  }\n\n  // ── List helper — maps ListParams to query object ─────────────────────────────\n\n  list<T>(\n    path: string,\n    params?: ListParams,\n    opts?: RequestOptions,\n  ): Promise<Paginated<T>> {\n    return this.get<Paginated<T>>(\n      path,\n      params as Record<string, unknown>,\n      opts,\n    );\n  }\n\n  // ── SSE streaming ─────────────────────────────────────────────────────────────\n  // Returns the raw Response so resource clients can parse the event stream.\n  // Callers are responsible for aborting via the signal in opts.\n\n  async stream(\n    path: string,\n    query?: Record<string, unknown>,\n    opts?: RequestOptions,\n  ): Promise<Response> {\n    const auth = await this.resolveAuth();\n    const url = `${this.config.baseUrl}${path}${buildQuery(query)}`;\n\n    const headers: Record<string, string> = {\n      Accept: \"text/event-stream\",\n      \"x-tenant\": this.config.tenant,\n      \"Cache-Control\": \"no-cache\",\n      ...opts?.headers,\n    };\n    if (auth) headers[auth.header] = auth.value;\n\n    let response: Response;\n    try {\n      response = await this.config.fetch(url, {\n        method: \"GET\",\n        headers,\n        signal: opts?.signal,\n        // Keep the connection alive — no timeout for streaming\n      });\n    } catch (err: unknown) {\n      if (err instanceof Error && err.name === \"AbortError\")\n        throw new AbortedError();\n      throw err;\n    }\n\n    if (!response.ok) {\n      let problem: ProblemDetail | undefined;\n      try {\n        problem = (await response.json()) as ProblemDetail;\n      } catch {\n        /* noop */\n      }\n      throw mapStatusToError(response.status, problem);\n    }\n\n    return response;\n  }\n}\n","// ── SDK v2 — TeamsClient ───────────────────────────────────────────────────────\n//\n// Covers:\n//   GET    /v2/teams\n//   POST   /v2/teams\n//   GET    /v2/teams/:id\n//   PATCH  /v2/teams/:id\n//   DELETE /v2/teams/:id\n//   POST   /v2/teams/:id/invitations\n//   GET    /v2/teams/:id/invitations\n//   DELETE /v2/teams/:id/invitations/:uid\n\nimport type { Fetcher } from \"../http/fetcher\";\nimport type { RequestOptions } from \"../http/types\";\nimport type {\n  Team,\n  TeamCreate,\n  TeamUpdate,\n  TeamMember,\n  TeamMemberCreate,\n  TeamMemberUpdate,\n  InviteCreate,\n  Invite,\n  ListParams,\n  Paginated,\n} from \"../types/index\";\n\nexport class TeamsClient {\n  constructor(private readonly fetcher: Fetcher) {}\n\n  // ── Teams CRUD ───────────────────────────────────────────────────────────────\n\n  /**\n   * Lists teams with cursor pagination and optional DSL filtering.\n   *\n   * @example\n   * ```ts\n   * const page = await client.teams.list({ limit: 20 });\n   * for (const team of page.data) console.log(team.name);\n   * ```\n   */\n  list(params?: ListParams, opts?: RequestOptions): Promise<Paginated<Team>> {\n    return this.fetcher.list<Team>(\"/teams\", params, opts);\n  }\n\n  /**\n   * Creates a new team.\n   *\n   * @example\n   * ```ts\n   * const team = await client.teams.create({ name: \"Engineering\", description: \"...\" });\n   * ```\n   */\n  create(data: TeamCreate, opts?: RequestOptions): Promise<Team> {\n    return this.fetcher.post<Team>(\"/teams\", data, opts);\n  }\n\n  /**\n   * Gets a single team by ID.\n   *\n   * @throws {NotFoundError} when no team with `id` exists.\n   */\n  get(id: string, opts?: RequestOptions): Promise<Team> {\n    return this.fetcher.get<Team>(`/teams/${id}`, undefined, opts);\n  }\n\n  /**\n   * Partially updates a team. Only provided fields are changed.\n   *\n   * @throws {NotFoundError} when no team with `id` exists.\n   */\n  update(id: string, data: TeamUpdate, opts?: RequestOptions): Promise<Team> {\n    return this.fetcher.patch<Team>(`/teams/${id}`, data, opts);\n  }\n\n  /**\n   * Deletes a team and all its members.\n   *\n   * @throws {NotFoundError} when no team with `id` exists.\n   */\n  delete(id: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/teams/${id}`, opts);\n  }\n\n  // ── Team Members ─────────────────────────────────────────────────────────────\n\n  /**\n   * Lists members of a team.\n   *\n   * @example\n   * ```ts\n   * const members = await client.teams.listMembers(teamId);\n   * ```\n   */\n  listMembers(teamId: string, params?: ListParams, opts?: RequestOptions): Promise<Paginated<TeamMember>> {\n    return this.fetcher.list<TeamMember>(`/teams/${teamId}/members`, params, opts);\n  }\n\n  /**\n   * Adds a member to a team.\n   *\n   * @example\n   * ```ts\n   * const member = await client.teams.addMember(teamId, {\n   *   user_id: \"user-123\", role: \"member\", full_name: \"Alice\"\n   * });\n   * ```\n   */\n  addMember(teamId: string, data: TeamMemberCreate, opts?: RequestOptions): Promise<TeamMember> {\n    return this.fetcher.post<TeamMember>(`/teams/${teamId}/members`, data, opts);\n  }\n\n  /**\n   * Updates a team member's role or profile fields.\n   *\n   * @throws {NotFoundError} when the member doesn't exist in the team.\n   */\n  updateMember(teamId: string, memberId: string, data: TeamMemberUpdate, opts?: RequestOptions): Promise<TeamMember> {\n    return this.fetcher.patch<TeamMember>(`/teams/${teamId}/members/${memberId}`, data, opts);\n  }\n\n  /**\n   * Removes a member from a team.\n   *\n   * @throws {NotFoundError} when the member doesn't exist in the team.\n   */\n  removeMember(teamId: string, memberId: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/teams/${teamId}/members/${memberId}`, opts);\n  }\n\n  // ── Invitations ───────────────────────────────────────────────────────────────\n\n  /**\n   * Invites a user to a team by email.\n   * Creates a new Firebase user if the email doesn't exist yet.\n   * Returns `is_new_user: true` and a `temp_code` for new accounts.\n   *\n   * @example\n   * ```ts\n   * const result = await client.teams.invite(teamId, {\n   *   email: \"alice@example.com\",\n   *   role: \"member\",\n   *   full_name: \"Alice\",\n   * });\n   * if (result.is_new_user) console.log(\"Temp code:\", result.temp_code);\n   * ```\n   */\n  invite(teamId: string, data: InviteCreate, opts?: RequestOptions): Promise<Invite> {\n    return this.fetcher.post<Invite>(`/teams/${teamId}/invitations`, data, opts);\n  }\n\n  /**\n   * Lists pending invitations for a team.\n   */\n  listInvitations(teamId: string, params?: ListParams, opts?: RequestOptions): Promise<Paginated<TeamMember>> {\n    return this.fetcher.list<TeamMember>(`/teams/${teamId}/invitations`, params, opts);\n  }\n\n  /**\n   * Removes (cancels) a pending invitation.\n   *\n   * @throws {NotFoundError} when the invitation doesn't exist.\n   */\n  deleteInvitation(teamId: string, uid: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/teams/${teamId}/invitations/${uid}`, opts);\n  }\n}\n","// ── SDK v2 — ActivitiesClient ──────────────────────────────────────────────────\n//\n// Covers:\n//   GET  /v2/activities          — list (cursor paginated)\n//   POST /v2/activities          — create single\n//   POST /v2/activities/bulk     — create many\n//   GET  /v2/activities/sse      — real-time SSE stream\n\nimport type { Fetcher } from \"../http/fetcher\";\nimport type { RequestOptions } from \"../http/types\";\nimport type { Activity, ActivityCreate, ListParams, Paginated } from \"../types/index\";\n\n// ── SSE types ─────────────────────────────────────────────────────────────────\n\n/** Options for `ActivitiesClient.stream()`. */\nexport interface StreamOptions {\n  /** DSL filter applied server-side — only matching activities are streamed. */\n  q?: string;\n  /** Field projection — limits which fields are included in each event. */\n  fields?: string;\n  /** AbortSignal to close the stream. Pass `controller.signal` to cancel. */\n  signal?: AbortSignal;\n  /** Called for each activity received from the stream. */\n  onActivity: (activity: Activity) => void;\n  /** Called when the stream encounters a parse or transport error. */\n  onError?: (err: Error) => void;\n  /** Called when the stream closes (signal aborted or server closed). */\n  onClose?: () => void;\n}\n\n/** Return value of `stream()` — use `cancel()` to close the connection. */\nexport interface StreamHandle {\n  /** Aborts the underlying fetch request and closes the SSE connection. */\n  cancel: () => void;\n}\n\n// ── Helpers ────────────────────────────────────────────────────────────────────\n\n/**\n * Parses a raw SSE line buffer into Activity objects.\n * SSE format: lines starting with \"data: \" carry JSON payloads.\n * Lines starting with \"event:\" carry the event name (we accept all events).\n * Empty lines separate events.\n */\nfunction* parseSseChunk(chunk: string): Generator<Activity> {\n  const lines = chunk.split(\"\\n\");\n  for (const line of lines) {\n    if (!line.startsWith(\"data: \")) continue;\n    const raw = line.slice(6).trim();\n    if (!raw || raw === \"[DONE]\") continue;\n    try {\n      yield JSON.parse(raw) as Activity;\n    } catch {\n      // malformed JSON — skip silently\n    }\n  }\n}\n\n// ── ActivitiesClient ───────────────────────────────────────────────────────────\n\nexport class ActivitiesClient {\n  constructor(private readonly fetcher: Fetcher) {}\n\n  // ── REST ─────────────────────────────────────────────────────────────────────\n\n  /**\n   * Lists activities with cursor pagination and optional DSL filtering.\n   *\n   * @example\n   * ```ts\n   * const page = await client.activities.list({\n   *   q: \"card_id.eq:'card-abc'\",\n   *   sort: \"created_at:desc\",\n   *   limit: 50,\n   * });\n   * ```\n   */\n  list(params?: ListParams, opts?: RequestOptions): Promise<Paginated<Activity>> {\n    return this.fetcher.list<Activity>(\"/activities\", params, opts);\n  }\n\n  /**\n   * Creates a single activity.\n   *\n   * @example\n   * ```ts\n   * const activity = await client.activities.create({\n   *   team_id: \"team-abc\",\n   *   type: \"card_status_changed\",\n   *   description: \"Status changed to done\",\n   *   card_id: \"card-123\",\n   *   actor: { id: \"user-1\", type: \"user\", name: \"Alice\" },\n   * });\n   * ```\n   */\n  create(data: ActivityCreate, opts?: RequestOptions): Promise<Activity> {\n    return this.fetcher.post<Activity>(\"/activities\", data, opts);\n  }\n\n  /**\n   * Bulk-creates multiple activities in a single request.\n   * More efficient than calling `create()` in a loop.\n   *\n   * @example\n   * ```ts\n   * const created = await client.activities.bulkCreate([\n   *   { team_id: \"t\", type: \"card_created\", description: \"...\", ... },\n   *   { team_id: \"t\", type: \"card_member_added\", description: \"...\", ... },\n   * ]);\n   * ```\n   */\n  bulkCreate(items: ActivityCreate[], opts?: RequestOptions): Promise<Activity[]> {\n    return this.fetcher.post<Activity[]>(\"/activities/bulk\", { items }, opts);\n  }\n\n  // ── SSE streaming ─────────────────────────────────────────────────────────────\n\n  /**\n   * Opens a real-time SSE stream of activities.\n   *\n   * Activities are pushed server-side as soon as they are created.\n   * The stream runs until `cancel()` is called or the optional `signal` is aborted.\n   *\n   * Works in **Node 18+** (native fetch streaming) and **all modern browsers**.\n   * For Node < 18 inject a `fetch` that supports streaming via `ClientConfig.fetch`.\n   *\n   * @example\n   * ```ts\n   * const { cancel } = client.activities.stream({\n   *   q: `board_id.eq:'${boardId}'`,\n   *   onActivity: (activity) => {\n   *     console.log(activity.type, activity.description);\n   *   },\n   *   onError: (err) => console.error(\"SSE error:\", err),\n   *   onClose: ()  => console.log(\"Stream closed\"),\n   * });\n   *\n   * // Later — close the connection\n   * cancel();\n   * ```\n   *\n   * @example With AbortController:\n   * ```ts\n   * const ctrl = new AbortController();\n   * client.activities.stream({ signal: ctrl.signal, onActivity: handler });\n   * // Cancel from outside\n   * ctrl.abort();\n   * ```\n   */\n  stream(options: StreamOptions): StreamHandle {\n    const ctrl = new AbortController();\n\n    // Merge caller's signal with our internal controller\n    if (options.signal) {\n      options.signal.addEventListener(\"abort\", () => ctrl.abort(), { once: true });\n    }\n\n    // Fire-and-forget async loop — errors surface via onError\n    void this.#runStream(ctrl.signal, options);\n\n    return {\n      cancel: () => ctrl.abort(),\n    };\n  }\n\n  // ── Private SSE loop ──────────────────────────────────────────────────────────\n\n  async #runStream(signal: AbortSignal, options: StreamOptions): Promise<void> {\n    const query: Record<string, string> = {};\n    if (options.q)      query[\"q\"]      = options.q;\n    if (options.fields) query[\"fields\"] = options.fields;\n\n    let response: Response;\n    try {\n      response = await this.fetcher.stream(\"/activities/sse\", query, { signal });\n    } catch (err) {\n      if (signal.aborted) {\n        options.onClose?.();\n        return;\n      }\n      options.onError?.(err instanceof Error ? err : new Error(String(err)));\n      options.onClose?.();\n      return;\n    }\n\n    // Read the body as a text stream using the WHATWG Streams API\n    // (available in Node 18+ via fetch, and all modern browsers)\n    const reader  = response.body?.getReader();\n    const decoder = new TextDecoder();\n    let   buffer  = \"\";\n\n    if (!reader) {\n      options.onError?.(new Error(\"Response body is not readable\"));\n      options.onClose?.();\n      return;\n    }\n\n    try {\n      while (true) {\n        if (signal.aborted) break;\n\n        const { done, value } = await reader.read();\n        if (done) break;\n\n        buffer += decoder.decode(value, { stream: true });\n\n        // SSE events are separated by double newlines\n        const parts = buffer.split(\"\\n\\n\");\n        // Last part may be incomplete — keep it in the buffer\n        buffer = parts.pop() ?? \"\";\n\n        for (const part of parts) {\n          for (const activity of parseSseChunk(part)) {\n            try {\n              options.onActivity(activity);\n            } catch (handlerErr) {\n              options.onError?.(\n                handlerErr instanceof Error ? handlerErr : new Error(String(handlerErr)),\n              );\n            }\n          }\n        }\n      }\n    } catch (err) {\n      if (!signal.aborted) {\n        options.onError?.(err instanceof Error ? err : new Error(String(err)));\n      }\n    } finally {\n      reader.releaseLock();\n      options.onClose?.();\n    }\n  }\n}\n","// ── SDK v2 — BoardsClient ──────────────────────────────────────────────────────\n//\n// Covers:\n//   GET    /v2/boards\n//   POST   /v2/boards\n//   GET    /v2/boards/:id\n//   PATCH  /v2/boards/:id\n//   DELETE /v2/boards/:id\n//   GET    /v2/boards/:id/tags\n//   GET    /v2/boards/:id/members\n//   DELETE /v2/boards/:id/recycle-bin\n//   GET    /v2/boards/:id/external-channels\n//   POST   /v2/boards/:id/external-channels\n//   GET    /v2/boards/:id/external-channels/:cid\n//   PATCH  /v2/boards/:id/external-channels/:cid\n//   DELETE /v2/boards/:id/external-channels/:cid\n\nimport type { Fetcher } from \"../http/fetcher\";\nimport type { RequestOptions } from \"../http/types\";\nimport type {\n  Board,\n  BoardCreate,\n  BoardUpdate,\n  ExternalChannel,\n  ExternalChannelCreate,\n  ExternalChannelUpdate,\n  ListParams,\n  Paginated,\n} from \"../types/index\";\n\nexport class BoardsClient {\n  constructor(private readonly fetcher: Fetcher) {}\n\n  // ── Boards CRUD ───────────────────────────────────────────────────────────────\n\n  /**\n   * Lists boards with cursor pagination and optional DSL filtering.\n   *\n   * @example\n   * ```ts\n   * const page = await client.boards.list({ q: \"team_id.eq:'team-abc'\" });\n   * for (const board of page.data) console.log(board.name);\n   * ```\n   */\n  list(params?: ListParams, opts?: RequestOptions): Promise<Paginated<Board>> {\n    return this.fetcher.list<Board>(\"/boards\", params, opts);\n  }\n\n  /**\n   * Creates a new board.\n   *\n   * @example\n   * ```ts\n   * const board = await client.boards.create({\n   *   team_id: \"team-abc\",\n   *   owner_id: \"user-1\",\n   *   created_by: \"user-1\",\n   *   name: \"Sprint 1\",\n   * });\n   * ```\n   */\n  create(data: BoardCreate, opts?: RequestOptions): Promise<Board> {\n    return this.fetcher.post<Board>(\"/boards\", data, opts);\n  }\n\n  /**\n   * Gets a single board by ID or URL-safe alias.\n   *\n   * @throws {NotFoundError} when no board with `id` exists.\n   */\n  get(id: string, opts?: RequestOptions): Promise<Board> {\n    return this.fetcher.get<Board>(`/boards/${id}`, undefined, opts);\n  }\n\n  /**\n   * Partially updates a board. Only provided fields are changed.\n   *\n   * @throws {NotFoundError} when no board with `id` exists.\n   */\n  update(id: string, data: BoardUpdate, opts?: RequestOptions): Promise<Board> {\n    return this.fetcher.patch<Board>(`/boards/${id}`, data, opts);\n  }\n\n  /**\n   * Deletes a board and all its associated data.\n   *\n   * @throws {NotFoundError} when no board with `id` exists.\n   */\n  delete(id: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/boards/${id}`, opts);\n  }\n\n  // ── Board utilities ───────────────────────────────────────────────────────────\n\n  /**\n   * Returns all tags aggregated from cards on this board.\n   *\n   * @example\n   * ```ts\n   * const { tags } = await client.boards.listTags(boardId);\n   * ```\n   */\n  listTags(\n    id: string,\n    opts?: RequestOptions,\n  ): Promise<{ board_id: string; tags: string[] }> {\n    return this.fetcher.get(`/boards/${id}/tags`, undefined, opts);\n  }\n\n  /**\n   * Returns the aggregated member and agent IDs across all cards on this board.\n   *\n   * @example\n   * ```ts\n   * const { member_ids, agent_ids } = await client.boards.listMembers(boardId);\n   * ```\n   */\n  listMembers(\n    id: string,\n    opts?: RequestOptions,\n  ): Promise<{ board_id: string; member_ids: string[]; agent_ids: string[] }> {\n    return this.fetcher.get(`/boards/${id}/members`, undefined, opts);\n  }\n\n  /**\n   * Hard-deletes all soft-deleted (recycled) cards on the board.\n   * Returns the count of permanently deleted cards.\n   *\n   * @example\n   * ```ts\n   * const { deleted_count } = await client.boards.emptyRecycleBin(boardId);\n   * ```\n   */\n  emptyRecycleBin(\n    id: string,\n    opts?: RequestOptions,\n  ): Promise<{ deleted_count: number }> {\n    return this.fetcher.delete<{ deleted_count: number }>(\n      `/boards/${id}/recycle-bin`,\n      opts,\n    );\n  }\n\n  // ── External Channels ─────────────────────────────────────────────────────────\n\n  /**\n   * Lists external channels linked to a board.\n   *\n   * @example\n   * ```ts\n   * const channels = await client.boards.listChannels(boardId);\n   * ```\n   */\n  listChannels(\n    boardId: string,\n    params?: ListParams,\n    opts?: RequestOptions,\n  ): Promise<Paginated<ExternalChannel>> {\n    return this.fetcher.list<ExternalChannel>(\n      `/boards/${boardId}/external-channels`,\n      params,\n      opts,\n    );\n  }\n\n  /**\n   * Links an external channel (e.g. Slack) to a board.\n   *\n   * @throws {NotFoundError} when no board with `boardId` exists.\n   */\n  createChannel(\n    boardId: string,\n    data: ExternalChannelCreate,\n    opts?: RequestOptions,\n  ): Promise<ExternalChannel> {\n    return this.fetcher.post<ExternalChannel>(\n      `/boards/${boardId}/external-channels`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Gets a single external channel by ID.\n   *\n   * @throws {NotFoundError} when the channel doesn't exist.\n   */\n  getChannel(\n    boardId: string,\n    channelId: string,\n    opts?: RequestOptions,\n  ): Promise<ExternalChannel> {\n    return this.fetcher.get<ExternalChannel>(\n      `/boards/${boardId}/external-channels/${channelId}`,\n      undefined,\n      opts,\n    );\n  }\n\n  /**\n   * Updates an external channel.\n   *\n   * @throws {NotFoundError} when the channel doesn't exist.\n   */\n  updateChannel(\n    boardId: string,\n    channelId: string,\n    data: ExternalChannelUpdate,\n    opts?: RequestOptions,\n  ): Promise<ExternalChannel> {\n    return this.fetcher.patch<ExternalChannel>(\n      `/boards/${boardId}/external-channels/${channelId}`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Removes an external channel from a board.\n   *\n   * @throws {NotFoundError} when the channel doesn't exist.\n   */\n  deleteChannel(\n    boardId: string,\n    channelId: string,\n    opts?: RequestOptions,\n  ): Promise<void> {\n    return this.fetcher.delete(\n      `/boards/${boardId}/external-channels/${channelId}`,\n      opts,\n    );\n  }\n}\n","// ── SDK v2 — CardsClient ───────────────────────────────────────────────────────\n//\n// Covers:\n//   GET    /v2/cards\n//   POST   /v2/cards\n//   GET    /v2/cards/:id\n//   PATCH  /v2/cards/:id\n//   DELETE /v2/cards/:id\n//   POST   /v2/cards/bulk\n//   PATCH  /v2/cards/bulk\n//   DELETE /v2/cards/bulk\n//   POST   /v2/cards/bulk/move\n//   POST   /v2/cards/:id/restore\n//   POST   /v2/cards/:id/clone\n//   POST   /v2/cards/:id/agent\n//   POST   /v2/cards/:id/members\n//   DELETE /v2/cards/:id/members/:uid\n//   POST   /v2/cards/:id/attachments\n//   DELETE /v2/cards/:id/attachments\n//   POST   /v2/cards/:id/sessions\n//   GET    /v2/cards/:id/sessions\n//   GET    /v2/cards/:id/sessions/:sid\n//   PATCH  /v2/cards/:id/sessions/:sid\n//   DELETE /v2/cards/:id/sessions/:sid\n//   POST   /v2/cards/:id/sessions/:sid/data\n//   GET    /v2/cards/:id/sessions/:sid/data\n//   GET    /v2/cards/:id/sessions/:sid/data/:did\n//   PATCH  /v2/cards/:id/sessions/:sid/data/:did\n//   DELETE /v2/cards/:id/sessions/:sid/data/:did\n//   POST   /v2/cards/:id/comments\n//   GET    /v2/cards/:id/comments\n//   PATCH  /v2/cards/:id/comments/:cid\n//   DELETE /v2/cards/:id/comments/:cid\n//   POST   /v2/cards/:id/comments/:cid/replies\n//   GET    /v2/cards/:id/comments/:cid/replies\n\nimport type { Fetcher } from \"../http/fetcher\";\nimport type { RequestOptions } from \"../http/types\";\nimport type {\n  Card,\n  CardCreate,\n  CardUpdate,\n  CardBulkUpdateItem,\n  CardBulkMoveItem,\n  CardBulkDeleteItem,\n  Session,\n  SessionCreate,\n  SessionUpdate,\n  SessionData,\n  SessionDataCreate,\n  SessionDataUpdate,\n  CardComment,\n  CardCommentCreate,\n  CardCommentUpdate,\n  ListParams,\n  Paginated,\n} from \"../types/index\";\n\nexport class CardsClient {\n  constructor(private readonly fetcher: Fetcher) {}\n\n  // ── Cards CRUD ────────────────────────────────────────────────────────────────\n\n  /**\n   * Lists cards with cursor pagination and optional DSL filtering.\n   * Pass `deleted: true` to list soft-deleted cards (recycle bin).\n   *\n   * @example\n   * ```ts\n   * // Active cards on a board\n   * const page = await client.cards.list({ q: \"board_id.eq:'board-abc'\", limit: 50 });\n   *\n   * // Recycle bin\n   * const recycled = await client.cards.list({ deleted: true });\n   * ```\n   */\n  list(\n    params?: ListParams & { deleted?: boolean },\n    opts?: RequestOptions,\n  ): Promise<Paginated<Card>> {\n    return this.fetcher.list<Card>(\"/cards\", params, opts);\n  }\n\n  /**\n   * Creates a new card.\n   *\n   * @example\n   * ```ts\n   * const card = await client.cards.create({\n   *   team_id: \"team-abc\",\n   *   board_id: \"board-xyz\",\n   *   owner_id: \"user-1\",\n   *   title: \"Implement auth\",\n   *   status: \"todo\",\n   *   column_key: \"todo\",\n   * });\n   * ```\n   */\n  create(data: CardCreate, opts?: RequestOptions): Promise<Card> {\n    return this.fetcher.post<Card>(\"/cards\", data, opts);\n  }\n\n  /**\n   * Gets a single card by ID.\n   * Includes `related_cards_resolved` with board name and lifecycle status.\n   *\n   * @throws {NotFoundError} when no card with `id` exists.\n   */\n  get(id: string, opts?: RequestOptions): Promise<Card> {\n    return this.fetcher.get<Card>(`/cards/${id}`, undefined, opts);\n  }\n\n  /**\n   * Partially updates a card. Only provided fields are changed.\n   *\n   * @throws {NotFoundError} when no card with `id` exists.\n   */\n  update(id: string, data: CardUpdate, opts?: RequestOptions): Promise<Card> {\n    return this.fetcher.patch<Card>(`/cards/${id}`, data, opts);\n  }\n\n  /**\n   * Soft-deletes a card (moves it to the recycle bin).\n   * Pass `permanent: true` to hard-delete immediately.\n   *\n   * @throws {NotFoundError} when no card with `id` exists.\n   */\n  delete(\n    id: string,\n    options?: { permanent?: boolean },\n    opts?: RequestOptions,\n  ): Promise<void> {\n    const query = options?.permanent ? { permanent: \"true\" } : undefined;\n    return this.fetcher.request<void>(\"DELETE\", `/cards/${id}`, {\n      query,\n      request: opts,\n    });\n  }\n\n  // ── Bulk operations ───────────────────────────────────────────────────────────\n\n  /**\n   * Creates multiple cards in a single request.\n   * Returns the created cards in the same order as the input.\n   *\n   * @example\n   * ```ts\n   * const cards = await client.cards.bulkCreate([\n   *   { team_id: \"t\", board_id: \"b\", owner_id: \"u\", title: \"Task 1\", status: \"todo\", column_key: \"todo\" },\n   *   { team_id: \"t\", board_id: \"b\", owner_id: \"u\", title: \"Task 2\", status: \"todo\", column_key: \"todo\" },\n   * ]);\n   * ```\n   */\n  bulkCreate(items: CardCreate[], opts?: RequestOptions): Promise<Card[]> {\n    return this.fetcher.post<Card[]>(\"/cards/bulk\", items, opts);\n  }\n\n  /**\n   * Partially updates multiple cards in a single request.\n   * Each item must include `card_id` plus the fields to update.\n   *\n   * @example\n   * ```ts\n   * await client.cards.bulkUpdate([\n   *   { card_id: \"card-1\", status: \"done\" },\n   *   { card_id: \"card-2\", status: \"doing\" },\n   * ]);\n   * ```\n   */\n  bulkUpdate(items: CardBulkUpdateItem[], opts?: RequestOptions): Promise<Card[]> {\n    return this.fetcher.patch<Card[]>(\"/cards/bulk\", items, opts);\n  }\n\n  /**\n   * Deletes multiple cards in a single request.\n   * Performs soft-delete by default; pass `permanent: true` for hard-delete.\n   */\n  bulkDelete(\n    items: CardBulkDeleteItem[],\n    options?: { permanent?: boolean },\n    opts?: RequestOptions,\n  ): Promise<void> {\n    const query = options?.permanent ? { permanent: \"true\" } : undefined;\n    return this.fetcher.request<void>(\"DELETE\", \"/cards/bulk\", {\n      body: items,\n      query,\n      request: opts,\n    });\n  }\n\n  /**\n   * Moves multiple cards to a target column in a single request.\n   *\n   * @example\n   * ```ts\n   * await client.cards.bulkMove([\n   *   { card_id: \"card-1\", column_key: \"done\" },\n   *   { card_id: \"card-2\", column_key: \"done\" },\n   * ]);\n   * ```\n   */\n  bulkMove(items: CardBulkMoveItem[], opts?: RequestOptions): Promise<Card[]> {\n    return this.fetcher.post<Card[]>(\"/cards/bulk/move\", items, opts);\n  }\n\n  // ── Card operations ───────────────────────────────────────────────────────────\n\n  /**\n   * Restores a soft-deleted card from the recycle bin.\n   *\n   * @throws {NotFoundError} when no recycled card with `id` exists.\n   */\n  restore(id: string, opts?: RequestOptions): Promise<Card> {\n    return this.fetcher.post<Card>(`/cards/${id}/restore`, undefined, opts);\n  }\n\n  /**\n   * Creates a full copy of a card (including parts and metadata).\n   * The clone lands in the same board and column as the original.\n   *\n   * @throws {NotFoundError} when no card with `id` exists.\n   */\n  clone(id: string, opts?: RequestOptions): Promise<Card> {\n    return this.fetcher.post<Card>(`/cards/${id}/clone`, undefined, opts);\n  }\n\n  // ── Agent assignment ──────────────────────────────────────────────────────────\n\n  /**\n   * Assigns (or clears) the agent on a card.\n   * Pass `agent_id: null` to remove the current agent assignment.\n   *\n   * @throws {NotFoundError} when no card with `id` exists.\n   */\n  assignAgent(\n    id: string,\n    data: { agent_id: string | null },\n    opts?: RequestOptions,\n  ): Promise<Card> {\n    return this.fetcher.post<Card>(`/cards/${id}/agent`, data, opts);\n  }\n\n  // ── Members ───────────────────────────────────────────────────────────────────\n\n  /**\n   * Adds a user as a member of a card.\n   *\n   * @throws {NotFoundError} when no card with `id` exists.\n   */\n  addMember(\n    id: string,\n    data: { user_id: string },\n    opts?: RequestOptions,\n  ): Promise<Card> {\n    return this.fetcher.post<Card>(`/cards/${id}/members`, data, opts);\n  }\n\n  /**\n   * Removes a member from a card.\n   *\n   * @throws {NotFoundError} when no card with `id` exists.\n   */\n  removeMember(id: string, userId: string, opts?: RequestOptions): Promise<Card> {\n    return this.fetcher.delete<Card>(`/cards/${id}/members/${userId}`, opts);\n  }\n\n  // ── Attachments ───────────────────────────────────────────────────────────────\n\n  /**\n   * Attaches an already-uploaded file to a card.\n   * The file must have been uploaded via the Storage API first.\n   *\n   * @example\n   * ```ts\n   * await client.cards.addAttachment(cardId, {\n   *   file_id: \"file-abc\",\n   *   file_name: \"report.pdf\",\n   *   mime_type: \"application/pdf\",\n   * });\n   * ```\n   */\n  addAttachment(\n    id: string,\n    data: { file_id: string; file_name: string; mime_type: string },\n    opts?: RequestOptions,\n  ): Promise<Card> {\n    return this.fetcher.post<Card>(`/cards/${id}/attachments`, data, opts);\n  }\n\n  /**\n   * Removes an attachment from a card.\n   *\n   * @example\n   * ```ts\n   * await client.cards.removeAttachment(cardId, { file_id: \"file-abc\" });\n   * ```\n   */\n  removeAttachment(\n    id: string,\n    data: { file_id: string },\n    opts?: RequestOptions,\n  ): Promise<Card> {\n    return this.fetcher.request<Card>(\"DELETE\", `/cards/${id}/attachments`, {\n      body: data,\n      request: opts,\n    });\n  }\n\n  // ── Sessions ──────────────────────────────────────────────────────────────────\n\n  /**\n   * Creates a new session on a card.\n   *\n   * @example\n   * ```ts\n   * const session = await client.cards.createSession(cardId, { metadata: { run_id: \"r1\" } });\n   * ```\n   */\n  createSession(\n    cardId: string,\n    data?: SessionCreate,\n    opts?: RequestOptions,\n  ): Promise<Session> {\n    return this.fetcher.post<Session>(`/cards/${cardId}/sessions`, data, opts);\n  }\n\n  /**\n   * Lists sessions for a card.\n   */\n  listSessions(\n    cardId: string,\n    params?: ListParams,\n    opts?: RequestOptions,\n  ): Promise<Paginated<Session>> {\n    return this.fetcher.list<Session>(`/cards/${cardId}/sessions`, params, opts);\n  }\n\n  /**\n   * Gets a single session by ID.\n   *\n   * @throws {NotFoundError} when the session doesn't exist.\n   */\n  getSession(cardId: string, sessionId: string, opts?: RequestOptions): Promise<Session> {\n    return this.fetcher.get<Session>(\n      `/cards/${cardId}/sessions/${sessionId}`,\n      undefined,\n      opts,\n    );\n  }\n\n  /**\n   * Updates a session's metadata.\n   *\n   * @throws {NotFoundError} when the session doesn't exist.\n   */\n  updateSession(\n    cardId: string,\n    sessionId: string,\n    data: SessionUpdate,\n    opts?: RequestOptions,\n  ): Promise<Session> {\n    return this.fetcher.patch<Session>(\n      `/cards/${cardId}/sessions/${sessionId}`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Deletes a session and all its data entries.\n   *\n   * @throws {NotFoundError} when the session doesn't exist.\n   */\n  deleteSession(cardId: string, sessionId: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/cards/${cardId}/sessions/${sessionId}`, opts);\n  }\n\n  // ── Session Data ──────────────────────────────────────────────────────────────\n\n  /**\n   * Creates a session data entry (or batch of entries).\n   *\n   * @example Single entry:\n   * ```ts\n   * const entry = await client.cards.createSessionData(cardId, sessionId, {\n   *   label: \"result\",\n   *   data: { score: 0.95, tokens: 1200 },\n   * });\n   * ```\n   *\n   * @example Batch:\n   * ```ts\n   * const entries = await client.cards.createSessionData(cardId, sessionId, {\n   *   items: [\n   *     { label: \"step-1\", data: { output: \"...\" } },\n   *     { label: \"step-2\", data: { output: \"...\" } },\n   *   ],\n   * });\n   * ```\n   */\n  createSessionData(\n    cardId: string,\n    sessionId: string,\n    data: SessionDataCreate | { items: SessionDataCreate[] },\n    opts?: RequestOptions,\n  ): Promise<SessionData | SessionData[]> {\n    return this.fetcher.post<SessionData | SessionData[]>(\n      `/cards/${cardId}/sessions/${sessionId}/data`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Lists all data entries for a session.\n   */\n  listSessionData(\n    cardId: string,\n    sessionId: string,\n    params?: ListParams,\n    opts?: RequestOptions,\n  ): Promise<Paginated<SessionData>> {\n    return this.fetcher.list<SessionData>(\n      `/cards/${cardId}/sessions/${sessionId}/data`,\n      params,\n      opts,\n    );\n  }\n\n  /**\n   * Gets a single session data entry by ID.\n   *\n   * @throws {NotFoundError} when the entry doesn't exist.\n   */\n  getSessionData(\n    cardId: string,\n    sessionId: string,\n    dataId: string,\n    opts?: RequestOptions,\n  ): Promise<SessionData> {\n    return this.fetcher.get<SessionData>(\n      `/cards/${cardId}/sessions/${sessionId}/data/${dataId}`,\n      undefined,\n      opts,\n    );\n  }\n\n  /**\n   * Updates a session data entry.\n   *\n   * @throws {NotFoundError} when the entry doesn't exist.\n   */\n  updateSessionData(\n    cardId: string,\n    sessionId: string,\n    dataId: string,\n    data: SessionDataUpdate,\n    opts?: RequestOptions,\n  ): Promise<SessionData> {\n    return this.fetcher.patch<SessionData>(\n      `/cards/${cardId}/sessions/${sessionId}/data/${dataId}`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Deletes a session data entry.\n   *\n   * @throws {NotFoundError} when the entry doesn't exist.\n   */\n  deleteSessionData(\n    cardId: string,\n    sessionId: string,\n    dataId: string,\n    opts?: RequestOptions,\n  ): Promise<void> {\n    return this.fetcher.delete(\n      `/cards/${cardId}/sessions/${sessionId}/data/${dataId}`,\n      opts,\n    );\n  }\n\n  // ── Comments ──────────────────────────────────────────────────────────────────\n\n  /**\n   * Adds a comment to a card.\n   * Include `mention_ids` to trigger mention notifications for the listed users.\n   *\n   * @example\n   * ```ts\n   * const comment = await client.cards.createComment(cardId, {\n   *   author_id: \"user-1\",\n   *   text: \"Looks good to me!\",\n   *   mention_ids: [\"user-2\"],\n   * });\n   * ```\n   */\n  createComment(\n    cardId: string,\n    data: CardCommentCreate,\n    opts?: RequestOptions,\n  ): Promise<CardComment> {\n    return this.fetcher.post<CardComment>(`/cards/${cardId}/comments`, data, opts);\n  }\n\n  /**\n   * Lists comments on a card.\n   */\n  listComments(\n    cardId: string,\n    params?: ListParams,\n    opts?: RequestOptions,\n  ): Promise<Paginated<CardComment>> {\n    return this.fetcher.list<CardComment>(`/cards/${cardId}/comments`, params, opts);\n  }\n\n  /**\n   * Updates a comment's text.\n   *\n   * @throws {NotFoundError} when the comment doesn't exist.\n   */\n  updateComment(\n    cardId: string,\n    commentId: string,\n    data: CardCommentUpdate,\n    opts?: RequestOptions,\n  ): Promise<CardComment> {\n    return this.fetcher.patch<CardComment>(\n      `/cards/${cardId}/comments/${commentId}`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Deletes a comment.\n   *\n   * @throws {NotFoundError} when the comment doesn't exist.\n   */\n  deleteComment(cardId: string, commentId: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/cards/${cardId}/comments/${commentId}`, opts);\n  }\n\n  /**\n   * Adds a reply to a comment.\n   * The reply author is identified by `author_id`.\n   *\n   * @example\n   * ```ts\n   * await client.cards.createReply(cardId, commentId, {\n   *   author_id: \"user-2\",\n   *   text: \"Thanks for the review!\",\n   * });\n   * ```\n   */\n  createReply(\n    cardId: string,\n    commentId: string,\n    data: CardCommentCreate,\n    opts?: RequestOptions,\n  ): Promise<CardComment> {\n    return this.fetcher.post<CardComment>(\n      `/cards/${cardId}/comments/${commentId}/replies`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Lists replies on a comment.\n   */\n  listReplies(\n    cardId: string,\n    commentId: string,\n    params?: ListParams,\n    opts?: RequestOptions,\n  ): Promise<Paginated<CardComment>> {\n    return this.fetcher.list<CardComment>(\n      `/cards/${cardId}/comments/${commentId}/replies`,\n      params,\n      opts,\n    );\n  }\n}\n","// ── SDK v2 — AgentsClient ──────────────────────────────────────────────────────\n//\n// Covers:\n//   GET    /v2/agents\n//   POST   /v2/agents\n//   GET    /v2/agents/:id\n//   PATCH  /v2/agents/:id\n//   DELETE /v2/agents/:id\n//   POST   /v2/agents/:id/retire\n//   GET    /v2/agents/:id/feedback\n//   POST   /v2/agents/:id/feedback\n//   GET    /v2/agents/:id/feedback/:fid\n//   PATCH  /v2/agents/:id/feedback/:fid\n//   DELETE /v2/agents/:id/feedback/:fid\n//   GET    /v2/agents/:id/supervisor-feedback\n//   POST   /v2/agents/:id/supervisor-feedback\n//   GET    /v2/agents/:id/supervisor-feedback/:sfid\n//   PATCH  /v2/agents/:id/supervisor-feedback/:sfid\n//   DELETE /v2/agents/:id/supervisor-feedback/:sfid\n\nimport type { Fetcher } from \"../http/fetcher\";\nimport type { RequestOptions } from \"../http/types\";\nimport type {\n  Agent,\n  AgentCreate,\n  AgentUpdate,\n  AgentRetireBody,\n  AgentRetireResult,\n  AgentFeedback,\n  AgentFeedbackCreate,\n  AgentFeedbackUpdate,\n  SupervisorFeedback,\n  SupervisorFeedbackCreate,\n  SupervisorFeedbackUpdate,\n  ListParams,\n  Paginated,\n} from \"../types/index\";\n\nexport class AgentsClient {\n  constructor(private readonly fetcher: Fetcher) {}\n\n  // ── Agents CRUD ───────────────────────────────────────────────────────────────\n\n  /**\n   * Lists agents with cursor pagination and optional DSL filtering.\n   *\n   * @example\n   * ```ts\n   * const page = await client.agents.list({ q: \"status.eq:active\" });\n   * ```\n   */\n  list(params?: ListParams, opts?: RequestOptions): Promise<Paginated<Agent>> {\n    return this.fetcher.list<Agent>(\"/agents\", params, opts);\n  }\n\n  /**\n   * Creates a new agent.\n   *\n   * @example\n   * ```ts\n   * const agent = await client.agents.create({\n   *   team_id: \"team-abc\",\n   *   name: \"Baggage Agent\",\n   *   kind: \"task\",\n   * });\n   * ```\n   */\n  create(data: AgentCreate, opts?: RequestOptions): Promise<Agent> {\n    return this.fetcher.post<Agent>(\"/agents\", data, opts);\n  }\n\n  /**\n   * Gets a single agent by ID.\n   *\n   * @throws {NotFoundError} when no agent with `id` exists.\n   */\n  get(id: string, opts?: RequestOptions): Promise<Agent> {\n    return this.fetcher.get<Agent>(`/agents/${id}`, undefined, opts);\n  }\n\n  /**\n   * Partially updates an agent. Only provided fields are changed.\n   *\n   * @throws {NotFoundError} when no agent with `id` exists.\n   */\n  update(id: string, data: AgentUpdate, opts?: RequestOptions): Promise<Agent> {\n    return this.fetcher.patch<Agent>(`/agents/${id}`, data, opts);\n  }\n\n  /**\n   * Permanently deletes an agent.\n   *\n   * @throws {NotFoundError} when no agent with `id` exists.\n   */\n  delete(id: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/agents/${id}`, opts);\n  }\n\n  /**\n   * Retires an agent — removes it from active boards according to the\n   * specified action (`remove` or `keep`) per board.\n   *\n   * @example\n   * ```ts\n   * const result = await client.agents.retire(agentId, {\n   *   boards: [\n   *     { board_id: \"board-1\", action: \"remove\" },\n   *     { board_id: \"board-2\", action: \"keep\" },\n   *   ],\n   * });\n   * console.log(result.retired_from); // board IDs where agent was removed\n   * ```\n   */\n  retire(\n    id: string,\n    data: AgentRetireBody,\n    opts?: RequestOptions,\n  ): Promise<AgentRetireResult> {\n    return this.fetcher.post<AgentRetireResult>(`/agents/${id}/retire`, data, opts);\n  }\n\n  // ── Agent Feedback ────────────────────────────────────────────────────────────\n\n  /**\n   * Lists feedback entries for an agent.\n   *\n   * @example\n   * ```ts\n   * const page = await client.agents.listFeedback(agentId, {\n   *   q: \"evaluation.eq:positive\",\n   * });\n   * ```\n   */\n  listFeedback(\n    agentId: string,\n    params?: ListParams,\n    opts?: RequestOptions,\n  ): Promise<Paginated<AgentFeedback>> {\n    return this.fetcher.list<AgentFeedback>(\n      `/agents/${agentId}/feedback`,\n      params,\n      opts,\n    );\n  }\n\n  /**\n   * Creates a feedback entry for an agent.\n   *\n   * @example\n   * ```ts\n   * const feedback = await client.agents.createFeedback(agentId, {\n   *   type: \"human\",\n   *   evaluation: \"positive\",\n   *   comment: \"Handled the baggage claim perfectly.\",\n   *   card_id: \"card-123\",\n   * });\n   * ```\n   */\n  createFeedback(\n    agentId: string,\n    data: AgentFeedbackCreate,\n    opts?: RequestOptions,\n  ): Promise<AgentFeedback> {\n    return this.fetcher.post<AgentFeedback>(\n      `/agents/${agentId}/feedback`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Gets a single feedback entry by ID.\n   *\n   * @throws {NotFoundError} when the feedback entry doesn't exist.\n   */\n  getFeedback(\n    agentId: string,\n    feedbackId: string,\n    opts?: RequestOptions,\n  ): Promise<AgentFeedback> {\n    return this.fetcher.get<AgentFeedback>(\n      `/agents/${agentId}/feedback/${feedbackId}`,\n      undefined,\n      opts,\n    );\n  }\n\n  /**\n   * Updates a feedback entry.\n   *\n   * @throws {NotFoundError} when the feedback entry doesn't exist.\n   */\n  updateFeedback(\n    agentId: string,\n    feedbackId: string,\n    data: AgentFeedbackUpdate,\n    opts?: RequestOptions,\n  ): Promise<AgentFeedback> {\n    return this.fetcher.patch<AgentFeedback>(\n      `/agents/${agentId}/feedback/${feedbackId}`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Deletes a feedback entry.\n   *\n   * @throws {NotFoundError} when the feedback entry doesn't exist.\n   */\n  deleteFeedback(\n    agentId: string,\n    feedbackId: string,\n    opts?: RequestOptions,\n  ): Promise<void> {\n    return this.fetcher.delete(\n      `/agents/${agentId}/feedback/${feedbackId}`,\n      opts,\n    );\n  }\n\n  // ── Supervisor Feedback ───────────────────────────────────────────────────────\n\n  /**\n   * Lists supervisor feedback entries for an agent.\n   *\n   * @example\n   * ```ts\n   * const page = await client.agents.listSupervisorFeedback(agentId);\n   * ```\n   */\n  listSupervisorFeedback(\n    agentId: string,\n    params?: ListParams,\n    opts?: RequestOptions,\n  ): Promise<Paginated<SupervisorFeedback>> {\n    return this.fetcher.list<SupervisorFeedback>(\n      `/agents/${agentId}/supervisor-feedback`,\n      params,\n      opts,\n    );\n  }\n\n  /**\n   * Creates a supervisor feedback entry for an agent.\n   *\n   * @example\n   * ```ts\n   * const sf = await client.agents.createSupervisorFeedback(agentId, {\n   *   comment: \"Needs improvement on edge cases.\",\n   *   card_id: \"card-456\",\n   * });\n   * ```\n   */\n  createSupervisorFeedback(\n    agentId: string,\n    data: SupervisorFeedbackCreate,\n    opts?: RequestOptions,\n  ): Promise<SupervisorFeedback> {\n    return this.fetcher.post<SupervisorFeedback>(\n      `/agents/${agentId}/supervisor-feedback`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Gets a single supervisor feedback entry by ID.\n   *\n   * @throws {NotFoundError} when the entry doesn't exist.\n   */\n  getSupervisorFeedback(\n    agentId: string,\n    supervisorFeedbackId: string,\n    opts?: RequestOptions,\n  ): Promise<SupervisorFeedback> {\n    return this.fetcher.get<SupervisorFeedback>(\n      `/agents/${agentId}/supervisor-feedback/${supervisorFeedbackId}`,\n      undefined,\n      opts,\n    );\n  }\n\n  /**\n   * Updates a supervisor feedback entry.\n   *\n   * @throws {NotFoundError} when the entry doesn't exist.\n   */\n  updateSupervisorFeedback(\n    agentId: string,\n    supervisorFeedbackId: string,\n    data: SupervisorFeedbackUpdate,\n    opts?: RequestOptions,\n  ): Promise<SupervisorFeedback> {\n    return this.fetcher.patch<SupervisorFeedback>(\n      `/agents/${agentId}/supervisor-feedback/${supervisorFeedbackId}`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Deletes a supervisor feedback entry.\n   *\n   * @throws {NotFoundError} when the entry doesn't exist.\n   */\n  deleteSupervisorFeedback(\n    agentId: string,\n    supervisorFeedbackId: string,\n    opts?: RequestOptions,\n  ): Promise<void> {\n    return this.fetcher.delete(\n      `/agents/${agentId}/supervisor-feedback/${supervisorFeedbackId}`,\n      opts,\n    );\n  }\n}\n","// ── SDK v2 — AgentDraftsClient ────────────────────────────────────────────────\n//\n// Covers:\n//   POST   /v2/agents/drafts\n//   GET    /v2/agents/drafts\n//   GET    /v2/agents/drafts/:id\n//   PATCH  /v2/agents/drafts/:id\n//   DELETE /v2/agents/drafts/:id\n//   POST   /v2/agents/drafts/:id/publish\n\nimport type { Fetcher } from \"../http/fetcher\";\nimport type { RequestOptions } from \"../http/types\";\nimport type {\n  AgentDraft,\n  AgentDraftCreate,\n  AgentDraftUpdate,\n  AgentDraftPublishBody,\n  Agent,\n  ListParams,\n  Paginated,\n} from \"../types/index\";\n\nexport class AgentDraftsClient {\n  constructor(private readonly fetcher: Fetcher) {}\n\n  /**\n   * Lists agent drafts with cursor pagination and optional DSL filtering.\n   *\n   * @example\n   * ```ts\n   * const page = await client.agentDrafts.list({ q: \"status.eq:pending\" });\n   * ```\n   */\n  list(params?: ListParams, opts?: RequestOptions): Promise<Paginated<AgentDraft>> {\n    return this.fetcher.list<AgentDraft>(\"/agents/drafts\", params, opts);\n  }\n\n  /**\n   * Creates a new agent draft.\n   *\n   * @example\n   * ```ts\n   * const draft = await client.agentDrafts.create({\n   *   team_id: \"team-abc\",\n   *   name: \"Baggage Agent v2\",\n   *   kind: \"task\",\n   * });\n   * ```\n   */\n  create(data: AgentDraftCreate, opts?: RequestOptions): Promise<AgentDraft> {\n    return this.fetcher.post<AgentDraft>(\"/agents/drafts\", data, opts);\n  }\n\n  /**\n   * Gets a single agent draft by ID.\n   *\n   * @throws {NotFoundError} when no draft with `id` exists.\n   */\n  get(id: string, opts?: RequestOptions): Promise<AgentDraft> {\n    return this.fetcher.get<AgentDraft>(`/agents/drafts/${id}`, undefined, opts);\n  }\n\n  /**\n   * Partially updates an agent draft.\n   *\n   * @throws {NotFoundError} when no draft with `id` exists.\n   */\n  update(id: string, data: AgentDraftUpdate, opts?: RequestOptions): Promise<AgentDraft> {\n    return this.fetcher.patch<AgentDraft>(`/agents/drafts/${id}`, data, opts);\n  }\n\n  /**\n   * Deletes an agent draft.\n   *\n   * @throws {NotFoundError} when no draft with `id` exists.\n   */\n  delete(id: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/agents/drafts/${id}`, opts);\n  }\n\n  /**\n   * Publishes an agent draft — creates or updates the live `Agent` record.\n   * Returns the resulting `Agent` after publish.\n   *\n   * @example\n   * ```ts\n   * const agent = await client.agentDrafts.publish(draftId, {\n   *   team_id: \"team-abc\",\n   * });\n   * console.log(\"Live agent:\", agent.id);\n   * ```\n   *\n   * @throws {NotFoundError} when no draft with `id` exists.\n   */\n  publish(id: string, data: AgentDraftPublishBody, opts?: RequestOptions): Promise<Agent> {\n    return this.fetcher.post<Agent>(`/agents/drafts/${id}/publish`, data, opts);\n  }\n}\n","// ── SDK v2 — NotificationsClient ──────────────────────────────────────────────\n//\n// Covers:\n//   GET    /v2/notifications\n//   GET    /v2/notifications/:id\n//   PATCH  /v2/notifications/:id\n//   DELETE /v2/notifications/:id\n//   PATCH  /v2/notifications/mark-all-read\n\nimport type { Fetcher } from \"../http/fetcher\";\nimport type { RequestOptions } from \"../http/types\";\nimport type {\n  Notification,\n  NotificationUpdate,\n  MarkAllReadBody,\n  ListParams,\n  Paginated,\n} from \"../types/index\";\n\nexport class NotificationsClient {\n  constructor(private readonly fetcher: Fetcher) {}\n\n  /**\n   * Lists notifications with cursor pagination and optional DSL filtering.\n   *\n   * @example\n   * ```ts\n   * const page = await client.notifications.list({\n   *   q: \"read.eq:false\",\n   *   sort: \"created_at:desc\",\n   * });\n   * ```\n   */\n  list(params?: ListParams, opts?: RequestOptions): Promise<Paginated<Notification>> {\n    return this.fetcher.list<Notification>(\"/notifications\", params, opts);\n  }\n\n  /**\n   * Gets a single notification by ID.\n   *\n   * @throws {NotFoundError} when no notification with `id` exists.\n   */\n  get(id: string, opts?: RequestOptions): Promise<Notification> {\n    return this.fetcher.get<Notification>(`/notifications/${id}`, undefined, opts);\n  }\n\n  /**\n   * Updates a notification — typically used to mark it as read.\n   *\n   * @example\n   * ```ts\n   * await client.notifications.update(id, { read: true });\n   * ```\n   *\n   * @throws {NotFoundError} when no notification with `id` exists.\n   */\n  update(\n    id: string,\n    data: NotificationUpdate,\n    opts?: RequestOptions,\n  ): Promise<Notification> {\n    return this.fetcher.patch<Notification>(`/notifications/${id}`, data, opts);\n  }\n\n  /**\n   * Deletes a notification.\n   *\n   * @throws {NotFoundError} when no notification with `id` exists.\n   */\n  delete(id: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/notifications/${id}`, opts);\n  }\n\n  /**\n   * Marks all notifications as read for a given user.\n   * Returns the count of updated notifications.\n   *\n   * @example\n   * ```ts\n   * const { updated } = await client.notifications.markAllRead({ user_id: \"user-1\" });\n   * ```\n   */\n  markAllRead(\n    data: MarkAllReadBody,\n    opts?: RequestOptions,\n  ): Promise<{ updated: number }> {\n    return this.fetcher.patch<{ updated: number }>(\n      \"/notifications/mark-all-read\",\n      data,\n      opts,\n    );\n  }\n}\n","// ── SDK v2 — AppsClient ────────────────────────────────────────────────────────\n//\n// Covers:\n//   GET    /v2/apps\n//   POST   /v2/apps\n//   GET    /v2/apps/:id\n//   PATCH  /v2/apps/:id\n//   DELETE /v2/apps/:id\n//   GET    /v2/apps/:id/settings\n//   POST   /v2/apps/:id/settings\n//   GET    /v2/apps/:id/settings/:sid\n//   PATCH  /v2/apps/:id/settings/:sid\n//   DELETE /v2/apps/:id/settings/:sid\n\nimport type { Fetcher } from \"../http/fetcher\";\nimport type { RequestOptions } from \"../http/types\";\nimport type {\n  App,\n  AppCreate,\n  AppUpdate,\n  AppSettings,\n  AppSettingsCreate,\n  AppSettingsUpdate,\n  ListParams,\n  Paginated,\n} from \"../types/index\";\n\nexport class AppsClient {\n  constructor(private readonly fetcher: Fetcher) {}\n\n  // ── Apps CRUD ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Lists apps with cursor pagination and optional DSL filtering.\n   *\n   * @example\n   * ```ts\n   * const page = await client.apps.list({ q: \"team_id.eq:'team-abc'\" });\n   * ```\n   */\n  list(params?: ListParams, opts?: RequestOptions): Promise<Paginated<App>> {\n    return this.fetcher.list<App>(\"/apps\", params, opts);\n  }\n\n  /**\n   * Creates a new app.\n   *\n   * @example\n   * ```ts\n   * const app = await client.apps.create({ team_id: \"team-abc\", name: \"My App\" });\n   * ```\n   */\n  create(data: AppCreate, opts?: RequestOptions): Promise<App> {\n    return this.fetcher.post<App>(\"/apps\", data, opts);\n  }\n\n  /**\n   * Gets a single app by ID.\n   *\n   * @throws {NotFoundError} when no app with `id` exists.\n   */\n  get(id: string, opts?: RequestOptions): Promise<App> {\n    return this.fetcher.get<App>(`/apps/${id}`, undefined, opts);\n  }\n\n  /**\n   * Partially updates an app.\n   *\n   * @throws {NotFoundError} when no app with `id` exists.\n   */\n  update(id: string, data: AppUpdate, opts?: RequestOptions): Promise<App> {\n    return this.fetcher.patch<App>(`/apps/${id}`, data, opts);\n  }\n\n  /**\n   * Deletes an app and all its settings.\n   *\n   * @throws {NotFoundError} when no app with `id` exists.\n   */\n  delete(id: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/apps/${id}`, opts);\n  }\n\n  // ── App Settings ──────────────────────────────────────────────────────────────\n\n  /**\n   * Lists settings entries for an app.\n   *\n   * @example\n   * ```ts\n   * const page = await client.apps.listSettings(appId);\n   * ```\n   */\n  listSettings(\n    appId: string,\n    params?: ListParams,\n    opts?: RequestOptions,\n  ): Promise<Paginated<AppSettings>> {\n    return this.fetcher.list<AppSettings>(`/apps/${appId}/settings`, params, opts);\n  }\n\n  /**\n   * Creates a new settings entry for an app.\n   *\n   * @example\n   * ```ts\n   * const settings = await client.apps.createSettings(appId, {\n   *   key: \"api_token\",\n   *   value: \"sk-...\",\n   * });\n   * ```\n   */\n  createSettings(\n    appId: string,\n    data: AppSettingsCreate,\n    opts?: RequestOptions,\n  ): Promise<AppSettings> {\n    return this.fetcher.post<AppSettings>(`/apps/${appId}/settings`, data, opts);\n  }\n\n  /**\n   * Gets a single settings entry by ID.\n   *\n   * @throws {NotFoundError} when the settings entry doesn't exist.\n   */\n  getSettings(appId: string, settingsId: string, opts?: RequestOptions): Promise<AppSettings> {\n    return this.fetcher.get<AppSettings>(\n      `/apps/${appId}/settings/${settingsId}`,\n      undefined,\n      opts,\n    );\n  }\n\n  /**\n   * Updates a settings entry.\n   *\n   * @throws {NotFoundError} when the settings entry doesn't exist.\n   */\n  updateSettings(\n    appId: string,\n    settingsId: string,\n    data: AppSettingsUpdate,\n    opts?: RequestOptions,\n  ): Promise<AppSettings> {\n    return this.fetcher.patch<AppSettings>(\n      `/apps/${appId}/settings/${settingsId}`,\n      data,\n      opts,\n    );\n  }\n\n  /**\n   * Deletes a settings entry.\n   *\n   * @throws {NotFoundError} when the settings entry doesn't exist.\n   */\n  deleteSettings(appId: string, settingsId: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/apps/${appId}/settings/${settingsId}`, opts);\n  }\n}\n","// ── SDK v2 — IntegrationsClient ────────────────────────────────────────────────\n//\n// Covers:\n//   POST   /v2/integrations\n//   GET    /v2/integrations\n//   GET    /v2/integrations/:id\n//   GET    /v2/integrations/:id/config\n//   PATCH  /v2/integrations/:id\n//   DELETE /v2/integrations/:id\n\nimport type { Fetcher } from \"../http/fetcher\";\nimport type { RequestOptions } from \"../http/types\";\nimport type {\n  Integration,\n  IntegrationCreate,\n  IntegrationUpdate,\n  ListParams,\n  Paginated,\n} from \"../types/index\";\n\nexport class IntegrationsClient {\n  constructor(private readonly fetcher: Fetcher) {}\n\n  /**\n   * Lists integrations with cursor pagination and optional DSL filtering.\n   *\n   * @example\n   * ```ts\n   * const page = await client.integrations.list({ q: \"team_id.eq:'team-abc'\" });\n   * ```\n   */\n  list(params?: ListParams, opts?: RequestOptions): Promise<Paginated<Integration>> {\n    return this.fetcher.list<Integration>(\"/integrations\", params, opts);\n  }\n\n  /**\n   * Creates a new integration.\n   * Authorization header values inside `config` are encrypted at rest (AES-256-GCM).\n   *\n   * @example\n   * ```ts\n   * const integration = await client.integrations.create({\n   *   team_id: \"team-abc\",\n   *   name: \"Slack Notifications\",\n   *   type: \"slack\",\n   *   config: { webhook_url: \"https://hooks.slack.com/...\" },\n   * });\n   * ```\n   */\n  create(data: IntegrationCreate, opts?: RequestOptions): Promise<Integration> {\n    return this.fetcher.post<Integration>(\"/integrations\", data, opts);\n  }\n\n  /**\n   * Gets a single integration by ID.\n   * Authorization header values in `config` are returned masked as `\"[encrypted]\"`.\n   *\n   * @throws {NotFoundError} when no integration with `id` exists.\n   */\n  get(id: string, opts?: RequestOptions): Promise<Integration> {\n    return this.fetcher.get<Integration>(`/integrations/${id}`, undefined, opts);\n  }\n\n  /**\n   * Gets an integration with its decrypted config.\n   * Use only server-side — never expose decrypted credentials to the browser.\n   *\n   * @throws {NotFoundError} when no integration with `id` exists.\n   */\n  getConfig(id: string, opts?: RequestOptions): Promise<Integration> {\n    return this.fetcher.get<Integration>(`/integrations/${id}/config`, undefined, opts);\n  }\n\n  /**\n   * Partially updates an integration.\n   * If `config` is provided, Authorization header values are re-encrypted before storage.\n   *\n   * @throws {NotFoundError} when no integration with `id` exists.\n   */\n  update(id: string, data: IntegrationUpdate, opts?: RequestOptions): Promise<Integration> {\n    return this.fetcher.patch<Integration>(`/integrations/${id}`, data, opts);\n  }\n\n  /**\n   * Deletes an integration.\n   *\n   * @throws {NotFoundError} when no integration with `id` exists.\n   */\n  delete(id: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/integrations/${id}`, opts);\n  }\n}\n","// ── SDK v2 — PositionsClient ───────────────────────────────────────────────────\n//\n// Covers:\n//   POST   /v2/positions\n//   GET    /v2/positions\n//   GET    /v2/positions/:id\n//   PATCH  /v2/positions/:id\n//   DELETE /v2/positions/:id\n\nimport type { Fetcher } from \"../http/fetcher\";\nimport type { RequestOptions } from \"../http/types\";\nimport type {\n  Position,\n  PositionCreate,\n  PositionUpdate,\n  ListParams,\n  Paginated,\n} from \"../types/index\";\n\nexport class PositionsClient {\n  constructor(private readonly fetcher: Fetcher) {}\n\n  /**\n   * Lists positions with cursor pagination and optional DSL filtering.\n   *\n   * @example\n   * ```ts\n   * const page = await client.positions.list({ q: \"team_id.eq:'team-abc'\" });\n   * ```\n   */\n  list(params?: ListParams, opts?: RequestOptions): Promise<Paginated<Position>> {\n    return this.fetcher.list<Position>(\"/positions\", params, opts);\n  }\n\n  /**\n   * Creates a new position.\n   *\n   * @example\n   * ```ts\n   * const position = await client.positions.create({ team_id: \"team-abc\", name: \"Senior Engineer\" });\n   * ```\n   */\n  create(data: PositionCreate, opts?: RequestOptions): Promise<Position> {\n    return this.fetcher.post<Position>(\"/positions\", data, opts);\n  }\n\n  /**\n   * Gets a single position by ID.\n   *\n   * @throws {NotFoundError} when no position with `id` exists.\n   */\n  get(id: string, opts?: RequestOptions): Promise<Position> {\n    return this.fetcher.get<Position>(`/positions/${id}`, undefined, opts);\n  }\n\n  /**\n   * Partially updates a position.\n   *\n   * @throws {NotFoundError} when no position with `id` exists.\n   */\n  update(id: string, data: PositionUpdate, opts?: RequestOptions): Promise<Position> {\n    return this.fetcher.patch<Position>(`/positions/${id}`, data, opts);\n  }\n\n  /**\n   * Deletes a position.\n   *\n   * @throws {NotFoundError} when no position with `id` exists.\n   */\n  delete(id: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/positions/${id}`, opts);\n  }\n}\n","// ── SDK v2 — ResourcesClient ───────────────────────────────────────────────────\n//\n// Covers:\n//   POST   /v2/resources\n//   GET    /v2/resources\n//   GET    /v2/resources/:id\n//   PATCH  /v2/resources/:id\n//   DELETE /v2/resources/:id\n\nimport type { Fetcher } from \"../http/fetcher\";\nimport type { RequestOptions } from \"../http/types\";\nimport type {\n  Resource,\n  ResourceCreate,\n  ResourceUpdate,\n  ListParams,\n  Paginated,\n} from \"../types/index\";\n\nexport class ResourcesClient {\n  constructor(private readonly fetcher: Fetcher) {}\n\n  /**\n   * Lists resources with cursor pagination and optional DSL filtering.\n   *\n   * @example\n   * ```ts\n   * const page = await client.resources.list({ q: \"agent_id.eq:'agent-abc'\" });\n   * ```\n   */\n  list(params?: ListParams, opts?: RequestOptions): Promise<Paginated<Resource>> {\n    return this.fetcher.list<Resource>(\"/resources\", params, opts);\n  }\n\n  /**\n   * Creates a new resource.\n   *\n   * @example\n   * ```ts\n   * const resource = await client.resources.create({\n   *   team_id: \"team-abc\",\n   *   agent_id: \"agent-xyz\",\n   *   name: \"Flight Policy Document\",\n   *   type: \"document\",\n   * });\n   * ```\n   */\n  create(data: ResourceCreate, opts?: RequestOptions): Promise<Resource> {\n    return this.fetcher.post<Resource>(\"/resources\", data, opts);\n  }\n\n  /**\n   * Gets a single resource by ID.\n   *\n   * @throws {NotFoundError} when no resource with `id` exists.\n   */\n  get(id: string, opts?: RequestOptions): Promise<Resource> {\n    return this.fetcher.get<Resource>(`/resources/${id}`, undefined, opts);\n  }\n\n  /**\n   * Partially updates a resource.\n   *\n   * @throws {NotFoundError} when no resource with `id` exists.\n   */\n  update(id: string, data: ResourceUpdate, opts?: RequestOptions): Promise<Resource> {\n    return this.fetcher.patch<Resource>(`/resources/${id}`, data, opts);\n  }\n\n  /**\n   * Deletes a resource.\n   *\n   * @throws {NotFoundError} when no resource with `id` exists.\n   */\n  delete(id: string, opts?: RequestOptions): Promise<void> {\n    return this.fetcher.delete(`/resources/${id}`, opts);\n  }\n}\n","// ── SDK v2 — KaibanClient ──────────────────────────────────────────────────────\n//\n// Entry point for all SDK operations.\n// Instantiate once; reuse everywhere.\n\nimport { Fetcher } from \"./http/fetcher\";\nimport type { ClientConfig } from \"./http/types\";\nimport { TeamsClient }         from \"./resources/teams\";\nimport { ActivitiesClient }    from \"./resources/activities\";\nimport { BoardsClient }        from \"./resources/boards\";\nimport { CardsClient }         from \"./resources/cards\";\nimport { AgentsClient }        from \"./resources/agents\";\nimport { AgentDraftsClient }   from \"./resources/agent-drafts\";\nimport { NotificationsClient } from \"./resources/notifications\";\nimport { AppsClient }          from \"./resources/apps\";\nimport { IntegrationsClient }  from \"./resources/integrations\";\nimport { PositionsClient }     from \"./resources/positions\";\nimport { ResourcesClient }     from \"./resources/resources\";\n\nexport class KaibanClient {\n  /** Access the Boards domain and External Channels sub-resource. */\n  readonly boards:        BoardsClient;\n  /** Access the Cards domain, including bulk ops, sessions, and comments. */\n  readonly cards:         CardsClient;\n  /** Access the Agents domain, including Feedback and Supervisor Feedback. */\n  readonly agents:        AgentsClient;\n  /** Access the Agent Drafts domain, including publish workflow. */\n  readonly agentDrafts:   AgentDraftsClient;\n  /** Access the Teams domain and Invitations sub-resource. */\n  readonly teams:         TeamsClient;\n  /** Access the Activities domain, including real-time SSE streaming. */\n  readonly activities:    ActivitiesClient;\n  /** Access the Notifications domain. */\n  readonly notifications: NotificationsClient;\n  /** Access the Apps domain and App Settings sub-resource. */\n  readonly apps:          AppsClient;\n  /** Access the Integrations domain. */\n  readonly integrations:  IntegrationsClient;\n  /** Access the Positions domain. */\n  readonly positions:     PositionsClient;\n  /** Access the Resources domain. */\n  readonly resources:     ResourcesClient;\n\n  private readonly fetcher: Fetcher;\n\n  /**\n   * Creates a new Kaiban API v2 client.\n   *\n   * @example Browser (Firebase — auto-refreshing token):\n   * ```ts\n   * import { KaibanClient } from \"@kaiban/sdk-v2\";\n   * import { getAuth } from \"firebase/auth\";\n   *\n   * const client = new KaibanClient({\n   *   tenant: \"my-org\",\n   *   getToken: () => getAuth().currentUser?.getIdToken() ?? Promise.resolve(undefined),\n   * });\n   * ```\n   *\n   * @example Server / agent (API key):\n   * ```ts\n   * import { KaibanClient } from \"@kaiban/sdk-v2\";\n   *\n   * const client = new KaibanClient({\n   *   tenant: \"my-org\",\n   *   apiKey: process.env.KAIBAN_API_KEY, // kb_t_... or kb_s_...\n   * });\n   * ```\n   *\n   * @example Local dev:\n   * ```ts\n   * const client = new KaibanClient({\n   *   tenant: \"my-org\",\n   *   apiKey: \"kb_t_...\",\n   *   baseUrl: \"http://localhost:3000/api/v2\",\n   * });\n   * ```\n   */\n  constructor(config: ClientConfig) {\n    this.fetcher        = new Fetcher(config);\n    this.boards         = new BoardsClient(this.fetcher);\n    this.cards          = new CardsClient(this.fetcher);\n    this.agents         = new AgentsClient(this.fetcher);\n    this.agentDrafts    = new AgentDraftsClient(this.fetcher);\n    this.teams          = new TeamsClient(this.fetcher);\n    this.activities     = new ActivitiesClient(this.fetcher);\n    this.notifications  = new NotificationsClient(this.fetcher);\n    this.apps           = new AppsClient(this.fetcher);\n    this.integrations   = new IntegrationsClient(this.fetcher);\n    this.positions      = new PositionsClient(this.fetcher);\n    this.resources      = new ResourcesClient(this.fetcher);\n  }\n}\n","import { z } from \"zod\";\n\n// ── Profile ───────────────────────────────────────────────────────────────────\n//\n// One profile per Firebase user. The profile `id` is the Firebase uid.\n// Profiles are tenant-scoped — they live in the user's primary team tenant DB.\n// They are NOT stored in Firestore — all profile data lives in MongoDB.\n\nexport const Profile = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  user_id: z.string().describe(\"Unique user identifier\"),\n  email: z.string().email().describe(\"User's email address\"),\n  full_name: z.string().describe(\"User's full display name\"),\n  avatar_id: z.string().optional().describe(\"GridFS file ID for the user's avatar image\"),\n  avatar_url: z.string().optional().describe(\"Signed avatar download URL — computed, never stored\"),\n  last_selected_team_id: z\n    .string()\n    .nullable()\n    .optional()\n    .describe(\"Last team the user had selected in the app\"),\n  requires_password_change: z\n    .boolean()\n    .optional()\n    .describe(\"When true the user must change their password on next login\"),\n  mfa_enrolled: z\n    .boolean()\n    .optional()\n    .describe(\"Whether the user has enrolled in multi-factor authentication\"),\n  mfa_enrolled_at: z.coerce\n    .date()\n    .nullable()\n    .optional()\n    .describe(\"Timestamp when the user completed MFA enrollment\"),\n  created_at: z.date().describe(\"When the profile was created\"),\n  updated_at: z.date().describe(\"When the profile was last updated\"),\n});\n\nexport type Profile = z.infer<typeof Profile>;\n\nexport const ProfileCreate = Profile.omit({\n  id: true, // auto-generated ObjectId\n  created_at: true,\n  updated_at: true,\n}).partial({\n  last_selected_team_id: true,\n});\n\nexport type ProfileCreate = z.infer<typeof ProfileCreate>;\n\n// ── SignupBody ────────────────────────────────────────────────────────────────\n//\n// Request body for POST /auth/signup.\n\nexport const SignupCreate = z.object({\n  email: z.string().email().describe(\"User's email address\"),\n  password: z.string().min(6).describe(\"Password — minimum 6 characters\"),\n  full_name: z.string().min(1).describe(\"User's full display name\"),\n});\n\nexport type SignupCreate = z.infer<typeof SignupCreate>;\n\n// ── SignupResult ──────────────────────────────────────────────────────────────\n//\n// Response body for POST /auth/signup.\n\nexport const SignupResult = z.object({\n  uid: z.string().describe(\"Newly created user ID\"),\n  email: z.string().email().describe(\"User's email address\"),\n  team_id: z.string().describe(\"ID of the default team created for this user\"),\n});\n\nexport type SignupResult = z.infer<typeof SignupResult>;\n\n// ── ProfileUpdate ─────────────────────────────────────────────────────────────\n\n// ── ProfilePasswordReset ──────────────────────────────────────────────────────\n//\n// Response body for POST /profiles/:uid/reset-password.\n// Returns the generated temp code to the caller so it can be delivered\n// out-of-band to the user (email, SMS, etc.).\n\nexport const ProfilePasswordReset = z.object({\n  temp_code: z\n    .string()\n    .describe(\n      \"Temporary one-time password — deliver to the user to allow login and password change\",\n    ),\n});\n\nexport type ProfilePasswordReset = z.infer<typeof ProfilePasswordReset>;\n\n// ── ProfileUpdate ─────────────────────────────────────────────────────────────\n\nexport const ProfileUpdate = z.object({\n  full_name: z.string().optional().describe(\"User's full display name\"),\n  last_selected_team_id: z\n    .string()\n    .nullable()\n    .optional()\n    .describe(\"Last team the user had selected in the app\"),\n  requires_password_change: z\n    .boolean()\n    .optional()\n    .describe(\"When true the user must change their password on next login\"),\n  mfa_enrolled: z\n    .boolean()\n    .optional()\n    .describe(\"Whether the user has enrolled in multi-factor authentication\"),\n  mfa_enrolled_at: z.coerce\n    .date()\n    .nullable()\n    .optional()\n    .describe(\"Timestamp when the user completed MFA enrollment\"),\n});\n\nexport type ProfileUpdate = z.infer<typeof ProfileUpdate>;\n","import { z } from \"zod\";\nimport { Profile } from \"./profile.type\";\n\n// ── Enums ─────────────────────────────────────────────────────────────────────\n\nexport const TeamMemberRole = {\n  OWNER: \"owner\",\n  ADMIN: \"admin\",\n  MEMBER: \"member\",\n  VIEWER: \"viewer\",\n  CONTRIBUTOR: \"contributor\",\n} as const;\n\nexport type TeamMemberRole = (typeof TeamMemberRole)[keyof typeof TeamMemberRole];\n\n// ── TeamMember ────────────────────────────────────────────────────────────────\n\nexport const TeamMember = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  team_id: z.string().describe(\"Owning team ID\"),\n  user_id: z.string().describe(\"User ID\"),\n  role: z\n    .enum(Object.values(TeamMemberRole) as [string, ...string[]])\n    .describe(\"Member role in the team\"),\n  is_default: z\n    .boolean()\n    .optional()\n    .describe(\n      \"True when this is the user's personal default team (created at signup). At most one per user.\",\n    ),\n  // ── Computed embed field — present only when ?embed=profile is requested ──\n  profile: Profile.partial()\n    .optional()\n    .describe(\"Embedded profile — present only when ?embed=profile\"),\n  created_at: z.coerce.date().describe(\"Creation timestamp\"),\n  updated_at: z.coerce.date().describe(\"Last update timestamp\"),\n});\nexport type TeamMember = z.infer<typeof TeamMember>;\n\n// ── Input DTOs — derived from TeamMember to avoid field duplication ────────────\n\n// Create — team_id injected from URL; id/created_at/updated_at auto-generated; profile is embed-only\nexport const TeamMemberCreate = TeamMember.omit({\n  id: true,\n  team_id: true,\n  created_at: true,\n  updated_at: true,\n  profile: true,\n}).extend({\n  role: z.enum(Object.values(TeamMemberRole) as [string, ...string[]]).default(\"member\"),\n});\nexport type TeamMemberCreate = z.infer<typeof TeamMemberCreate>;\n\n// Update — user_id is immutable; all other fields optional\nexport const TeamMemberUpdate = TeamMemberCreate.omit({\n  user_id: true,\n}).partial();\nexport type TeamMemberUpdate = z.infer<typeof TeamMemberUpdate>;\n","// ── Agent Types ────────────────────────────────────────────────────────────────\n//\n// Domain types and API contracts — what clients send (AgentCreate) and receive (Agent).\n// No Mongoose, no DB details. Those live in agent.model.ts.\n\nimport { z } from \"zod\";\nimport { Profile } from \"./profile.type\";\n\n// ── Feedback enums ────────────────────────────────────────────────────────────\n\nexport const FeedbackType = {\n  OPERATOR_EVALUATION: \"operator_evaluation_added\",\n  USER_CONVERSATION: \"user_conversation_feedback\",\n  USER_MESSAGE_EVALUATION: \"user_message_evaluation\",\n} as const;\n\nexport const FeedbackStatus = {\n  UNPROCESSED: \"unprocessed\",\n  REVIEWED: \"reviewed\",\n  ANNOTATED: \"annotated\",\n} as const;\n\nexport const FeedbackEvaluation = {\n  POSITIVE: \"positive\",\n  NEGATIVE: \"negative\",\n} as const;\n\n// ── AgentFeedback ─────────────────────────────────────────────────────────────\n\nexport const AgentFeedback = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  agent_id: z.string().min(1).describe(\"Parent agent ID\"),\n  team_id: z.string().min(1).describe(\"Owning team ID\"),\n  created_by: z.string().min(1).describe(\"Creator user ID\"),\n  type: z.enum(Object.values(FeedbackType) as [string, ...string[]]).describe(\"Feedback type\"),\n  status: z\n    .enum(Object.values(FeedbackStatus) as [string, ...string[]])\n    .describe(\"Processing status\"),\n  evaluation: z\n    .enum(Object.values(FeedbackEvaluation) as [string, ...string[]])\n    .describe(\"Positive or negative evaluation\"),\n  comment: z.string().min(1).describe(\"Feedback comment text\"),\n  activity_id: z.string().optional().describe(\"Optional link to a specific activity record\"),\n  created_at: z.coerce.date().describe(\"Creation timestamp\"),\n  updated_at: z.coerce.date().describe(\"Last update timestamp\"),\n  // ── Computed embed fields — present only when ?embed= is requested ──────────\n  /** NOT stored. Resolved inline by the repo aggregation pipeline when ?embed=agent. */\n  // z.lazy() is required because Agent is declared after AgentFeedback in this file.\n  agent: z\n    .lazy(() => Agent.partial())\n    .optional()\n    .describe(\"Embedded agent — present only when ?embed=agent\"),\n});\nexport type AgentFeedback = z.infer<typeof AgentFeedback>;\n\n// Create — agent_id injected from URL param; status always \"unprocessed\" on create\nexport const AgentFeedbackCreate = AgentFeedback.omit({\n  id: true,\n  agent_id: true,\n  created_at: true,\n  updated_at: true,\n  status: true,\n  agent: true, // embed field — computed by the repo, never sent by the client\n});\nexport type AgentFeedbackCreate = z.infer<typeof AgentFeedbackCreate>;\n\n// Update — immutable fields omitted; status becomes updatable (reviewed, annotated)\nexport const AgentFeedbackUpdate = AgentFeedbackCreate.omit({\n  team_id: true,\n  created_by: true,\n})\n  .partial()\n  .extend({\n    status: z.enum(Object.values(FeedbackStatus) as [string, ...string[]]).optional(),\n  });\nexport type AgentFeedbackUpdate = z.infer<typeof AgentFeedbackUpdate>;\n\n// ── SupervisorFeedback ────────────────────────────────────────────────────────\n//\n// Curated instruction produced by a supervisor (AI or human) after processing\n// raw AgentFeedback. Distinct from AgentFeedback — this represents the output\n// of the curation pipeline, not the raw user input.\n\nexport const SupervisorFeedback = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  agent_id: z.string().min(1).describe(\"Parent agent ID\"),\n  team_id: z.string().min(1).describe(\"Owning team ID\"),\n  created_by: z.string().min(1).describe(\"Creator user ID\"),\n  feedback: z.string().min(1).describe(\"The curated instruction for the agent\"),\n  // Optional context links\n  board_id: z.string().optional().describe(\"Board context where feedback originated\"),\n  agent_feedback_id: z.string().optional().describe(\"Source AgentFeedback that triggered this\"),\n  activity_id: z.string().optional().describe(\"Related activity log entry\"),\n  created_at: z.coerce.date().describe(\"Creation timestamp\"),\n  updated_at: z.coerce.date().describe(\"Last update timestamp\"),\n  // ── Computed embed fields — present only when ?embed= is requested ──────────\n  /** NOT stored. Resolved inline by the repo aggregation pipeline when ?embed=agent. */\n  // z.lazy() is required because Agent is declared after SupervisorFeedback in this file.\n  agent: z\n    .lazy(() => Agent.partial())\n    .optional()\n    .describe(\"Embedded agent — present only when ?embed=agent\"),\n  /** NOT stored. Resolved inline when ?embed=board.\n   *  Uses z.record to avoid a circular type import (board.type.ts imports agent.type.ts). */\n  board: z\n    .record(z.string(), z.unknown())\n    .optional()\n    .describe(\"Embedded board — present only when ?embed=board\"),\n});\nexport type SupervisorFeedback = z.infer<typeof SupervisorFeedback>;\n\n// Create — agent_id injected from URL param\nexport const SupervisorFeedbackCreate = SupervisorFeedback.omit({\n  id: true,\n  agent_id: true,\n  created_at: true,\n  updated_at: true,\n  agent: true, // embed field — computed by the repo, never sent by the client\n  board: true, // embed field — computed by the repo, never sent by the client\n});\nexport type SupervisorFeedbackCreate = z.infer<typeof SupervisorFeedbackCreate>;\n\n// Update — immutable fields omitted; only feedback, board_id, activity_id updatable\nexport const SupervisorFeedbackUpdate = SupervisorFeedbackCreate.omit({\n  team_id: true,\n  created_by: true,\n}).partial();\nexport type SupervisorFeedbackUpdate = z.infer<typeof SupervisorFeedbackUpdate>;\n\n// ── AgentKind ─────────────────────────────────────────────────────────────────\n\nexport const AgentKind = {\n  KAIBANJS: \"kaibanjs\",\n  CREWAI: \"crewai\",\n  EXTERNAL: \"external\",\n  A2A: \"a2a\",\n  CLAUDE_CODE: \"claude_code\",\n} as const;\n\n// ── AgentStatus ───────────────────────────────────────────────────────────────\n\nexport const AgentStatus = {\n  ACTIVE: \"active\",\n  DRAFT: \"draft\",\n  INACTIVE: \"inactive\",\n  IDLE: \"idle\",\n} as const;\n\n// ── Subdocument types ─────────────────────────────────────────────────────────\n\nexport const AgentExample = z.object({\n  input: z.record(z.string(), z.unknown()).optional().describe(\"Input data for the example\"),\n  output: z.string().describe(\"Expected output string\"),\n});\nexport type AgentExample = z.infer<typeof AgentExample>;\n\nexport const AgentResource = z.object({\n  resource_id: z.string().min(1).describe(\"Resource identifier\"),\n  language: z.string().optional().describe(\"Language of the resource\"),\n  index_name: z.string().optional().describe(\"Index name for the resource\"),\n});\nexport type AgentResource = z.infer<typeof AgentResource>;\n\n// ── Response DTO — Agent ───────────────────────────────────────────────────────\n\nexport const Agent = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  name: z.string().min(1).max(100).describe(\"Agent display name\"),\n  description: z.string().min(1).describe(\"Agent purpose and capabilities\"),\n  team_id: z.string().min(1).describe(\"Owning team ID\"),\n  owner_id: z.string().min(1).describe(\"Owner user ID\"),\n  created_by: z.string().min(1).describe(\"Creator user ID\"),\n  type: z.enum(Object.values(AgentKind) as [string, ...string[]]).describe(\"Agent framework kind\"),\n  status: z\n    .enum(Object.values(AgentStatus) as [string, ...string[]])\n    .describe(\"Agent lifecycle status\"),\n  // Optional fields\n  alias: z\n    .string()\n    .optional()\n    .describe(\"URL-safe slug, auto-generated from name if not provided. Immutable after creation.\"),\n  agent_team_alias: z.string().optional().describe(\"Team-specific alias for this agent\"),\n  monthly_budget: z.number().min(0).optional().describe(\"Monthly budget limit\"),\n  roles: z.array(z.string()).optional().describe(\"Agent roles list\"),\n  integrations: z.array(z.string()).optional().describe(\"Enabled integration IDs\"),\n  examples: z.array(AgentExample).optional().describe(\"Input/output examples\"),\n  resources: z.array(AgentResource).optional().describe(\"Linked knowledge resources\"),\n  config: z.record(z.string(), z.unknown()).optional().describe(\"Arbitrary agent configuration\"),\n  avatar_id: z.string().optional().describe(\"GridFS file ID for the agent's avatar image\"),\n  avatar_url: z.string().optional().describe(\"Signed avatar download URL — computed, never stored\"),\n  created_at: z.coerce.date().describe(\"Creation timestamp\"),\n  updated_at: z.coerce.date().describe(\"Last update timestamp\"),\n  // Derived fields — computed on read, never stored or accepted as input\n  active_cards: z\n    .number()\n    .int()\n    .min(0)\n    .optional()\n    .describe(\"Count of active (non-deleted) cards currently assigned to this agent.\"),\n  boards_count: z\n    .number()\n    .int()\n    .min(0)\n    .optional()\n    .describe(\"Count of boards where this agent appears in agent_ids. Computed on read.\"),\n  // ── Computed embed fields — present only when ?embed= is requested ──────────\n  /** NOT stored. Resolved inline by the repo aggregation pipeline when ?embed=owner. */\n  owner: Profile.partial()\n    .optional()\n    .describe(\"Embedded owner profile — present only when ?embed=owner\"),\n});\nexport type Agent = z.infer<typeof Agent>;\n\n// ── Create DTO ────────────────────────────────────────────────────────────────\n\nexport const AgentCreate = Agent.omit({\n  id: true,\n  created_at: true,\n  updated_at: true,\n  active_cards: true, // derived — not a client input\n  boards_count: true, // derived — not a client input\n  avatar_id: true, // set via POST /agents/:id/avatar, not inline\n  avatar_url: true, // computed — never stored\n  owner: true, // embed field — computed by the repo, never sent by the client\n});\nexport type AgentCreate = z.infer<typeof AgentCreate>;\n\n// ── Update DTO ────────────────────────────────────────────────────────────────\n// Immutable fields omitted: team_id, owner_id, created_by, alias\n\nexport const AgentUpdate = AgentCreate.omit({\n  team_id: true,\n  owner_id: true,\n  created_by: true,\n  alias: true,\n}).partial();\nexport type AgentUpdate = z.infer<typeof AgentUpdate>;\n\n// ── Retire types ──────────────────────────────────────────────────────────────\n\nexport const AgentRetireAction = {\n  DEACTIVATE: \"deactivate\",\n  REASSIGN: \"reassign\",\n} as const;\nexport type AgentRetireAction = (typeof AgentRetireAction)[keyof typeof AgentRetireAction];\n\nexport const AgentRetireBoardEntry = z.object({\n  board_id: z.string().min(1).describe(\"Board ID to process on agent retirement\"),\n  action: z\n    .enum(Object.values(AgentRetireAction) as [string, ...string[]])\n    .describe(\n      \"What to do with cards assigned to this agent on the board: \" +\n        \"'deactivate' removes the agent assignment, \" +\n        \"'reassign' moves it to another agent\",\n    ),\n  reassign_to_agent_id: z\n    .string()\n    .min(1)\n    .optional()\n    .describe(\"Target agent ID — required when action is 'reassign'\"),\n});\nexport type AgentRetireBoardEntry = z.infer<typeof AgentRetireBoardEntry>;\n\nexport const AgentRetireBody = z\n  .object({\n    boards: z\n      .array(AgentRetireBoardEntry)\n      .describe(\n        \"Per-board retirement instructions. External channels for each board are always deleted.\",\n      ),\n  })\n  .superRefine((val, ctx) => {\n    val.boards.forEach((entry, i) => {\n      if (entry.action === AgentRetireAction.REASSIGN && !entry.reassign_to_agent_id) {\n        ctx.addIssue({\n          code: z.ZodIssueCode.custom,\n          path: [\"boards\", i, \"reassign_to_agent_id\"],\n          message: \"reassign_to_agent_id is required when action is 'reassign'\",\n        });\n      }\n    });\n  });\nexport type AgentRetireBody = z.infer<typeof AgentRetireBody>;\n\nexport const AgentRetireResult = z.object({\n  success: z.boolean().describe(\"Whether the retirement transaction completed successfully\"),\n  processed_boards: z.number().int().min(0).describe(\"Number of boards processed\"),\n  processed_cards: z\n    .number()\n    .int()\n    .min(0)\n    .describe(\"Number of cards updated (agent unassigned or reassigned)\"),\n  processed_channels: z.number().int().min(0).describe(\"Number of external channels deleted\"),\n});\nexport type AgentRetireResult = z.infer<typeof AgentRetireResult>;\n","// ── Board DTOs ──────────────────────────────────────────────────────────────────\n//\n// API contracts — what clients send (BoardCreate/BoardUpdate) and receive (Board).\n// No Mongoose, no DB details. Those live in board.model.ts.\n\nimport { z } from \"zod\";\nimport { Agent } from \"./agent.type\";\nimport { Profile } from \"./profile.type\";\n\n// ── TagDefinition ──────────────────────────────────────────────────────────────\n\nexport const TagDefinitionColor = {\n  GRAY: \"gray\",\n  RED: \"red\",\n  ORANGE: \"orange\",\n  YELLOW: \"yellow\",\n  GREEN: \"green\",\n  BLUE: \"blue\",\n  PURPLE: \"purple\",\n  PINK: \"pink\",\n  TEAL: \"teal\",\n} as const;\n\nexport type TagDefinitionColor = (typeof TagDefinitionColor)[keyof typeof TagDefinitionColor];\n\nexport const TagDefinition = z.object({\n  name: z.string().min(1).describe(\"Tag label\"),\n  color: z\n    .enum(Object.values(TagDefinitionColor) as [string, ...string[]])\n    .default(\"gray\")\n    .describe(\"Tag color — one of the predefined palette values\"),\n});\nexport type TagDefinition = z.infer<typeof TagDefinition>;\n\n// ── Column ─────────────────────────────────────────────────────────────────────\n\nexport const Column = z.object({\n  column_key: z.string().min(1).describe(\"Unique column identifier\"),\n  name: z.string().min(1).describe(\"Column display name\"),\n  process_stage: z.string().optional().describe(\"Associated process stage\"),\n  order: z.number().int().describe(\"Column display order\"),\n});\nexport type Column = z.infer<typeof Column>;\n\n// ── Board ──────────────────────────────────────────────────────────────────────\n\nexport const Board = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  team_id: z.string().min(1).describe(\"Owning team ID\"),\n  owner_id: z.string().min(1).describe(\"Owner user ID\"),\n  created_by: z.string().min(1).describe(\"Creator user ID\"),\n  name: z.string().min(1).max(100).describe(\"Board display name\"),\n  description: z.string().optional().describe(\"Board description\"),\n  alias: z.string().optional().describe(\"URL-safe board slug\"),\n  columns: z.array(Column).optional().describe(\"Board columns definition\"),\n  agent_ids: z.array(z.string()).optional().describe(\"Assigned agent IDs\"),\n  member_ids: z.array(z.string()).optional().describe(\"Board member user IDs\"),\n  allowed_roles: z.array(z.string()).optional().describe(\"Roles allowed to access this board\"),\n  tags: z.array(z.string()).optional().describe(\"Board tags\"),\n  tag_definitions: z\n    .array(TagDefinition)\n    .optional()\n    .describe(\"Board tag definitions with name and color\"),\n  dashboard_id: z.string().nullable().optional().describe(\"Linked dashboard ID\"),\n  is_favorite: z.boolean().optional().describe(\"Whether board is marked as favorite\"),\n  active_cards: z.number().int().optional().describe(\"Count of non-deleted cards on this board\"),\n  deleted_cards: z\n    .number()\n    .int()\n    .optional()\n    .describe(\"Count of soft-deleted cards in the recycle bin\"),\n  created_at: z.coerce.date().describe(\"Creation timestamp\"),\n  updated_at: z.coerce.date().describe(\"Last update timestamp\"),\n  // ── Computed embed fields — present only when ?embed= is requested ──────────\n  /** NOT stored. Resolved inline by the repo aggregation pipeline when ?embed=owner. */\n  owner: Profile.partial()\n    .optional()\n    .describe(\"Embedded owner profile — present only when ?embed=owner\"),\n  /** NOT stored. Resolved inline by the repo aggregation pipeline when ?embed=agents. */\n  agents: z\n    .array(Agent.partial())\n    .optional()\n    .describe(\"Embedded agents array — present only when ?embed=agents\"),\n});\nexport type Board = z.infer<typeof Board>;\n\n// BoardCreate — all writable fields (server sets id, created_at, updated_at)\nexport const BoardCreate = Board.omit({\n  id: true,\n  created_at: true,\n  updated_at: true,\n  active_cards: true,\n  deleted_cards: true,\n  // embed fields — computed by the repo, never sent by the client\n  owner: true,\n  agents: true,\n});\nexport type BoardCreate = z.infer<typeof BoardCreate>;\n\n// BoardUpdate — same as BoardCreate minus immutable fields, all optional.\nexport const BoardUpdate = BoardCreate.omit({\n  team_id: true,\n  owner_id: true,\n  created_by: true,\n  alias: true,\n}).partial();\nexport type BoardUpdate = z.infer<typeof BoardUpdate>;\n","// ── Card DTOs ──────────────────────────────────────────────────────────────────\n//\n// API contracts — what clients send (CardCreate/CardUpdate) and receive (Card).\n// No Mongoose, no DB details. Those live in card.entity.ts.\n\nimport { z } from \"zod\";\nimport { Board } from \"./board.type\";\nimport { Agent } from \"./agent.type\";\nimport { Profile } from \"./profile.type\";\n\n// ── CardStatus ─────────────────────────────────────────────────────────────────\n\nexport const CardStatus = {\n  BACKLOG: \"backlog\",\n  TODO: \"todo\",\n  DOING: \"doing\",\n  BLOCKED: \"blocked\",\n  DONE: \"done\",\n} as const;\n\nexport type CardStatus = (typeof CardStatus)[keyof typeof CardStatus];\n\n// ── CardPriority ───────────────────────────────────────────────────────────────\n\nexport const CardPriority = {\n  LOW: \"low\",\n  NORMAL: \"normal\",\n  MEDIUM: \"medium\",\n  HIGH: \"high\",\n  CRITICAL: \"critical\",\n  URGENT: \"urgent\",\n} as const;\n\nexport type CardPriority = (typeof CardPriority)[keyof typeof CardPriority];\n\n// ── PartType ───────────────────────────────────────────────────────────────────\n\nexport const PartType = {\n  TEXT: \"text\",\n  FILE: \"file\",\n  DATA: \"data\",\n} as const;\n\nexport type PartType = (typeof PartType)[keyof typeof PartType];\n\n// ── Parts ──────────────────────────────────────────────────────────────────────\n// Zod schemas for card content parts — API validation and response contracts.\n// The stored shape is mirrored by partSchema in card.entity.ts (Mongoose only).\n\n// ── Response Part schemas — used in Card (output / toDto) ─────────────────────\n// Content fields are optional to support field projection (e.g. ?fields=parts.type\n// returns only the discriminant without the content object).\n\nexport const TextPart = z.object({\n  type: z.literal(PartType.TEXT).describe(\"Part type discriminant\"),\n  text: z.string().optional().describe(\"Text content\"),\n  metadata: z.record(z.string(), z.unknown()).optional().describe(\"Part metadata\"),\n});\n\nexport const FilePart = z.object({\n  type: z.literal(PartType.FILE).describe(\"Part type discriminant\"),\n  file: z\n    .object({\n      name: z.string().min(1).describe(\"File name\"),\n      mimeType: z.string().min(1).describe(\"File MIME type\"),\n      id: z.string().min(1).describe(\"File storage ID\"),\n      size: z.number().optional().describe(\"File size in bytes\"),\n      url: z.string().optional().describe(\"Signed download URL\"), // Computed — NOT stored. Injected by enrichCard().\n    })\n    .optional(),\n  metadata: z.record(z.string(), z.unknown()).optional().describe(\"Part metadata\"),\n});\n\nexport const DataPart = z.object({\n  type: z.literal(PartType.DATA).describe(\"Part type discriminant\"),\n  data: z.record(z.string(), z.unknown()).optional().describe(\"Structured key-value data\"),\n  metadata: z.record(z.string(), z.unknown()).optional().describe(\"Part metadata\"),\n});\n\n/** Full Part union (response) — TextPart | FilePart | DataPart. */\nexport const Part = z.discriminatedUnion(\"type\", [TextPart, FilePart, DataPart]);\n\n// ── Input Part schemas — used in CardCreate / CardUpdate ──────────────────────\n// Content fields are required — callers must provide the full part payload.\n// FilePart is intentionally excluded: files must be uploaded via\n// POST /cards/:cardId/attachments, not inlined in the card body.\n\nconst TextPartInput = z.object({\n  type: z.literal(PartType.TEXT).describe(\"Part type discriminant\"),\n  text: z.string().min(1).describe(\"Text content\"),\n  metadata: z.record(z.string(), z.unknown()).optional().describe(\"Part metadata\"),\n});\n\nconst DataPartInput = z.object({\n  type: z.literal(PartType.DATA).describe(\"Part type discriminant\"),\n  data: z.record(z.string(), z.unknown()).describe(\"Structured key-value data\"),\n  metadata: z.record(z.string(), z.unknown()).optional().describe(\"Part metadata\"),\n});\n\nexport const CardInputPart = z.discriminatedUnion(\"type\", [TextPartInput, DataPartInput]);\n\nexport type TextPart = z.infer<typeof TextPart>;\nexport type FilePart = z.infer<typeof FilePart>;\nexport type DataPart = z.infer<typeof DataPart>;\nexport type Part = z.infer<typeof Part>;\nexport type CardInputPart = z.infer<typeof CardInputPart>;\n\n// ── Computed types ─────────────────────────────────────────────────────────────\n\n/**\n * Resolved related card metadata — returned in GET /cards/:id responses.\n * Never stored in DB. Computed from related_card_ids by enrichCard().\n *\n * status values:\n *   active             — card exists and is not deleted\n *   recycled           — card is soft-deleted (in recycle bin)\n *   permanently_deleted — card was hard-deleted; only card_id is available\n */\nexport const RelatedCardResolved = z.object({\n  card_id: z.string().min(1).describe(\"Related card ID\"),\n  board_id: z.string().optional().describe(\"Parent board ID — absent when permanently deleted\"),\n  board_name: z.string().optional().describe(\"Parent board name — absent when permanently deleted\"),\n  title: z.string().optional().describe(\"Related card title — absent when permanently deleted\"),\n  status: z.enum([\"active\", \"recycled\", \"permanently_deleted\"]).describe(\"Card lifecycle status\"),\n  permanent_deleted_at: z\n    .string()\n    .optional()\n    .describe(\"Scheduled permanent deletion time — present when recycled\"),\n});\n\nexport type RelatedCardResolved = z.infer<typeof RelatedCardResolved>;\n\n// ── Response DTO — Card ────────────────────────────────────────────────────────\n\nexport const Card = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  team_id: z.string().min(1).describe(\"Owning team ID\"),\n  board_id: z.string().min(1).describe(\"Parent board ID\"),\n  owner_id: z.string().min(1).describe(\"Owner user ID\"),\n  agent_id: z.string().optional().describe(\"Assigned agent ID\"),\n  title: z.string().min(1).max(100).describe(\"Card title\"),\n  description: z.string().optional().describe(\"Card description\"),\n  status: z\n    .enum(Object.values(CardStatus) as [string, ...string[]])\n    .describe(\"Card workflow status\"),\n  column_key: z.string().min(1).describe(\"Current board column key\"),\n  priority: z\n    .enum(Object.values(CardPriority) as [string, ...string[]])\n    .optional()\n    .describe(\"Card priority level\"),\n  result: z.string().optional().describe(\"Task result content\"),\n  tags: z.array(z.string().min(1)).optional().describe(\"Card tags\"),\n  member_ids: z.array(z.string().min(1)).optional().describe(\"Assigned member user IDs\"),\n  /** Stored field — IDs of related cards. Used internally by the service. */\n  related_card_ids: z.array(z.string().min(1)).optional().describe(\"IDs of related cards\"),\n  /** Computed field — resolved related cards. Only present in GET /:id responses. */\n  related_cards_resolved: z\n    .array(RelatedCardResolved)\n    .optional()\n    .describe(\"Resolved related card metadata — includes board name and lifecycle status\"),\n  parts: z.array(Part).optional().describe(\"Structured content parts\"),\n  metadata: z.record(z.string(), z.unknown()).optional().describe(\"Arbitrary additional metadata\"),\n  enabled: z.boolean().optional().describe(\"Whether card is enabled\"),\n  reference_code: z.string().optional().describe(\"External reference code\"),\n  deleted_at: z.date().optional().describe(\"Soft-delete timestamp\"),\n  deleted_by: z.string().optional().describe(\"User who soft-deleted this card\"),\n  /** Computed — NOT stored. Injected by enrichCard(). = deleted_at + RECYCLE_BIN_RETENTION_DAYS. */\n  permanent_deleted_at: z.string().optional().describe(\"Scheduled permanent deletion time\"),\n  created_at: z.date().describe(\"Creation timestamp\"),\n  updated_at: z.date().describe(\"Last update timestamp\"),\n  // ── Computed embed fields — present only when ?embed= is requested ──────────\n  // All embed fields use .partial() so that ?fields= sub-field projection\n  // (e.g. ?embed=board&fields=board.name) returns valid partial objects without\n  // Zod validation errors for absent fields.\n  /** NOT stored. Resolved inline by the repo aggregation pipeline when ?embed=board. */\n  board: Board.partial().optional().describe(\"Embedded board — present only when ?embed=board\"),\n  /** NOT stored. Resolved inline by the repo aggregation pipeline when ?embed=agent. */\n  agent: Agent.partial().optional().describe(\"Embedded agent — present only when ?embed=agent\"),\n  /** NOT stored. Resolved inline by the repo aggregation pipeline when ?embed=owner. */\n  owner: Profile.partial()\n    .optional()\n    .describe(\"Embedded owner profile — present only when ?embed=owner\"),\n});\n\nexport type Card = z.infer<typeof Card>;\n\n// ── Input DTOs ─────────────────────────────────────────────────────────────────\n\nexport const CardCreate = Card.omit({\n  id: true,\n  created_at: true,\n  updated_at: true,\n  deleted_at: true,\n  deleted_by: true,\n  permanent_deleted_at: true,\n  related_cards_resolved: true,\n  // embed fields — computed by the repo, never sent by the client\n  board: true,\n  agent: true,\n  owner: true,\n}).extend({\n  // nullish = string | null | undefined — null clears the agent assignment\n  agent_id: z.string().min(1).nullish(),\n  /**\n   * Only TextPart and DataPart allowed on create/update.\n   * FilePart is managed exclusively via POST /cards/:cardId/attachments.\n   */\n  parts: z.array(CardInputPart).optional(),\n});\n\nexport type CardCreate = z.infer<typeof CardCreate>;\n\nexport const CardUpdate = CardCreate.partial();\nexport type CardUpdate = z.infer<typeof CardUpdate>;\n\n// ── Bulk input types ───────────────────────────────────────────────────────────\n\nexport const CardBulkUpdateItem = CardUpdate.extend({\n  card_id: z.string().min(1).describe(\"Card ID to update\"),\n});\nexport type CardBulkUpdateItem = z.infer<typeof CardBulkUpdateItem>;\n\nexport const CardBulkMoveItem = z.object({\n  card_id: z.string().min(1).describe(\"Card ID to move\"),\n  column_key: z.string().min(1).describe(\"Destination column key\"),\n});\nexport type CardBulkMoveItem = z.infer<typeof CardBulkMoveItem>;\n\nexport const CardBulkDeleteItem = z.object({\n  card_id: z.string().min(1).describe(\"Card ID to delete\"),\n});\nexport type CardBulkDeleteItem = z.infer<typeof CardBulkDeleteItem>;\n\n// ── Session sub-resource types ─────────────────────────────────────────────────\n// Sessions are nested under Cards: /cards/:id/sessions\n\nexport const Session = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  card_id: z.string().describe(\"Parent card ID\"),\n  created_by: z.string().describe(\"Creator user ID\"),\n  metadata: z.record(z.string(), z.unknown()).optional().describe(\"Session metadata\"),\n  created_at: z.coerce.date().describe(\"Creation timestamp\"),\n  updated_at: z.coerce.date().describe(\"Last update timestamp\"),\n});\nexport type Session = z.infer<typeof Session>;\n\nexport const SessionCreate = z.object({\n  // card_id comes from URL path — NOT in body\n  // created_by injected by route from x-actor header (actor.id ?? \"system\")\n  metadata: z.record(z.string(), z.unknown()).optional().describe(\"Session metadata\"),\n});\nexport type SessionCreate = z.infer<typeof SessionCreate>;\n\nexport const SessionUpdate = z.object({\n  // Only metadata is mutable on a session — must be non-empty\n  metadata: z\n    .record(z.string(), z.unknown())\n    .refine((m) => Object.keys(m).length > 0, {\n      message: \"metadata must contain at least one field\",\n    })\n    .describe(\"Session metadata (must have at least one field)\"),\n});\nexport type SessionUpdate = z.infer<typeof SessionUpdate>;\n\n// ── SessionData ───────────────────────────────────────────────────────────────\n\nexport const SessionData = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  session_id: z.string().describe(\"Parent session ID\"),\n  label: z.string().optional().describe(\"Optional data entry label\"),\n  data: z.record(z.string(), z.unknown()).describe(\"Structured session data\"),\n  updated_by: z.string().optional().describe(\"Last updater user ID\"),\n  created_at: z.coerce.date().describe(\"Creation timestamp\"),\n  updated_at: z.coerce.date().describe(\"Last update timestamp\"),\n});\nexport type SessionData = z.infer<typeof SessionData>;\n\nexport const SessionDataCreate = z.object({\n  label: z.string().optional().describe(\"Optional data entry label\"),\n  data: z.record(z.string(), z.unknown()).describe(\"Structured session data\"),\n});\nexport type SessionDataCreate = z.infer<typeof SessionDataCreate>;\n\nexport const SessionDataBatchCreate = z.object({\n  items: z.array(SessionDataCreate).min(1).describe(\"Batch of session data entries to create\"),\n});\nexport type SessionDataBatchCreate = z.infer<typeof SessionDataBatchCreate>;\n\nexport const SessionDataUpdate = z\n  .object({\n    label: z.string().optional().describe(\"Optional data entry label\"),\n    data: z.record(z.string(), z.unknown()).optional().describe(\"Structured session data\"),\n    updated_by: z.string().optional().describe(\"Updater user ID\"),\n  })\n  .refine((d) => Object.values(d).some((v) => v !== undefined), {\n    message: \"At least one field must be provided\",\n  });\nexport type SessionDataUpdate = z.infer<typeof SessionDataUpdate>;\n","// ── Activity Types ─────────────────────────────────────────────────────────────\n//\n// Domain types and API contracts — what clients send (ActivityCreate) and receive (Activity).\n// No Mongoose, no DB details. Those live in activity.model.ts.\n\nimport { z } from \"zod\";\nimport { Board } from \"./board.type\";\nimport { Card } from \"./card.type\";\n\n// ── ActivityType ───────────────────────────────────────────────────────────────\n\nexport const ActivityType = {\n  // ── Boards ────────────────────────────────────────────────────────────────────\n  BOARD_CREATED: \"board_created\",\n  BOARD_UPDATED: \"board_updated\",\n  BOARD_DELETED: \"board_deleted\",\n  BOARD_RECYCLE_BIN_EMPTIED: \"board_recycle_bin_emptied\",\n\n  // ── Cards ─────────────────────────────────────────────────────────────────────\n  CARD_CREATED: \"card_created\",\n  CARD_DELETED: \"card_deleted\",\n  CARD_CLONED: \"card_cloned\",\n  CARD_RESTORED: \"card_restored\",\n  CARD_COLUMN_CHANGED: \"card_column_changed\",\n  CARD_STATUS_CHANGED: \"card_status_changed\",\n  CARD_PRIORITY_CHANGED: \"card_priority_changed\",\n  CARD_TITLE_CHANGED: \"card_title_changed\",\n  CARD_DESCRIPTION_CHANGED: \"card_description_changed\",\n  CARD_RESULT_CHANGED: \"card_result_changed\",\n  CARD_RESULT_PREVIEW: \"card_result_preview\",\n  CARD_AGENT_ADDED: \"card_agent_added\",\n  CARD_AGENT_REMOVED: \"card_agent_removed\",\n  CARD_TAGS_CHANGED: \"card_tags_changed\",\n  CARD_MEMBER_ADDED: \"card_member_added\",\n  CARD_MEMBER_REMOVED: \"card_member_removed\",\n  CARD_COMMENT_ADDED: \"card_comment_added\",\n  CARD_COMMENT_UPDATED: \"card_comment_updated\",\n  CARD_COMMENT_DELETED: \"card_comment_deleted\",\n  CARD_COMMENT_REPLY_ADDED: \"card_comment_reply_added\",\n  CARD_TASK_STARTED: \"card_task_started\",\n  CARD_TASK_COMPLETED: \"card_task_completed\",\n  CARD_TASK_BLOCKED: \"card_task_blocked\",\n  CARD_ATTACHMENT_ADDED: \"card_attachment_added\",\n  CARD_ATTACHMENT_REMOVED: \"card_attachment_removed\",\n  CARD_UPDATED: \"card_updated\",\n  EVALUATION_ADDED: \"evaluation_added\",\n\n  // ── Card Sessions ─────────────────────────────────────────────────────────────\n  CARD_SESSION_CREATED: \"card_session_created\",\n  CARD_SESSION_UPDATED: \"card_session_updated\",\n  CARD_SESSION_DELETED: \"card_session_deleted\",\n  CARD_SESSION_DATA_ADDED: \"card_session_data_added\",\n  CARD_SESSION_DATA_UPDATED: \"card_session_data_updated\",\n  CARD_SESSION_DATA_DELETED: \"card_session_data_deleted\",\n\n  // ── Agents ────────────────────────────────────────────────────────────────────\n  AGENT_CREATED: \"agent_created\",\n  AGENT_UPDATED: \"agent_updated\",\n  AGENT_DELETED: \"agent_deleted\",\n  AGENT_STATUS_UPDATED: \"agent_status_updated\",\n  AGENT_STATUS_OBSERVATION: \"agent_status_observation\",\n  AGENT_STATUS_THINKING_END: \"agent_status_thinking_end\",\n  AGENT_TASK_DOING: \"agent_task_doing\",\n  AGENT_TASK_WAITING: \"agent_task_waiting\",\n  AGENT_TASK_BLOCKED: \"agent_task_blocked\",\n  AGENT_TASK_COMPLETED: \"agent_task_completed\",\n  AGENT_TASK_DONE: \"agent_task_done\",\n  AGENT_TASK_CANCELLED: \"agent_task_cancelled\",\n  AGENT_TASK_FAILED: \"agent_task_failed\",\n  AGENT_REGISTER_APPROVAL: \"agent_register_approval\",\n  AGENT_REGISTER_REJECTED: \"agent_register_rejected\",\n  AGENT_RESPOND_FEEDBACK: \"agent_respond_feedback\",\n  AGENT_FEEDBACK_CREATED: \"agent_feedback_created\",\n  AGENT_FEEDBACK_UPDATED: \"agent_feedback_updated\",\n  AGENT_FEEDBACK_DELETED: \"agent_feedback_deleted\",\n  AGENT_SUPERVISOR_FEEDBACK_CREATED: \"agent_supervisor_feedback_created\",\n  AGENT_SUPERVISOR_FEEDBACK_UPDATED: \"agent_supervisor_feedback_updated\",\n  AGENT_SUPERVISOR_FEEDBACK_DELETED: \"agent_supervisor_feedback_deleted\",\n\n  // ── Teams ─────────────────────────────────────────────────────────────────────\n  TEAM_CREATED: \"team_created\",\n  TEAM_UPDATED: \"team_updated\",\n  TEAM_DELETED: \"team_deleted\",\n  TEAM_MEMBER_ADDED: \"team_member_added\",\n  TEAM_MEMBER_INVITED: \"team_member_invited\",\n  TEAM_MEMBER_UPDATED: \"team_member_updated\",\n  TEAM_MEMBER_REMOVED: \"team_member_removed\",\n\n  // ── Resources ─────────────────────────────────────────────────────────────────\n  RESOURCE_CREATED: \"resource_created\",\n  RESOURCE_UPDATED: \"resource_updated\",\n  RESOURCE_DELETED: \"resource_deleted\",\n\n  // ── Positions ─────────────────────────────────────────────────────────────────\n  POSITION_CREATED: \"position_created\",\n  POSITION_UPDATED: \"position_updated\",\n  POSITION_DELETED: \"position_deleted\",\n\n  // ── Apps ──────────────────────────────────────────────────────────────────────\n  APP_CREATED: \"app_created\",\n  APP_UPDATED: \"app_updated\",\n  APP_DELETED: \"app_deleted\",\n\n  // ── App Settings ──────────────────────────────────────────────────────────────\n  APP_SETTINGS_CREATED: \"app_settings_created\",\n  APP_SETTINGS_UPDATED: \"app_settings_updated\",\n  APP_SETTINGS_DELETED: \"app_settings_deleted\",\n  APP_SETTINGS_SECTION_REPLACED: \"app_settings_section_replaced\",\n  APP_SETTINGS_SECTION_MERGED: \"app_settings_section_merged\",\n  APP_SETTINGS_SECTION_DELETED: \"app_settings_section_deleted\",\n  APP_SETTINGS_SECTIONS_CLEARED: \"app_settings_sections_cleared\",\n\n  // ── External Channels ─────────────────────────────────────────────────────────\n  EXTERNAL_CHANNEL_CREATED: \"external_channel_created\",\n  EXTERNAL_CHANNEL_UPDATED: \"external_channel_updated\",\n  EXTERNAL_CHANNEL_DELETED: \"external_channel_deleted\",\n\n  // ── Threads ───────────────────────────────────────────────────────────────────\n  THREAD_USER_MESSAGE: \"thread_user_message\",\n  THREAD_AGENT_MESSAGE: \"thread_agent_message\",\n  THREAD_AGENT_MESSAGE_EVALUATION: \"thread_agent_message_evaluation\",\n  THREAD_FEEDBACK: \"thread_feedback\",\n  THREAD_STEP_COSTS: \"thread_step_costs\",\n\n  // ── A2A Task Status ───────────────────────────────────────────────────────────\n  A2A_TASK_STATUS_SUBMITTED: \"submitted\",\n  A2A_TASK_STATUS_WORKING: \"working\",\n  A2A_TASK_STATUS_INPUT_REQUIRED: \"required\",\n  A2A_TASK_STATUS_COMPLETED: \"completed\",\n  A2A_TASK_STATUS_CANCELED: \"canceled\",\n  A2A_TASK_STATUS_FAILED: \"failed\",\n  A2A_TASK_STATUS_REJECTED: \"rejected\",\n  A2A_TASK_STATUS_AUTH_REQUIRED: \"auth-required\",\n  A2A_TASK_STATUS_UNKNOWN: \"unknown\",\n\n  // ── Results ───────────────────────────────────────────────────────────────────\n  RESULT_APPROVED: \"result_approved\",\n  RESULT_REJECTED: \"result_rejected\",\n  RESULT_FEEDBACK: \"result_feedback\",\n\n  // ── Email ─────────────────────────────────────────────────────────────────────\n  EMAIL_RECEIVED: \"email_received\",\n  EMAIL_SENT: \"email_sent\",\n  EMAIL_OPENED: \"email_opened\",\n  EMAIL_CLICKED: \"email_clicked\",\n  EMAIL_BOUNCED: \"email_bounced\",\n  EMAIL_SPAM: \"email_spam\",\n\n  // ── System ────────────────────────────────────────────────────────────────────\n  AI_USAGE: \"ai_usage\",\n  SYSTEM_TRACE: \"system_trace\",\n  NOTIFICATION: \"notification\",\n  RESOURCE_PUBLISHED: \"resource_published\",\n\n  // ── Profiles ──────────────────────────────────────────────────────────────────\n  USER_SIGNUP: \"user_signup\",\n  USER_PROFILE_UPDATED: \"user_profile_updated\",\n  USER_PROFILE_DELETED: \"user_profile_deleted\",\n\n  // ── Integrations ──────────────────────────────────────────────────────────────\n  INTEGRATION_CREATED: \"integration_created\",\n  INTEGRATION_UPDATED: \"integration_updated\",\n  INTEGRATION_DELETED: \"integration_deleted\",\n\n  // ── Agent Retire ──────────────────────────────────────────────────────────────\n  AGENT_RETIRED: \"agent_retired\",\n\n  // ── Agent Drafts ──────────────────────────────────────────────────────────────\n  AGENT_DRAFT_CREATED: \"agent_draft_created\",\n  AGENT_DRAFT_UPDATED: \"agent_draft_updated\",\n  AGENT_DRAFT_DELETED: \"agent_draft_deleted\",\n  AGENT_DRAFT_PUBLISHED: \"agent_draft_published\",\n\n  // ── Notifications ─────────────────────────────────────────────────────────────\n  NOTIFICATION_CREATED: \"notification_created\",\n\n  // ── Benchmarks ────────────────────────────────────────────────────────────────\n  BENCHMARK_CREATED: \"benchmark_created\",\n  BENCHMARK_UPDATED: \"benchmark_updated\",\n  BENCHMARK_DELETED: \"benchmark_deleted\",\n  BENCHMARK_EXECUTION_CREATED: \"benchmark_execution_created\",\n  BENCHMARK_EXECUTION_STARTED: \"benchmark_execution_started\",\n  BENCHMARK_EXECUTION_UPDATED: \"benchmark_execution_updated\",\n  BENCHMARK_EXECUTION_DELETED: \"benchmark_execution_deleted\",\n} as const;\n\n// ── ActorType ──────────────────────────────────────────────────────────────────\n\nexport const ActorType = {\n  USER: \"user\",\n  AGENT: \"agent\",\n  SYSTEM: \"system\",\n} as const;\n\nexport type ActorType = (typeof ActorType)[keyof typeof ActorType];\n\n// ── Actor ──────────────────────────────────────────────────────────────────────\n\nexport const Actor = z.object({\n  id: z.string().min(1).describe(\"Actor identifier\"),\n  type: z.enum(Object.values(ActorType) as [string, ...string[]]).describe(\"Actor type\"),\n  name: z.string().min(1).describe(\"Actor display name\"),\n});\nexport type Actor = z.infer<typeof Actor>;\n\n// ── ActivityChange ─────────────────────────────────────────────────────────────\n\nexport const ActivityChange = z.object({\n  field: z.string().min(1).describe(\"Changed field name\"),\n  old_value: z.unknown().optional().describe(\"Value before the change\"),\n  new_value: z.unknown().optional().describe(\"Value after the change\"),\n});\nexport type ActivityChange = z.infer<typeof ActivityChange>;\n\n// ── Response DTO — Activity ────────────────────────────────────────────────────\n\nexport const Activity = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  board_id: z.string().min(1).optional().describe(\"Parent board ID\"),\n  card_id: z.string().min(1).optional().describe(\"Related card ID\"),\n  agent_id: z.string().min(1).optional().describe(\"Related agent ID\"),\n  app_id: z.string().min(1).optional().describe(\"Related app ID\"),\n  notification_id: z.string().min(1).optional().describe(\"Related notification ID\"),\n  type: z\n    .enum(Object.values(ActivityType) as [string, ...string[]])\n    .describe(\"Activity event type\"),\n  description: z.string().min(1).describe(\"Human-readable activity description\"),\n  actor: Actor.partial().optional().describe(\"Actor who performed the action\"),\n  team_id: z.string().min(1).describe(\"Owning team ID\"),\n  changes: z.array(ActivityChange.partial()).optional().describe(\"List of field-level changes\"),\n  created_by_session_id: z.string().optional().describe(\"Session that created this activity\"),\n  metadata: z.record(z.string(), z.unknown()).optional().describe(\"Arbitrary additional metadata\"),\n  user_id: z.string().optional().describe(\"User ID\"),\n  marked_for_display: z.boolean().optional().describe(\"Whether to show in UI feed\"),\n  created_at: z.date().describe(\"Creation timestamp\"),\n  // ── Computed embed fields — present only when ?embed= is requested ──────────\n  /** NOT stored. Resolved inline by the repo aggregation pipeline when ?embed=board. */\n  board: Board.partial().optional().describe(\"Embedded board — present only when ?embed=board\"),\n  /** NOT stored. Resolved inline by the repo aggregation pipeline when ?embed=card. */\n  card: Card.partial().optional().describe(\"Embedded card — present only when ?embed=card\"),\n});\n\nexport type Activity = z.infer<typeof Activity>;\n\n// ── Input DTOs ─────────────────────────────────────────────────────────────────\n\n// actor is already optional in Activity — no .extend() needed\nexport const ActivityCreate = Activity.omit({\n  id: true,\n  created_at: true,\n  // embed fields — computed by the repo, never sent by the client\n  board: true,\n  card: true,\n});\n\nexport type ActivityCreate = z.infer<typeof ActivityCreate>;\n","// ── Notification Types ─────────────────────────────────────────────────────────\n//\n// Domain types and API contracts for notifications.\n// Notifications are created internally when users are assigned to cards,\n// mentioned, or when board changes occur.\n//\n// read/email_sent default to false on create.\n// read_at is set when read transitions to true.\n\nimport { z } from \"zod\";\nimport { Card } from \"./card.type\";\n\n// ── NotificationType ───────────────────────────────────────────────────────────\n\nexport const NotificationType = {\n  CARD_ASSIGNED: \"card_assigned\",\n  BOARD_CHANGE: \"board_change\",\n  MENTION: \"mention\",\n} as const;\n\nexport type NotificationType = (typeof NotificationType)[keyof typeof NotificationType];\n\n// ── Notification ───────────────────────────────────────────────────────────────\n\nexport const Notification = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  user_id: z.string().min(1).describe(\"ID of the user who receives the notification\"),\n  type: z\n    .enum(Object.values(NotificationType) as [string, ...string[]])\n    .describe(\"Notification type: card_assigned | board_change | mention\"),\n  title: z.string().min(1).describe(\"Short notification title\"),\n  message: z.string().min(1).describe(\"Full notification message\"),\n  read: z.boolean().describe(\"Whether the notification has been read\"),\n  read_at: z.coerce\n    .date()\n    .nullable()\n    .optional()\n    .describe(\"Timestamp when the notification was read\"),\n  card_id: z.string().optional().describe(\"Related card ID, if applicable\"),\n  board_id: z.string().optional().describe(\"Related board ID, if applicable\"),\n  team_id: z.string().min(1).describe(\"Owning team ID\"),\n  team_name: z.string().optional().describe(\"Team display name\"),\n  email_sent: z.boolean().describe(\"Whether an email was sent for this notification\"),\n  created_at: z.coerce.date().describe(\"Creation timestamp\"),\n  updated_at: z.coerce.date().describe(\"Last update timestamp\"),\n  // ── Computed embed fields — present only when ?embed= is requested ──────────\n  /** NOT stored. Resolved inline by the repo aggregation pipeline when ?embed=card. */\n  card: Card.partial().optional().describe(\"Embedded card — present only when ?embed=card\"),\n});\n\nexport type Notification = z.infer<typeof Notification>;\n\n// ── NotificationCreate ─────────────────────────────────────────────────────────\n\nexport const NotificationCreate = Notification.omit({\n  id: true,\n  created_at: true,\n  updated_at: true,\n  // embed field — computed by the repo, never sent by the client\n  card: true,\n}).extend({\n  read: z.boolean().optional().default(false),\n  email_sent: z.boolean().optional().default(false),\n  read_at: z.coerce.date().nullable().optional(),\n});\n\nexport type NotificationCreate = z.infer<typeof NotificationCreate>;\n\n// ── NotificationUpdate ─────────────────────────────────────────────────────────\n// Only read state can be updated after creation.\n\nexport const NotificationUpdate = z.object({\n  read: z.boolean().optional().describe(\"Mark notification as read/unread\"),\n  read_at: z.coerce\n    .date()\n    .nullable()\n    .optional()\n    .describe(\"Timestamp when the notification was read\"),\n});\n\nexport type NotificationUpdate = z.infer<typeof NotificationUpdate>;\n\n// ── MarkAllReadBody ────────────────────────────────────────────────────────────\n\nexport const MarkAllReadBody = z.object({\n  user_id: z\n    .string()\n    .min(1)\n    .describe(\"User ID — marks all unread notifications for this user as read\"),\n});\n\nexport type MarkAllReadBody = z.infer<typeof MarkAllReadBody>;\n","// ── Agent Draft Types ──────────────────────────────────────────────────────────\n//\n// Domain types and API contracts for agent drafts (/v2/agents/drafts).\n// Collection: agent_drafts — independent from the live agents collection.\n// No Mongoose, no DB details. Those live in agent-draft.model.ts.\n\nimport { z } from \"zod\";\nimport { AgentKind, AgentExample, AgentResource } from \"./agent.type\";\n\n// ── Enums ──────────────────────────────────────────────────────────────────────\n\nexport const AgentDraftStatus = {\n  BACKLOG: \"backlog\",\n  TODO: \"todo\",\n  DOING: \"doing\",\n  BLOCKED: \"blocked\",\n  DONE: \"done\",\n} as const;\n\nexport type AgentDraftStatus = (typeof AgentDraftStatus)[keyof typeof AgentDraftStatus];\n\nexport const AgentDraftPriority = {\n  LOW: \"low\",\n  MEDIUM: \"medium\",\n  HIGH: \"high\",\n  CRITICAL: \"critical\",\n} as const;\n\nexport type AgentDraftPriority = (typeof AgentDraftPriority)[keyof typeof AgentDraftPriority];\n\n// ── Response DTO ───────────────────────────────────────────────────────────────\n\nexport const AgentDraft = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  name: z.string().min(1).max(100).describe(\"Draft agent display name\"),\n  description: z.string().min(1).optional().describe(\"Agent purpose and capabilities\"),\n  status: z\n    .enum(Object.values(AgentDraftStatus) as [string, ...string[]])\n    .describe(\"Design workflow status\"),\n  vendor: z.string().min(1).describe(\"Target AI vendor (e.g. openai, anthropic, google)\"),\n  priority: z\n    .enum(Object.values(AgentDraftPriority) as [string, ...string[]])\n    .describe(\"Build priority\"),\n  team_id: z.string().min(1).describe(\"Owning team ID\"),\n  created_by: z.string().min(1).describe(\"Creator user ID\"),\n  created_at: z.coerce.date().describe(\"Creation timestamp\"),\n  updated_at: z.coerce.date().describe(\"Last update timestamp\"),\n});\n\nexport type AgentDraft = z.infer<typeof AgentDraft>;\n\n// ── Create DTO ─────────────────────────────────────────────────────────────────\n\nexport const AgentDraftCreate = AgentDraft.omit({\n  id: true,\n  created_at: true,\n  updated_at: true,\n}).extend({\n  status: z\n    .enum(Object.values(AgentDraftStatus) as [string, ...string[]])\n    .optional()\n    .default(AgentDraftStatus.BACKLOG),\n  priority: z\n    .enum(Object.values(AgentDraftPriority) as [string, ...string[]])\n    .optional()\n    .default(AgentDraftPriority.MEDIUM),\n});\n\nexport type AgentDraftCreate = z.infer<typeof AgentDraftCreate>;\n\n// ── Update DTO ─────────────────────────────────────────────────────────────────\n// Immutable after creation: team_id, created_by\n// status and priority are re-declared without .default() so Zod does not inject\n// defaults for absent fields on PATCH, which would overwrite the stored values.\n\nexport const AgentDraftUpdate = AgentDraftCreate.omit({\n  team_id: true,\n  created_by: true,\n})\n  .partial()\n  .extend({\n    status: z.enum(Object.values(AgentDraftStatus) as [string, ...string[]]).optional(),\n    priority: z.enum(Object.values(AgentDraftPriority) as [string, ...string[]]).optional(),\n  });\n\nexport type AgentDraftUpdate = z.infer<typeof AgentDraftUpdate>;\n\n// ── Publish body ───────────────────────────────────────────────────────────────\n// Fields that Agent requires but AgentDraft doesn't carry.\n// Draft provides: name, description, team_id, created_by.\n// Caller provides: type, owner_id, and any optional Agent fields.\n\nexport const AgentDraftPublishBody = z.object({\n  type: z.enum(Object.values(AgentKind) as [string, ...string[]]).describe(\"Agent framework kind\"),\n  owner_id: z.string().min(1).describe(\"Owner user ID for the published agent\"),\n  // Optional Agent fields — passed through to AgentCreate\n  alias: z.string().optional().describe(\"URL-safe slug (auto-generated from name if omitted)\"),\n  monthly_budget: z.number().min(0).optional().describe(\"Monthly budget limit\"),\n  roles: z.array(z.string()).optional().describe(\"Agent roles\"),\n  integrations: z.array(z.string()).optional().describe(\"Enabled integration IDs\"),\n  examples: z.array(AgentExample).optional().describe(\"Input/output examples\"),\n  resources: z.array(AgentResource).optional().describe(\"Linked knowledge resources\"),\n  config: z.record(z.string(), z.unknown()).optional().describe(\"Arbitrary agent configuration\"),\n});\n\nexport type AgentDraftPublishBody = z.infer<typeof AgentDraftPublishBody>;\n","// ── Position Types ─────────────────────────────────────────────────────────────\n//\n// Domain types and API contracts — what clients send and receive.\n// No Mongoose, no DB details. Those live in position.model.ts.\n\nimport { z } from \"zod\";\n\n// ── PositionStatus ─────────────────────────────────────────────────────────────\n\nexport const PositionStatus = {\n  ACTIVE: \"active\",\n  INACTIVE: \"inactive\",\n  DRAFT: \"draft\",\n} as const;\n\nexport type PositionStatus = (typeof PositionStatus)[keyof typeof PositionStatus];\n\n// ── Response DTO ───────────────────────────────────────────────────────────────\n\nexport const Position = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  title: z.string().min(1).describe(\"Position title\"),\n  job_description: z.string().describe(\"Full job description text\"),\n  team_id: z.string().min(1).describe(\"Owning team ID\"),\n  created_by: z.string().min(1).describe(\"Creator user ID\"),\n  ai_skills: z.array(z.string()).optional().describe(\"Required AI skill names\"),\n  tools_to_integrate: z\n    .array(z.string())\n    .optional()\n    .describe(\"Tools to integrate for this position\"),\n  monthly_budget: z.number().optional().describe(\"Monthly budget allocation\"),\n  status: z\n    .enum(Object.values(PositionStatus) as [string, ...string[]])\n    .optional()\n    .describe(\"Position lifecycle status\"),\n  created_at: z.coerce.date().describe(\"Creation timestamp\"),\n  updated_at: z.coerce.date().describe(\"Last update timestamp\"),\n});\n\nexport type Position = z.infer<typeof Position>;\n\n// ── Create DTO ─────────────────────────────────────────────────────────────────\n\nexport const PositionCreate = Position.omit({\n  id: true,\n  created_at: true,\n  updated_at: true,\n}).extend({\n  ai_skills: z.array(z.string()).default([]),\n  tools_to_integrate: z.array(z.string()).default([]),\n  monthly_budget: z.number().default(0),\n});\n\nexport type PositionCreate = z.infer<typeof PositionCreate>;\n\n// ── Update DTO ─────────────────────────────────────────────────────────────────\n// `ai_skills`, `tools_to_integrate`, and `monthly_budget` are re-declared without\n// .default() so Zod does not inject defaults when these fields are absent from\n// a PATCH body — preserving true partial-update semantics.\n\nexport const PositionUpdate = PositionCreate.omit({\n  team_id: true,\n  created_by: true,\n})\n  .partial()\n  .extend({\n    ai_skills: z.array(z.string()).optional(),\n    tools_to_integrate: z.array(z.string()).optional(),\n    monthly_budget: z.number().optional(),\n  });\n\nexport type PositionUpdate = z.infer<typeof PositionUpdate>;\n","// ── Resource DTOs ──────────────────────────────────────────────────────────────\n//\n// API contracts — what clients send (ResourceCreate/ResourceUpdate) and receive (Resource).\n// No Mongoose, no DB details. Those live in resource.model.ts.\n\nimport { z } from \"zod\";\n\n// ── ResourceStatus ─────────────────────────────────────────────────────────────\n\nexport const ResourceStatus = {\n  DRAFT: \"draft\",\n  INDEXING: \"indexing\",\n  INDEXING_ERROR: \"indexing_error\",\n  PUBLISHED: \"published\",\n  ARCHIVED: \"archived\",\n} as const;\n\nexport type ResourceStatus = (typeof ResourceStatus)[keyof typeof ResourceStatus];\n\n// ── EmbeddingProvider ──────────────────────────────────────────────────────────\n\nexport const EmbeddingProvider = {\n  OPENAI: \"openai\",\n  JINA: \"jina\",\n} as const;\n\nexport type EmbeddingProvider = (typeof EmbeddingProvider)[keyof typeof EmbeddingProvider];\n\n// ── DocumentParser ─────────────────────────────────────────────────────────────\n\nexport const DocumentParser = {\n  SEMANTIC_MARKDOWN: \"semantic-markdown\",\n  FAQ_ENRICHED: \"faq-enriched\",\n  ATA_CODES: \"ata-codes\",\n} as const;\n\nexport type DocumentParser = (typeof DocumentParser)[keyof typeof DocumentParser];\n\n// ── Resource ───────────────────────────────────────────────────────────────────\n\nexport const Resource = z.object({\n  id: z.string().describe(\"Unique resource identifier\"),\n  title: z.string().min(1).describe(\"Resource title\"),\n  description: z.string().describe(\"Resource description\"),\n  version: z.number().int().min(0).describe(\"Resource version number\"),\n  status: z\n    .enum(Object.values(ResourceStatus) as [string, ...string[]])\n    .describe(\"Resource lifecycle status\"),\n  team_id: z.string().min(1).describe(\"Owning team ID\"),\n  created_by: z.string().min(1).describe(\"Creator user ID\"),\n  last_edited_by: z.string().optional().describe(\"Last editor user ID\"),\n  published_at: z.coerce.date().optional().describe(\"Timestamp when resource was published\"),\n  draft_content: z.string().describe(\"Draft content text\"),\n  published_content: z.string().describe(\"Published content text\"),\n  vector_db_index_name: z.string().optional().describe(\"Vector database index name\"),\n  language: z.string().describe(\"Content language code\"),\n  embedding_provider: z\n    .enum(Object.values(EmbeddingProvider) as [string, ...string[]])\n    .optional()\n    .describe(\"Embedding provider for vector indexing\"),\n  document_parser: z\n    .enum(Object.values(DocumentParser) as [string, ...string[]])\n    .optional()\n    .describe(\"Document parser strategy\"),\n  created_at: z.coerce.date().describe(\"Creation timestamp\"),\n  updated_at: z.coerce.date().describe(\"Last update timestamp\"),\n});\n\nexport type Resource = z.infer<typeof Resource>;\n\n// ── ResourceCreate ─────────────────────────────────────────────────────────────\n\nexport const ResourceCreate = Resource.omit({\n  id: true,\n  published_at: true, // set by service when status transitions to \"published\"\n  created_at: true,\n  updated_at: true,\n}).extend({\n  status: z\n    .enum(Object.values(ResourceStatus) as [string, ...string[]])\n    .default(ResourceStatus.DRAFT),\n  version: z.number().int().min(0).default(0),\n  language: z.string().default(\"en\"),\n  draft_content: z.string().default(\"\"),\n  published_content: z.string().default(\"\"),\n});\n\nexport type ResourceCreate = z.infer<typeof ResourceCreate>;\n\n// ── ResourceUpdate ─────────────────────────────────────────────────────────────\n// team_id and created_by are immutable after creation.\n// published_at is managed by the service — never user-supplied.\n// Fields that carry .default() in ResourceCreate are re-declared without defaults\n// so Zod does not inject values when they are absent from a PATCH body —\n// preserving true partial-update semantics.\n\nexport const ResourceUpdate = ResourceCreate.omit({\n  team_id: true,\n  created_by: true,\n})\n  .partial()\n  .extend({\n    status: z.enum(Object.values(ResourceStatus) as [string, ...string[]]).optional(),\n    version: z.number().int().min(0).optional(),\n    language: z.string().optional(),\n    draft_content: z.string().optional(),\n    published_content: z.string().optional(),\n  });\n\nexport type ResourceUpdate = z.infer<typeof ResourceUpdate>;\n"]}