@badger_badger/badger_hq 1.5.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common.ts","../src/enums.ts","../src/zod/database.ts","../src/zod/task-criteria.ts","../src/zod/mission.ts","../src/zod/task.ts","../src/zod/assignment.ts","../src/zod/hours-log.ts","../src/zod/matching.ts","../src/zod/scout-profile.ts","../src/zod/analyst-profile.ts","../src/zod/org-settings.ts","../src/zod/scout-rating.ts","../src/zod/assignee-load.ts","../src/zod/source.ts","../src/zod/source-import.ts","../src/zod/data-item.ts","../src/zod/scraper.ts","../src/zod/scraper-metric.ts","../src/zod/deployment.ts","../src/zod/audit-log.ts","../src/zod/agent-session.ts","../src/zod/agent.ts","../src/zod/internal.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\n// ---------------------------------------------------------------------------\n// Ids\n// ---------------------------------------------------------------------------\n\n/** 24-char hex string: the wire representation of a Mongo ObjectId. */\nexport const ObjectIdString = z\n .string()\n .regex(/^[0-9a-fA-F]{24}$/, 'Expected a 24-character hex ObjectId string');\nexport type ObjectIdString = z.infer<typeof ObjectIdString>;\n\n/** Clerk organization id (`org_…`). Stored as a plain string, never an ObjectId. */\nexport const ClerkOrgId = z.string().regex(/^org_[A-Za-z0-9]+$/, 'Expected a Clerk org id (org_…)');\nexport type ClerkOrgId = z.infer<typeof ClerkOrgId>;\n\n/** Clerk user id (`user_…`). Stored as a plain string, never an ObjectId. */\nexport const ClerkUserId = z.string().regex(/^user_[A-Za-z0-9]+$/, 'Expected a Clerk user id (user_…)');\nexport type ClerkUserId = z.infer<typeof ClerkUserId>;\n\n/**\n * Id of the logical Database that holds an org's collected data (`sources`,\n * `dataItems`). Opaque string: today it equals the Clerk org id because every\n * org's data lives in the shared service database, partitioned by\n * `(databaseId, orgId)`; when data is split into physical databases it becomes\n * the id of that Database record.\n */\nexport const DatabaseId = z.string().min(1);\nexport type DatabaseId = z.infer<typeof DatabaseId>;\n\n// ---------------------------------------------------------------------------\n// Shared fragments\n// ---------------------------------------------------------------------------\n\n/** `createdAt` / `updatedAt`, set by Mongoose `timestamps: true`. */\nexport const TimestampsSchema = z.object({\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\nexport type Timestamps = z.infer<typeof TimestampsSchema>;\n\n/** Optional `deletedAt` marker for soft-deleted documents. */\nexport const SoftDeleteSchema = z.object({\n deletedAt: z.coerce.date().optional(),\n});\nexport type SoftDelete = z.infer<typeof SoftDeleteSchema>;\n\n/** Keys that are never accepted on Create / Update inputs. */\nexport const SERVER_MANAGED_KEYS = ['_id', 'orgId', 'databaseId', 'createdAt', 'updatedAt', 'deletedAt'] as const;\n\n/** ISO 639-1 language code: two lowercase letters. */\nexport const LanguageCode = z.string().regex(/^[a-z]{2}$/, 'Expected an ISO 639-1 two-letter lowercase code');\nexport type LanguageCode = z.infer<typeof LanguageCode>;\n\n/** `HH:mm` 24h clock string. */\nexport const HHmm = z.string().regex(/^([01]\\d|2[0-3]):[0-5]\\d$/, 'Expected HH:mm');\nexport type HHmm = z.infer<typeof HHmm>;\n\n// ---------------------------------------------------------------------------\n// Pagination\n// ---------------------------------------------------------------------------\n\nexport const PaginationQuerySchema = z.object({\n cursor: z.string().optional(),\n limit: z.coerce.number().int().min(1).max(100).default(25),\n});\n/** Input shape (before defaults). */\nexport type PaginationQueryInput = z.input<typeof PaginationQuerySchema>;\n/** Parsed shape (after defaults). */\nexport type PaginationQuery = z.infer<typeof PaginationQuerySchema>;\n\nexport const PaginatedSchema = <T extends z.ZodTypeAny>(item: T) =>\n z.object({\n items: z.array(item),\n nextCursor: z.string().nullable(),\n });\nexport type Paginated<T> = { items: T[]; nextCursor: string | null };\n\n// ---------------------------------------------------------------------------\n// Errors\n// ---------------------------------------------------------------------------\n\nexport const ApiErrorSchema = z.object({\n error: z.object({\n code: z.string(),\n message: z.string(),\n details: z.unknown().optional(),\n }),\n});\nexport type ApiError = z.infer<typeof ApiErrorSchema>;\n","import { z } from 'zod';\n\n/**\n * Every enum is defined exactly once here. The `*_VALUES` const arrays are\n * used by the Mongoose schemas for `enum:` validation, so Zod and Mongoose\n * can never drift.\n */\n\nexport const PLATFORM_VALUES = [\n 'telegram',\n 'facebook',\n 'x',\n 'tiktok',\n 'instagram',\n 'youtube',\n 'whatsapp',\n 'reddit',\n 'discord',\n 'linkedin',\n 'threads',\n 'vk',\n 'snapchat',\n 'web',\n] as const;\nexport const Platform = z.enum(PLATFORM_VALUES);\nexport type Platform = z.infer<typeof Platform>;\n\nexport const MISSION_PRIORITY_VALUES = ['low', 'medium', 'high', 'critical'] as const;\nexport const MissionPriority = z.enum(MISSION_PRIORITY_VALUES);\nexport type MissionPriority = z.infer<typeof MissionPriority>;\n\nexport const MISSION_STATUS_VALUES = ['draft', 'active', 'paused', 'closed'] as const;\nexport const MissionStatus = z.enum(MISSION_STATUS_VALUES);\nexport type MissionStatus = z.infer<typeof MissionStatus>;\n\nexport const TASK_KIND_VALUES = ['source_discovery', 'monitor'] as const;\nexport const TaskKind = z.enum(TASK_KIND_VALUES);\nexport type TaskKind = z.infer<typeof TaskKind>;\n\nexport const TASK_ORIGIN_VALUES = ['auto', 'manual'] as const;\nexport const TaskOrigin = z.enum(TASK_ORIGIN_VALUES);\nexport type TaskOrigin = z.infer<typeof TaskOrigin>;\n\nexport const TASK_STATUS_VALUES = [\n 'draft',\n 'pending_approval',\n 'approved',\n 'in_progress',\n 'paused',\n 'done',\n] as const;\nexport const TaskStatus = z.enum(TASK_STATUS_VALUES);\nexport type TaskStatus = z.infer<typeof TaskStatus>;\n\nexport const REGION_MODE_VALUES = ['must', 'preferred'] as const;\nexport const RegionMode = z.enum(REGION_MODE_VALUES);\nexport type RegionMode = z.infer<typeof RegionMode>;\n\nexport const ASSIGNEE_TYPE_VALUES = ['scout', 'analyst'] as const;\nexport const AssigneeType = z.enum(ASSIGNEE_TYPE_VALUES);\nexport type AssigneeType = z.infer<typeof AssigneeType>;\n\nexport const ASSIGNMENT_STATUS_VALUES = ['active', 'completed', 'revoked'] as const;\nexport const AssignmentStatus = z.enum(ASSIGNMENT_STATUS_VALUES);\nexport type AssignmentStatus = z.infer<typeof AssignmentStatus>;\n\nexport const ASSIGNMENT_SOURCE_VALUES = ['engine', 'manual'] as const;\nexport const AssignmentSource = z.enum(ASSIGNMENT_SOURCE_VALUES);\nexport type AssignmentSource = z.infer<typeof AssignmentSource>;\n\nexport const VETTING_STATUS_VALUES = ['pending', 'approved', 'suspended'] as const;\nexport const VettingStatus = z.enum(VETTING_STATUS_VALUES);\nexport type VettingStatus = z.infer<typeof VettingStatus>;\n\n/** `disabled` = the Clerk user is locked; never a candidate. */\nexport const SCOUT_STATUS_VALUES = ['active', 'disabled'] as const;\nexport const ScoutStatus = z.enum(SCOUT_STATUS_VALUES);\nexport type ScoutStatus = z.infer<typeof ScoutStatus>;\n\n/** Who left a scout rating: an org member (per assignment) or a System user (general). */\nexport const RATER_TYPE_VALUES = ['org', 'system'] as const;\nexport const RaterType = z.enum(RATER_TYPE_VALUES);\nexport type RaterType = z.infer<typeof RaterType>;\n\nexport const SOURCE_TYPE_VALUES = ['channel', 'group', 'profile', 'forum', 'site'] as const;\nexport const SourceType = z.enum(SOURCE_TYPE_VALUES);\nexport type SourceType = z.infer<typeof SourceType>;\n\nexport const SOURCE_ACCESS_VALUES = ['public', 'gated'] as const;\nexport const SourceAccess = z.enum(SOURCE_ACCESS_VALUES);\nexport type SourceAccess = z.infer<typeof SourceAccess>;\n\nexport const SOURCE_ROUTE_VALUES = ['scraper', 'monitor', 'waiting_for_scraper'] as const;\nexport const SourceRoute = z.enum(SOURCE_ROUTE_VALUES);\nexport type SourceRoute = z.infer<typeof SourceRoute>;\n\n/** `access_problem` = the last monitor visit saw a login wall / no access; waits for analyst review. */\nexport const SOURCE_STATUS_VALUES = ['active', 'paused', 'closed', 'access_problem'] as const;\nexport const SourceStatus = z.enum(SOURCE_STATUS_VALUES);\nexport type SourceStatus = z.infer<typeof SourceStatus>;\n\nexport const DISCOVERED_BY_TYPE_VALUES = ['scout', 'analyst', 'agent', 'client', 'import'] as const;\nexport const DiscoveredByType = z.enum(DISCOVERED_BY_TYPE_VALUES);\nexport type DiscoveredByType = z.infer<typeof DiscoveredByType>;\n\nexport const SOURCE_IMPORT_KIND_VALUES = ['create', 'update'] as const;\nexport const SourceImportKind = z.enum(SOURCE_IMPORT_KIND_VALUES);\nexport type SourceImportKind = z.infer<typeof SourceImportKind>;\n\nexport const SOURCE_IMPORT_STATUS_VALUES = ['validating', 'ready', 'committing', 'done', 'failed'] as const;\nexport const SourceImportStatus = z.enum(SOURCE_IMPORT_STATUS_VALUES);\nexport type SourceImportStatus = z.infer<typeof SourceImportStatus>;\n\nexport const COLLECTOR_TYPE_VALUES = ['scraper', 'scout', 'analyst', 'agent'] as const;\nexport const CollectorType = z.enum(COLLECTOR_TYPE_VALUES);\nexport type CollectorType = z.infer<typeof CollectorType>;\n\nexport const SCRAPER_STATUS_VALUES = ['deploying', 'running', 'degraded', 'stopped', 'failed'] as const;\nexport const ScraperStatus = z.enum(SCRAPER_STATUS_VALUES);\nexport type ScraperStatus = z.infer<typeof ScraperStatus>;\n\nexport const DEPLOYMENT_KIND_VALUES = ['org_droplet', 'scraper'] as const;\nexport const DeploymentKind = z.enum(DEPLOYMENT_KIND_VALUES);\nexport type DeploymentKind = z.infer<typeof DeploymentKind>;\n\nexport const DEPLOYMENT_STATUS_VALUES = ['queued', 'running', 'succeeded', 'failed'] as const;\nexport const DeploymentStatus = z.enum(DEPLOYMENT_STATUS_VALUES);\nexport type DeploymentStatus = z.infer<typeof DeploymentStatus>;\n\nexport const DATABASE_STATUS_VALUES = ['provisioning', 'active', 'error'] as const;\nexport const DatabaseStatus = z.enum(DATABASE_STATUS_VALUES);\nexport type DatabaseStatus = z.infer<typeof DatabaseStatus>;\n\n/**\n * Logical collections that live inside an organization's Database (the data\n * the org collects). More kinds will be added over time.\n */\nexport const DATABASE_COLLECTION_VALUES = ['sources', 'dataItems'] as const;\nexport const DatabaseCollection = z.enum(DATABASE_COLLECTION_VALUES);\nexport type DatabaseCollection = z.infer<typeof DatabaseCollection>;\n\n// ---------------------------------------------------------------------------\n// Badger Agent runtime (agent-service)\n// ---------------------------------------------------------------------------\n\n/** A session works one assignment: discovery finds sources, monitor collects from them. */\nexport const AGENT_SESSION_MODE_VALUES = ['discovery', 'monitor'] as const;\nexport const AgentSessionMode = z.enum(AGENT_SESSION_MODE_VALUES);\nexport type AgentSessionMode = z.infer<typeof AgentSessionMode>;\n\nexport const AGENT_SESSION_STATUS_VALUES = ['active', 'paused', 'ended'] as const;\nexport const AgentSessionStatus = z.enum(AGENT_SESSION_STATUS_VALUES);\nexport type AgentSessionStatus = z.infer<typeof AgentSessionStatus>;\n\nexport const AGENT_MESSAGE_ROLE_VALUES = ['agent', 'person', 'system'] as const;\nexport const AgentMessageRole = z.enum(AGENT_MESSAGE_ROLE_VALUES);\nexport type AgentMessageRole = z.infer<typeof AgentMessageRole>;\n\nexport const AGENT_MESSAGE_KIND_VALUES = ['say', 'instruction', 'result', 'question', 'error'] as const;\nexport const AgentMessageKind = z.enum(AGENT_MESSAGE_KIND_VALUES);\nexport type AgentMessageKind = z.infer<typeof AgentMessageKind>;\n\nexport const AGENT_CARD_KIND_VALUES = [\n 'open_link',\n 'capture_prompt',\n 'source_result',\n 'item_result',\n 'quick_replies',\n 'hours_proposal',\n 'capture_thumb',\n] as const;\nexport const AgentCardKind = z.enum(AGENT_CARD_KIND_VALUES);\nexport type AgentCardKind = z.infer<typeof AgentCardKind>;\n\n/** What happened to a candidate source after the agent checked it (shown to the person). */\nexport const AGENT_SOURCE_OUTCOME_VALUES = [\n 'to_scraper',\n 'waiting_for_scraper',\n 'to_monitor',\n 'known',\n 'dropped',\n 'access_problem',\n] as const;\nexport const AgentSourceOutcome = z.enum(AGENT_SOURCE_OUTCOME_VALUES);\nexport type AgentSourceOutcome = z.infer<typeof AgentSourceOutcome>;\n\nexport const CAPTURE_STATUS_VALUES = ['uploaded', 'analyzing', 'analyzed', 'failed', 'expired'] as const;\nexport const CaptureStatus = z.enum(CAPTURE_STATUS_VALUES);\nexport type CaptureStatus = z.infer<typeof CaptureStatus>;\n\n/** Whether the read-only DOM text snapshot accompanied the screenshot. */\nexport const CAPTURE_DOM_STATUS_VALUES = ['ok', 'unavailable', 'truncated'] as const;\nexport const CaptureDomStatus = z.enum(CAPTURE_DOM_STATUS_VALUES);\nexport type CaptureDomStatus = z.infer<typeof CaptureDomStatus>;\n\nexport const LLM_CAPABILITY_VALUES = ['plan', 'vision_extract', 'judge', 'chat'] as const;\nexport const LlmCapability = z.enum(LLM_CAPABILITY_VALUES);\nexport type LlmCapability = z.infer<typeof LlmCapability>;\n\nexport const LLM_PROVIDER_VALUES = ['gemini', 'anthropic', 'openai'] as const;\nexport const LlmProvider = z.enum(LLM_PROVIDER_VALUES);\nexport type LlmProvider = z.infer<typeof LlmProvider>;\n\nexport const LLM_OUTCOME_VALUES = [\n 'ok',\n 'invalid_output',\n 'timeout',\n 'rate_limited',\n 'server_error',\n 'safety_block',\n 'budget_exceeded',\n 'breaker_open',\n 'auth_error',\n] as const;\nexport const LlmOutcome = z.enum(LLM_OUTCOME_VALUES);\nexport type LlmOutcome = z.infer<typeof LlmOutcome>;\n\n/** Result of `POST /internal/sources/intake` for one candidate. */\nexport const SOURCE_INTAKE_OUTCOME_VALUES = ['created', 'known', 'invalid'] as const;\nexport const SourceIntakeOutcome = z.enum(SOURCE_INTAKE_OUTCOME_VALUES);\nexport type SourceIntakeOutcome = z.infer<typeof SourceIntakeOutcome>;\n\n/** Mongo collection names, camelCase plurals. */\nexport const COLLECTIONS = {\n databases: 'databases',\n missions: 'missions',\n tasks: 'tasks',\n assignments: 'assignments',\n hoursLogs: 'hoursLogs',\n scoutProfiles: 'scoutProfiles',\n analystProfiles: 'analystProfiles',\n orgSettings: 'orgSettings',\n scoutRatings: 'scoutRatings',\n assigneeLoads: 'assigneeLoads',\n sources: 'sources',\n sourceImports: 'sourceImports',\n dataItems: 'dataItems',\n scrapers: 'scrapers',\n scraperMetrics: 'scraperMetrics',\n deployments: 'deployments',\n auditLogs: 'auditLogs',\n agentSessions: 'agentSessions',\n agentMessages: 'agentMessages',\n captures: 'captures',\n llmCalls: 'llmCalls',\n} as const;\nexport type CollectionName = (typeof COLLECTIONS)[keyof typeof COLLECTIONS];\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { DATABASE_COLLECTION_VALUES, DatabaseCollection, DatabaseStatus } from '../enums';\n\n/** MongoDB database-name rules: 1..63 chars, none of `/\\. \"$*<>:|?`. */\nexport const DatabaseName = z\n .string()\n .min(1)\n .max(63)\n .regex(/^[^/\\\\. \"$*<>:|?]+$/, 'Invalid MongoDB database name');\nexport type DatabaseName = z.infer<typeof DatabaseName>;\n\n/** A MongoDB connection string (`mongodb://` or `mongodb+srv://`). */\nexport const ConnectionString = z\n .string()\n .min(1)\n .regex(/^mongodb(\\+srv)?:\\/\\/\\S+$/, 'Expected a mongodb:// or mongodb+srv:// URI');\nexport type ConnectionString = z.infer<typeof ConnectionString>;\n\n/**\n * A physical per-organization data store. Reserved for the time when an org's\n * collected data (`sources`, `dataItems`, …) is split out of the shared service\n * database: it then holds the connection string of that Mongo database.\n *\n * Today no Database records exist: all orgs share the service database and\n * rows are partitioned by `databaseId` (= the org id) and `orgId`.\n */\nexport const DatabaseSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n /** Name of the Mongo database on the cluster. */\n name: DatabaseName,\n connectionString: ConnectionString,\n /** Logical collections available under this database. */\n collections: z.array(DatabaseCollection).default([...DATABASE_COLLECTION_VALUES]),\n status: DatabaseStatus.default('active'),\n createdBy: ClerkUserId,\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const DatabaseCreateSchema = DatabaseSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n createdBy: true,\n});\n\nexport const DatabaseUpdateSchema = DatabaseCreateSchema.partial();\n\nexport type Database = z.infer<typeof DatabaseSchema>;\nexport type DatabaseCreate = z.infer<typeof DatabaseCreateSchema>;\nexport type DatabaseCreateInput = z.input<typeof DatabaseCreateSchema>;\nexport type DatabaseUpdate = z.infer<typeof DatabaseUpdateSchema>;\n","import { z } from 'zod';\nimport { LanguageCode } from '../common';\nimport { Platform, RegionMode } from '../enums';\n\n/** Time window a task should be covered. `end` must be after `start`. */\nexport const CoverageWindowSchema = z\n .object({\n start: z.coerce.date(),\n end: z.coerce.date(),\n })\n .refine((w) => w.end.getTime() > w.start.getTime(), {\n message: 'coverageWindow.end must be after coverageWindow.start',\n path: ['end'],\n });\nexport type CoverageWindow = z.infer<typeof CoverageWindowSchema>;\n\n/** Drives scout/analyst matching. Embedded in Mission (as defaults) and Task. */\nexport const TaskCriteriaSchema = z.object({\n languages: z.array(LanguageCode),\n platforms: z.array(Platform),\n regions: z.array(z.string().min(1)),\n regionMode: RegionMode,\n profession: z.string().min(1).optional(),\n coverageWindow: CoverageWindowSchema.optional(),\n emergency: z.boolean().default(false),\n});\nexport type TaskCriteria = z.infer<typeof TaskCriteriaSchema>;\nexport type TaskCriteriaInput = z.input<typeof TaskCriteriaSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { MissionPriority, MissionStatus } from '../enums';\nimport { TaskCriteriaSchema } from './task-criteria';\n\n/** A Mission is a priority (PIR) in plain words. Top-level unit of work. */\nexport const MissionSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n title: z.string().min(1).max(200),\n description: z.string(),\n priority: MissionPriority,\n status: MissionStatus.default('draft'),\n /** Copied into auto-created tasks. */\n defaultCriteria: TaskCriteriaSchema,\n /** Seeds the discovery task. */\n keywords: z.array(z.string().min(1)).default([]),\n targetDate: z.coerce.date().optional(),\n createdBy: ClerkUserId,\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const MissionCreateSchema = MissionSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n createdBy: true,\n});\n\nexport const MissionUpdateSchema = MissionCreateSchema.partial();\n\nexport type Mission = z.infer<typeof MissionSchema>;\nexport type MissionCreate = z.infer<typeof MissionCreateSchema>;\nexport type MissionCreateInput = z.input<typeof MissionCreateSchema>;\nexport type MissionUpdate = z.infer<typeof MissionUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { TaskKind, TaskOrigin, TaskStatus } from '../enums';\nimport { TaskCriteriaSchema } from './task-criteria';\n\n/** A unit of work under a Mission; assigned to one scout or analyst. */\nexport const TaskSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n missionId: ObjectIdString,\n kind: TaskKind,\n /** `auto` = created together with the mission. */\n origin: TaskOrigin,\n title: z.string().min(1).max(200),\n description: z.string(),\n keywords: z.array(z.string().min(1)).default([]),\n searchQueries: z.array(z.string().min(1)).default([]),\n criteria: TaskCriteriaSchema,\n status: TaskStatus.default('draft'),\n approvedBy: ClerkUserId.optional(),\n approvedAt: z.coerce.date().optional(),\n /** Set only when an Admin or Analyst marks the task done. */\n doneBy: ClerkUserId.optional(),\n doneAt: z.coerce.date().optional(),\n /** +1 on every edit. */\n version: z.number().int().min(1).default(1),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const TaskCreateSchema = TaskSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n approvedBy: true,\n approvedAt: true,\n doneBy: true,\n doneAt: true,\n version: true,\n});\n\nexport const TaskUpdateSchema = TaskCreateSchema.partial();\n\nexport type Task = z.infer<typeof TaskSchema>;\nexport type TaskCreate = z.infer<typeof TaskCreateSchema>;\nexport type TaskCreateInput = z.input<typeof TaskCreateSchema>;\nexport type TaskUpdate = z.infer<typeof TaskUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { AssigneeType, AssignmentSource, AssignmentStatus } from '../enums';\n\n/**\n * A match: one Task -> one scout OR one analyst. A task may hold many active\n * assignments; a person may hold many, up to their `taskLimit`, but never\n * two active ones on the same task.\n */\nexport const AssignmentSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n taskId: ObjectIdString,\n assigneeType: AssigneeType,\n assigneeUserId: ClerkUserId,\n /** `completed` only when the task is marked done; `revoked` when taken off. */\n status: AssignmentStatus.default('active'),\n score: z.number().optional(),\n scoreBreakdown: z.record(z.string(), z.number()).optional(),\n source: AssignmentSource,\n assignedBy: ClerkUserId,\n activatedAt: z.coerce.date(),\n endedAt: z.coerce.date().optional(),\n /** Set with `status: 'revoked'`. */\n revokedBy: ClerkUserId.optional(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const AssignmentCreateSchema = AssignmentSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n assignedBy: true,\n activatedAt: true,\n endedAt: true,\n revokedBy: true,\n});\n\nexport const AssignmentUpdateSchema = AssignmentCreateSchema.partial();\n\nexport type Assignment = z.infer<typeof AssignmentSchema>;\nexport type AssignmentCreate = z.infer<typeof AssignmentCreateSchema>;\nexport type AssignmentCreateInput = z.input<typeof AssignmentCreateSchema>;\nexport type AssignmentUpdate = z.infer<typeof AssignmentUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\n\n/** Scout hours, logged from the Chrome extension. */\nexport const HoursLogSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n taskId: ObjectIdString,\n scoutUserId: ClerkUserId,\n minutes: z.number().int().positive(),\n note: z.string(),\n date: z.coerce.date(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const HoursLogCreateSchema = HoursLogSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n scoutUserId: true,\n});\n\nexport const HoursLogUpdateSchema = HoursLogCreateSchema.partial();\n\nexport type HoursLog = z.infer<typeof HoursLogSchema>;\nexport type HoursLogCreate = z.infer<typeof HoursLogCreateSchema>;\nexport type HoursLogUpdate = z.infer<typeof HoursLogUpdateSchema>;\n","import { z } from 'zod';\nimport { HHmm, LanguageCode } from '../common';\nimport { Platform } from '../enums';\n\n/**\n * Fragments shared by `ScoutProfile` and `AnalystProfile`: the data the\n * matching engine reads. Identity lives in Clerk; these hold skills only.\n */\n\nexport const AvailabilityWindowSchema = z.object({\n /** 0 = Sunday … 6 = Saturday, in the profile's `timezone`. */\n day: z.union([\n z.literal(0),\n z.literal(1),\n z.literal(2),\n z.literal(3),\n z.literal(4),\n z.literal(5),\n z.literal(6),\n ]),\n start: HHmm,\n end: HHmm,\n});\nexport type AvailabilityWindow = z.infer<typeof AvailabilityWindowSchema>;\n\n/** Privileged access to a platform (closed groups, aged accounts…): an edge in matching. */\nexport const SpecialAccessSchema = z.object({\n platform: Platform,\n note: z.string().min(1).max(500),\n});\nexport type SpecialAccess = z.infer<typeof SpecialAccessSchema>;\n\nexport const PlatformAccessSchema = z.object({\n /** `true` = can work on every platform; `platforms` is then ignored. */\n all: z.boolean().default(false),\n platforms: z.array(Platform).default([]),\n special: z.array(SpecialAccessSchema).default([]),\n});\nexport type PlatformAccess = z.infer<typeof PlatformAccessSchema>;\nexport type PlatformAccessInput = z.input<typeof PlatformAccessSchema>;\n\n/** IANA time zone name, e.g. `Asia/Jerusalem`. */\nexport const TimeZone = z.string().min(1).max(64);\n\n/** Fields every matchable person has. */\nexport const MatchingFieldsSchema = z.object({\n languages: z.array(LanguageCode).default([]),\n /** ISO 3166 codes or named regions. */\n regions: z.array(z.string().min(1)).default([]),\n timezone: TimeZone,\n availability: z.array(AvailabilityWindowSchema).default([]),\n platformAccess: PlatformAccessSchema.default({}),\n profession: z.string().min(1).max(120).optional(),\n /** Max active assignments. Absent = the scope's default. */\n taskLimit: z.number().int().positive().max(100).optional(),\n});\nexport type MatchingFields = z.infer<typeof MatchingFieldsSchema>;\n","import { z } from 'zod';\nimport { ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { ScoutStatus, TaskKind, VettingStatus } from '../enums';\nimport { MatchingFieldsSchema } from './matching';\n\n/** Global default for `taskLimit` when a scout profile does not set one. */\nexport const DEFAULT_SCOUT_TASK_LIMIT = 3;\n\n/** Lower-cased e-mail, mirrored from the Clerk primary address. */\nexport const Email = z.string().trim().toLowerCase().email().max(254);\n\n/** System's note used by matching. `updatedBy` / `updatedAt` are set by the server. */\nexport const SystemRecommendationSchema = z.object({\n /** Task kinds this scout is recommended for. */\n taskKinds: z.array(TaskKind).default([]),\n /** Free tags, e.g. `arabic-slang`, `telegram-closed-groups`. */\n tags: z.array(z.string().min(1).max(60)).default([]),\n note: z.string().max(2000).default(''),\n updatedBy: ClerkUserId,\n updatedAt: z.coerce.date(),\n});\nexport type SystemRecommendation = z.infer<typeof SystemRecommendationSchema>;\n\n/** What a System user sends; the server stamps `updatedBy` / `updatedAt`. */\nexport const SystemRecommendationInputSchema = SystemRecommendationSchema.omit({\n updatedBy: true,\n updatedAt: true,\n});\nexport type SystemRecommendationInput = z.input<typeof SystemRecommendationInputSchema>;\n\n/** Denormalized from `scoutRatings`; the global average across all orgs. */\nexport const RatingSummarySchema = z.object({\n avg: z.number().min(0).max(5).nullable().default(null),\n count: z.number().int().min(0).default(0),\n});\nexport type RatingSummary = z.infer<typeof RatingSummarySchema>;\n\n/**\n * Domain profile for a scout. Global (not org-scoped): scouts are a shared\n * pool and can be assigned to tasks in any organization. Identity lives in\n * Clerk; `userId` is the Clerk user id and `email` mirrors its primary email.\n */\nexport const ScoutProfileSchema = z\n .object({\n _id: ObjectIdString,\n userId: ClerkUserId,\n /** System-only in API responses. */\n email: Email,\n /**\n * Legal / real name. System- and self-only: never shown to organizations,\n * which only see `displayName`. Mirrored to the Clerk first/last name.\n * Optional for profiles created before the field existed.\n */\n fullName: z.string().min(1).max(120).optional(),\n /** Public alias organizations see; may differ from `fullName` for privacy. */\n displayName: z.string().min(1).max(120),\n /** `disabled` = Clerk user locked; never a candidate. */\n status: ScoutStatus.default('active'),\n /** Only `approved` scouts are candidates. */\n vettingStatus: VettingStatus.default('pending'),\n /** System-only. */\n hourlyRateUsd: z.number().nonnegative().optional(),\n systemRecommendation: SystemRecommendationSchema.optional(),\n ratingSummary: RatingSummarySchema.default({}),\n })\n .merge(MatchingFieldsSchema)\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\n/** Fields a System user supplies when creating a scout (identity + profile). */\nexport const ScoutProfileCreateSchema = ScoutProfileSchema.omit({\n _id: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n userId: true,\n status: true,\n ratingSummary: true,\n systemRecommendation: true,\n}).extend({\n /** Required when creating; the Clerk user name is derived from it. */\n fullName: z.string().min(1).max(120),\n systemRecommendation: SystemRecommendationInputSchema.optional(),\n});\n\nexport const ScoutProfileUpdateSchema = ScoutProfileCreateSchema.partial();\n\n/** What a scout may change about themselves (`PATCH /me/scout`). */\nexport const ScoutSelfUpdateSchema = ScoutProfileSchema.pick({\n fullName: true,\n displayName: true,\n timezone: true,\n availability: true,\n}).partial();\n\nexport type ScoutProfile = z.infer<typeof ScoutProfileSchema>;\nexport type ScoutProfileCreate = z.infer<typeof ScoutProfileCreateSchema>;\nexport type ScoutProfileCreateInput = z.input<typeof ScoutProfileCreateSchema>;\nexport type ScoutProfileUpdate = z.infer<typeof ScoutProfileUpdateSchema>;\nexport type ScoutProfileUpdateInput = z.input<typeof ScoutProfileUpdateSchema>;\nexport type ScoutSelfUpdate = z.infer<typeof ScoutSelfUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { MatchingFieldsSchema } from './matching';\n\n/**\n * Matching data for an analyst (a Clerk org member with the analyst role).\n * One per (org, user) membership; identity stays in Clerk. Soft-deleted when\n * the membership is removed or the role changes.\n */\nexport const AnalystProfileSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n userId: ClerkUserId,\n /** Mirror of the Clerk name. */\n displayName: z.string().min(1).max(120),\n })\n .merge(MatchingFieldsSchema)\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\n/** Matching fields an Admin, Analyst or System user may edit. */\nexport const AnalystProfileUpdateSchema = MatchingFieldsSchema.partial();\n\nexport type AnalystProfile = z.infer<typeof AnalystProfileSchema>;\nexport type AnalystProfileUpdate = z.infer<typeof AnalystProfileUpdateSchema>;\nexport type AnalystProfileUpdateInput = z.input<typeof AnalystProfileUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ObjectIdString, TimestampsSchema } from '../common';\nimport { TimeZone } from './matching';\n\n/** Default `taskLimit` for analysts of an org that has not set one. */\nexport const DEFAULT_ANALYST_TASK_LIMIT = 5;\n\n/** Non-auth settings for one Clerk organization (Clerk does not keep these). */\nexport const OrgSettingsSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n defaultAnalystTaskLimit: z.number().int().positive().max(100).default(DEFAULT_ANALYST_TASK_LIMIT),\n timezone: TimeZone.default('UTC'),\n })\n .merge(TimestampsSchema);\n\nexport const OrgSettingsUpdateSchema = OrgSettingsSchema.pick({\n defaultAnalystTaskLimit: true,\n timezone: true,\n}).partial();\n\nexport type OrgSettings = z.infer<typeof OrgSettingsSchema>;\nexport type OrgSettingsUpdate = z.infer<typeof OrgSettingsUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, TimestampsSchema } from '../common';\nimport { RaterType } from '../enums';\n\nexport const MAX_RATING_COMMENT_LENGTH = 1000;\n\nexport const RatingScore = z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]);\nexport type RatingScore = z.infer<typeof RatingScore>;\n\n/**\n * One rating of a scout. Org members rate per assignment (one per rater per\n * assignment; a later rating replaces it). System users may also leave a\n * general rating with no `orgId` / `assignmentId` / `taskId`.\n */\nexport const ScoutRatingSchema = z\n .object({\n _id: ObjectIdString,\n scoutUserId: ClerkUserId,\n /** Absent for a System general rating. */\n orgId: ClerkOrgId.optional(),\n assignmentId: ObjectIdString.optional(),\n taskId: ObjectIdString.optional(),\n raterUserId: ClerkUserId,\n raterType: RaterType,\n score: RatingScore,\n comment: z.string().max(MAX_RATING_COMMENT_LENGTH).optional(),\n })\n .merge(TimestampsSchema);\n\n/** Body of `PUT /assignments/:id/rating` and `POST /system/scouts/:userId/ratings`. */\nexport const ScoutRatingInputSchema = ScoutRatingSchema.pick({ score: true, comment: true });\n\nexport type ScoutRating = z.infer<typeof ScoutRatingSchema>;\nexport type ScoutRatingInput = z.infer<typeof ScoutRatingInputSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, TimestampsSchema } from '../common';\n\n/** Scouts count across orgs (`'global'`); analysts count per org (`orgId`). */\nexport const GLOBAL_LOAD_SCOPE = 'global' as const;\nexport const LoadScope = z.union([z.literal(GLOBAL_LOAD_SCOPE), ClerkOrgId]);\nexport type LoadScope = z.infer<typeof LoadScope>;\n\n/**\n * Atomic counter of a person's active assignments, used to enforce\n * `taskLimit` under concurrency with a conditional `$inc` (`active < limit`).\n */\nexport const AssigneeLoadSchema = z\n .object({\n _id: ObjectIdString,\n userId: ClerkUserId,\n scope: LoadScope,\n active: z.number().int().min(0).default(0),\n })\n .merge(TimestampsSchema);\n\nexport type AssigneeLoad = z.infer<typeof AssigneeLoadSchema>;\n","import { z } from 'zod';\nimport {\n ClerkOrgId,\n ClerkUserId,\n DatabaseId,\n LanguageCode,\n ObjectIdString,\n SoftDeleteSchema,\n TimestampsSchema,\n} from '../common';\nimport { DiscoveredByType, Platform, SourceAccess, SourceRoute, SourceStatus, SourceType } from '../enums';\n\nexport const SourceRatingSchema = z.object({\n relevance: z.number().min(0).max(5),\n reliability: z.number().min(0).max(5),\n language: LanguageCode.optional(),\n});\nexport type SourceRating = z.infer<typeof SourceRatingSchema>;\n\nexport const DiscoveredBySchema = z.object({\n type: DiscoveredByType,\n userId: ClerkUserId.optional(),\n importId: ObjectIdString.optional(),\n});\nexport type DiscoveredBy = z.infer<typeof DiscoveredBySchema>;\n\n/**\n * A place to collect from. `(orgId, platform, url)` is unique. Lives in the\n * org's logical Database: `databaseId` is set by the server, never by clients.\n */\nexport const SourceSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n databaseId: DatabaseId,\n missionIds: z.array(ObjectIdString).default([]),\n taskIds: z.array(ObjectIdString).default([]),\n platform: Platform,\n url: z.string().url(),\n handle: z.string().min(1).optional(),\n type: SourceType,\n access: SourceAccess,\n route: SourceRoute,\n scraperId: ObjectIdString.optional(),\n rating: SourceRatingSchema.optional(),\n tags: z.array(z.string().min(1)).default([]),\n status: SourceStatus.default('active'),\n discoveredBy: DiscoveredBySchema,\n lastCollectedAt: z.coerce.date().optional(),\n nextVisitAt: z.coerce.date().optional(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const SourceCreateSchema = SourceSchema.omit({\n _id: true,\n orgId: true,\n databaseId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n discoveredBy: true,\n lastCollectedAt: true,\n});\n\nexport const SourceUpdateSchema = SourceCreateSchema.partial();\n\nexport type Source = z.infer<typeof SourceSchema>;\nexport type SourceCreate = z.infer<typeof SourceCreateSchema>;\nexport type SourceCreateInput = z.input<typeof SourceCreateSchema>;\nexport type SourceUpdate = z.infer<typeof SourceUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { SourceImportKind, SourceImportStatus } from '../enums';\n\nexport const MAX_SOURCE_IMPORT_ROW_ERRORS = 500;\n\nexport const SourceImportSummarySchema = z.object({\n toCreate: z.number().int().nonnegative().default(0),\n toUpdate: z.number().int().nonnegative().default(0),\n duplicates: z.number().int().nonnegative().default(0),\n invalid: z.number().int().nonnegative().default(0),\n});\nexport type SourceImportSummary = z.infer<typeof SourceImportSummarySchema>;\n\nexport const SourceImportRowErrorSchema = z.object({\n row: z.number().int().nonnegative(),\n field: z.string(),\n message: z.string(),\n});\nexport type SourceImportRowError = z.infer<typeof SourceImportRowErrorSchema>;\n\n/** Batch upload (create) or batch update job for sources. */\nexport const SourceImportSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n kind: SourceImportKind,\n fileName: z.string().min(1),\n rowCount: z.number().int().nonnegative(),\n status: SourceImportStatus.default('validating'),\n summary: SourceImportSummarySchema.default({}),\n rowErrors: z.array(SourceImportRowErrorSchema).max(MAX_SOURCE_IMPORT_ROW_ERRORS).default([]),\n createdBy: ClerkUserId,\n committedAt: z.coerce.date().optional(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const SourceImportCreateSchema = SourceImportSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n status: true,\n summary: true,\n rowErrors: true,\n createdBy: true,\n committedAt: true,\n});\n\nexport const SourceImportUpdateSchema = SourceImportCreateSchema.partial();\n\nexport type SourceImport = z.infer<typeof SourceImportSchema>;\nexport type SourceImportCreate = z.infer<typeof SourceImportCreateSchema>;\nexport type SourceImportUpdate = z.infer<typeof SourceImportUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, DatabaseId, LanguageCode, ObjectIdString, TimestampsSchema } from '../common';\nimport { CollectorType, Platform } from '../enums';\n\nexport const CollectorSchema = z.object({\n type: CollectorType,\n /** Scraper ObjectId string, Clerk user id, or agent id. */\n id: z.string().min(1),\n});\nexport type Collector = z.infer<typeof CollectorSchema>;\n\nexport const DataItemContentSchema = z.object({\n text: z.string().optional(),\n lang: LanguageCode.optional(),\n mediaUrls: z.array(z.string().url()).optional(),\n transcript: z.string().optional(),\n});\nexport type DataItemContent = z.infer<typeof DataItemContentSchema>;\n\nexport const DataItemEntitySchema = z.object({\n type: z.string().min(1),\n value: z.string().min(1),\n});\nexport type DataItemEntity = z.infer<typeof DataItemEntitySchema>;\n\nexport const GeoSchema = z.object({\n lat: z.number().min(-90).max(90),\n lng: z.number().min(-180).max(180),\n place: z.string().optional(),\n});\nexport type Geo = z.infer<typeof GeoSchema>;\n\n/**\n * Collected content. Large, append-mostly, no soft delete. Lives in the org's\n * logical Database: `databaseId` is set by the server, never by clients.\n */\nexport const DataItemSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n databaseId: DatabaseId,\n sourceId: ObjectIdString,\n missionIds: z.array(ObjectIdString).default([]),\n taskId: ObjectIdString.optional(),\n platform: Platform,\n collectedAt: z.coerce.date(),\n publishedAt: z.coerce.date().optional(),\n collector: CollectorSchema,\n content: DataItemContentSchema,\n entities: z.array(DataItemEntitySchema).optional(),\n geo: GeoSchema.optional(),\n priorityFlag: z.boolean().optional(),\n /**\n * SHA-256 (hex) of normalised text + publication time bucket, set by\n * collectors that may see the same post twice (agent sessions). Unique per\n * source when present.\n */\n contentHash: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .optional(),\n })\n .merge(TimestampsSchema);\n\nexport const DataItemCreateSchema = DataItemSchema.omit({\n _id: true,\n orgId: true,\n databaseId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport const DataItemUpdateSchema = DataItemCreateSchema.partial();\n\nexport type DataItem = z.infer<typeof DataItemSchema>;\nexport type DataItemCreate = z.infer<typeof DataItemCreateSchema>;\nexport type DataItemCreateInput = z.input<typeof DataItemCreateSchema>;\nexport type DataItemUpdate = z.infer<typeof DataItemUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { Platform, ScraperStatus } from '../enums';\n\nexport const ScraperSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n platform: Platform,\n name: z.string().min(1).max(120),\n /** e.g. 100 Telegram sources. */\n sourceLimit: z.number().int().positive(),\n /** Denormalized, updated on assign. */\n sourceCount: z.number().int().nonnegative().default(0),\n status: ScraperStatus.default('deploying'),\n deploymentId: ObjectIdString.optional(),\n version: z.string().min(1),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const ScraperCreateSchema = ScraperSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n sourceCount: true,\n status: true,\n deploymentId: true,\n});\n\nexport const ScraperUpdateSchema = ScraperCreateSchema.partial();\n\nexport type Scraper = z.infer<typeof ScraperSchema>;\nexport type ScraperCreate = z.infer<typeof ScraperCreateSchema>;\nexport type ScraperUpdate = z.infer<typeof ScraperUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ObjectIdString, TimestampsSchema } from '../common';\n\n/** One document per scraper per hour. No soft delete. */\nexport const ScraperMetricSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n scraperId: ObjectIdString,\n /** Start of the hour bucket (UTC). */\n hour: z.coerce.date(),\n itemsCollected: z.number().int().nonnegative(),\n errors: z.number().int().nonnegative(),\n blocked: z.number().int().nonnegative(),\n p95LatencyMs: z.number().nonnegative(),\n })\n .merge(TimestampsSchema);\n\nexport const ScraperMetricCreateSchema = ScraperMetricSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport const ScraperMetricUpdateSchema = ScraperMetricCreateSchema.partial();\n\nexport type ScraperMetric = z.infer<typeof ScraperMetricSchema>;\nexport type ScraperMetricCreate = z.infer<typeof ScraperMetricCreateSchema>;\nexport type ScraperMetricUpdate = z.infer<typeof ScraperMetricUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { DeploymentKind, DeploymentStatus } from '../enums';\n\nexport const DeploymentStepSchema = z.object({\n name: z.string().min(1),\n status: z.string().min(1),\n at: z.coerce.date(),\n log: z.string().optional(),\n});\nexport type DeploymentStep = z.infer<typeof DeploymentStepSchema>;\n\n/** Org provisioning (droplet) and scraper deploy jobs. */\nexport const DeploymentSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n kind: DeploymentKind,\n status: DeploymentStatus.default('queued'),\n steps: z.array(DeploymentStepSchema).default([]),\n requestedBy: ClerkUserId,\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const DeploymentCreateSchema = DeploymentSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n status: true,\n steps: true,\n requestedBy: true,\n});\n\nexport const DeploymentUpdateSchema = DeploymentCreateSchema.partial();\n\nexport type Deployment = z.infer<typeof DeploymentSchema>;\nexport type DeploymentCreate = z.infer<typeof DeploymentCreateSchema>;\nexport type DeploymentUpdate = z.infer<typeof DeploymentUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\n\nexport const AuditTargetSchema = z.object({\n type: z.string().min(1),\n id: z.string().min(1),\n});\nexport type AuditTarget = z.infer<typeof AuditTargetSchema>;\n\n/** Who did what to which document. `orgId` is optional for system-level actions. */\nexport const AuditLogSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId.optional(),\n actorUserId: ClerkUserId,\n actingAsSystem: z.boolean().default(false),\n action: z.string().min(1),\n target: AuditTargetSchema,\n diff: z.unknown().optional(),\n at: z.coerce.date(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const AuditLogCreateSchema = AuditLogSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n actorUserId: true,\n at: true,\n});\n\nexport const AuditLogUpdateSchema = AuditLogCreateSchema.partial();\n\nexport type AuditLog = z.infer<typeof AuditLogSchema>;\nexport type AuditLogCreate = z.infer<typeof AuditLogCreateSchema>;\nexport type AuditLogUpdate = z.infer<typeof AuditLogUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, LanguageCode, ObjectIdString, TimestampsSchema } from '../common';\nimport {\n AgentCardKind,\n AgentMessageKind,\n AgentMessageRole,\n AgentSessionMode,\n AgentSessionStatus,\n AgentSourceOutcome,\n CaptureDomStatus,\n CaptureStatus,\n LlmCapability,\n LlmOutcome,\n LlmProvider,\n Platform,\n} from '../enums';\n\n/**\n * Badger Agent runtime entities, owned by agent-service.\n *\n * A session is one person working one assignment with the agent \"head\".\n * Everything the agent says is an AgentMessage; everything the person shows it\n * is a Capture (screenshot + read-only DOM text). Every model call is an\n * LlmCall. None of these are soft-deleted: captures expire (blob deleted,\n * document marked `expired`), the rest are append-only history.\n */\n\n// ---------------------------------------------------------------------------\n// AgentSession\n// ---------------------------------------------------------------------------\n\nconst count = () => z.number().int().min(0).default(0);\n\nexport const AgentSessionStatsSchema = z.object({\n capturesCount: count(),\n sourcesFound: count(),\n sourcesToScraper: count(),\n sourcesToMonitor: count(),\n sourcesWaiting: count(),\n sourcesKnown: count(),\n sourcesDropped: count(),\n itemsSaved: count(),\n priorityItems: count(),\n sourcesVisited: count(),\n sourcesRemaining: count(),\n});\nexport type AgentSessionStats = z.infer<typeof AgentSessionStatsSchema>;\n\n/** Running LLM spend for the session; compared against the configured caps. */\nexport const AgentSessionBudgetSchema = z.object({\n tokens: count(),\n costUsd: z.number().min(0).default(0),\n});\nexport type AgentSessionBudget = z.infer<typeof AgentSessionBudgetSchema>;\n\nexport const AgentSessionSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n missionId: ObjectIdString,\n taskId: ObjectIdString,\n assignmentId: ObjectIdString,\n userId: ClerkUserId,\n mode: AgentSessionMode,\n status: AgentSessionStatus.default('active'),\n startedAt: z.coerce.date(),\n endedAt: z.coerce.date().optional(),\n /** Last capture / reply / open / stream attach; drives `activeMinutes`. */\n lastActivityAt: z.coerce.date(),\n activeMinutes: count(),\n /** Sequence number of the latest AgentMessage; SSE `Last-Event-ID` resumes from it. */\n lastSeq: count(),\n stats: AgentSessionStatsSchema.default({}),\n budget: AgentSessionBudgetSchema.default({}),\n /** Mode-specific engine state (search plan cursor, monitor queue). Opaque to clients. */\n state: z.unknown().optional(),\n })\n .merge(TimestampsSchema);\n\nexport const AgentSessionCreateSchema = AgentSessionSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\nexport const AgentSessionUpdateSchema = AgentSessionCreateSchema.partial();\n\nexport type AgentSession = z.infer<typeof AgentSessionSchema>;\nexport type AgentSessionCreate = z.infer<typeof AgentSessionCreateSchema>;\nexport type AgentSessionCreateInput = z.input<typeof AgentSessionCreateSchema>;\nexport type AgentSessionUpdate = z.infer<typeof AgentSessionUpdateSchema>;\n\n// ---------------------------------------------------------------------------\n// AgentMessage + cards\n// ---------------------------------------------------------------------------\n\n/** A link the person may open. Nothing opens unless they press the card's button. */\nexport const OpenLinkCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.open_link),\n url: z.string().url(),\n label: z.string().min(1).max(200),\n platform: Platform.optional(),\n});\n\nexport const CapturePromptCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.capture_prompt),\n hint: z.string().min(1).max(300),\n});\n\nexport const SourceResultCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.source_result),\n name: z.string().min(1).max(200),\n platform: Platform,\n url: z.string().url().optional(),\n outcome: AgentSourceOutcome,\n reason: z.string().max(300),\n score: z.number().min(0).max(1).optional(),\n});\n\nexport const ItemResultCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.item_result),\n excerpt: z.string().max(300),\n platform: Platform,\n priority: z.boolean(),\n publishedAt: z.coerce.date().optional(),\n});\n\nexport const QuickReplyOptionSchema = z.object({\n id: z.string().min(1).max(64),\n label: z.string().min(1).max(80),\n});\nexport type QuickReplyOption = z.infer<typeof QuickReplyOptionSchema>;\n\nexport const QuickRepliesCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.quick_replies),\n questionId: z.string().min(1).max(64),\n options: z.array(QuickReplyOptionSchema).min(1).max(6),\n});\n\nexport const HoursProposalCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.hours_proposal),\n minutes: z.number().int().positive(),\n note: z.string().max(500),\n});\n\nexport const CaptureThumbCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.capture_thumb),\n captureId: ObjectIdString,\n});\n\nexport const AgentCardSchema = z.discriminatedUnion('kind', [\n OpenLinkCardSchema,\n CapturePromptCardSchema,\n SourceResultCardSchema,\n ItemResultCardSchema,\n QuickRepliesCardSchema,\n HoursProposalCardSchema,\n CaptureThumbCardSchema,\n]);\nexport type AgentCard = z.infer<typeof AgentCardSchema>;\n\nexport const MAX_AGENT_MESSAGE_TEXT_LENGTH = 4000;\n\nexport const AgentMessageSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n sessionId: ObjectIdString,\n /** Monotonic per session, starting at 1. */\n seq: z.number().int().min(1),\n role: AgentMessageRole,\n kind: AgentMessageKind,\n text: z.string().max(MAX_AGENT_MESSAGE_TEXT_LENGTH),\n cards: z.array(AgentCardSchema).default([]),\n })\n .merge(TimestampsSchema);\n\nexport const AgentMessageCreateSchema = AgentMessageSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport type AgentMessage = z.infer<typeof AgentMessageSchema>;\nexport type AgentMessageCreate = z.infer<typeof AgentMessageCreateSchema>;\nexport type AgentMessageCreateInput = z.input<typeof AgentMessageCreateSchema>;\n\n// ---------------------------------------------------------------------------\n// Capture\n// ---------------------------------------------------------------------------\n\n/** Pointer into the object store; the bytes themselves never live in Mongo. */\nexport const BlobRefSchema = z.object({\n bucket: z.string().min(1),\n key: z.string().min(1),\n contentType: z.string().min(1),\n bytes: z.number().int().min(0),\n});\nexport type BlobRef = z.infer<typeof BlobRefSchema>;\n\n/**\n * Focus rectangle the person drew over the capture preview, in CSS pixels of\n * the captured viewport. The uploaded image is already cropped to it; the DOM\n * blocks are already filtered to those intersecting it.\n */\nexport const CaptureRegionSchema = z.object({\n x: z.number().min(0),\n y: z.number().min(0),\n w: z.number().positive(),\n h: z.number().positive(),\n viewportW: z.number().positive(),\n viewportH: z.number().positive(),\n dpr: z.number().positive(),\n});\nexport type CaptureRegion = z.infer<typeof CaptureRegionSchema>;\n\nexport const CaptureDomSummarySchema = z.object({\n blocks: z.number().int().min(0),\n links: z.number().int().min(0),\n bytes: z.number().int().min(0),\n lang: LanguageCode.optional(),\n});\nexport type CaptureDomSummary = z.infer<typeof CaptureDomSummarySchema>;\n\nexport const CaptureSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n sessionId: ObjectIdString,\n /** From `chrome.tabs`, never from page content. */\n url: z.string().url(),\n title: z.string().max(500),\n capturedAt: z.coerce.date(),\n imageRef: BlobRefSchema,\n /** SHA-256 of the uploaded image, hex. */\n sha256: z.string().regex(/^[0-9a-f]{64}$/),\n region: CaptureRegionSchema.optional(),\n domRef: BlobRefSchema.optional(),\n domStatus: CaptureDomStatus.default('unavailable'),\n domSummary: CaptureDomSummarySchema.optional(),\n status: CaptureStatus.default('uploaded'),\n /** Validated `vision_extract` output; shape depends on session mode. */\n analysis: z.unknown().optional(),\n error: z.string().max(1000).optional(),\n /** Blob deleted and status set to `expired` after this instant (CAPTURE_RETENTION_DAYS). */\n expiresAt: z.coerce.date(),\n })\n .merge(TimestampsSchema);\n\nexport const CaptureCreateSchema = CaptureSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport type Capture = z.infer<typeof CaptureSchema>;\nexport type CaptureCreate = z.infer<typeof CaptureCreateSchema>;\nexport type CaptureCreateInput = z.input<typeof CaptureCreateSchema>;\n\n// ---------------------------------------------------------------------------\n// Capture DOM snapshot (uploaded JSON part; stored as a blob, not in Mongo)\n// ---------------------------------------------------------------------------\n\nexport const DomRectSchema = z.object({\n x: z.number(),\n y: z.number(),\n w: z.number().min(0),\n h: z.number().min(0),\n});\nexport type DomRect = z.infer<typeof DomRectSchema>;\n\nexport const DomBlockSchema = z.object({\n tag: z.string().min(1).max(32),\n text: z.string().max(4000),\n rect: DomRectSchema,\n});\nexport type DomBlock = z.infer<typeof DomBlockSchema>;\n\nexport const DomLinkSchema = z.object({\n href: z.string().max(2048),\n text: z.string().max(300),\n rect: DomRectSchema,\n});\nexport type DomLink = z.infer<typeof DomLinkSchema>;\n\n/**\n * Read-only snapshot of the *visible* page text, produced by a single\n * `executeScript` call at Capture time. Viewport-relative CSS-pixel rects let\n * the extension filter blocks to the focus region without a second injection.\n */\nexport const CaptureDomSnapshotSchema = z.object({\n url: z.string().url(),\n title: z.string().max(500),\n lang: z.string().max(35).optional(),\n capturedAt: z.coerce.date(),\n viewport: z.object({\n w: z.number().positive(),\n h: z.number().positive(),\n dpr: z.number().positive(),\n scrollX: z.number(),\n scrollY: z.number(),\n }),\n blocks: z.array(DomBlockSchema),\n links: z.array(DomLinkSchema),\n truncated: z.boolean(),\n});\nexport type CaptureDomSnapshot = z.infer<typeof CaptureDomSnapshotSchema>;\n\n// ---------------------------------------------------------------------------\n// LlmCall\n// ---------------------------------------------------------------------------\n\nexport const LlmUsageSchema = z.object({\n inputTokens: count(),\n outputTokens: count(),\n totalTokens: count(),\n});\nexport type LlmUsage = z.infer<typeof LlmUsageSchema>;\n\n/** One provider attempt. A gateway `run()` with fallbacks writes several. */\nexport const LlmCallSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId.optional(),\n sessionId: ObjectIdString.optional(),\n capability: LlmCapability,\n provider: LlmProvider,\n model: z.string().min(1),\n promptVersion: z.string().min(1),\n /** 1 = first try on this provider, 2 = the single retry. */\n attempt: z.number().int().min(1),\n /** Providers already tried (and failed) before this one, in order. */\n fallbackChain: z.array(LlmProvider).default([]),\n usage: LlmUsageSchema.default({}),\n latencyMs: z.number().int().min(0),\n costUsdEstimate: z.number().min(0).optional(),\n outcome: LlmOutcome,\n errorCode: z.string().max(120).optional(),\n })\n .merge(TimestampsSchema);\n\nexport const LlmCallCreateSchema = LlmCallSchema.omit({ _id: true, createdAt: true, updatedAt: true });\n\nexport type LlmCall = z.infer<typeof LlmCallSchema>;\nexport type LlmCallCreate = z.infer<typeof LlmCallCreateSchema>;\nexport type LlmCallCreateInput = z.input<typeof LlmCallCreateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, LanguageCode, ObjectIdString } from '../common';\nimport {\n AgentMessageKind,\n AgentMessageRole,\n AgentSessionMode,\n AgentSessionStatus,\n CaptureStatus,\n Platform,\n TaskKind,\n TaskStatus,\n} from '../enums';\nimport { AgentCardSchema, AgentSessionStatsSchema, CaptureRegionSchema } from './agent-session';\nimport { CoverageWindowSchema } from './task-criteria';\n\n/**\n * Wire contracts for the Badger Agent (Chrome extension) <-> agent-service API.\n *\n * These are *read models*, deliberately narrower than the entity schemas:\n * scouts must never see org identifiers, scores or other assignees.\n */\n\nexport const AGENT_ROLE_VALUES = ['scout', 'analyst', 'none'] as const;\nexport const AgentRole = z.enum(AGENT_ROLE_VALUES);\nexport type AgentRole = z.infer<typeof AgentRole>;\n\n/** `GET /api/v1/me` */\nexport const AgentMeSchema = z.object({\n userId: ClerkUserId,\n role: AgentRole,\n displayName: z.string(),\n email: z.string().email().nullable(),\n});\nexport type AgentMe = z.infer<typeof AgentMeSchema>;\n\n/** Subset of TaskCriteria exposed to agents. */\nexport const AgentTaskCriteriaSchema = z.object({\n languages: z.array(LanguageCode),\n platforms: z.array(Platform),\n regions: z.array(z.string()),\n coverageWindow: CoverageWindowSchema.optional(),\n emergency: z.boolean(),\n});\nexport type AgentTaskCriteria = z.infer<typeof AgentTaskCriteriaSchema>;\n\n/** Subset of Task exposed to agents. */\nexport const AgentTaskSchema = z.object({\n id: ObjectIdString,\n title: z.string(),\n kind: TaskKind,\n description: z.string(),\n keywords: z.array(z.string()),\n searchQueries: z.array(z.string()),\n criteria: AgentTaskCriteriaSchema,\n status: TaskStatus,\n version: z.number().int().min(1),\n updatedAt: z.coerce.date(),\n});\nexport type AgentTask = z.infer<typeof AgentTaskSchema>;\n\n/** Org reference; present only for analysts. */\nexport const AgentOrgRefSchema = z.object({\n id: ClerkOrgId,\n name: z.string(),\n});\nexport type AgentOrgRef = z.infer<typeof AgentOrgRefSchema>;\n\n/** One item of `GET /api/v1/assignments`. */\nexport const AgentAssignmentItemSchema = z.object({\n assignmentId: ObjectIdString,\n assignedAt: z.coerce.date(),\n task: AgentTaskSchema,\n missionTitle: z.string(),\n org: AgentOrgRefSchema.optional(),\n});\nexport type AgentAssignmentItem = z.infer<typeof AgentAssignmentItemSchema>;\n\nexport const AgentAssignmentsResponseSchema = z.object({\n items: z.array(AgentAssignmentItemSchema),\n});\nexport type AgentAssignmentsResponse = z.infer<typeof AgentAssignmentsResponseSchema>;\n\n/** `GET /api/v1/assignments/versions` — cheap poll used for the toolbar badge. */\nexport const AgentAssignmentVersionSchema = z.object({\n assignmentId: ObjectIdString,\n taskVersion: z.number().int().min(1),\n});\nexport type AgentAssignmentVersion = z.infer<typeof AgentAssignmentVersionSchema>;\n\nexport const AgentAssignmentVersionsResponseSchema = z.object({\n items: z.array(AgentAssignmentVersionSchema),\n});\nexport type AgentAssignmentVersionsResponse = z.infer<typeof AgentAssignmentVersionsResponseSchema>;\n\nexport const AGENT_ERROR_CODE_VALUES = [\n 'UNAUTHENTICATED',\n 'NOT_AN_AGENT_USER',\n 'FORBIDDEN',\n 'NOT_FOUND',\n 'VALIDATION_ERROR',\n 'RATE_LIMITED',\n 'CONFLICT',\n 'SESSION_NOT_ACTIVE',\n 'PAYLOAD_TOO_LARGE',\n 'BUDGET_EXCEEDED',\n 'LLM_UNAVAILABLE',\n 'UPSTREAM_UNAVAILABLE',\n 'INTERNAL',\n] as const;\nexport const AgentErrorCode = z.enum(AGENT_ERROR_CODE_VALUES);\nexport type AgentErrorCode = z.infer<typeof AgentErrorCode>;\n\n/** Error envelope returned by agent-service: `{ error: { code, message, details? } }`. */\nexport const AgentErrorSchema = z.object({\n error: z.object({\n code: AgentErrorCode,\n message: z.string(),\n details: z.unknown().optional(),\n }),\n});\nexport type AgentError = z.infer<typeof AgentErrorSchema>;\n\n// ---------------------------------------------------------------------------\n// Sessions (`/api/v1/sessions`)\n// ---------------------------------------------------------------------------\n\n/**\n * The agent session as shown to the person. No org id, no other assignees, no budget\n * figures; stats are the counters in the progress header.\n */\nexport const AgentSessionViewSchema = z.object({\n id: ObjectIdString,\n assignmentId: ObjectIdString,\n taskId: ObjectIdString,\n taskTitle: z.string(),\n missionTitle: z.string(),\n mode: AgentSessionMode,\n status: AgentSessionStatus,\n startedAt: z.coerce.date(),\n endedAt: z.coerce.date().nullable(),\n activeMinutes: z.number().int().min(0),\n lastSeq: z.number().int().min(0),\n stats: AgentSessionStatsSchema,\n});\nexport type AgentSessionView = z.infer<typeof AgentSessionViewSchema>;\n\nexport const AgentMessageViewSchema = z.object({\n id: ObjectIdString,\n seq: z.number().int().min(1),\n role: AgentMessageRole,\n kind: AgentMessageKind,\n text: z.string(),\n cards: z.array(AgentCardSchema),\n createdAt: z.coerce.date(),\n});\nexport type AgentMessageView = z.infer<typeof AgentMessageViewSchema>;\n\n/** `POST /api/v1/sessions` */\nexport const AgentSessionStartBodySchema = z.object({\n assignmentId: ObjectIdString,\n});\nexport type AgentSessionStartBody = z.infer<typeof AgentSessionStartBodySchema>;\n\n/** Starting an assignment that already has a live session resumes it (`resumed: true`). */\nexport const AgentSessionStartResponseSchema = z.object({\n session: AgentSessionViewSchema,\n resumed: z.boolean(),\n});\nexport type AgentSessionStartResponse = z.infer<typeof AgentSessionStartResponseSchema>;\n\n/** `GET /api/v1/sessions/:id`, `POST …/pause`, `POST …/end`, `POST …/reply` */\nexport const AgentSessionResponseSchema = z.object({\n session: AgentSessionViewSchema,\n});\nexport type AgentSessionResponse = z.infer<typeof AgentSessionResponseSchema>;\n\n/** `GET /api/v1/sessions/active` — the caller's live session, if any. */\nexport const AgentActiveSessionResponseSchema = z.object({\n session: AgentSessionViewSchema.nullable(),\n});\nexport type AgentActiveSessionResponse = z.infer<typeof AgentActiveSessionResponseSchema>;\n\n/** `GET /api/v1/sessions/:id/messages?after=<seq>` */\nexport const AgentMessagesQuerySchema = z.object({\n after: z.coerce.number().int().min(0).default(0),\n limit: z.coerce.number().int().min(1).max(200).default(100),\n});\nexport type AgentMessagesQuery = z.infer<typeof AgentMessagesQuerySchema>;\n\nexport const AgentMessagesResponseSchema = z.object({\n items: z.array(AgentMessageViewSchema),\n});\nexport type AgentMessagesResponse = z.infer<typeof AgentMessagesResponseSchema>;\n\n/**\n * `POST /api/v1/sessions/:id/reply`. The person never types free text: they\n * answer a quick-reply question, report that they opened a suggested link,\n * or confirm / decline the hours proposal.\n */\nexport const AgentReplyBodySchema = z.discriminatedUnion('type', [\n z.object({ type: z.literal('answer'), questionId: z.string().min(1).max(64), optionId: z.string().min(1).max(64) }),\n z.object({ type: z.literal('opened'), messageId: ObjectIdString, url: z.string().url() }),\n z.object({ type: z.literal('confirm_hours'), minutes: z.number().int().positive().max(24 * 60), note: z.string().max(500) }),\n z.object({ type: z.literal('decline_hours') }),\n]);\nexport type AgentReplyBody = z.infer<typeof AgentReplyBodySchema>;\n\n/**\n * Text fields of the `POST /api/v1/sessions/:id/captures` multipart body.\n * File parts: `image` (image/jpeg|png) and optional `dom` (application/json,\n * a `CaptureDomSnapshot`).\n */\nexport const AgentCaptureFieldsSchema = z.object({\n url: z.string().url(),\n title: z.string().max(500),\n capturedAt: z.coerce.date(),\n region: CaptureRegionSchema.optional(),\n});\nexport type AgentCaptureFields = z.infer<typeof AgentCaptureFieldsSchema>;\n\nexport const AgentCaptureResponseSchema = z.object({\n captureId: ObjectIdString,\n status: CaptureStatus,\n});\nexport type AgentCaptureResponse = z.infer<typeof AgentCaptureResponseSchema>;\n\n/**\n * Events on `GET /api/v1/sessions/:id/stream` (SSE). `message` events carry\n * `id: <seq>` so the client can resume with `Last-Event-ID`; the others are\n * transient and never replayed.\n */\nexport const AgentStreamEventSchema = z.discriminatedUnion('type', [\n z.object({ type: z.literal('message'), message: AgentMessageViewSchema }),\n z.object({ type: z.literal('status'), text: z.string(), captureId: ObjectIdString.nullable() }),\n z.object({ type: z.literal('typing'), on: z.boolean() }),\n z.object({ type: z.literal('session'), session: AgentSessionViewSchema }),\n z.object({ type: z.literal('error'), code: AgentErrorCode, message: z.string(), retryInMs: z.number().int().min(0).nullable() }),\n]);\nexport type AgentStreamEvent = z.infer<typeof AgentStreamEventSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, LanguageCode, ObjectIdString } from '../common';\nimport { Platform, SourceAccess, SourceIntakeOutcome, SourceRoute, SourceStatus, SourceType } from '../enums';\n\n/**\n * Service-to-service contracts: agent-service -> hero-service `/internal/*`.\n *\n * Authenticated with a shared service token (`x-service-token`), never with a\n * user session, so every body names the `orgId` explicitly. hero-service owns\n * every write to `sources`; the agent only proposes.\n */\n\n// ---------------------------------------------------------------------------\n// POST /internal/sources/intake\n// ---------------------------------------------------------------------------\n\n/** A source the agent extracted from a capture and judged relevant. */\nexport const SourceIntakeCandidateSchema = z.object({\n platform: Platform,\n url: z.string().url(),\n handle: z.string().min(1).max(120).optional(),\n name: z.string().min(1).max(200),\n type: SourceType,\n access: SourceAccess,\n language: LanguageCode.optional(),\n description: z.string().max(1000).optional(),\n /** 0..1 relevance from the `judge` capability. */\n relevanceScore: z.number().min(0).max(1),\n reason: z.string().max(300),\n});\nexport type SourceIntakeCandidate = z.infer<typeof SourceIntakeCandidateSchema>;\n\nexport const MAX_SOURCE_INTAKE_CANDIDATES = 50;\n\nexport const SourceIntakeBodySchema = z.object({\n orgId: ClerkOrgId,\n /** The discovery task the session works; its mission's monitor task receives gated sources. */\n taskId: ObjectIdString,\n discoveredByUserId: ClerkUserId,\n candidates: z.array(SourceIntakeCandidateSchema).min(1).max(MAX_SOURCE_INTAKE_CANDIDATES),\n});\nexport type SourceIntakeBody = z.infer<typeof SourceIntakeBodySchema>;\n\nexport const SourceIntakeResultSchema = z.object({\n url: z.string(),\n outcome: SourceIntakeOutcome,\n sourceId: ObjectIdString.optional(),\n route: SourceRoute.optional(),\n message: z.string().max(300).optional(),\n});\nexport type SourceIntakeResult = z.infer<typeof SourceIntakeResultSchema>;\n\nexport const SourceIntakeResponseSchema = z.object({\n results: z.array(SourceIntakeResultSchema),\n});\nexport type SourceIntakeResponse = z.infer<typeof SourceIntakeResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// POST /internal/sources/:sourceId/visit\n// ---------------------------------------------------------------------------\n\nexport const SourceVisitBodySchema = z.object({\n orgId: ClerkOrgId,\n collectedAt: z.coerce.date(),\n newItems: z.number().int().min(0),\n priorityItems: z.number().int().min(0).default(0),\n /** The page showed a login wall / no access. The source is parked for review. */\n accessProblem: z.object({ reason: z.string().min(1).max(300) }).optional(),\n /** Task criteria flag; shortens the next visit. */\n emergency: z.boolean().default(false),\n});\nexport type SourceVisitBody = z.infer<typeof SourceVisitBodySchema>;\nexport type SourceVisitBodyInput = z.input<typeof SourceVisitBodySchema>;\n\nexport const SourceVisitResponseSchema = z.object({\n sourceId: ObjectIdString,\n status: SourceStatus,\n lastCollectedAt: z.coerce.date(),\n nextVisitAt: z.coerce.date().nullable(),\n});\nexport type SourceVisitResponse = z.infer<typeof SourceVisitResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// POST /internal/data-items/priority\n// ---------------------------------------------------------------------------\n\nexport const PriorityAlertBodySchema = z.object({\n orgId: ClerkOrgId,\n taskId: ObjectIdString,\n sourceId: ObjectIdString,\n dataItemIds: z.array(ObjectIdString).min(1).max(100),\n /** The person whose capture surfaced the finding (audit actor). */\n raisedByUserId: ClerkUserId,\n sessionId: ObjectIdString.optional(),\n summary: z.string().max(500).optional(),\n});\nexport type PriorityAlertBody = z.infer<typeof PriorityAlertBodySchema>;\n\nexport const PriorityAlertResponseSchema = z.object({\n accepted: z.literal(true),\n});\nexport type PriorityAlertResponse = z.infer<typeof PriorityAlertResponseSchema>;\n\n/** Error codes returned by `/internal/*`. */\nexport const INTERNAL_ERROR_CODE_VALUES = ['UNAUTHENTICATED', 'NOT_FOUND', 'VALIDATION_ERROR', 'INTERNAL'] as const;\nexport const InternalErrorCode = z.enum(INTERNAL_ERROR_CODE_VALUES);\nexport type InternalErrorCode = z.infer<typeof InternalErrorCode>;\n"]}
1
+ {"version":3,"sources":["../src/common.ts","../src/enums.ts","../src/source-schedule.ts","../src/zod/database.ts","../src/zod/task-criteria.ts","../src/zod/task-target.ts","../src/zod/mission.ts","../src/zod/task.ts","../src/zod/assignment.ts","../src/zod/hours-log.ts","../src/zod/matching.ts","../src/zod/scout-profile.ts","../src/zod/analyst-profile.ts","../src/zod/org-settings.ts","../src/zod/scout-rating.ts","../src/zod/assignee-load.ts","../src/zod/source.ts","../src/zod/source-import.ts","../src/zod/data-item.ts","../src/zod/scraper.ts","../src/zod/scraper-metric.ts","../src/zod/deployment.ts","../src/zod/audit-log.ts","../src/zod/agent-session.ts","../src/zod/agent.ts","../src/zod/internal.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\n// ---------------------------------------------------------------------------\n// Ids\n// ---------------------------------------------------------------------------\n\n/** 24-char hex string: the wire representation of a Mongo ObjectId. */\nexport const ObjectIdString = z\n .string()\n .regex(/^[0-9a-fA-F]{24}$/, 'Expected a 24-character hex ObjectId string');\nexport type ObjectIdString = z.infer<typeof ObjectIdString>;\n\n/** Clerk organization id (`org_…`). Stored as a plain string, never an ObjectId. */\nexport const ClerkOrgId = z.string().regex(/^org_[A-Za-z0-9]+$/, 'Expected a Clerk org id (org_…)');\nexport type ClerkOrgId = z.infer<typeof ClerkOrgId>;\n\n/** Clerk user id (`user_…`). Stored as a plain string, never an ObjectId. */\nexport const ClerkUserId = z.string().regex(/^user_[A-Za-z0-9]+$/, 'Expected a Clerk user id (user_…)');\nexport type ClerkUserId = z.infer<typeof ClerkUserId>;\n\n/**\n * Id of the logical Database that holds an org's collected data (`sources`,\n * `dataItems`). Opaque string: today it equals the Clerk org id because every\n * org's data lives in the shared service database, partitioned by\n * `(databaseId, orgId)`; when data is split into physical databases it becomes\n * the id of that Database record.\n */\nexport const DatabaseId = z.string().min(1);\nexport type DatabaseId = z.infer<typeof DatabaseId>;\n\n// ---------------------------------------------------------------------------\n// Shared fragments\n// ---------------------------------------------------------------------------\n\n/** `createdAt` / `updatedAt`, set by Mongoose `timestamps: true`. */\nexport const TimestampsSchema = z.object({\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\nexport type Timestamps = z.infer<typeof TimestampsSchema>;\n\n/** Optional `deletedAt` marker for soft-deleted documents. */\nexport const SoftDeleteSchema = z.object({\n deletedAt: z.coerce.date().optional(),\n});\nexport type SoftDelete = z.infer<typeof SoftDeleteSchema>;\n\n/** Keys that are never accepted on Create / Update inputs. */\nexport const SERVER_MANAGED_KEYS = ['_id', 'orgId', 'databaseId', 'createdAt', 'updatedAt', 'deletedAt'] as const;\n\n/** ISO 639-1 language code: two lowercase letters. */\nexport const LanguageCode = z.string().regex(/^[a-z]{2}$/, 'Expected an ISO 639-1 two-letter lowercase code');\nexport type LanguageCode = z.infer<typeof LanguageCode>;\n\n/** `HH:mm` 24h clock string. */\nexport const HHmm = z.string().regex(/^([01]\\d|2[0-3]):[0-5]\\d$/, 'Expected HH:mm');\nexport type HHmm = z.infer<typeof HHmm>;\n\n// ---------------------------------------------------------------------------\n// Pagination\n// ---------------------------------------------------------------------------\n\nexport const PaginationQuerySchema = z.object({\n cursor: z.string().optional(),\n limit: z.coerce.number().int().min(1).max(100).default(25),\n});\n/** Input shape (before defaults). */\nexport type PaginationQueryInput = z.input<typeof PaginationQuerySchema>;\n/** Parsed shape (after defaults). */\nexport type PaginationQuery = z.infer<typeof PaginationQuerySchema>;\n\nexport const PaginatedSchema = <T extends z.ZodTypeAny>(item: T) =>\n z.object({\n items: z.array(item),\n nextCursor: z.string().nullable(),\n });\nexport type Paginated<T> = { items: T[]; nextCursor: string | null };\n\n// ---------------------------------------------------------------------------\n// Errors\n// ---------------------------------------------------------------------------\n\nexport const ApiErrorSchema = z.object({\n error: z.object({\n code: z.string(),\n message: z.string(),\n details: z.unknown().optional(),\n }),\n});\nexport type ApiError = z.infer<typeof ApiErrorSchema>;\n","import { z } from 'zod';\n\n/**\n * Every enum is defined exactly once here. The `*_VALUES` const arrays are\n * used by the Mongoose schemas for `enum:` validation, so Zod and Mongoose\n * can never drift.\n */\n\nexport const PLATFORM_VALUES = [\n 'telegram',\n 'facebook',\n 'x',\n 'tiktok',\n 'instagram',\n 'youtube',\n 'whatsapp',\n 'reddit',\n 'discord',\n 'linkedin',\n 'threads',\n 'vk',\n 'snapchat',\n 'web',\n] as const;\nexport const Platform = z.enum(PLATFORM_VALUES);\nexport type Platform = z.infer<typeof Platform>;\n\nexport const MISSION_PRIORITY_VALUES = ['low', 'medium', 'high', 'critical'] as const;\nexport const MissionPriority = z.enum(MISSION_PRIORITY_VALUES);\nexport type MissionPriority = z.infer<typeof MissionPriority>;\n\nexport const MISSION_STATUS_VALUES = ['draft', 'active', 'paused', 'closed'] as const;\nexport const MissionStatus = z.enum(MISSION_STATUS_VALUES);\nexport type MissionStatus = z.infer<typeof MissionStatus>;\n\nexport const TASK_KIND_VALUES = ['source_discovery', 'monitor'] as const;\nexport const TaskKind = z.enum(TASK_KIND_VALUES);\nexport type TaskKind = z.infer<typeof TaskKind>;\n\nexport const TASK_ORIGIN_VALUES = ['auto', 'manual'] as const;\nexport const TaskOrigin = z.enum(TASK_ORIGIN_VALUES);\nexport type TaskOrigin = z.infer<typeof TaskOrigin>;\n\nexport const TASK_STATUS_VALUES = [\n 'draft',\n 'pending_approval',\n 'approved',\n 'in_progress',\n 'paused',\n 'done',\n] as const;\nexport const TaskStatus = z.enum(TASK_STATUS_VALUES);\nexport type TaskStatus = z.infer<typeof TaskStatus>;\n\nexport const REGION_MODE_VALUES = ['must', 'preferred'] as const;\nexport const RegionMode = z.enum(REGION_MODE_VALUES);\nexport type RegionMode = z.infer<typeof RegionMode>;\n\nexport const ASSIGNEE_TYPE_VALUES = ['scout', 'analyst'] as const;\nexport const AssigneeType = z.enum(ASSIGNEE_TYPE_VALUES);\nexport type AssigneeType = z.infer<typeof AssigneeType>;\n\nexport const ASSIGNMENT_STATUS_VALUES = ['active', 'completed', 'revoked'] as const;\nexport const AssignmentStatus = z.enum(ASSIGNMENT_STATUS_VALUES);\nexport type AssignmentStatus = z.infer<typeof AssignmentStatus>;\n\nexport const ASSIGNMENT_SOURCE_VALUES = ['engine', 'manual'] as const;\nexport const AssignmentSource = z.enum(ASSIGNMENT_SOURCE_VALUES);\nexport type AssignmentSource = z.infer<typeof AssignmentSource>;\n\nexport const VETTING_STATUS_VALUES = ['pending', 'approved', 'suspended'] as const;\nexport const VettingStatus = z.enum(VETTING_STATUS_VALUES);\nexport type VettingStatus = z.infer<typeof VettingStatus>;\n\n/** `disabled` = the Clerk user is locked; never a candidate. */\nexport const SCOUT_STATUS_VALUES = ['active', 'disabled'] as const;\nexport const ScoutStatus = z.enum(SCOUT_STATUS_VALUES);\nexport type ScoutStatus = z.infer<typeof ScoutStatus>;\n\n/** Who left a scout rating: an org member (per assignment) or a System user (general). */\nexport const RATER_TYPE_VALUES = ['org', 'system'] as const;\nexport const RaterType = z.enum(RATER_TYPE_VALUES);\nexport type RaterType = z.infer<typeof RaterType>;\n\nexport const SOURCE_TYPE_VALUES = ['channel', 'group', 'profile', 'forum', 'site'] as const;\nexport const SourceType = z.enum(SOURCE_TYPE_VALUES);\nexport type SourceType = z.infer<typeof SourceType>;\n\nexport const SOURCE_ACCESS_VALUES = ['public', 'gated'] as const;\nexport const SourceAccess = z.enum(SOURCE_ACCESS_VALUES);\nexport type SourceAccess = z.infer<typeof SourceAccess>;\n\nexport const SOURCE_ROUTE_VALUES = ['scraper', 'monitor', 'waiting_for_scraper'] as const;\nexport const SourceRoute = z.enum(SOURCE_ROUTE_VALUES);\nexport type SourceRoute = z.infer<typeof SourceRoute>;\n\n/** `access_problem` = the last monitor visit saw a login wall / no access; waits for analyst review. */\nexport const SOURCE_STATUS_VALUES = ['active', 'paused', 'closed', 'access_problem'] as const;\nexport const SourceStatus = z.enum(SOURCE_STATUS_VALUES);\nexport type SourceStatus = z.infer<typeof SourceStatus>;\n\n/**\n * Why a person has to collect a source instead of a scraper. Set on a Monitor task's `target`.\n * `no_collector` = the org has no scraper for the platform; `collector_full` = it has one but no free slot.\n */\nexport const ACCESS_ISSUE_VALUES = [\n 'login_required',\n 'private',\n 'bot_detection',\n 'captcha',\n 'geo_blocked',\n 'rate_limited',\n 'not_found',\n 'no_collector',\n 'collector_full',\n 'other',\n] as const;\nexport const AccessIssue = z.enum(ACCESS_ISSUE_VALUES);\nexport type AccessIssue = z.infer<typeof AccessIssue>;\n\n/** How a Monitor task's capture window is given: the last N days, or a fixed range. */\nexport const CAPTURE_WINDOW_MODE_VALUES = ['last_days', 'range'] as const;\nexport const CaptureWindowMode = z.enum(CAPTURE_WINDOW_MODE_VALUES);\nexport type CaptureWindowMode = z.infer<typeof CaptureWindowMode>;\n\nexport const DISCOVERED_BY_TYPE_VALUES = ['scout', 'analyst', 'agent', 'client', 'import'] as const;\nexport const DiscoveredByType = z.enum(DISCOVERED_BY_TYPE_VALUES);\nexport type DiscoveredByType = z.infer<typeof DiscoveredByType>;\n\nexport const SOURCE_IMPORT_KIND_VALUES = ['create', 'update'] as const;\nexport const SourceImportKind = z.enum(SOURCE_IMPORT_KIND_VALUES);\nexport type SourceImportKind = z.infer<typeof SourceImportKind>;\n\nexport const SOURCE_IMPORT_STATUS_VALUES = ['validating', 'ready', 'committing', 'done', 'failed'] as const;\nexport const SourceImportStatus = z.enum(SOURCE_IMPORT_STATUS_VALUES);\nexport type SourceImportStatus = z.infer<typeof SourceImportStatus>;\n\nexport const COLLECTOR_TYPE_VALUES = ['scraper', 'scout', 'analyst', 'agent'] as const;\nexport const CollectorType = z.enum(COLLECTOR_TYPE_VALUES);\nexport type CollectorType = z.infer<typeof CollectorType>;\n\nexport const SCRAPER_STATUS_VALUES = ['deploying', 'running', 'degraded', 'stopped', 'failed'] as const;\nexport const ScraperStatus = z.enum(SCRAPER_STATUS_VALUES);\nexport type ScraperStatus = z.infer<typeof ScraperStatus>;\n\nexport const DEPLOYMENT_KIND_VALUES = ['org_droplet', 'scraper'] as const;\nexport const DeploymentKind = z.enum(DEPLOYMENT_KIND_VALUES);\nexport type DeploymentKind = z.infer<typeof DeploymentKind>;\n\nexport const DEPLOYMENT_STATUS_VALUES = ['queued', 'running', 'succeeded', 'failed'] as const;\nexport const DeploymentStatus = z.enum(DEPLOYMENT_STATUS_VALUES);\nexport type DeploymentStatus = z.infer<typeof DeploymentStatus>;\n\nexport const DATABASE_STATUS_VALUES = ['provisioning', 'active', 'error'] as const;\nexport const DatabaseStatus = z.enum(DATABASE_STATUS_VALUES);\nexport type DatabaseStatus = z.infer<typeof DatabaseStatus>;\n\n/**\n * Logical collections that live inside an organization's Database (the data\n * the org collects). More kinds will be added over time.\n */\nexport const DATABASE_COLLECTION_VALUES = ['sources', 'dataItems'] as const;\nexport const DatabaseCollection = z.enum(DATABASE_COLLECTION_VALUES);\nexport type DatabaseCollection = z.infer<typeof DatabaseCollection>;\n\n// ---------------------------------------------------------------------------\n// Badger Agent runtime (agent-service)\n// ---------------------------------------------------------------------------\n\n/** A session works one assignment: discovery finds sources, monitor collects from them. */\nexport const AGENT_SESSION_MODE_VALUES = ['discovery', 'monitor'] as const;\nexport const AgentSessionMode = z.enum(AGENT_SESSION_MODE_VALUES);\nexport type AgentSessionMode = z.infer<typeof AgentSessionMode>;\n\nexport const AGENT_SESSION_STATUS_VALUES = ['active', 'paused', 'ended'] as const;\nexport const AgentSessionStatus = z.enum(AGENT_SESSION_STATUS_VALUES);\nexport type AgentSessionStatus = z.infer<typeof AgentSessionStatus>;\n\nexport const AGENT_MESSAGE_ROLE_VALUES = ['agent', 'person', 'system'] as const;\nexport const AgentMessageRole = z.enum(AGENT_MESSAGE_ROLE_VALUES);\nexport type AgentMessageRole = z.infer<typeof AgentMessageRole>;\n\nexport const AGENT_MESSAGE_KIND_VALUES = ['say', 'instruction', 'result', 'question', 'error'] as const;\nexport const AgentMessageKind = z.enum(AGENT_MESSAGE_KIND_VALUES);\nexport type AgentMessageKind = z.infer<typeof AgentMessageKind>;\n\nexport const AGENT_CARD_KIND_VALUES = [\n 'open_link',\n 'capture_prompt',\n 'source_result',\n 'item_result',\n 'quick_replies',\n 'hours_proposal',\n 'capture_thumb',\n] as const;\nexport const AgentCardKind = z.enum(AGENT_CARD_KIND_VALUES);\nexport type AgentCardKind = z.infer<typeof AgentCardKind>;\n\n/** What happened to a candidate source after the agent checked it (shown to the person). */\nexport const AGENT_SOURCE_OUTCOME_VALUES = [\n 'to_scraper',\n 'waiting_for_scraper',\n 'to_monitor',\n 'known',\n 'dropped',\n 'access_problem',\n] as const;\nexport const AgentSourceOutcome = z.enum(AGENT_SOURCE_OUTCOME_VALUES);\nexport type AgentSourceOutcome = z.infer<typeof AgentSourceOutcome>;\n\nexport const CAPTURE_STATUS_VALUES = ['uploaded', 'analyzing', 'analyzed', 'failed', 'expired'] as const;\nexport const CaptureStatus = z.enum(CAPTURE_STATUS_VALUES);\nexport type CaptureStatus = z.infer<typeof CaptureStatus>;\n\n/** How an hours log was made: entered by the person, or worked out from their capture times. */\nexport const HOURS_LOG_SOURCE_VALUES = ['manual', 'inferred'] as const;\nexport const HoursLogSource = z.enum(HOURS_LOG_SOURCE_VALUES);\nexport type HoursLogSource = z.infer<typeof HoursLogSource>;\n\n/** Whether the read-only DOM text snapshot accompanied the screenshot. */\nexport const CAPTURE_DOM_STATUS_VALUES = ['ok', 'unavailable', 'truncated'] as const;\nexport const CaptureDomStatus = z.enum(CAPTURE_DOM_STATUS_VALUES);\nexport type CaptureDomStatus = z.infer<typeof CaptureDomStatus>;\n\nexport const LLM_CAPABILITY_VALUES = ['plan', 'vision_extract', 'judge', 'chat'] as const;\nexport const LlmCapability = z.enum(LLM_CAPABILITY_VALUES);\nexport type LlmCapability = z.infer<typeof LlmCapability>;\n\nexport const LLM_PROVIDER_VALUES = ['gemini', 'anthropic', 'openai'] as const;\nexport const LlmProvider = z.enum(LLM_PROVIDER_VALUES);\nexport type LlmProvider = z.infer<typeof LlmProvider>;\n\nexport const LLM_OUTCOME_VALUES = [\n 'ok',\n 'invalid_output',\n 'timeout',\n 'rate_limited',\n 'server_error',\n 'safety_block',\n 'budget_exceeded',\n 'breaker_open',\n 'auth_error',\n] as const;\nexport const LlmOutcome = z.enum(LLM_OUTCOME_VALUES);\nexport type LlmOutcome = z.infer<typeof LlmOutcome>;\n\n/** Result of `POST /internal/sources/intake` for one candidate. */\nexport const SOURCE_INTAKE_OUTCOME_VALUES = ['created', 'known', 'invalid'] as const;\nexport const SourceIntakeOutcome = z.enum(SOURCE_INTAKE_OUTCOME_VALUES);\nexport type SourceIntakeOutcome = z.infer<typeof SourceIntakeOutcome>;\n\n/** Mongo collection names, camelCase plurals. */\nexport const COLLECTIONS = {\n databases: 'databases',\n missions: 'missions',\n tasks: 'tasks',\n assignments: 'assignments',\n hoursLogs: 'hoursLogs',\n scoutProfiles: 'scoutProfiles',\n analystProfiles: 'analystProfiles',\n orgSettings: 'orgSettings',\n scoutRatings: 'scoutRatings',\n assigneeLoads: 'assigneeLoads',\n sources: 'sources',\n sourceImports: 'sourceImports',\n dataItems: 'dataItems',\n scrapers: 'scrapers',\n scraperMetrics: 'scraperMetrics',\n deployments: 'deployments',\n auditLogs: 'auditLogs',\n agentSessions: 'agentSessions',\n agentMessages: 'agentMessages',\n captures: 'captures',\n llmCalls: 'llmCalls',\n} as const;\nexport type CollectionName = (typeof COLLECTIONS)[keyof typeof COLLECTIONS];\n","import { z } from 'zod';\nimport type { MissionPriority, SourceStatus } from './enums';\n\nconst HOUR_MS = 3_600_000;\n\n/** Bounds of a source's visit interval, whatever the urgency. */\nexport const VISIT_INTERVAL_MIN_MS = 1 * HOUR_MS;\nexport const VISIT_INTERVAL_MAX_MS = 72 * HOUR_MS;\n\n/**\n * How current urgency scales a source's base visit interval. Applied when the due time is\n * read, not when the visit is recorded, so raising a mission's priority or switching a task\n * to emergency brings every source's next visit forward at once. Factors multiply.\n */\nexport const URGENCY_FACTOR = {\n emergency: 0.5,\n missionPriority: { critical: 0.5, high: 0.75, medium: 1, low: 1.5 } satisfies Record<MissionPriority, number>,\n} as const;\n\nexport type SourceScheduleFields = {\n status?: SourceStatus;\n lastCollectedAt?: Date | null;\n nextVisitAt?: Date | null;\n /** The activity-based wait set by the last visit, before urgency. */\n visitIntervalMs?: number | null;\n};\n\nexport type ScheduleUrgency = { emergency: boolean; missionPriority?: MissionPriority | undefined };\n\nexport const OverdueLevelSchema = z.enum(['none', 'late', 'missed']);\nexport type OverdueLevel = z.infer<typeof OverdueLevelSchema>;\n\n/**\n * The stored interval, else the gap of the last schedule. That gap was written under the\n * urgency of its visit (sources scheduled before `visitIntervalMs` existed), so it is already\n * scaled and must not be scaled again.\n */\nfunction knownInterval(source: SourceScheduleFields): { ms: number; urgencyApplied: boolean } | undefined {\n if (source.visitIntervalMs) return { ms: source.visitIntervalMs, urgencyApplied: false };\n if (source.lastCollectedAt && source.nextVisitAt) {\n const derived = source.nextVisitAt.getTime() - source.lastCollectedAt.getTime();\n if (derived > 0) return { ms: derived, urgencyApplied: true };\n }\n return undefined;\n}\n\n/**\n * The source's last known interval: stored, else derived from its last schedule, else none.\n * A derived interval already includes the urgency of its visit; use `effectiveInterval` for\n * the interval under current urgency.\n */\nexport function baseVisitInterval(source: SourceScheduleFields): number | undefined {\n return knownInterval(source)?.ms;\n}\n\nexport function urgencyFactor(urgency: ScheduleUrgency): number {\n const priority = urgency.missionPriority ? URGENCY_FACTOR.missionPriority[urgency.missionPriority] : 1;\n return (urgency.emergency ? URGENCY_FACTOR.emergency : 1) * priority;\n}\n\nexport function clampInterval(ms: number): number {\n return Math.min(Math.max(ms, VISIT_INTERVAL_MIN_MS), VISIT_INTERVAL_MAX_MS);\n}\n\n/**\n * The source's visit interval under current urgency, clamped; `undefined` when unknown. A\n * derived interval (no `visitIntervalMs`) is used as it was scheduled, not scaled again.\n */\nexport function effectiveInterval(source: SourceScheduleFields, urgency: ScheduleUrgency): number | undefined {\n const known = knownInterval(source);\n if (!known) return undefined;\n return clampInterval(known.urgencyApplied ? known.ms : known.ms * urgencyFactor(urgency));\n}\n\n/**\n * When the source should be captured again, under the urgency as it is now. `undefined` for a\n * source parked on an access problem (an analyst reviews it); `now` when it was never visited.\n */\nexport function effectiveDueAt(\n source: SourceScheduleFields,\n urgency: ScheduleUrgency,\n now: Date = new Date(),\n): Date | undefined {\n if (source.status === 'access_problem') return undefined;\n if (!source.lastCollectedAt) return now;\n const interval = effectiveInterval(source, urgency);\n if (interval === undefined) return source.nextVisitAt ?? now;\n return new Date(source.lastCollectedAt.getTime() + interval);\n}\n\n/**\n * How late a due source is: `late` once past due, `missed` when more than one full interval\n * (under current urgency) has gone by since it was due.\n */\nexport function overdueLevel(\n dueAt: Date | undefined,\n intervalMs: number | undefined,\n now: Date = new Date(),\n): OverdueLevel {\n if (!dueAt) return 'none';\n const lateMs = now.getTime() - dueAt.getTime();\n if (lateMs <= 0) return 'none';\n return intervalMs !== undefined && lateMs > intervalMs ? 'missed' : 'late';\n}\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { DATABASE_COLLECTION_VALUES, DatabaseCollection, DatabaseStatus } from '../enums';\n\n/** MongoDB database-name rules: 1..63 chars, none of `/\\. \"$*<>:|?`. */\nexport const DatabaseName = z\n .string()\n .min(1)\n .max(63)\n .regex(/^[^/\\\\. \"$*<>:|?]+$/, 'Invalid MongoDB database name');\nexport type DatabaseName = z.infer<typeof DatabaseName>;\n\n/** A MongoDB connection string (`mongodb://` or `mongodb+srv://`). */\nexport const ConnectionString = z\n .string()\n .min(1)\n .regex(/^mongodb(\\+srv)?:\\/\\/\\S+$/, 'Expected a mongodb:// or mongodb+srv:// URI');\nexport type ConnectionString = z.infer<typeof ConnectionString>;\n\n/**\n * A physical per-organization data store. Reserved for the time when an org's\n * collected data (`sources`, `dataItems`, …) is split out of the shared service\n * database: it then holds the connection string of that Mongo database.\n *\n * Today no Database records exist: all orgs share the service database and\n * rows are partitioned by `databaseId` (= the org id) and `orgId`.\n */\nexport const DatabaseSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n /** Name of the Mongo database on the cluster. */\n name: DatabaseName,\n connectionString: ConnectionString,\n /** Logical collections available under this database. */\n collections: z.array(DatabaseCollection).default([...DATABASE_COLLECTION_VALUES]),\n status: DatabaseStatus.default('active'),\n createdBy: ClerkUserId,\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const DatabaseCreateSchema = DatabaseSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n createdBy: true,\n});\n\nexport const DatabaseUpdateSchema = DatabaseCreateSchema.partial();\n\nexport type Database = z.infer<typeof DatabaseSchema>;\nexport type DatabaseCreate = z.infer<typeof DatabaseCreateSchema>;\nexport type DatabaseCreateInput = z.input<typeof DatabaseCreateSchema>;\nexport type DatabaseUpdate = z.infer<typeof DatabaseUpdateSchema>;\n","import { z } from 'zod';\nimport { LanguageCode } from '../common';\nimport { Platform, RegionMode } from '../enums';\n\n/** Time window a task should be covered. `end` must be after `start`. */\nexport const CoverageWindowSchema = z\n .object({\n start: z.coerce.date(),\n end: z.coerce.date(),\n })\n .refine((w) => w.end.getTime() > w.start.getTime(), {\n message: 'coverageWindow.end must be after coverageWindow.start',\n path: ['end'],\n });\nexport type CoverageWindow = z.infer<typeof CoverageWindowSchema>;\n\n/** Drives scout/analyst matching. Embedded in Mission (as defaults) and Task. */\nexport const TaskCriteriaSchema = z.object({\n languages: z.array(LanguageCode),\n platforms: z.array(Platform),\n regions: z.array(z.string().min(1)),\n regionMode: RegionMode,\n profession: z.string().min(1).optional(),\n coverageWindow: CoverageWindowSchema.optional(),\n emergency: z.boolean().default(false),\n});\nexport type TaskCriteria = z.infer<typeof TaskCriteriaSchema>;\nexport type TaskCriteriaInput = z.input<typeof TaskCriteriaSchema>;\n","import { z } from 'zod';\nimport { ObjectIdString } from '../common';\nimport { AccessIssue, CaptureWindowMode, Platform } from '../enums';\n\nexport const MAX_CAPTURE_WINDOW_DAYS = 90;\n/** At most this many sources are attached to one Monitor task (a batch one person works through). */\nexport const MONITOR_TASK_MAX_SOURCES = 20;\nconst DAY_MS = 24 * 60 * 60 * 1000;\n\n/** True for an absolute `http:` / `https:` URL. Anything else (`javascript:`, `data:`, `file:`, `chrome:`) is not a source. */\nexport function isHttpUrl(value: string): boolean {\n try {\n const { protocol } = new URL(value);\n return protocol === 'http:' || protocol === 'https:';\n } catch {\n return false;\n }\n}\n\n/** A point in time: a `Date` (from Mongo) or an ISO 8601 string with an explicit offset (`Z` or `+03:00`). */\nconst WindowDate = z.union([z.date(), z.string().datetime({ offset: true })]).pipe(z.coerce.date());\n\n/**\n * The one source a task points at. A Monitor task has this or attached sources\n * (`Source.taskIds`, at most `MONITOR_TASK_MAX_SOURCES`); optional on Discovery tasks\n * (search inside this source). `sourceId` is set when the\n * source is already in `sources`; a pasted URL may not be.\n */\nexport const TaskTargetSchema = z.object({\n sourceId: ObjectIdString.optional(),\n platform: Platform,\n url: z.string().url().refine(isHttpUrl, 'Expected an http(s) URL'),\n label: z.string().min(1).max(200).optional(),\n /** Why a person collects it instead of a scraper. */\n accessIssue: AccessIssue.optional(),\n note: z.string().max(500).optional(),\n});\nexport type TaskTarget = z.infer<typeof TaskTargetSchema>;\n\nconst LastDaysWindowSchema = z.object({\n mode: z.literal(CaptureWindowMode.enum.last_days),\n days: z.number().int().min(1).max(MAX_CAPTURE_WINDOW_DAYS),\n});\n\nconst RangeWindowSchema = z.object({\n mode: z.literal(CaptureWindowMode.enum.range),\n start: WindowDate,\n end: WindowDate,\n});\n\n/**\n * What a Monitor task should capture. `last_days` is counted back from when the person\n * starts working the task; `range` is fixed: `[start, end)`, `end` exclusive and after `start`,\n * at most `MAX_CAPTURE_WINDOW_DAYS` long.\n */\nexport const CaptureWindowSchema = z\n .discriminatedUnion('mode', [LastDaysWindowSchema, RangeWindowSchema])\n .superRefine((w, ctx) => {\n // Runs even when a date failed to parse; leave those to the field's own issue.\n if (w.mode !== 'range' || !(w.start instanceof Date) || !(w.end instanceof Date)) return;\n if (w.end.getTime() <= w.start.getTime()) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'captureWindow.end must be after captureWindow.start',\n path: ['end'],\n });\n } else if (w.end.getTime() - w.start.getTime() > MAX_CAPTURE_WINDOW_DAYS * DAY_MS) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `captureWindow range must be at most ${MAX_CAPTURE_WINDOW_DAYS} days`,\n path: ['end'],\n });\n }\n });\nexport type CaptureWindow = z.infer<typeof CaptureWindowSchema>;\nexport type CaptureWindowInput = z.input<typeof CaptureWindowSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { MissionPriority, MissionStatus } from '../enums';\nimport { TaskCriteriaSchema } from './task-criteria';\n\n/** A Mission is a priority (PIR) in plain words. Top-level unit of work. */\nexport const MissionSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n title: z.string().min(1).max(200),\n description: z.string(),\n priority: MissionPriority,\n status: MissionStatus.default('draft'),\n /** Copied into auto-created tasks. */\n defaultCriteria: TaskCriteriaSchema,\n /** Seeds the discovery task. */\n keywords: z.array(z.string().min(1)).default([]),\n targetDate: z.coerce.date().optional(),\n createdBy: ClerkUserId,\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const MissionCreateSchema = MissionSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n createdBy: true,\n});\n\nexport const MissionUpdateSchema = MissionCreateSchema.partial();\n\nexport type Mission = z.infer<typeof MissionSchema>;\nexport type MissionCreate = z.infer<typeof MissionCreateSchema>;\nexport type MissionCreateInput = z.input<typeof MissionCreateSchema>;\nexport type MissionUpdate = z.infer<typeof MissionUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { TaskKind, TaskOrigin, TaskStatus } from '../enums';\nimport { TaskCriteriaSchema } from './task-criteria';\nimport { CaptureWindowSchema, TaskTargetSchema } from './task-target';\n\n/** A unit of work under a Mission; assigned to one scout or analyst. */\nexport const TaskSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n missionId: ObjectIdString,\n kind: TaskKind,\n /** `auto` = created together with the mission. */\n origin: TaskOrigin,\n title: z.string().min(1).max(200),\n description: z.string(),\n keywords: z.array(z.string().min(1)).default([]),\n searchQueries: z.array(z.string().min(1)).default([]),\n criteria: TaskCriteriaSchema,\n /** Monitor: the one source to collect. Discovery: optional source to search inside. */\n target: TaskTargetSchema.optional(),\n /** Monitor: what to capture (last N days, or a fixed range). */\n captureWindow: CaptureWindowSchema.optional(),\n status: TaskStatus.default('draft'),\n approvedBy: ClerkUserId.optional(),\n approvedAt: z.coerce.date().optional(),\n /** Set only when an Admin or Analyst marks the task done. */\n doneBy: ClerkUserId.optional(),\n doneAt: z.coerce.date().optional(),\n /** +1 on every edit. */\n version: z.number().int().min(1).default(1),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const TaskCreateSchema = TaskSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n approvedBy: true,\n approvedAt: true,\n doneBy: true,\n doneAt: true,\n version: true,\n});\n\nexport const TaskUpdateSchema = TaskCreateSchema.partial();\n\nexport type Task = z.infer<typeof TaskSchema>;\nexport type TaskCreate = z.infer<typeof TaskCreateSchema>;\nexport type TaskCreateInput = z.input<typeof TaskCreateSchema>;\nexport type TaskUpdate = z.infer<typeof TaskUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { AssigneeType, AssignmentSource, AssignmentStatus } from '../enums';\n\n/**\n * A match: one Task -> one scout OR one analyst. A task may hold many active\n * assignments; a person may hold many, up to their `taskLimit`, but never\n * two active ones on the same task.\n */\nexport const AssignmentSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n taskId: ObjectIdString,\n assigneeType: AssigneeType,\n assigneeUserId: ClerkUserId,\n /** `completed` only when the task is marked done; `revoked` when taken off. */\n status: AssignmentStatus.default('active'),\n score: z.number().optional(),\n scoreBreakdown: z.record(z.string(), z.number()).optional(),\n source: AssignmentSource,\n assignedBy: ClerkUserId,\n activatedAt: z.coerce.date(),\n endedAt: z.coerce.date().optional(),\n /** Set with `status: 'revoked'`. */\n revokedBy: ClerkUserId.optional(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const AssignmentCreateSchema = AssignmentSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n assignedBy: true,\n activatedAt: true,\n endedAt: true,\n revokedBy: true,\n});\n\nexport const AssignmentUpdateSchema = AssignmentCreateSchema.partial();\n\nexport type Assignment = z.infer<typeof AssignmentSchema>;\nexport type AssignmentCreate = z.infer<typeof AssignmentCreateSchema>;\nexport type AssignmentCreateInput = z.input<typeof AssignmentCreateSchema>;\nexport type AssignmentUpdate = z.infer<typeof AssignmentUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { HoursLogSource } from '../enums';\n\n/**\n * Scout hours. `manual` rows were confirmed by the person; `inferred` rows are worked out by\n * agent-service from their capture times, one row per person + assignment + day.\n */\nexport const HoursLogSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n taskId: ObjectIdString,\n scoutUserId: ClerkUserId,\n minutes: z.number().int().positive(),\n note: z.string(),\n date: z.coerce.date(),\n assignmentId: ObjectIdString.optional(),\n source: HoursLogSource.optional(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const HoursLogCreateSchema = HoursLogSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n scoutUserId: true,\n});\n\nexport const HoursLogUpdateSchema = HoursLogCreateSchema.partial();\n\nexport type HoursLog = z.infer<typeof HoursLogSchema>;\nexport type HoursLogCreate = z.infer<typeof HoursLogCreateSchema>;\nexport type HoursLogUpdate = z.infer<typeof HoursLogUpdateSchema>;\n","import { z } from 'zod';\nimport { HHmm, LanguageCode } from '../common';\nimport { Platform } from '../enums';\n\n/**\n * Fragments shared by `ScoutProfile` and `AnalystProfile`: the data the\n * matching engine reads. Identity lives in Clerk; these hold skills only.\n */\n\nexport const AvailabilityWindowSchema = z.object({\n /** 0 = Sunday … 6 = Saturday, in the profile's `timezone`. */\n day: z.union([\n z.literal(0),\n z.literal(1),\n z.literal(2),\n z.literal(3),\n z.literal(4),\n z.literal(5),\n z.literal(6),\n ]),\n start: HHmm,\n end: HHmm,\n});\nexport type AvailabilityWindow = z.infer<typeof AvailabilityWindowSchema>;\n\n/** Privileged access to a platform (closed groups, aged accounts…): an edge in matching. */\nexport const SpecialAccessSchema = z.object({\n platform: Platform,\n note: z.string().min(1).max(500),\n});\nexport type SpecialAccess = z.infer<typeof SpecialAccessSchema>;\n\nexport const PlatformAccessSchema = z.object({\n /** `true` = can work on every platform; `platforms` is then ignored. */\n all: z.boolean().default(false),\n platforms: z.array(Platform).default([]),\n special: z.array(SpecialAccessSchema).default([]),\n});\nexport type PlatformAccess = z.infer<typeof PlatformAccessSchema>;\nexport type PlatformAccessInput = z.input<typeof PlatformAccessSchema>;\n\n/** IANA time zone name, e.g. `Asia/Jerusalem`. */\nexport const TimeZone = z.string().min(1).max(64);\n\n/** Fields every matchable person has. */\nexport const MatchingFieldsSchema = z.object({\n languages: z.array(LanguageCode).default([]),\n /** ISO 3166 codes or named regions. */\n regions: z.array(z.string().min(1)).default([]),\n timezone: TimeZone,\n availability: z.array(AvailabilityWindowSchema).default([]),\n platformAccess: PlatformAccessSchema.default({}),\n profession: z.string().min(1).max(120).optional(),\n /** Max active assignments. Absent = the scope's default. */\n taskLimit: z.number().int().positive().max(100).optional(),\n});\nexport type MatchingFields = z.infer<typeof MatchingFieldsSchema>;\n","import { z } from 'zod';\nimport { ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { ScoutStatus, TaskKind, VettingStatus } from '../enums';\nimport { MatchingFieldsSchema } from './matching';\n\n/** Global default for `taskLimit` when a scout profile does not set one. */\nexport const DEFAULT_SCOUT_TASK_LIMIT = 3;\n\n/** Lower-cased e-mail, mirrored from the Clerk primary address. */\nexport const Email = z.string().trim().toLowerCase().email().max(254);\n\n/** System's note used by matching. `updatedBy` / `updatedAt` are set by the server. */\nexport const SystemRecommendationSchema = z.object({\n /** Task kinds this scout is recommended for. */\n taskKinds: z.array(TaskKind).default([]),\n /** Free tags, e.g. `arabic-slang`, `telegram-closed-groups`. */\n tags: z.array(z.string().min(1).max(60)).default([]),\n note: z.string().max(2000).default(''),\n updatedBy: ClerkUserId,\n updatedAt: z.coerce.date(),\n});\nexport type SystemRecommendation = z.infer<typeof SystemRecommendationSchema>;\n\n/** What a System user sends; the server stamps `updatedBy` / `updatedAt`. */\nexport const SystemRecommendationInputSchema = SystemRecommendationSchema.omit({\n updatedBy: true,\n updatedAt: true,\n});\nexport type SystemRecommendationInput = z.input<typeof SystemRecommendationInputSchema>;\n\n/** Denormalized from `scoutRatings`; the global average across all orgs. */\nexport const RatingSummarySchema = z.object({\n avg: z.number().min(0).max(5).nullable().default(null),\n count: z.number().int().min(0).default(0),\n});\nexport type RatingSummary = z.infer<typeof RatingSummarySchema>;\n\n/**\n * Domain profile for a scout. Global (not org-scoped): scouts are a shared\n * pool and can be assigned to tasks in any organization. Identity lives in\n * Clerk; `userId` is the Clerk user id and `email` mirrors its primary email.\n */\nexport const ScoutProfileSchema = z\n .object({\n _id: ObjectIdString,\n userId: ClerkUserId,\n /** System-only in API responses. */\n email: Email,\n /**\n * Legal / real name. System- and self-only: never shown to organizations,\n * which only see `displayName`. Mirrored to the Clerk first/last name.\n * Optional for profiles created before the field existed.\n */\n fullName: z.string().min(1).max(120).optional(),\n /** Public alias organizations see; may differ from `fullName` for privacy. */\n displayName: z.string().min(1).max(120),\n /** `disabled` = Clerk user locked; never a candidate. */\n status: ScoutStatus.default('active'),\n /** Only `approved` scouts are candidates. */\n vettingStatus: VettingStatus.default('pending'),\n /** System-only. */\n hourlyRateUsd: z.number().nonnegative().optional(),\n systemRecommendation: SystemRecommendationSchema.optional(),\n ratingSummary: RatingSummarySchema.default({}),\n })\n .merge(MatchingFieldsSchema)\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\n/** Fields a System user supplies when creating a scout (identity + profile). */\nexport const ScoutProfileCreateSchema = ScoutProfileSchema.omit({\n _id: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n userId: true,\n status: true,\n ratingSummary: true,\n systemRecommendation: true,\n}).extend({\n /** Required when creating; the Clerk user name is derived from it. */\n fullName: z.string().min(1).max(120),\n systemRecommendation: SystemRecommendationInputSchema.optional(),\n});\n\nexport const ScoutProfileUpdateSchema = ScoutProfileCreateSchema.partial();\n\n/** What a scout may change about themselves (`PATCH /me/scout`). */\nexport const ScoutSelfUpdateSchema = ScoutProfileSchema.pick({\n fullName: true,\n displayName: true,\n timezone: true,\n availability: true,\n}).partial();\n\nexport type ScoutProfile = z.infer<typeof ScoutProfileSchema>;\nexport type ScoutProfileCreate = z.infer<typeof ScoutProfileCreateSchema>;\nexport type ScoutProfileCreateInput = z.input<typeof ScoutProfileCreateSchema>;\nexport type ScoutProfileUpdate = z.infer<typeof ScoutProfileUpdateSchema>;\nexport type ScoutProfileUpdateInput = z.input<typeof ScoutProfileUpdateSchema>;\nexport type ScoutSelfUpdate = z.infer<typeof ScoutSelfUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { MatchingFieldsSchema } from './matching';\n\n/**\n * Matching data for an analyst (a Clerk org member with the analyst role).\n * One per (org, user) membership; identity stays in Clerk. Soft-deleted when\n * the membership is removed or the role changes.\n */\nexport const AnalystProfileSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n userId: ClerkUserId,\n /** Mirror of the Clerk name. */\n displayName: z.string().min(1).max(120),\n })\n .merge(MatchingFieldsSchema)\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\n/** Matching fields an Admin, Analyst or System user may edit. */\nexport const AnalystProfileUpdateSchema = MatchingFieldsSchema.partial();\n\nexport type AnalystProfile = z.infer<typeof AnalystProfileSchema>;\nexport type AnalystProfileUpdate = z.infer<typeof AnalystProfileUpdateSchema>;\nexport type AnalystProfileUpdateInput = z.input<typeof AnalystProfileUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ObjectIdString, TimestampsSchema } from '../common';\nimport { TimeZone } from './matching';\n\n/** Default `taskLimit` for analysts of an org that has not set one. */\nexport const DEFAULT_ANALYST_TASK_LIMIT = 5;\n\n/** Non-auth settings for one Clerk organization (Clerk does not keep these). */\nexport const OrgSettingsSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n defaultAnalystTaskLimit: z.number().int().positive().max(100).default(DEFAULT_ANALYST_TASK_LIMIT),\n timezone: TimeZone.default('UTC'),\n })\n .merge(TimestampsSchema);\n\nexport const OrgSettingsUpdateSchema = OrgSettingsSchema.pick({\n defaultAnalystTaskLimit: true,\n timezone: true,\n}).partial();\n\nexport type OrgSettings = z.infer<typeof OrgSettingsSchema>;\nexport type OrgSettingsUpdate = z.infer<typeof OrgSettingsUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, TimestampsSchema } from '../common';\nimport { RaterType } from '../enums';\n\nexport const MAX_RATING_COMMENT_LENGTH = 1000;\n\nexport const RatingScore = z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]);\nexport type RatingScore = z.infer<typeof RatingScore>;\n\n/**\n * One rating of a scout. Org members rate per assignment (one per rater per\n * assignment; a later rating replaces it). System users may also leave a\n * general rating with no `orgId` / `assignmentId` / `taskId`.\n */\nexport const ScoutRatingSchema = z\n .object({\n _id: ObjectIdString,\n scoutUserId: ClerkUserId,\n /** Absent for a System general rating. */\n orgId: ClerkOrgId.optional(),\n assignmentId: ObjectIdString.optional(),\n taskId: ObjectIdString.optional(),\n raterUserId: ClerkUserId,\n raterType: RaterType,\n score: RatingScore,\n comment: z.string().max(MAX_RATING_COMMENT_LENGTH).optional(),\n })\n .merge(TimestampsSchema);\n\n/** Body of `PUT /assignments/:id/rating` and `POST /system/scouts/:userId/ratings`. */\nexport const ScoutRatingInputSchema = ScoutRatingSchema.pick({ score: true, comment: true });\n\nexport type ScoutRating = z.infer<typeof ScoutRatingSchema>;\nexport type ScoutRatingInput = z.infer<typeof ScoutRatingInputSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, TimestampsSchema } from '../common';\n\n/** Scouts count across orgs (`'global'`); analysts count per org (`orgId`). */\nexport const GLOBAL_LOAD_SCOPE = 'global' as const;\nexport const LoadScope = z.union([z.literal(GLOBAL_LOAD_SCOPE), ClerkOrgId]);\nexport type LoadScope = z.infer<typeof LoadScope>;\n\n/**\n * Atomic counter of a person's active assignments, used to enforce\n * `taskLimit` under concurrency with a conditional `$inc` (`active < limit`).\n */\nexport const AssigneeLoadSchema = z\n .object({\n _id: ObjectIdString,\n userId: ClerkUserId,\n scope: LoadScope,\n active: z.number().int().min(0).default(0),\n })\n .merge(TimestampsSchema);\n\nexport type AssigneeLoad = z.infer<typeof AssigneeLoadSchema>;\n","import { z } from 'zod';\nimport {\n ClerkOrgId,\n ClerkUserId,\n DatabaseId,\n LanguageCode,\n ObjectIdString,\n SoftDeleteSchema,\n TimestampsSchema,\n} from '../common';\nimport { DiscoveredByType, Platform, SourceAccess, SourceRoute, SourceStatus, SourceType } from '../enums';\n\nexport const SourceRatingSchema = z.object({\n relevance: z.number().min(0).max(5),\n reliability: z.number().min(0).max(5),\n language: LanguageCode.optional(),\n});\nexport type SourceRating = z.infer<typeof SourceRatingSchema>;\n\nexport const DiscoveredBySchema = z.object({\n type: DiscoveredByType,\n userId: ClerkUserId.optional(),\n importId: ObjectIdString.optional(),\n});\nexport type DiscoveredBy = z.infer<typeof DiscoveredBySchema>;\n\n/**\n * A place to collect from. `(orgId, platform, url)` is unique. Lives in the\n * org's logical Database: `databaseId` is set by the server, never by clients.\n */\nexport const SourceSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n databaseId: DatabaseId,\n missionIds: z.array(ObjectIdString).default([]),\n taskIds: z.array(ObjectIdString).default([]),\n platform: Platform,\n url: z.string().url(),\n handle: z.string().min(1).optional(),\n type: SourceType,\n access: SourceAccess,\n route: SourceRoute,\n scraperId: ObjectIdString.optional(),\n rating: SourceRatingSchema.optional(),\n tags: z.array(z.string().min(1)).default([]),\n status: SourceStatus.default('active'),\n discoveredBy: DiscoveredBySchema,\n lastCollectedAt: z.coerce.date().optional(),\n nextVisitAt: z.coerce.date().optional(),\n /** Activity-based wait set by the last visit, before current urgency (see `effectiveDueAt`). */\n visitIntervalMs: z.number().int().positive().optional(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const SourceCreateSchema = SourceSchema.omit({\n _id: true,\n orgId: true,\n databaseId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n discoveredBy: true,\n lastCollectedAt: true,\n visitIntervalMs: true,\n});\n\nexport const SourceUpdateSchema = SourceCreateSchema.partial();\n\nexport type Source = z.infer<typeof SourceSchema>;\nexport type SourceCreate = z.infer<typeof SourceCreateSchema>;\nexport type SourceCreateInput = z.input<typeof SourceCreateSchema>;\nexport type SourceUpdate = z.infer<typeof SourceUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { SourceImportKind, SourceImportStatus } from '../enums';\n\nexport const MAX_SOURCE_IMPORT_ROW_ERRORS = 500;\n\nexport const SourceImportSummarySchema = z.object({\n toCreate: z.number().int().nonnegative().default(0),\n toUpdate: z.number().int().nonnegative().default(0),\n duplicates: z.number().int().nonnegative().default(0),\n invalid: z.number().int().nonnegative().default(0),\n});\nexport type SourceImportSummary = z.infer<typeof SourceImportSummarySchema>;\n\nexport const SourceImportRowErrorSchema = z.object({\n row: z.number().int().nonnegative(),\n field: z.string(),\n message: z.string(),\n});\nexport type SourceImportRowError = z.infer<typeof SourceImportRowErrorSchema>;\n\n/** Batch upload (create) or batch update job for sources. */\nexport const SourceImportSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n kind: SourceImportKind,\n fileName: z.string().min(1),\n rowCount: z.number().int().nonnegative(),\n status: SourceImportStatus.default('validating'),\n summary: SourceImportSummarySchema.default({}),\n rowErrors: z.array(SourceImportRowErrorSchema).max(MAX_SOURCE_IMPORT_ROW_ERRORS).default([]),\n createdBy: ClerkUserId,\n committedAt: z.coerce.date().optional(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const SourceImportCreateSchema = SourceImportSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n status: true,\n summary: true,\n rowErrors: true,\n createdBy: true,\n committedAt: true,\n});\n\nexport const SourceImportUpdateSchema = SourceImportCreateSchema.partial();\n\nexport type SourceImport = z.infer<typeof SourceImportSchema>;\nexport type SourceImportCreate = z.infer<typeof SourceImportCreateSchema>;\nexport type SourceImportUpdate = z.infer<typeof SourceImportUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, DatabaseId, LanguageCode, ObjectIdString, TimestampsSchema } from '../common';\nimport { CollectorType, Platform } from '../enums';\n\nexport const CollectorSchema = z.object({\n type: CollectorType,\n /** Scraper ObjectId string, Clerk user id, or agent id. */\n id: z.string().min(1),\n});\nexport type Collector = z.infer<typeof CollectorSchema>;\n\nexport const DataItemContentSchema = z.object({\n text: z.string().optional(),\n lang: LanguageCode.optional(),\n mediaUrls: z.array(z.string().url()).optional(),\n transcript: z.string().optional(),\n});\nexport type DataItemContent = z.infer<typeof DataItemContentSchema>;\n\nexport const DataItemEntitySchema = z.object({\n type: z.string().min(1),\n value: z.string().min(1),\n});\nexport type DataItemEntity = z.infer<typeof DataItemEntitySchema>;\n\nexport const GeoSchema = z.object({\n lat: z.number().min(-90).max(90),\n lng: z.number().min(-180).max(180),\n place: z.string().optional(),\n});\nexport type Geo = z.infer<typeof GeoSchema>;\n\n/**\n * Collected content. Large, append-mostly, no soft delete. Lives in the org's\n * logical Database: `databaseId` is set by the server, never by clients.\n */\nexport const DataItemSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n databaseId: DatabaseId,\n sourceId: ObjectIdString,\n missionIds: z.array(ObjectIdString).default([]),\n taskId: ObjectIdString.optional(),\n platform: Platform,\n collectedAt: z.coerce.date(),\n publishedAt: z.coerce.date().optional(),\n collector: CollectorSchema,\n content: DataItemContentSchema,\n entities: z.array(DataItemEntitySchema).optional(),\n geo: GeoSchema.optional(),\n priorityFlag: z.boolean().optional(),\n /**\n * SHA-256 (hex) of normalised text + publication time bucket, set by\n * collectors that may see the same post twice (agent sessions). Unique per\n * source when present.\n */\n contentHash: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .optional(),\n })\n .merge(TimestampsSchema);\n\nexport const DataItemCreateSchema = DataItemSchema.omit({\n _id: true,\n orgId: true,\n databaseId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport const DataItemUpdateSchema = DataItemCreateSchema.partial();\n\nexport type DataItem = z.infer<typeof DataItemSchema>;\nexport type DataItemCreate = z.infer<typeof DataItemCreateSchema>;\nexport type DataItemCreateInput = z.input<typeof DataItemCreateSchema>;\nexport type DataItemUpdate = z.infer<typeof DataItemUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { Platform, ScraperStatus } from '../enums';\n\nexport const ScraperSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n platform: Platform,\n name: z.string().min(1).max(120),\n /** e.g. 100 Telegram sources. */\n sourceLimit: z.number().int().positive(),\n /** Denormalized, updated on assign. */\n sourceCount: z.number().int().nonnegative().default(0),\n status: ScraperStatus.default('deploying'),\n deploymentId: ObjectIdString.optional(),\n version: z.string().min(1),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const ScraperCreateSchema = ScraperSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n sourceCount: true,\n status: true,\n deploymentId: true,\n});\n\nexport const ScraperUpdateSchema = ScraperCreateSchema.partial();\n\nexport type Scraper = z.infer<typeof ScraperSchema>;\nexport type ScraperCreate = z.infer<typeof ScraperCreateSchema>;\nexport type ScraperUpdate = z.infer<typeof ScraperUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ObjectIdString, TimestampsSchema } from '../common';\n\n/** One document per scraper per hour. No soft delete. */\nexport const ScraperMetricSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n scraperId: ObjectIdString,\n /** Start of the hour bucket (UTC). */\n hour: z.coerce.date(),\n itemsCollected: z.number().int().nonnegative(),\n errors: z.number().int().nonnegative(),\n blocked: z.number().int().nonnegative(),\n p95LatencyMs: z.number().nonnegative(),\n })\n .merge(TimestampsSchema);\n\nexport const ScraperMetricCreateSchema = ScraperMetricSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport const ScraperMetricUpdateSchema = ScraperMetricCreateSchema.partial();\n\nexport type ScraperMetric = z.infer<typeof ScraperMetricSchema>;\nexport type ScraperMetricCreate = z.infer<typeof ScraperMetricCreateSchema>;\nexport type ScraperMetricUpdate = z.infer<typeof ScraperMetricUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { DeploymentKind, DeploymentStatus } from '../enums';\n\nexport const DeploymentStepSchema = z.object({\n name: z.string().min(1),\n status: z.string().min(1),\n at: z.coerce.date(),\n log: z.string().optional(),\n});\nexport type DeploymentStep = z.infer<typeof DeploymentStepSchema>;\n\n/** Org provisioning (droplet) and scraper deploy jobs. */\nexport const DeploymentSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n kind: DeploymentKind,\n status: DeploymentStatus.default('queued'),\n steps: z.array(DeploymentStepSchema).default([]),\n requestedBy: ClerkUserId,\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const DeploymentCreateSchema = DeploymentSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n status: true,\n steps: true,\n requestedBy: true,\n});\n\nexport const DeploymentUpdateSchema = DeploymentCreateSchema.partial();\n\nexport type Deployment = z.infer<typeof DeploymentSchema>;\nexport type DeploymentCreate = z.infer<typeof DeploymentCreateSchema>;\nexport type DeploymentUpdate = z.infer<typeof DeploymentUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\n\nexport const AuditTargetSchema = z.object({\n type: z.string().min(1),\n id: z.string().min(1),\n});\nexport type AuditTarget = z.infer<typeof AuditTargetSchema>;\n\n/** Who did what to which document. `orgId` is optional for system-level actions. */\nexport const AuditLogSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId.optional(),\n actorUserId: ClerkUserId,\n actingAsSystem: z.boolean().default(false),\n action: z.string().min(1),\n target: AuditTargetSchema,\n diff: z.unknown().optional(),\n at: z.coerce.date(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const AuditLogCreateSchema = AuditLogSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n actorUserId: true,\n at: true,\n});\n\nexport const AuditLogUpdateSchema = AuditLogCreateSchema.partial();\n\nexport type AuditLog = z.infer<typeof AuditLogSchema>;\nexport type AuditLogCreate = z.infer<typeof AuditLogCreateSchema>;\nexport type AuditLogUpdate = z.infer<typeof AuditLogUpdateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, LanguageCode, ObjectIdString, TimestampsSchema } from '../common';\nimport {\n AgentCardKind,\n AgentMessageKind,\n AgentMessageRole,\n AgentSessionMode,\n AgentSessionStatus,\n AgentSourceOutcome,\n CaptureDomStatus,\n CaptureStatus,\n LlmCapability,\n LlmOutcome,\n LlmProvider,\n Platform,\n} from '../enums';\nimport { CoverageWindowSchema } from './task-criteria';\n\n/**\n * Badger Agent runtime entities, owned by agent-service.\n *\n * A session is one person working one assignment with the agent \"head\".\n * Everything the agent says is an AgentMessage; everything the person shows it\n * is a Capture (screenshot + read-only DOM text). Every model call is an\n * LlmCall. None of these are soft-deleted: captures expire (blob deleted,\n * document marked `expired`), the rest are append-only history.\n */\n\n// ---------------------------------------------------------------------------\n// AgentSession\n// ---------------------------------------------------------------------------\n\nconst count = () => z.number().int().min(0).default(0);\n\nexport const AgentSessionStatsSchema = z.object({\n capturesCount: count(),\n sourcesFound: count(),\n sourcesToScraper: count(),\n sourcesToMonitor: count(),\n sourcesWaiting: count(),\n sourcesKnown: count(),\n sourcesDropped: count(),\n itemsSaved: count(),\n priorityItems: count(),\n sourcesVisited: count(),\n sourcesRemaining: count(),\n});\nexport type AgentSessionStats = z.infer<typeof AgentSessionStatsSchema>;\n\n/** Running LLM spend for the session; compared against the configured caps. */\nexport const AgentSessionBudgetSchema = z.object({\n tokens: count(),\n costUsd: z.number().min(0).default(0),\n});\nexport type AgentSessionBudget = z.infer<typeof AgentSessionBudgetSchema>;\n\nexport const AgentSessionSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n missionId: ObjectIdString,\n taskId: ObjectIdString,\n assignmentId: ObjectIdString,\n userId: ClerkUserId,\n mode: AgentSessionMode,\n status: AgentSessionStatus.default('active'),\n startedAt: z.coerce.date(),\n endedAt: z.coerce.date().optional(),\n /** Last capture / reply / open / stream attach; drives `activeMinutes`. */\n lastActivityAt: z.coerce.date(),\n activeMinutes: count(),\n /** Sequence number of the latest AgentMessage; SSE `Last-Event-ID` resumes from it. */\n lastSeq: count(),\n stats: AgentSessionStatsSchema.default({}),\n budget: AgentSessionBudgetSchema.default({}),\n /** The task's capture window as dates, fixed when the session started (`last_days` counted back from then). */\n captureWindow: CoverageWindowSchema.optional(),\n /** Mode-specific engine state (search plan cursor, monitor queue). Opaque to clients. */\n state: z.unknown().optional(),\n })\n .merge(TimestampsSchema);\n\nexport const AgentSessionCreateSchema = AgentSessionSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\nexport const AgentSessionUpdateSchema = AgentSessionCreateSchema.partial();\n\nexport type AgentSession = z.infer<typeof AgentSessionSchema>;\nexport type AgentSessionCreate = z.infer<typeof AgentSessionCreateSchema>;\nexport type AgentSessionCreateInput = z.input<typeof AgentSessionCreateSchema>;\nexport type AgentSessionUpdate = z.infer<typeof AgentSessionUpdateSchema>;\n\n// ---------------------------------------------------------------------------\n// AgentMessage + cards\n// ---------------------------------------------------------------------------\n\n/** A link the person may open. Nothing opens unless they press the card's button. */\nexport const OpenLinkCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.open_link),\n url: z.string().url(),\n label: z.string().min(1).max(200),\n platform: Platform.optional(),\n});\n\nexport const CapturePromptCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.capture_prompt),\n hint: z.string().min(1).max(300),\n});\n\nexport const SourceResultCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.source_result),\n name: z.string().min(1).max(200),\n platform: Platform,\n url: z.string().url().optional(),\n outcome: AgentSourceOutcome,\n reason: z.string().max(300),\n score: z.number().min(0).max(1).optional(),\n});\n\nexport const ItemResultCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.item_result),\n excerpt: z.string().max(300),\n platform: Platform,\n priority: z.boolean(),\n publishedAt: z.coerce.date().optional(),\n});\n\nexport const QuickReplyOptionSchema = z.object({\n id: z.string().min(1).max(64),\n label: z.string().min(1).max(80),\n});\nexport type QuickReplyOption = z.infer<typeof QuickReplyOptionSchema>;\n\nexport const QuickRepliesCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.quick_replies),\n questionId: z.string().min(1).max(64),\n options: z.array(QuickReplyOptionSchema).min(1).max(6),\n});\n\nexport const HoursProposalCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.hours_proposal),\n minutes: z.number().int().positive(),\n note: z.string().max(500),\n});\n\nexport const CaptureThumbCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.capture_thumb),\n captureId: ObjectIdString,\n});\n\nexport const AgentCardSchema = z.discriminatedUnion('kind', [\n OpenLinkCardSchema,\n CapturePromptCardSchema,\n SourceResultCardSchema,\n ItemResultCardSchema,\n QuickRepliesCardSchema,\n HoursProposalCardSchema,\n CaptureThumbCardSchema,\n]);\nexport type AgentCard = z.infer<typeof AgentCardSchema>;\n\nexport const MAX_AGENT_MESSAGE_TEXT_LENGTH = 4000;\n\nexport const AgentMessageSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n sessionId: ObjectIdString,\n /** Monotonic per session, starting at 1. */\n seq: z.number().int().min(1),\n role: AgentMessageRole,\n kind: AgentMessageKind,\n text: z.string().max(MAX_AGENT_MESSAGE_TEXT_LENGTH),\n cards: z.array(AgentCardSchema).default([]),\n })\n .merge(TimestampsSchema);\n\nexport const AgentMessageCreateSchema = AgentMessageSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport type AgentMessage = z.infer<typeof AgentMessageSchema>;\nexport type AgentMessageCreate = z.infer<typeof AgentMessageCreateSchema>;\nexport type AgentMessageCreateInput = z.input<typeof AgentMessageCreateSchema>;\n\n// ---------------------------------------------------------------------------\n// Capture\n// ---------------------------------------------------------------------------\n\n/** Pointer into the object store; the bytes themselves never live in Mongo. */\nexport const BlobRefSchema = z.object({\n bucket: z.string().min(1),\n key: z.string().min(1),\n contentType: z.string().min(1),\n bytes: z.number().int().min(0),\n});\nexport type BlobRef = z.infer<typeof BlobRefSchema>;\n\n/**\n * Focus rectangle the person drew over the capture preview, in CSS pixels of\n * the captured viewport. The uploaded image is already cropped to it; the DOM\n * blocks are already filtered to those intersecting it.\n */\nexport const CaptureRegionSchema = z.object({\n x: z.number().min(0),\n y: z.number().min(0),\n w: z.number().positive(),\n h: z.number().positive(),\n viewportW: z.number().positive(),\n viewportH: z.number().positive(),\n dpr: z.number().positive(),\n});\nexport type CaptureRegion = z.infer<typeof CaptureRegionSchema>;\n\nexport const CaptureDomSummarySchema = z.object({\n blocks: z.number().int().min(0),\n links: z.number().int().min(0),\n bytes: z.number().int().min(0),\n lang: LanguageCode.optional(),\n});\nexport type CaptureDomSummary = z.infer<typeof CaptureDomSummarySchema>;\n\nexport const CaptureSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n /** Legacy: captures uploaded into a live session. Task-tagged captures have none. */\n sessionId: ObjectIdString.optional(),\n /** The assignment (and so the task) the person sent this capture for. */\n assignmentId: ObjectIdString.optional(),\n taskId: ObjectIdString.optional(),\n missionId: ObjectIdString.optional(),\n /** Who sent it; used to work out their hours. */\n userId: ClerkUserId.optional(),\n /** From `chrome.tabs`, never from page content. */\n url: z.string().url(),\n title: z.string().max(500),\n capturedAt: z.coerce.date(),\n imageRef: BlobRefSchema,\n /** SHA-256 of the uploaded image, hex. */\n sha256: z.string().regex(/^[0-9a-f]{64}$/),\n region: CaptureRegionSchema.optional(),\n domRef: BlobRefSchema.optional(),\n domStatus: CaptureDomStatus.default('unavailable'),\n domSummary: CaptureDomSummarySchema.optional(),\n status: CaptureStatus.default('uploaded'),\n /** Validated `vision_extract` output; shape depends on session mode. */\n analysis: z.unknown().optional(),\n error: z.string().max(1000).optional(),\n /** Analysis attempts by the capture worker; it gives up (`failed`) after a few. */\n attempts: z.number().int().min(0).default(0),\n /** When the worker claimed it (`analyzing`); an old claim is taken over after a restart. */\n claimedAt: z.coerce.date().optional(),\n /** Blob deleted and status set to `expired` after this instant (CAPTURE_RETENTION_DAYS). */\n expiresAt: z.coerce.date(),\n })\n .merge(TimestampsSchema);\n\nexport const CaptureCreateSchema = CaptureSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport type Capture = z.infer<typeof CaptureSchema>;\nexport type CaptureCreate = z.infer<typeof CaptureCreateSchema>;\nexport type CaptureCreateInput = z.input<typeof CaptureCreateSchema>;\n\n// ---------------------------------------------------------------------------\n// Capture DOM snapshot (uploaded JSON part; stored as a blob, not in Mongo)\n// ---------------------------------------------------------------------------\n\nexport const DomRectSchema = z.object({\n x: z.number(),\n y: z.number(),\n w: z.number().min(0),\n h: z.number().min(0),\n});\nexport type DomRect = z.infer<typeof DomRectSchema>;\n\nexport const DomBlockSchema = z.object({\n tag: z.string().min(1).max(32),\n text: z.string().max(4000),\n rect: DomRectSchema,\n});\nexport type DomBlock = z.infer<typeof DomBlockSchema>;\n\nexport const DomLinkSchema = z.object({\n href: z.string().max(2048),\n text: z.string().max(300),\n rect: DomRectSchema,\n});\nexport type DomLink = z.infer<typeof DomLinkSchema>;\n\n/**\n * Read-only snapshot of the *visible* page text, produced by a single\n * `executeScript` call at Capture time. Viewport-relative CSS-pixel rects let\n * the extension filter blocks to the focus region without a second injection.\n */\nexport const CaptureDomSnapshotSchema = z.object({\n url: z.string().url(),\n title: z.string().max(500),\n lang: z.string().max(35).optional(),\n capturedAt: z.coerce.date(),\n viewport: z.object({\n w: z.number().positive(),\n h: z.number().positive(),\n dpr: z.number().positive(),\n scrollX: z.number(),\n scrollY: z.number(),\n }),\n blocks: z.array(DomBlockSchema),\n links: z.array(DomLinkSchema),\n truncated: z.boolean(),\n});\nexport type CaptureDomSnapshot = z.infer<typeof CaptureDomSnapshotSchema>;\n\n// ---------------------------------------------------------------------------\n// LlmCall\n// ---------------------------------------------------------------------------\n\nexport const LlmUsageSchema = z.object({\n inputTokens: count(),\n outputTokens: count(),\n totalTokens: count(),\n});\nexport type LlmUsage = z.infer<typeof LlmUsageSchema>;\n\n/** One provider attempt. A gateway `run()` with fallbacks writes several. */\nexport const LlmCallSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId.optional(),\n sessionId: ObjectIdString.optional(),\n capability: LlmCapability,\n provider: LlmProvider,\n model: z.string().min(1),\n promptVersion: z.string().min(1),\n /** 1 = first try on this provider, 2 = the single retry. */\n attempt: z.number().int().min(1),\n /** Providers already tried (and failed) before this one, in order. */\n fallbackChain: z.array(LlmProvider).default([]),\n usage: LlmUsageSchema.default({}),\n latencyMs: z.number().int().min(0),\n costUsdEstimate: z.number().min(0).optional(),\n outcome: LlmOutcome,\n errorCode: z.string().max(120).optional(),\n })\n .merge(TimestampsSchema);\n\nexport const LlmCallCreateSchema = LlmCallSchema.omit({ _id: true, createdAt: true, updatedAt: true });\n\nexport type LlmCall = z.infer<typeof LlmCallSchema>;\nexport type LlmCallCreate = z.infer<typeof LlmCallCreateSchema>;\nexport type LlmCallCreateInput = z.input<typeof LlmCallCreateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, LanguageCode, ObjectIdString } from '../common';\nimport {\n AgentMessageKind,\n AgentMessageRole,\n AgentSessionMode,\n AgentSessionStatus,\n CaptureStatus,\n Platform,\n TaskKind,\n TaskStatus,\n} from '../enums';\nimport { AgentCardSchema, AgentSessionStatsSchema, CaptureRegionSchema } from './agent-session';\nimport { CoverageWindowSchema } from './task-criteria';\nimport { CaptureWindowSchema, isHttpUrl, TaskTargetSchema } from './task-target';\n\n/**\n * Wire contracts for the Badger Agent (Chrome extension) <-> agent-service API.\n *\n * These are *read models*, deliberately narrower than the entity schemas:\n * scouts must never see org identifiers, scores or other assignees.\n */\n\nexport const AGENT_ROLE_VALUES = ['scout', 'analyst', 'none'] as const;\nexport const AgentRole = z.enum(AGENT_ROLE_VALUES);\nexport type AgentRole = z.infer<typeof AgentRole>;\n\n/** `GET /api/v1/me` */\nexport const AgentMeSchema = z.object({\n userId: ClerkUserId,\n role: AgentRole,\n displayName: z.string(),\n email: z.string().email().nullable(),\n});\nexport type AgentMe = z.infer<typeof AgentMeSchema>;\n\n/** Subset of TaskCriteria exposed to agents. */\nexport const AgentTaskCriteriaSchema = z.object({\n languages: z.array(LanguageCode),\n platforms: z.array(Platform),\n regions: z.array(z.string()),\n coverageWindow: CoverageWindowSchema.optional(),\n emergency: z.boolean(),\n});\nexport type AgentTaskCriteria = z.infer<typeof AgentTaskCriteriaSchema>;\n\n/** The task's source as shown to agents: no internal source id. */\nexport const AgentTaskTargetSchema = TaskTargetSchema.omit({ sourceId: true });\nexport type AgentTaskTarget = z.infer<typeof AgentTaskTargetSchema>;\n\n/** One source attached to a Monitor task (a batch to work through): no internal source id. */\nexport const AgentTaskSourceSchema = z.object({\n platform: Platform,\n url: z.string().url().refine(isHttpUrl, 'Expected an http(s) URL'),\n label: z.string().min(1).optional(),\n lastCapturedAt: z.coerce.date().optional(),\n /** When to capture it again, under current urgency (absent: parked on an access problem). */\n dueAt: z.coerce.date().optional(),\n /** Parked: a person couldn't get in; an analyst reviews it. */\n accessProblem: z.boolean().optional(),\n});\nexport type AgentTaskSource = z.infer<typeof AgentTaskSourceSchema>;\n\n/** Subset of Task exposed to agents. */\nexport const AgentTaskSchema = z.object({\n id: ObjectIdString,\n title: z.string(),\n kind: TaskKind,\n description: z.string(),\n keywords: z.array(z.string()),\n searchQueries: z.array(z.string()),\n criteria: AgentTaskCriteriaSchema,\n target: AgentTaskTargetSchema.optional(),\n /** Monitor: the attached sources other than `target`, sorted by platform then URL. */\n sources: z.array(AgentTaskSourceSchema).default([]),\n captureWindow: CaptureWindowSchema.optional(),\n status: TaskStatus,\n version: z.number().int().min(1),\n updatedAt: z.coerce.date(),\n});\nexport type AgentTask = z.infer<typeof AgentTaskSchema>;\n\n/** Org reference; present only for analysts. */\nexport const AgentOrgRefSchema = z.object({\n id: ClerkOrgId,\n name: z.string(),\n});\nexport type AgentOrgRef = z.infer<typeof AgentOrgRefSchema>;\n\n/** One item of `GET /api/v1/assignments`. */\nexport const AgentAssignmentItemSchema = z.object({\n assignmentId: ObjectIdString,\n assignedAt: z.coerce.date(),\n task: AgentTaskSchema,\n missionTitle: z.string(),\n org: AgentOrgRefSchema.optional(),\n});\nexport type AgentAssignmentItem = z.infer<typeof AgentAssignmentItemSchema>;\n\nexport const AgentAssignmentsResponseSchema = z.object({\n items: z.array(AgentAssignmentItemSchema),\n});\nexport type AgentAssignmentsResponse = z.infer<typeof AgentAssignmentsResponseSchema>;\n\n/** `GET /api/v1/assignments/versions` — cheap poll used for the toolbar badge. */\nexport const AgentAssignmentVersionSchema = z.object({\n assignmentId: ObjectIdString,\n taskVersion: z.number().int().min(1),\n /** Monitor: the latest change to any attached source (a visit moves it; the task version doesn't). */\n sourcesUpdatedAt: z.coerce.date().optional(),\n});\nexport type AgentAssignmentVersion = z.infer<typeof AgentAssignmentVersionSchema>;\n\nexport const AgentAssignmentVersionsResponseSchema = z.object({\n items: z.array(AgentAssignmentVersionSchema),\n});\nexport type AgentAssignmentVersionsResponse = z.infer<typeof AgentAssignmentVersionsResponseSchema>;\n\nexport const AGENT_ERROR_CODE_VALUES = [\n 'UNAUTHENTICATED',\n 'NOT_AN_AGENT_USER',\n 'FORBIDDEN',\n 'NOT_FOUND',\n 'VALIDATION_ERROR',\n 'RATE_LIMITED',\n 'CONFLICT',\n 'SESSION_NOT_ACTIVE',\n 'PAYLOAD_TOO_LARGE',\n 'BUDGET_EXCEEDED',\n 'LLM_UNAVAILABLE',\n 'UPSTREAM_UNAVAILABLE',\n 'INTERNAL',\n] as const;\nexport const AgentErrorCode = z.enum(AGENT_ERROR_CODE_VALUES);\nexport type AgentErrorCode = z.infer<typeof AgentErrorCode>;\n\n/** Error envelope returned by agent-service: `{ error: { code, message, details? } }`. */\nexport const AgentErrorSchema = z.object({\n error: z.object({\n code: AgentErrorCode,\n message: z.string(),\n details: z.unknown().optional(),\n }),\n});\nexport type AgentError = z.infer<typeof AgentErrorSchema>;\n\n// ---------------------------------------------------------------------------\n// Sessions (`/api/v1/sessions`)\n// ---------------------------------------------------------------------------\n\n/**\n * The agent session as shown to the person. No org id, no other assignees, no budget\n * figures; stats are the counters in the progress header.\n */\nexport const AgentSessionViewSchema = z.object({\n id: ObjectIdString,\n assignmentId: ObjectIdString,\n taskId: ObjectIdString,\n taskTitle: z.string(),\n missionTitle: z.string(),\n mode: AgentSessionMode,\n status: AgentSessionStatus,\n startedAt: z.coerce.date(),\n endedAt: z.coerce.date().nullable(),\n activeMinutes: z.number().int().min(0),\n lastSeq: z.number().int().min(0),\n stats: AgentSessionStatsSchema,\n /** The task's source (no internal id), when it has one. */\n target: AgentTaskTargetSchema.optional(),\n /** The capture window resolved to dates when the session started. */\n captureWindow: CoverageWindowSchema.optional(),\n});\nexport type AgentSessionView = z.infer<typeof AgentSessionViewSchema>;\n\nexport const AgentMessageViewSchema = z.object({\n id: ObjectIdString,\n seq: z.number().int().min(1),\n role: AgentMessageRole,\n kind: AgentMessageKind,\n text: z.string(),\n cards: z.array(AgentCardSchema),\n createdAt: z.coerce.date(),\n});\nexport type AgentMessageView = z.infer<typeof AgentMessageViewSchema>;\n\n/** `POST /api/v1/sessions` */\nexport const AgentSessionStartBodySchema = z.object({\n assignmentId: ObjectIdString,\n});\nexport type AgentSessionStartBody = z.infer<typeof AgentSessionStartBodySchema>;\n\n/** Starting an assignment that already has a live session resumes it (`resumed: true`). */\nexport const AgentSessionStartResponseSchema = z.object({\n session: AgentSessionViewSchema,\n resumed: z.boolean(),\n});\nexport type AgentSessionStartResponse = z.infer<typeof AgentSessionStartResponseSchema>;\n\n/** `GET /api/v1/sessions/:id`, `POST …/pause`, `POST …/end`, `POST …/reply` */\nexport const AgentSessionResponseSchema = z.object({\n session: AgentSessionViewSchema,\n});\nexport type AgentSessionResponse = z.infer<typeof AgentSessionResponseSchema>;\n\n/** `GET /api/v1/sessions/active` — the caller's live session, if any. */\nexport const AgentActiveSessionResponseSchema = z.object({\n session: AgentSessionViewSchema.nullable(),\n});\nexport type AgentActiveSessionResponse = z.infer<typeof AgentActiveSessionResponseSchema>;\n\n/** `GET /api/v1/sessions/:id/messages?after=<seq>` */\nexport const AgentMessagesQuerySchema = z.object({\n after: z.coerce.number().int().min(0).default(0),\n limit: z.coerce.number().int().min(1).max(200).default(100),\n});\nexport type AgentMessagesQuery = z.infer<typeof AgentMessagesQuerySchema>;\n\nexport const AgentMessagesResponseSchema = z.object({\n items: z.array(AgentMessageViewSchema),\n});\nexport type AgentMessagesResponse = z.infer<typeof AgentMessagesResponseSchema>;\n\n/**\n * `POST /api/v1/sessions/:id/reply`. The person never types free text: they\n * answer a quick-reply question, report that they opened a suggested link,\n * or confirm / decline the hours proposal.\n */\nexport const AgentReplyBodySchema = z.discriminatedUnion('type', [\n z.object({ type: z.literal('answer'), questionId: z.string().min(1).max(64), optionId: z.string().min(1).max(64) }),\n z.object({ type: z.literal('opened'), messageId: ObjectIdString, url: z.string().url() }),\n z.object({ type: z.literal('confirm_hours'), minutes: z.number().int().positive().max(24 * 60), note: z.string().max(500) }),\n z.object({ type: z.literal('decline_hours') }),\n]);\nexport type AgentReplyBody = z.infer<typeof AgentReplyBodySchema>;\n\n/**\n * Text fields of the `POST /api/v1/sessions/:id/captures` multipart body.\n * File parts: `image` (image/jpeg|png) and optional `dom` (application/json,\n * a `CaptureDomSnapshot`).\n */\nexport const AgentCaptureFieldsSchema = z.object({\n url: z.string().url(),\n title: z.string().max(500),\n capturedAt: z.coerce.date(),\n region: CaptureRegionSchema.optional(),\n});\nexport type AgentCaptureFields = z.infer<typeof AgentCaptureFieldsSchema>;\n\nexport const AgentCaptureResponseSchema = z.object({\n captureId: ObjectIdString,\n status: CaptureStatus,\n});\nexport type AgentCaptureResponse = z.infer<typeof AgentCaptureResponseSchema>;\n\n/**\n * Events on `GET /api/v1/sessions/:id/stream` (SSE). `message` events carry\n * `id: <seq>` so the client can resume with `Last-Event-ID`; the others are\n * transient and never replayed.\n */\nexport const AgentStreamEventSchema = z.discriminatedUnion('type', [\n z.object({ type: z.literal('message'), message: AgentMessageViewSchema }),\n z.object({ type: z.literal('status'), text: z.string(), captureId: ObjectIdString.nullable() }),\n z.object({ type: z.literal('typing'), on: z.boolean() }),\n z.object({ type: z.literal('session'), session: AgentSessionViewSchema }),\n z.object({ type: z.literal('error'), code: AgentErrorCode, message: z.string(), retryInMs: z.number().int().min(0).nullable() }),\n]);\nexport type AgentStreamEvent = z.infer<typeof AgentStreamEventSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, LanguageCode, ObjectIdString } from '../common';\nimport { Platform, SourceAccess, SourceIntakeOutcome, SourceRoute, SourceStatus, SourceType } from '../enums';\n\n/**\n * Service-to-service contracts: agent-service -> hero-service `/internal/*`.\n *\n * Authenticated with a shared service token (`x-service-token`), never with a\n * user session, so every body names the `orgId` explicitly. hero-service owns\n * every write to `sources`; the agent only proposes.\n */\n\n// ---------------------------------------------------------------------------\n// POST /internal/sources/intake\n// ---------------------------------------------------------------------------\n\n/** A source the agent extracted from a capture and judged relevant. */\nexport const SourceIntakeCandidateSchema = z.object({\n platform: Platform,\n url: z.string().url(),\n handle: z.string().min(1).max(120).optional(),\n name: z.string().min(1).max(200),\n type: SourceType,\n access: SourceAccess,\n language: LanguageCode.optional(),\n description: z.string().max(1000).optional(),\n /** 0..1 relevance from the `judge` capability. */\n relevanceScore: z.number().min(0).max(1),\n reason: z.string().max(300),\n});\nexport type SourceIntakeCandidate = z.infer<typeof SourceIntakeCandidateSchema>;\n\nexport const MAX_SOURCE_INTAKE_CANDIDATES = 50;\n\nexport const SourceIntakeBodySchema = z.object({\n orgId: ClerkOrgId,\n /** The discovery task the session works; its mission's monitor task receives gated sources. */\n taskId: ObjectIdString,\n discoveredByUserId: ClerkUserId,\n candidates: z.array(SourceIntakeCandidateSchema).min(1).max(MAX_SOURCE_INTAKE_CANDIDATES),\n});\nexport type SourceIntakeBody = z.infer<typeof SourceIntakeBodySchema>;\n\nexport const SourceIntakeResultSchema = z.object({\n url: z.string(),\n outcome: SourceIntakeOutcome,\n sourceId: ObjectIdString.optional(),\n route: SourceRoute.optional(),\n message: z.string().max(300).optional(),\n});\nexport type SourceIntakeResult = z.infer<typeof SourceIntakeResultSchema>;\n\nexport const SourceIntakeResponseSchema = z.object({\n results: z.array(SourceIntakeResultSchema),\n});\nexport type SourceIntakeResponse = z.infer<typeof SourceIntakeResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// POST /internal/sources/:sourceId/visit\n// ---------------------------------------------------------------------------\n\nexport const SourceVisitBodySchema = z.object({\n orgId: ClerkOrgId,\n collectedAt: z.coerce.date(),\n newItems: z.number().int().min(0),\n priorityItems: z.number().int().min(0).default(0),\n /** The page showed a login wall / no access. The source is parked for review. */\n accessProblem: z.object({ reason: z.string().min(1).max(300) }).optional(),\n /** Task criteria flag; shortens the next visit. */\n emergency: z.boolean().default(false),\n});\nexport type SourceVisitBody = z.infer<typeof SourceVisitBodySchema>;\nexport type SourceVisitBodyInput = z.input<typeof SourceVisitBodySchema>;\n\nexport const SourceVisitResponseSchema = z.object({\n sourceId: ObjectIdString,\n status: SourceStatus,\n lastCollectedAt: z.coerce.date(),\n nextVisitAt: z.coerce.date().nullable(),\n});\nexport type SourceVisitResponse = z.infer<typeof SourceVisitResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// POST /internal/data-items/priority\n// ---------------------------------------------------------------------------\n\nexport const PriorityAlertBodySchema = z.object({\n orgId: ClerkOrgId,\n taskId: ObjectIdString,\n sourceId: ObjectIdString,\n dataItemIds: z.array(ObjectIdString).min(1).max(100),\n /** The person whose capture surfaced the finding (audit actor). */\n raisedByUserId: ClerkUserId,\n sessionId: ObjectIdString.optional(),\n summary: z.string().max(500).optional(),\n});\nexport type PriorityAlertBody = z.infer<typeof PriorityAlertBodySchema>;\n\nexport const PriorityAlertResponseSchema = z.object({\n accepted: z.literal(true),\n});\nexport type PriorityAlertResponse = z.infer<typeof PriorityAlertResponseSchema>;\n\n/** Error codes returned by `/internal/*`. */\nexport const INTERNAL_ERROR_CODE_VALUES = ['UNAUTHENTICATED', 'NOT_FOUND', 'VALIDATION_ERROR', 'INTERNAL'] as const;\nexport const InternalErrorCode = z.enum(INTERNAL_ERROR_CODE_VALUES);\nexport type InternalErrorCode = z.infer<typeof InternalErrorCode>;\n"]}