paperclipai 0.2.2 → 0.2.4

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,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/shared/src/constants.ts", "../../packages/shared/src/validators/company.ts", "../../packages/shared/src/validators/company-portability.ts", "../../packages/shared/src/validators/secret.ts", "../../packages/shared/src/validators/agent.ts", "../../packages/shared/src/validators/project.ts", "../../packages/shared/src/validators/issue.ts", "../../packages/shared/src/validators/goal.ts", "../../packages/shared/src/validators/approval.ts", "../../packages/shared/src/validators/cost.ts", "../../packages/shared/src/validators/asset.ts", "../../packages/shared/src/validators/access.ts", "../../packages/shared/src/validators/index.ts", "../../packages/shared/src/api.ts", "../../packages/shared/src/agent-url-key.ts", "../../packages/shared/src/project-url-key.ts", "../../packages/shared/src/project-mentions.ts", "../../packages/shared/src/config-schema.ts", "../../packages/shared/src/index.ts", "../src/config/schema.ts", "../src/config/home.ts", "../src/config/store.ts", "../src/config/env.ts", "../src/utils/path-resolver.ts", "../src/config/secrets-key.ts", "../src/prompts/database.ts", "../src/prompts/llm.ts", "../src/prompts/logging.ts", "../src/prompts/secrets.ts", "../src/prompts/storage.ts", "../src/config/hostnames.ts", "../src/prompts/server.ts", "../../packages/db/src/schema/companies.ts", "../../packages/db/src/schema/auth.ts", "../../packages/db/src/schema/instance_user_roles.ts", "../../packages/db/src/schema/agents.ts", "../../packages/db/src/schema/company_memberships.ts", "../../packages/db/src/schema/principal_permission_grants.ts", "../../packages/db/src/schema/invites.ts", "../../packages/db/src/schema/join_requests.ts", "../../packages/db/src/schema/agent_config_revisions.ts", "../../packages/db/src/schema/agent_api_keys.ts", "../../packages/db/src/schema/agent_runtime_state.ts", "../../packages/db/src/schema/agent_wakeup_requests.ts", "../../packages/db/src/schema/heartbeat_runs.ts", "../../packages/db/src/schema/agent_task_sessions.ts", "../../packages/db/src/schema/goals.ts", "../../packages/db/src/schema/projects.ts", "../../packages/db/src/schema/project_workspaces.ts", "../../packages/db/src/schema/project_goals.ts", "../../packages/db/src/schema/issues.ts", "../../packages/db/src/schema/labels.ts", "../../packages/db/src/schema/issue_labels.ts", "../../packages/db/src/schema/approvals.ts", "../../packages/db/src/schema/issue_approvals.ts", "../../packages/db/src/schema/issue_comments.ts", "../../packages/db/src/schema/assets.ts", "../../packages/db/src/schema/issue_attachments.ts", "../../packages/db/src/schema/heartbeat_run_events.ts", "../../packages/db/src/schema/cost_events.ts", "../../packages/db/src/schema/approval_comments.ts", "../../packages/db/src/schema/activity_log.ts", "../../packages/db/src/schema/company_secrets.ts", "../../packages/db/src/schema/company_secret_versions.ts", "../../packages/db/src/schema/index.ts", "../../packages/db/src/client.ts", "../../packages/db/src/index.ts", "../src/commands/auth-bootstrap-ceo.ts", "../src/utils/banner.ts", "../src/checks/agent-jwt-secret-check.ts", "../src/checks/config-check.ts", "../src/checks/deployment-auth-check.ts", "../src/checks/path-resolver.ts", "../src/checks/database-check.ts", "../src/checks/llm-check.ts", "../src/checks/log-check.ts", "../src/utils/net.ts", "../src/checks/port-check.ts", "../src/checks/secrets-check.ts", "../src/checks/storage-check.ts", "../src/checks/index.ts", "../src/commands/doctor.ts", "../src/commands/run.ts", "../src/commands/onboard.ts", "../src/index.ts", "../src/commands/env.ts", "../src/commands/configure.ts", "../src/commands/allowed-hostname.ts", "../src/commands/heartbeat-run.ts", "../../packages/adapters/claude-local/src/cli/format-event.ts", "../../packages/adapters/codex-local/src/cli/format-event.ts", "../../packages/adapters/openclaw/src/cli/format-event.ts", "../src/adapters/process/format-event.ts", "../src/adapters/process/index.ts", "../src/adapters/http/format-event.ts", "../src/adapters/http/index.ts", "../src/adapters/registry.ts", "../src/commands/client/common.ts", "../src/client/context.ts", "../src/client/http.ts", "../src/commands/client/context.ts", "../src/commands/client/company.ts", "../src/commands/client/issue.ts", "../src/commands/client/agent.ts", "../src/commands/client/approval.ts", "../src/commands/client/activity.ts", "../src/commands/client/dashboard.ts", "../src/config/data-dir.ts"],
4
- "sourcesContent": ["export const COMPANY_STATUSES = [\"active\", \"paused\", \"archived\"] as const;\nexport type CompanyStatus = (typeof COMPANY_STATUSES)[number];\n\nexport const DEPLOYMENT_MODES = [\"local_trusted\", \"authenticated\"] as const;\nexport type DeploymentMode = (typeof DEPLOYMENT_MODES)[number];\n\nexport const DEPLOYMENT_EXPOSURES = [\"private\", \"public\"] as const;\nexport type DeploymentExposure = (typeof DEPLOYMENT_EXPOSURES)[number];\n\nexport const AUTH_BASE_URL_MODES = [\"auto\", \"explicit\"] as const;\nexport type AuthBaseUrlMode = (typeof AUTH_BASE_URL_MODES)[number];\n\nexport const AGENT_STATUSES = [\n \"active\",\n \"paused\",\n \"idle\",\n \"running\",\n \"error\",\n \"pending_approval\",\n \"terminated\",\n] as const;\nexport type AgentStatus = (typeof AGENT_STATUSES)[number];\n\nexport const AGENT_ADAPTER_TYPES = [\"process\", \"http\", \"claude_local\", \"codex_local\", \"openclaw\"] as const;\nexport type AgentAdapterType = (typeof AGENT_ADAPTER_TYPES)[number];\n\nexport const AGENT_ROLES = [\n \"ceo\",\n \"cto\",\n \"cmo\",\n \"cfo\",\n \"engineer\",\n \"designer\",\n \"pm\",\n \"qa\",\n \"devops\",\n \"researcher\",\n \"general\",\n] as const;\nexport type AgentRole = (typeof AGENT_ROLES)[number];\n\nexport const AGENT_ICON_NAMES = [\n \"bot\",\n \"cpu\",\n \"brain\",\n \"zap\",\n \"rocket\",\n \"code\",\n \"terminal\",\n \"shield\",\n \"eye\",\n \"search\",\n \"wrench\",\n \"hammer\",\n \"lightbulb\",\n \"sparkles\",\n \"star\",\n \"heart\",\n \"flame\",\n \"bug\",\n \"cog\",\n \"database\",\n \"globe\",\n \"lock\",\n \"mail\",\n \"message-square\",\n \"file-code\",\n \"git-branch\",\n \"package\",\n \"puzzle\",\n \"target\",\n \"wand\",\n \"atom\",\n \"circuit-board\",\n \"radar\",\n \"swords\",\n \"telescope\",\n \"microscope\",\n \"crown\",\n \"gem\",\n \"hexagon\",\n \"pentagon\",\n \"fingerprint\",\n] as const;\nexport type AgentIconName = (typeof AGENT_ICON_NAMES)[number];\n\nexport const ISSUE_STATUSES = [\n \"backlog\",\n \"todo\",\n \"in_progress\",\n \"in_review\",\n \"done\",\n \"blocked\",\n \"cancelled\",\n] as const;\nexport type IssueStatus = (typeof ISSUE_STATUSES)[number];\n\nexport const ISSUE_PRIORITIES = [\"critical\", \"high\", \"medium\", \"low\"] as const;\nexport type IssuePriority = (typeof ISSUE_PRIORITIES)[number];\n\nexport const GOAL_LEVELS = [\"company\", \"team\", \"agent\", \"task\"] as const;\nexport type GoalLevel = (typeof GOAL_LEVELS)[number];\n\nexport const GOAL_STATUSES = [\"planned\", \"active\", \"achieved\", \"cancelled\"] as const;\nexport type GoalStatus = (typeof GOAL_STATUSES)[number];\n\nexport const PROJECT_STATUSES = [\n \"backlog\",\n \"planned\",\n \"in_progress\",\n \"completed\",\n \"cancelled\",\n] as const;\nexport type ProjectStatus = (typeof PROJECT_STATUSES)[number];\n\nexport const PROJECT_COLORS = [\n \"#6366f1\", // indigo\n \"#8b5cf6\", // violet\n \"#ec4899\", // pink\n \"#ef4444\", // red\n \"#f97316\", // orange\n \"#eab308\", // yellow\n \"#22c55e\", // green\n \"#14b8a6\", // teal\n \"#06b6d4\", // cyan\n \"#3b82f6\", // blue\n] as const;\n\nexport const APPROVAL_TYPES = [\"hire_agent\", \"approve_ceo_strategy\"] as const;\nexport type ApprovalType = (typeof APPROVAL_TYPES)[number];\n\nexport const APPROVAL_STATUSES = [\n \"pending\",\n \"revision_requested\",\n \"approved\",\n \"rejected\",\n \"cancelled\",\n] as const;\nexport type ApprovalStatus = (typeof APPROVAL_STATUSES)[number];\n\nexport const SECRET_PROVIDERS = [\n \"local_encrypted\",\n \"aws_secrets_manager\",\n \"gcp_secret_manager\",\n \"vault\",\n] as const;\nexport type SecretProvider = (typeof SECRET_PROVIDERS)[number];\n\nexport const STORAGE_PROVIDERS = [\"local_disk\", \"s3\"] as const;\nexport type StorageProvider = (typeof STORAGE_PROVIDERS)[number];\n\nexport const HEARTBEAT_INVOCATION_SOURCES = [\n \"timer\",\n \"assignment\",\n \"on_demand\",\n \"automation\",\n] as const;\nexport type HeartbeatInvocationSource = (typeof HEARTBEAT_INVOCATION_SOURCES)[number];\n\nexport const WAKEUP_TRIGGER_DETAILS = [\"manual\", \"ping\", \"callback\", \"system\"] as const;\nexport type WakeupTriggerDetail = (typeof WAKEUP_TRIGGER_DETAILS)[number];\n\nexport const WAKEUP_REQUEST_STATUSES = [\n \"queued\",\n \"deferred_issue_execution\",\n \"claimed\",\n \"coalesced\",\n \"skipped\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n] as const;\nexport type WakeupRequestStatus = (typeof WAKEUP_REQUEST_STATUSES)[number];\n\nexport const HEARTBEAT_RUN_STATUSES = [\n \"queued\",\n \"running\",\n \"succeeded\",\n \"failed\",\n \"cancelled\",\n \"timed_out\",\n] as const;\nexport type HeartbeatRunStatus = (typeof HEARTBEAT_RUN_STATUSES)[number];\n\nexport const LIVE_EVENT_TYPES = [\n \"heartbeat.run.queued\",\n \"heartbeat.run.status\",\n \"heartbeat.run.event\",\n \"heartbeat.run.log\",\n \"agent.status\",\n \"activity.logged\",\n] as const;\nexport type LiveEventType = (typeof LIVE_EVENT_TYPES)[number];\n\nexport const PRINCIPAL_TYPES = [\"user\", \"agent\"] as const;\nexport type PrincipalType = (typeof PRINCIPAL_TYPES)[number];\n\nexport const MEMBERSHIP_STATUSES = [\"pending\", \"active\", \"suspended\"] as const;\nexport type MembershipStatus = (typeof MEMBERSHIP_STATUSES)[number];\n\nexport const INSTANCE_USER_ROLES = [\"instance_admin\"] as const;\nexport type InstanceUserRole = (typeof INSTANCE_USER_ROLES)[number];\n\nexport const INVITE_TYPES = [\"company_join\", \"bootstrap_ceo\"] as const;\nexport type InviteType = (typeof INVITE_TYPES)[number];\n\nexport const INVITE_JOIN_TYPES = [\"human\", \"agent\", \"both\"] as const;\nexport type InviteJoinType = (typeof INVITE_JOIN_TYPES)[number];\n\nexport const JOIN_REQUEST_TYPES = [\"human\", \"agent\"] as const;\nexport type JoinRequestType = (typeof JOIN_REQUEST_TYPES)[number];\n\nexport const JOIN_REQUEST_STATUSES = [\"pending_approval\", \"approved\", \"rejected\"] as const;\nexport type JoinRequestStatus = (typeof JOIN_REQUEST_STATUSES)[number];\n\nexport const PERMISSION_KEYS = [\n \"agents:create\",\n \"users:invite\",\n \"users:manage_permissions\",\n \"tasks:assign\",\n \"tasks:assign_scope\",\n \"joins:approve\",\n] as const;\nexport type PermissionKey = (typeof PERMISSION_KEYS)[number];\n", "import { z } from \"zod\";\nimport { COMPANY_STATUSES } from \"../constants.js\";\n\nexport const createCompanySchema = z.object({\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n budgetMonthlyCents: z.number().int().nonnegative().optional().default(0),\n});\n\nexport type CreateCompany = z.infer<typeof createCompanySchema>;\n\nexport const updateCompanySchema = createCompanySchema\n .partial()\n .extend({\n status: z.enum(COMPANY_STATUSES).optional(),\n spentMonthlyCents: z.number().int().nonnegative().optional(),\n requireBoardApprovalForNewAgents: z.boolean().optional(),\n brandColor: z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional(),\n });\n\nexport type UpdateCompany = z.infer<typeof updateCompanySchema>;\n", "import { z } from \"zod\";\n\nexport const portabilityIncludeSchema = z\n .object({\n company: z.boolean().optional(),\n agents: z.boolean().optional(),\n })\n .partial();\n\nexport const portabilitySecretRequirementSchema = z.object({\n key: z.string().min(1),\n description: z.string().nullable(),\n agentSlug: z.string().min(1).nullable(),\n providerHint: z.string().nullable(),\n});\n\nexport const portabilityCompanyManifestEntrySchema = z.object({\n path: z.string().min(1),\n name: z.string().min(1),\n description: z.string().nullable(),\n brandColor: z.string().nullable(),\n requireBoardApprovalForNewAgents: z.boolean(),\n});\n\nexport const portabilityAgentManifestEntrySchema = z.object({\n slug: z.string().min(1),\n name: z.string().min(1),\n path: z.string().min(1),\n role: z.string().min(1),\n title: z.string().nullable(),\n icon: z.string().nullable(),\n capabilities: z.string().nullable(),\n reportsToSlug: z.string().min(1).nullable(),\n adapterType: z.string().min(1),\n adapterConfig: z.record(z.unknown()),\n runtimeConfig: z.record(z.unknown()),\n permissions: z.record(z.unknown()),\n budgetMonthlyCents: z.number().int().nonnegative(),\n metadata: z.record(z.unknown()).nullable(),\n});\n\nexport const portabilityManifestSchema = z.object({\n schemaVersion: z.number().int().positive(),\n generatedAt: z.string().datetime(),\n source: z\n .object({\n companyId: z.string().uuid(),\n companyName: z.string().min(1),\n })\n .nullable(),\n includes: z.object({\n company: z.boolean(),\n agents: z.boolean(),\n }),\n company: portabilityCompanyManifestEntrySchema.nullable(),\n agents: z.array(portabilityAgentManifestEntrySchema),\n requiredSecrets: z.array(portabilitySecretRequirementSchema).default([]),\n});\n\nexport const portabilitySourceSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"inline\"),\n manifest: portabilityManifestSchema,\n files: z.record(z.string()),\n }),\n z.object({\n type: z.literal(\"url\"),\n url: z.string().url(),\n }),\n z.object({\n type: z.literal(\"github\"),\n url: z.string().url(),\n }),\n]);\n\nexport const portabilityTargetSchema = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"new_company\"),\n newCompanyName: z.string().min(1).optional().nullable(),\n }),\n z.object({\n mode: z.literal(\"existing_company\"),\n companyId: z.string().uuid(),\n }),\n]);\n\nexport const portabilityAgentSelectionSchema = z.union([\n z.literal(\"all\"),\n z.array(z.string().min(1)),\n]);\n\nexport const portabilityCollisionStrategySchema = z.enum([\"rename\", \"skip\", \"replace\"]);\n\nexport const companyPortabilityExportSchema = z.object({\n include: portabilityIncludeSchema.optional(),\n});\n\nexport type CompanyPortabilityExport = z.infer<typeof companyPortabilityExportSchema>;\n\nexport const companyPortabilityPreviewSchema = z.object({\n source: portabilitySourceSchema,\n include: portabilityIncludeSchema.optional(),\n target: portabilityTargetSchema,\n agents: portabilityAgentSelectionSchema.optional(),\n collisionStrategy: portabilityCollisionStrategySchema.optional(),\n});\n\nexport type CompanyPortabilityPreview = z.infer<typeof companyPortabilityPreviewSchema>;\n\nexport const companyPortabilityImportSchema = companyPortabilityPreviewSchema;\n\nexport type CompanyPortabilityImport = z.infer<typeof companyPortabilityImportSchema>;\n", "import { z } from \"zod\";\nimport { SECRET_PROVIDERS } from \"../constants.js\";\n\nexport const envBindingPlainSchema = z.object({\n type: z.literal(\"plain\"),\n value: z.string(),\n});\n\nexport const envBindingSecretRefSchema = z.object({\n type: z.literal(\"secret_ref\"),\n secretId: z.string().uuid(),\n version: z.union([z.literal(\"latest\"), z.number().int().positive()]).optional(),\n});\n\n// Backward-compatible union that accepts legacy inline values.\nexport const envBindingSchema = z.union([\n z.string(),\n envBindingPlainSchema,\n envBindingSecretRefSchema,\n]);\n\nexport const envConfigSchema = z.record(envBindingSchema);\n\nexport const createSecretSchema = z.object({\n name: z.string().min(1),\n provider: z.enum(SECRET_PROVIDERS).optional(),\n value: z.string().min(1),\n description: z.string().optional().nullable(),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type CreateSecret = z.infer<typeof createSecretSchema>;\n\nexport const rotateSecretSchema = z.object({\n value: z.string().min(1),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type RotateSecret = z.infer<typeof rotateSecretSchema>;\n\nexport const updateSecretSchema = z.object({\n name: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type UpdateSecret = z.infer<typeof updateSecretSchema>;\n", "import { z } from \"zod\";\nimport {\n AGENT_ADAPTER_TYPES,\n AGENT_ICON_NAMES,\n AGENT_ROLES,\n AGENT_STATUSES,\n} from \"../constants.js\";\nimport { envConfigSchema } from \"./secret.js\";\n\nexport const agentPermissionsSchema = z.object({\n canCreateAgents: z.boolean().optional().default(false),\n});\n\nconst adapterConfigSchema = z.record(z.unknown()).superRefine((value, ctx) => {\n const envValue = value.env;\n if (envValue === undefined) return;\n const parsed = envConfigSchema.safeParse(envValue);\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"adapterConfig.env must be a map of valid env bindings\",\n path: [\"env\"],\n });\n }\n});\n\nexport const createAgentSchema = z.object({\n name: z.string().min(1),\n role: z.enum(AGENT_ROLES).optional().default(\"general\"),\n title: z.string().optional().nullable(),\n icon: z.enum(AGENT_ICON_NAMES).optional().nullable(),\n reportsTo: z.string().uuid().optional().nullable(),\n capabilities: z.string().optional().nullable(),\n adapterType: z.enum(AGENT_ADAPTER_TYPES).optional().default(\"process\"),\n adapterConfig: adapterConfigSchema.optional().default({}),\n runtimeConfig: z.record(z.unknown()).optional().default({}),\n budgetMonthlyCents: z.number().int().nonnegative().optional().default(0),\n permissions: agentPermissionsSchema.optional(),\n metadata: z.record(z.unknown()).optional().nullable(),\n});\n\nexport type CreateAgent = z.infer<typeof createAgentSchema>;\n\nexport const createAgentHireSchema = createAgentSchema.extend({\n sourceIssueId: z.string().uuid().optional().nullable(),\n sourceIssueIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateAgentHire = z.infer<typeof createAgentHireSchema>;\n\nexport const updateAgentSchema = createAgentSchema\n .omit({ permissions: true })\n .partial()\n .extend({\n permissions: z.never().optional(),\n status: z.enum(AGENT_STATUSES).optional(),\n spentMonthlyCents: z.number().int().nonnegative().optional(),\n });\n\nexport type UpdateAgent = z.infer<typeof updateAgentSchema>;\n\nexport const updateAgentInstructionsPathSchema = z.object({\n path: z.string().trim().min(1).nullable(),\n adapterConfigKey: z.string().trim().min(1).optional(),\n});\n\nexport type UpdateAgentInstructionsPath = z.infer<typeof updateAgentInstructionsPathSchema>;\n\nexport const createAgentKeySchema = z.object({\n name: z.string().min(1).default(\"default\"),\n});\n\nexport type CreateAgentKey = z.infer<typeof createAgentKeySchema>;\n\nexport const wakeAgentSchema = z.object({\n source: z.enum([\"timer\", \"assignment\", \"on_demand\", \"automation\"]).optional().default(\"on_demand\"),\n triggerDetail: z.enum([\"manual\", \"ping\", \"callback\", \"system\"]).optional(),\n reason: z.string().optional().nullable(),\n payload: z.record(z.unknown()).optional().nullable(),\n idempotencyKey: z.string().optional().nullable(),\n});\n\nexport type WakeAgent = z.infer<typeof wakeAgentSchema>;\n\nexport const resetAgentSessionSchema = z.object({\n taskKey: z.string().min(1).optional().nullable(),\n});\n\nexport type ResetAgentSession = z.infer<typeof resetAgentSessionSchema>;\n\nexport const testAdapterEnvironmentSchema = z.object({\n adapterConfig: adapterConfigSchema.optional().default({}),\n});\n\nexport type TestAdapterEnvironment = z.infer<typeof testAdapterEnvironmentSchema>;\n\nexport const updateAgentPermissionsSchema = z.object({\n canCreateAgents: z.boolean(),\n});\n\nexport type UpdateAgentPermissions = z.infer<typeof updateAgentPermissionsSchema>;\n", "import { z } from \"zod\";\nimport { PROJECT_STATUSES } from \"../constants.js\";\n\nconst projectWorkspaceFields = {\n name: z.string().min(1).optional(),\n cwd: z.string().min(1).optional().nullable(),\n repoUrl: z.string().url().optional().nullable(),\n repoRef: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n};\n\nexport const createProjectWorkspaceSchema = z.object({\n ...projectWorkspaceFields,\n isPrimary: z.boolean().optional().default(false),\n}).superRefine((value, ctx) => {\n const hasCwd = typeof value.cwd === \"string\" && value.cwd.trim().length > 0;\n const hasRepo = typeof value.repoUrl === \"string\" && value.repoUrl.trim().length > 0;\n if (!hasCwd && !hasRepo) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Workspace requires at least one of cwd or repoUrl.\",\n path: [\"cwd\"],\n });\n }\n});\n\nexport type CreateProjectWorkspace = z.infer<typeof createProjectWorkspaceSchema>;\n\nexport const updateProjectWorkspaceSchema = z.object({\n ...projectWorkspaceFields,\n isPrimary: z.boolean().optional(),\n}).partial();\n\nexport type UpdateProjectWorkspace = z.infer<typeof updateProjectWorkspaceSchema>;\n\nconst projectFields = {\n /** @deprecated Use goalIds instead */\n goalId: z.string().uuid().optional().nullable(),\n goalIds: z.array(z.string().uuid()).optional(),\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n status: z.enum(PROJECT_STATUSES).optional().default(\"backlog\"),\n leadAgentId: z.string().uuid().optional().nullable(),\n targetDate: z.string().optional().nullable(),\n color: z.string().optional().nullable(),\n archivedAt: z.string().datetime().optional().nullable(),\n};\n\nexport const createProjectSchema = z.object({\n ...projectFields,\n workspace: createProjectWorkspaceSchema.optional(),\n});\n\nexport type CreateProject = z.infer<typeof createProjectSchema>;\n\nexport const updateProjectSchema = z.object(projectFields).partial();\n\nexport type UpdateProject = z.infer<typeof updateProjectSchema>;\n", "import { z } from \"zod\";\nimport { ISSUE_PRIORITIES, ISSUE_STATUSES } from \"../constants.js\";\n\nexport const issueAssigneeAdapterOverridesSchema = z\n .object({\n adapterConfig: z.record(z.unknown()).optional(),\n useProjectWorkspace: z.boolean().optional(),\n })\n .strict();\n\nexport const createIssueSchema = z.object({\n projectId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n parentId: z.string().uuid().optional().nullable(),\n title: z.string().min(1),\n description: z.string().optional().nullable(),\n status: z.enum(ISSUE_STATUSES).optional().default(\"backlog\"),\n priority: z.enum(ISSUE_PRIORITIES).optional().default(\"medium\"),\n assigneeAgentId: z.string().uuid().optional().nullable(),\n assigneeUserId: z.string().optional().nullable(),\n requestDepth: z.number().int().nonnegative().optional().default(0),\n billingCode: z.string().optional().nullable(),\n assigneeAdapterOverrides: issueAssigneeAdapterOverridesSchema.optional().nullable(),\n labelIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateIssue = z.infer<typeof createIssueSchema>;\n\nexport const createIssueLabelSchema = z.object({\n name: z.string().trim().min(1).max(48),\n color: z.string().regex(/^#(?:[0-9a-fA-F]{6})$/, \"Color must be a 6-digit hex value\"),\n});\n\nexport type CreateIssueLabel = z.infer<typeof createIssueLabelSchema>;\n\nexport const updateIssueSchema = createIssueSchema.partial().extend({\n comment: z.string().min(1).optional(),\n hiddenAt: z.string().datetime().nullable().optional(),\n});\n\nexport type UpdateIssue = z.infer<typeof updateIssueSchema>;\n\nexport const checkoutIssueSchema = z.object({\n agentId: z.string().uuid(),\n expectedStatuses: z.array(z.enum(ISSUE_STATUSES)).nonempty(),\n});\n\nexport type CheckoutIssue = z.infer<typeof checkoutIssueSchema>;\n\nexport const addIssueCommentSchema = z.object({\n body: z.string().min(1),\n reopen: z.boolean().optional(),\n interrupt: z.boolean().optional(),\n});\n\nexport type AddIssueComment = z.infer<typeof addIssueCommentSchema>;\n\nexport const linkIssueApprovalSchema = z.object({\n approvalId: z.string().uuid(),\n});\n\nexport type LinkIssueApproval = z.infer<typeof linkIssueApprovalSchema>;\n\nexport const createIssueAttachmentMetadataSchema = z.object({\n issueCommentId: z.string().uuid().optional().nullable(),\n});\n\nexport type CreateIssueAttachmentMetadata = z.infer<typeof createIssueAttachmentMetadataSchema>;\n", "import { z } from \"zod\";\nimport { GOAL_LEVELS, GOAL_STATUSES } from \"../constants.js\";\n\nexport const createGoalSchema = z.object({\n title: z.string().min(1),\n description: z.string().optional().nullable(),\n level: z.enum(GOAL_LEVELS).optional().default(\"task\"),\n status: z.enum(GOAL_STATUSES).optional().default(\"planned\"),\n parentId: z.string().uuid().optional().nullable(),\n ownerAgentId: z.string().uuid().optional().nullable(),\n});\n\nexport type CreateGoal = z.infer<typeof createGoalSchema>;\n\nexport const updateGoalSchema = createGoalSchema.partial();\n\nexport type UpdateGoal = z.infer<typeof updateGoalSchema>;\n", "import { z } from \"zod\";\nimport { APPROVAL_TYPES } from \"../constants.js\";\n\nexport const createApprovalSchema = z.object({\n type: z.enum(APPROVAL_TYPES),\n requestedByAgentId: z.string().uuid().optional().nullable(),\n payload: z.record(z.unknown()),\n issueIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateApproval = z.infer<typeof createApprovalSchema>;\n\nexport const resolveApprovalSchema = z.object({\n decisionNote: z.string().optional().nullable(),\n decidedByUserId: z.string().optional().default(\"board\"),\n});\n\nexport type ResolveApproval = z.infer<typeof resolveApprovalSchema>;\n\nexport const requestApprovalRevisionSchema = z.object({\n decisionNote: z.string().optional().nullable(),\n decidedByUserId: z.string().optional().default(\"board\"),\n});\n\nexport type RequestApprovalRevision = z.infer<typeof requestApprovalRevisionSchema>;\n\nexport const resubmitApprovalSchema = z.object({\n payload: z.record(z.unknown()).optional(),\n});\n\nexport type ResubmitApproval = z.infer<typeof resubmitApprovalSchema>;\n\nexport const addApprovalCommentSchema = z.object({\n body: z.string().min(1),\n});\n\nexport type AddApprovalComment = z.infer<typeof addApprovalCommentSchema>;\n", "import { z } from \"zod\";\n\nexport const createCostEventSchema = z.object({\n agentId: z.string().uuid(),\n issueId: z.string().uuid().optional().nullable(),\n projectId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n billingCode: z.string().optional().nullable(),\n provider: z.string().min(1),\n model: z.string().min(1),\n inputTokens: z.number().int().nonnegative().optional().default(0),\n outputTokens: z.number().int().nonnegative().optional().default(0),\n costCents: z.number().int().nonnegative(),\n occurredAt: z.string().datetime(),\n});\n\nexport type CreateCostEvent = z.infer<typeof createCostEventSchema>;\n\nexport const updateBudgetSchema = z.object({\n budgetMonthlyCents: z.number().int().nonnegative(),\n});\n\nexport type UpdateBudget = z.infer<typeof updateBudgetSchema>;\n", "import { z } from \"zod\";\n\nexport const createAssetImageMetadataSchema = z.object({\n namespace: z\n .string()\n .trim()\n .min(1)\n .max(120)\n .regex(/^[a-zA-Z0-9/_-]+$/)\n .optional(),\n});\n\nexport type CreateAssetImageMetadata = z.infer<typeof createAssetImageMetadataSchema>;\n\n", "import { z } from \"zod\";\nimport {\n AGENT_ADAPTER_TYPES,\n INVITE_JOIN_TYPES,\n JOIN_REQUEST_STATUSES,\n JOIN_REQUEST_TYPES,\n PERMISSION_KEYS,\n} from \"../constants.js\";\n\nexport const createCompanyInviteSchema = z.object({\n allowedJoinTypes: z.enum(INVITE_JOIN_TYPES).default(\"both\"),\n expiresInHours: z.number().int().min(1).max(24 * 30).optional().default(72),\n defaultsPayload: z.record(z.string(), z.unknown()).optional().nullable(),\n});\n\nexport type CreateCompanyInvite = z.infer<typeof createCompanyInviteSchema>;\n\nexport const acceptInviteSchema = z.object({\n requestType: z.enum(JOIN_REQUEST_TYPES),\n agentName: z.string().min(1).max(120).optional(),\n adapterType: z.enum(AGENT_ADAPTER_TYPES).optional(),\n capabilities: z.string().max(4000).optional().nullable(),\n agentDefaultsPayload: z.record(z.string(), z.unknown()).optional().nullable(),\n});\n\nexport type AcceptInvite = z.infer<typeof acceptInviteSchema>;\n\nexport const listJoinRequestsQuerySchema = z.object({\n status: z.enum(JOIN_REQUEST_STATUSES).optional(),\n requestType: z.enum(JOIN_REQUEST_TYPES).optional(),\n});\n\nexport type ListJoinRequestsQuery = z.infer<typeof listJoinRequestsQuerySchema>;\n\nexport const claimJoinRequestApiKeySchema = z.object({\n claimSecret: z.string().min(16).max(256),\n});\n\nexport type ClaimJoinRequestApiKey = z.infer<typeof claimJoinRequestApiKeySchema>;\n\nexport const updateMemberPermissionsSchema = z.object({\n grants: z.array(\n z.object({\n permissionKey: z.enum(PERMISSION_KEYS),\n scope: z.record(z.string(), z.unknown()).optional().nullable(),\n }),\n ),\n});\n\nexport type UpdateMemberPermissions = z.infer<typeof updateMemberPermissionsSchema>;\n\nexport const updateUserCompanyAccessSchema = z.object({\n companyIds: z.array(z.string().uuid()).default([]),\n});\n\nexport type UpdateUserCompanyAccess = z.infer<typeof updateUserCompanyAccessSchema>;\n", "export {\n createCompanySchema,\n updateCompanySchema,\n type CreateCompany,\n type UpdateCompany,\n} from \"./company.js\";\nexport {\n portabilityIncludeSchema,\n portabilitySecretRequirementSchema,\n portabilityCompanyManifestEntrySchema,\n portabilityAgentManifestEntrySchema,\n portabilityManifestSchema,\n portabilitySourceSchema,\n portabilityTargetSchema,\n portabilityAgentSelectionSchema,\n portabilityCollisionStrategySchema,\n companyPortabilityExportSchema,\n companyPortabilityPreviewSchema,\n companyPortabilityImportSchema,\n type CompanyPortabilityExport,\n type CompanyPortabilityPreview,\n type CompanyPortabilityImport,\n} from \"./company-portability.js\";\n\nexport {\n createAgentSchema,\n createAgentHireSchema,\n updateAgentSchema,\n updateAgentInstructionsPathSchema,\n createAgentKeySchema,\n wakeAgentSchema,\n resetAgentSessionSchema,\n testAdapterEnvironmentSchema,\n agentPermissionsSchema,\n updateAgentPermissionsSchema,\n type CreateAgent,\n type CreateAgentHire,\n type UpdateAgent,\n type UpdateAgentInstructionsPath,\n type CreateAgentKey,\n type WakeAgent,\n type ResetAgentSession,\n type TestAdapterEnvironment,\n type UpdateAgentPermissions,\n} from \"./agent.js\";\n\nexport {\n createProjectSchema,\n updateProjectSchema,\n createProjectWorkspaceSchema,\n updateProjectWorkspaceSchema,\n type CreateProject,\n type UpdateProject,\n type CreateProjectWorkspace,\n type UpdateProjectWorkspace,\n} from \"./project.js\";\n\nexport {\n createIssueSchema,\n createIssueLabelSchema,\n updateIssueSchema,\n checkoutIssueSchema,\n addIssueCommentSchema,\n linkIssueApprovalSchema,\n createIssueAttachmentMetadataSchema,\n type CreateIssue,\n type CreateIssueLabel,\n type UpdateIssue,\n type CheckoutIssue,\n type AddIssueComment,\n type LinkIssueApproval,\n type CreateIssueAttachmentMetadata,\n} from \"./issue.js\";\n\nexport {\n createGoalSchema,\n updateGoalSchema,\n type CreateGoal,\n type UpdateGoal,\n} from \"./goal.js\";\n\nexport {\n createApprovalSchema,\n resolveApprovalSchema,\n requestApprovalRevisionSchema,\n resubmitApprovalSchema,\n addApprovalCommentSchema,\n type CreateApproval,\n type ResolveApproval,\n type RequestApprovalRevision,\n type ResubmitApproval,\n type AddApprovalComment,\n} from \"./approval.js\";\n\nexport {\n envBindingPlainSchema,\n envBindingSecretRefSchema,\n envBindingSchema,\n envConfigSchema,\n createSecretSchema,\n rotateSecretSchema,\n updateSecretSchema,\n type CreateSecret,\n type RotateSecret,\n type UpdateSecret,\n} from \"./secret.js\";\n\nexport {\n createCostEventSchema,\n updateBudgetSchema,\n type CreateCostEvent,\n type UpdateBudget,\n} from \"./cost.js\";\n\nexport {\n createAssetImageMetadataSchema,\n type CreateAssetImageMetadata,\n} from \"./asset.js\";\n\nexport {\n createCompanyInviteSchema,\n acceptInviteSchema,\n listJoinRequestsQuerySchema,\n claimJoinRequestApiKeySchema,\n updateMemberPermissionsSchema,\n updateUserCompanyAccessSchema,\n type CreateCompanyInvite,\n type AcceptInvite,\n type ListJoinRequestsQuery,\n type ClaimJoinRequestApiKey,\n type UpdateMemberPermissions,\n type UpdateUserCompanyAccess,\n} from \"./access.js\";\n", "export const API_PREFIX = \"/api\";\n\nexport const API = {\n health: `${API_PREFIX}/health`,\n companies: `${API_PREFIX}/companies`,\n agents: `${API_PREFIX}/agents`,\n projects: `${API_PREFIX}/projects`,\n issues: `${API_PREFIX}/issues`,\n goals: `${API_PREFIX}/goals`,\n approvals: `${API_PREFIX}/approvals`,\n secrets: `${API_PREFIX}/secrets`,\n costs: `${API_PREFIX}/costs`,\n activity: `${API_PREFIX}/activity`,\n dashboard: `${API_PREFIX}/dashboard`,\n sidebarBadges: `${API_PREFIX}/sidebar-badges`,\n invites: `${API_PREFIX}/invites`,\n joinRequests: `${API_PREFIX}/join-requests`,\n members: `${API_PREFIX}/members`,\n admin: `${API_PREFIX}/admin`,\n} as const;\n", "const AGENT_URL_KEY_DELIM_RE = /[^a-z0-9]+/g;\nconst AGENT_URL_KEY_TRIM_RE = /^-+|-+$/g;\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nexport function isUuidLike(value: string | null | undefined): boolean {\n if (typeof value !== \"string\") return false;\n return UUID_RE.test(value.trim());\n}\n\nexport function normalizeAgentUrlKey(value: string | null | undefined): string | null {\n if (typeof value !== \"string\") return null;\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(AGENT_URL_KEY_DELIM_RE, \"-\")\n .replace(AGENT_URL_KEY_TRIM_RE, \"\");\n return normalized.length > 0 ? normalized : null;\n}\n\nexport function deriveAgentUrlKey(name: string | null | undefined, fallback?: string | null): string {\n return normalizeAgentUrlKey(name) ?? normalizeAgentUrlKey(fallback) ?? \"agent\";\n}\n", "const PROJECT_URL_KEY_DELIM_RE = /[^a-z0-9]+/g;\nconst PROJECT_URL_KEY_TRIM_RE = /^-+|-+$/g;\n\nexport function normalizeProjectUrlKey(value: string | null | undefined): string | null {\n if (typeof value !== \"string\") return null;\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(PROJECT_URL_KEY_DELIM_RE, \"-\")\n .replace(PROJECT_URL_KEY_TRIM_RE, \"\");\n return normalized.length > 0 ? normalized : null;\n}\n\nexport function deriveProjectUrlKey(name: string | null | undefined, fallback?: string | null): string {\n return normalizeProjectUrlKey(name) ?? normalizeProjectUrlKey(fallback) ?? \"project\";\n}\n", "export const PROJECT_MENTION_SCHEME = \"project://\";\n\nconst HEX_COLOR_RE = /^[0-9a-f]{6}$/i;\nconst HEX_COLOR_SHORT_RE = /^[0-9a-f]{3}$/i;\nconst HEX_COLOR_WITH_HASH_RE = /^#[0-9a-f]{6}$/i;\nconst HEX_COLOR_SHORT_WITH_HASH_RE = /^#[0-9a-f]{3}$/i;\nconst PROJECT_MENTION_LINK_RE = /\\[[^\\]]*]\\((project:\\/\\/[^)\\s]+)\\)/gi;\n\nexport interface ParsedProjectMention {\n projectId: string;\n color: string | null;\n}\n\nfunction normalizeHexColor(input: string | null | undefined): string | null {\n if (!input) return null;\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n if (HEX_COLOR_WITH_HASH_RE.test(trimmed)) {\n return trimmed.toLowerCase();\n }\n if (HEX_COLOR_RE.test(trimmed)) {\n return `#${trimmed.toLowerCase()}`;\n }\n if (HEX_COLOR_SHORT_WITH_HASH_RE.test(trimmed)) {\n const raw = trimmed.slice(1).toLowerCase();\n return `#${raw[0]}${raw[0]}${raw[1]}${raw[1]}${raw[2]}${raw[2]}`;\n }\n if (HEX_COLOR_SHORT_RE.test(trimmed)) {\n const raw = trimmed.toLowerCase();\n return `#${raw[0]}${raw[0]}${raw[1]}${raw[1]}${raw[2]}${raw[2]}`;\n }\n return null;\n}\n\nexport function buildProjectMentionHref(projectId: string, color?: string | null): string {\n const trimmedProjectId = projectId.trim();\n const normalizedColor = normalizeHexColor(color ?? null);\n if (!normalizedColor) {\n return `${PROJECT_MENTION_SCHEME}${trimmedProjectId}`;\n }\n return `${PROJECT_MENTION_SCHEME}${trimmedProjectId}?c=${encodeURIComponent(normalizedColor.slice(1))}`;\n}\n\nexport function parseProjectMentionHref(href: string): ParsedProjectMention | null {\n if (!href.startsWith(PROJECT_MENTION_SCHEME)) return null;\n\n let url: URL;\n try {\n url = new URL(href);\n } catch {\n return null;\n }\n\n if (url.protocol !== \"project:\") return null;\n\n const projectId = `${url.hostname}${url.pathname}`.replace(/^\\/+/, \"\").trim();\n if (!projectId) return null;\n\n const color = normalizeHexColor(url.searchParams.get(\"c\") ?? url.searchParams.get(\"color\"));\n\n return {\n projectId,\n color,\n };\n}\n\nexport function extractProjectMentionIds(markdown: string): string[] {\n if (!markdown) return [];\n const ids = new Set<string>();\n const re = new RegExp(PROJECT_MENTION_LINK_RE);\n let match: RegExpExecArray | null;\n while ((match = re.exec(markdown)) !== null) {\n const parsed = parseProjectMentionHref(match[1]);\n if (parsed) ids.add(parsed.projectId);\n }\n return [...ids];\n}\n", "import { z } from \"zod\";\nimport {\n AUTH_BASE_URL_MODES,\n DEPLOYMENT_EXPOSURES,\n DEPLOYMENT_MODES,\n SECRET_PROVIDERS,\n STORAGE_PROVIDERS,\n} from \"./constants.js\";\n\nexport const configMetaSchema = z.object({\n version: z.literal(1),\n updatedAt: z.string(),\n source: z.enum([\"onboard\", \"configure\", \"doctor\"]),\n});\n\nexport const llmConfigSchema = z.object({\n provider: z.enum([\"claude\", \"openai\"]),\n apiKey: z.string().optional(),\n});\n\nexport const databaseConfigSchema = z.object({\n mode: z.enum([\"embedded-postgres\", \"postgres\"]).default(\"embedded-postgres\"),\n connectionString: z.string().optional(),\n embeddedPostgresDataDir: z.string().default(\"~/.paperclip/instances/default/db\"),\n embeddedPostgresPort: z.number().int().min(1).max(65535).default(54329),\n});\n\nexport const loggingConfigSchema = z.object({\n mode: z.enum([\"file\", \"cloud\"]),\n logDir: z.string().default(\"~/.paperclip/instances/default/logs\"),\n});\n\nexport const serverConfigSchema = z.object({\n deploymentMode: z.enum(DEPLOYMENT_MODES).default(\"local_trusted\"),\n exposure: z.enum(DEPLOYMENT_EXPOSURES).default(\"private\"),\n host: z.string().default(\"127.0.0.1\"),\n port: z.number().int().min(1).max(65535).default(3100),\n allowedHostnames: z.array(z.string().min(1)).default([]),\n serveUi: z.boolean().default(true),\n});\n\nexport const authConfigSchema = z.object({\n baseUrlMode: z.enum(AUTH_BASE_URL_MODES).default(\"auto\"),\n publicBaseUrl: z.string().url().optional(),\n});\n\nexport const storageLocalDiskConfigSchema = z.object({\n baseDir: z.string().default(\"~/.paperclip/instances/default/data/storage\"),\n});\n\nexport const storageS3ConfigSchema = z.object({\n bucket: z.string().min(1).default(\"paperclip\"),\n region: z.string().min(1).default(\"us-east-1\"),\n endpoint: z.string().optional(),\n prefix: z.string().default(\"\"),\n forcePathStyle: z.boolean().default(false),\n});\n\nexport const storageConfigSchema = z.object({\n provider: z.enum(STORAGE_PROVIDERS).default(\"local_disk\"),\n localDisk: storageLocalDiskConfigSchema.default({\n baseDir: \"~/.paperclip/instances/default/data/storage\",\n }),\n s3: storageS3ConfigSchema.default({\n bucket: \"paperclip\",\n region: \"us-east-1\",\n prefix: \"\",\n forcePathStyle: false,\n }),\n});\n\nexport const secretsLocalEncryptedConfigSchema = z.object({\n keyFilePath: z.string().default(\"~/.paperclip/instances/default/secrets/master.key\"),\n});\n\nexport const secretsConfigSchema = z.object({\n provider: z.enum(SECRET_PROVIDERS).default(\"local_encrypted\"),\n strictMode: z.boolean().default(false),\n localEncrypted: secretsLocalEncryptedConfigSchema.default({\n keyFilePath: \"~/.paperclip/instances/default/secrets/master.key\",\n }),\n});\n\nexport const paperclipConfigSchema = z\n .object({\n $meta: configMetaSchema,\n llm: llmConfigSchema.optional(),\n database: databaseConfigSchema,\n logging: loggingConfigSchema,\n server: serverConfigSchema,\n auth: authConfigSchema.default({\n baseUrlMode: \"auto\",\n }),\n storage: storageConfigSchema.default({\n provider: \"local_disk\",\n localDisk: {\n baseDir: \"~/.paperclip/instances/default/data/storage\",\n },\n s3: {\n bucket: \"paperclip\",\n region: \"us-east-1\",\n prefix: \"\",\n forcePathStyle: false,\n },\n }),\n secrets: secretsConfigSchema.default({\n provider: \"local_encrypted\",\n strictMode: false,\n localEncrypted: {\n keyFilePath: \"~/.paperclip/instances/default/secrets/master.key\",\n },\n }),\n })\n .superRefine((value, ctx) => {\n if (value.server.deploymentMode === \"local_trusted\") {\n if (value.server.exposure !== \"private\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"server.exposure must be private when deploymentMode is local_trusted\",\n path: [\"server\", \"exposure\"],\n });\n }\n return;\n }\n\n if (value.auth.baseUrlMode === \"explicit\" && !value.auth.publicBaseUrl) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.publicBaseUrl is required when auth.baseUrlMode is explicit\",\n path: [\"auth\", \"publicBaseUrl\"],\n });\n }\n\n if (value.server.exposure === \"public\" && value.auth.baseUrlMode !== \"explicit\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.baseUrlMode must be explicit when deploymentMode=authenticated and exposure=public\",\n path: [\"auth\", \"baseUrlMode\"],\n });\n }\n\n if (value.server.exposure === \"public\" && !value.auth.publicBaseUrl) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.publicBaseUrl is required when deploymentMode=authenticated and exposure=public\",\n path: [\"auth\", \"publicBaseUrl\"],\n });\n }\n });\n\nexport type PaperclipConfig = z.infer<typeof paperclipConfigSchema>;\nexport type LlmConfig = z.infer<typeof llmConfigSchema>;\nexport type DatabaseConfig = z.infer<typeof databaseConfigSchema>;\nexport type LoggingConfig = z.infer<typeof loggingConfigSchema>;\nexport type ServerConfig = z.infer<typeof serverConfigSchema>;\nexport type StorageConfig = z.infer<typeof storageConfigSchema>;\nexport type StorageLocalDiskConfig = z.infer<typeof storageLocalDiskConfigSchema>;\nexport type StorageS3Config = z.infer<typeof storageS3ConfigSchema>;\nexport type SecretsConfig = z.infer<typeof secretsConfigSchema>;\nexport type SecretsLocalEncryptedConfig = z.infer<typeof secretsLocalEncryptedConfigSchema>;\nexport type AuthConfig = z.infer<typeof authConfigSchema>;\nexport type ConfigMeta = z.infer<typeof configMetaSchema>;\n", "export {\n COMPANY_STATUSES,\n DEPLOYMENT_MODES,\n DEPLOYMENT_EXPOSURES,\n AUTH_BASE_URL_MODES,\n AGENT_STATUSES,\n AGENT_ADAPTER_TYPES,\n AGENT_ROLES,\n AGENT_ICON_NAMES,\n ISSUE_STATUSES,\n ISSUE_PRIORITIES,\n GOAL_LEVELS,\n GOAL_STATUSES,\n PROJECT_STATUSES,\n PROJECT_COLORS,\n APPROVAL_TYPES,\n APPROVAL_STATUSES,\n SECRET_PROVIDERS,\n STORAGE_PROVIDERS,\n HEARTBEAT_INVOCATION_SOURCES,\n HEARTBEAT_RUN_STATUSES,\n WAKEUP_TRIGGER_DETAILS,\n WAKEUP_REQUEST_STATUSES,\n LIVE_EVENT_TYPES,\n PRINCIPAL_TYPES,\n MEMBERSHIP_STATUSES,\n INSTANCE_USER_ROLES,\n INVITE_TYPES,\n INVITE_JOIN_TYPES,\n JOIN_REQUEST_TYPES,\n JOIN_REQUEST_STATUSES,\n PERMISSION_KEYS,\n type CompanyStatus,\n type DeploymentMode,\n type DeploymentExposure,\n type AuthBaseUrlMode,\n type AgentStatus,\n type AgentAdapterType,\n type AgentRole,\n type AgentIconName,\n type IssueStatus,\n type IssuePriority,\n type GoalLevel,\n type GoalStatus,\n type ProjectStatus,\n type ApprovalType,\n type ApprovalStatus,\n type SecretProvider,\n type StorageProvider,\n type HeartbeatInvocationSource,\n type HeartbeatRunStatus,\n type WakeupTriggerDetail,\n type WakeupRequestStatus,\n type LiveEventType,\n type PrincipalType,\n type MembershipStatus,\n type InstanceUserRole,\n type InviteType,\n type InviteJoinType,\n type JoinRequestType,\n type JoinRequestStatus,\n type PermissionKey,\n} from \"./constants.js\";\n\nexport type {\n Company,\n Agent,\n AgentPermissions,\n AgentKeyCreated,\n AgentConfigRevision,\n AdapterEnvironmentCheckLevel,\n AdapterEnvironmentTestStatus,\n AdapterEnvironmentCheck,\n AdapterEnvironmentTestResult,\n AssetImage,\n Project,\n ProjectGoalRef,\n ProjectWorkspace,\n Issue,\n IssueAssigneeAdapterOverrides,\n IssueComment,\n IssueAttachment,\n IssueLabel,\n Goal,\n Approval,\n ApprovalComment,\n CostEvent,\n CostSummary,\n CostByAgent,\n HeartbeatRun,\n HeartbeatRunEvent,\n AgentRuntimeState,\n AgentTaskSession,\n AgentWakeupRequest,\n LiveEvent,\n DashboardSummary,\n ActivityEvent,\n SidebarBadges,\n CompanyMembership,\n PrincipalPermissionGrant,\n Invite,\n JoinRequest,\n InstanceUserRoleGrant,\n CompanyPortabilityInclude,\n CompanyPortabilitySecretRequirement,\n CompanyPortabilityCompanyManifestEntry,\n CompanyPortabilityAgentManifestEntry,\n CompanyPortabilityManifest,\n CompanyPortabilityExportResult,\n CompanyPortabilitySource,\n CompanyPortabilityImportTarget,\n CompanyPortabilityAgentSelection,\n CompanyPortabilityCollisionStrategy,\n CompanyPortabilityPreviewRequest,\n CompanyPortabilityPreviewAgentPlan,\n CompanyPortabilityPreviewResult,\n CompanyPortabilityImportRequest,\n CompanyPortabilityImportResult,\n CompanyPortabilityExportRequest,\n EnvBinding,\n AgentEnvConfig,\n CompanySecret,\n SecretProviderDescriptor,\n} from \"./types/index.js\";\n\nexport {\n createCompanySchema,\n updateCompanySchema,\n type CreateCompany,\n type UpdateCompany,\n createAgentSchema,\n createAgentHireSchema,\n updateAgentSchema,\n updateAgentInstructionsPathSchema,\n createAgentKeySchema,\n wakeAgentSchema,\n resetAgentSessionSchema,\n testAdapterEnvironmentSchema,\n agentPermissionsSchema,\n updateAgentPermissionsSchema,\n type CreateAgent,\n type CreateAgentHire,\n type UpdateAgent,\n type UpdateAgentInstructionsPath,\n type CreateAgentKey,\n type WakeAgent,\n type ResetAgentSession,\n type TestAdapterEnvironment,\n type UpdateAgentPermissions,\n createProjectSchema,\n updateProjectSchema,\n createProjectWorkspaceSchema,\n updateProjectWorkspaceSchema,\n type CreateProject,\n type UpdateProject,\n type CreateProjectWorkspace,\n type UpdateProjectWorkspace,\n createIssueSchema,\n createIssueLabelSchema,\n updateIssueSchema,\n checkoutIssueSchema,\n addIssueCommentSchema,\n linkIssueApprovalSchema,\n createIssueAttachmentMetadataSchema,\n type CreateIssue,\n type CreateIssueLabel,\n type UpdateIssue,\n type CheckoutIssue,\n type AddIssueComment,\n type LinkIssueApproval,\n type CreateIssueAttachmentMetadata,\n createGoalSchema,\n updateGoalSchema,\n type CreateGoal,\n type UpdateGoal,\n createApprovalSchema,\n resolveApprovalSchema,\n requestApprovalRevisionSchema,\n resubmitApprovalSchema,\n addApprovalCommentSchema,\n type CreateApproval,\n type ResolveApproval,\n type RequestApprovalRevision,\n type ResubmitApproval,\n type AddApprovalComment,\n envBindingPlainSchema,\n envBindingSecretRefSchema,\n envBindingSchema,\n envConfigSchema,\n createSecretSchema,\n rotateSecretSchema,\n updateSecretSchema,\n type CreateSecret,\n type RotateSecret,\n type UpdateSecret,\n createCostEventSchema,\n updateBudgetSchema,\n createAssetImageMetadataSchema,\n createCompanyInviteSchema,\n acceptInviteSchema,\n listJoinRequestsQuerySchema,\n claimJoinRequestApiKeySchema,\n updateMemberPermissionsSchema,\n updateUserCompanyAccessSchema,\n type CreateCostEvent,\n type UpdateBudget,\n type CreateAssetImageMetadata,\n type CreateCompanyInvite,\n type AcceptInvite,\n type ListJoinRequestsQuery,\n type ClaimJoinRequestApiKey,\n type UpdateMemberPermissions,\n type UpdateUserCompanyAccess,\n portabilityIncludeSchema,\n portabilitySecretRequirementSchema,\n portabilityCompanyManifestEntrySchema,\n portabilityAgentManifestEntrySchema,\n portabilityManifestSchema,\n portabilitySourceSchema,\n portabilityTargetSchema,\n portabilityAgentSelectionSchema,\n portabilityCollisionStrategySchema,\n companyPortabilityExportSchema,\n companyPortabilityPreviewSchema,\n companyPortabilityImportSchema,\n type CompanyPortabilityExport,\n type CompanyPortabilityPreview,\n type CompanyPortabilityImport,\n} from \"./validators/index.js\";\n\nexport { API_PREFIX, API } from \"./api.js\";\nexport { normalizeAgentUrlKey, deriveAgentUrlKey, isUuidLike } from \"./agent-url-key.js\";\nexport { deriveProjectUrlKey, normalizeProjectUrlKey } from \"./project-url-key.js\";\nexport {\n PROJECT_MENTION_SCHEME,\n buildProjectMentionHref,\n parseProjectMentionHref,\n extractProjectMentionIds,\n type ParsedProjectMention,\n} from \"./project-mentions.js\";\n\nexport {\n paperclipConfigSchema,\n configMetaSchema,\n llmConfigSchema,\n databaseConfigSchema,\n loggingConfigSchema,\n serverConfigSchema,\n authConfigSchema,\n secretsConfigSchema,\n storageConfigSchema,\n storageLocalDiskConfigSchema,\n storageS3ConfigSchema,\n secretsLocalEncryptedConfigSchema,\n type PaperclipConfig,\n type LlmConfig,\n type DatabaseConfig,\n type LoggingConfig,\n type ServerConfig,\n type AuthConfig,\n type StorageConfig,\n type StorageLocalDiskConfig,\n type StorageS3Config,\n type SecretsConfig,\n type SecretsLocalEncryptedConfig,\n type ConfigMeta,\n} from \"./config-schema.js\";\n", "export {\n paperclipConfigSchema,\n configMetaSchema,\n llmConfigSchema,\n databaseConfigSchema,\n loggingConfigSchema,\n serverConfigSchema,\n authConfigSchema,\n storageConfigSchema,\n storageLocalDiskConfigSchema,\n storageS3ConfigSchema,\n secretsConfigSchema,\n secretsLocalEncryptedConfigSchema,\n type PaperclipConfig,\n type LlmConfig,\n type DatabaseConfig,\n type LoggingConfig,\n type ServerConfig,\n type AuthConfig,\n type StorageConfig,\n type StorageLocalDiskConfig,\n type StorageS3Config,\n type SecretsConfig,\n type SecretsLocalEncryptedConfig,\n type ConfigMeta,\n} from \"@paperclipai/shared\";\n", "import os from \"node:os\";\nimport path from \"node:path\";\n\nconst DEFAULT_INSTANCE_ID = \"default\";\nconst INSTANCE_ID_RE = /^[a-zA-Z0-9_-]+$/;\n\nexport function resolvePaperclipHomeDir(): string {\n const envHome = process.env.PAPERCLIP_HOME?.trim();\n if (envHome) return path.resolve(expandHomePrefix(envHome));\n return path.resolve(os.homedir(), \".paperclip\");\n}\n\nexport function resolvePaperclipInstanceId(override?: string): string {\n const raw = override?.trim() || process.env.PAPERCLIP_INSTANCE_ID?.trim() || DEFAULT_INSTANCE_ID;\n if (!INSTANCE_ID_RE.test(raw)) {\n throw new Error(\n `Invalid instance id '${raw}'. Allowed characters: letters, numbers, '_' and '-'.`,\n );\n }\n return raw;\n}\n\nexport function resolvePaperclipInstanceRoot(instanceId?: string): string {\n const id = resolvePaperclipInstanceId(instanceId);\n return path.resolve(resolvePaperclipHomeDir(), \"instances\", id);\n}\n\nexport function resolveDefaultConfigPath(instanceId?: string): string {\n return path.resolve(resolvePaperclipInstanceRoot(instanceId), \"config.json\");\n}\n\nexport function resolveDefaultContextPath(): string {\n return path.resolve(resolvePaperclipHomeDir(), \"context.json\");\n}\n\nexport function resolveDefaultEmbeddedPostgresDir(instanceId?: string): string {\n return path.resolve(resolvePaperclipInstanceRoot(instanceId), \"db\");\n}\n\nexport function resolveDefaultLogsDir(instanceId?: string): string {\n return path.resolve(resolvePaperclipInstanceRoot(instanceId), \"logs\");\n}\n\nexport function resolveDefaultSecretsKeyFilePath(instanceId?: string): string {\n return path.resolve(resolvePaperclipInstanceRoot(instanceId), \"secrets\", \"master.key\");\n}\n\nexport function resolveDefaultStorageDir(instanceId?: string): string {\n return path.resolve(resolvePaperclipInstanceRoot(instanceId), \"data\", \"storage\");\n}\n\nexport function expandHomePrefix(value: string): string {\n if (value === \"~\") return os.homedir();\n if (value.startsWith(\"~/\")) return path.resolve(os.homedir(), value.slice(2));\n return value;\n}\n\nexport function describeLocalInstancePaths(instanceId?: string) {\n const resolvedInstanceId = resolvePaperclipInstanceId(instanceId);\n const instanceRoot = resolvePaperclipInstanceRoot(resolvedInstanceId);\n return {\n homeDir: resolvePaperclipHomeDir(),\n instanceId: resolvedInstanceId,\n instanceRoot,\n configPath: resolveDefaultConfigPath(resolvedInstanceId),\n embeddedPostgresDataDir: resolveDefaultEmbeddedPostgresDir(resolvedInstanceId),\n logDir: resolveDefaultLogsDir(resolvedInstanceId),\n secretsKeyFilePath: resolveDefaultSecretsKeyFilePath(resolvedInstanceId),\n storageDir: resolveDefaultStorageDir(resolvedInstanceId),\n };\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { paperclipConfigSchema, type PaperclipConfig } from \"./schema.js\";\nimport {\n resolveDefaultConfigPath,\n resolvePaperclipInstanceId,\n} from \"./home.js\";\n\nconst DEFAULT_CONFIG_BASENAME = \"config.json\";\n\nfunction findConfigFileFromAncestors(startDir: string): string | null {\n const absoluteStartDir = path.resolve(startDir);\n let currentDir = absoluteStartDir;\n\n while (true) {\n const candidate = path.resolve(currentDir, \".paperclip\", DEFAULT_CONFIG_BASENAME);\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n\n const nextDir = path.resolve(currentDir, \"..\");\n if (nextDir === currentDir) break;\n currentDir = nextDir;\n }\n\n return null;\n}\n\nexport function resolveConfigPath(overridePath?: string): string {\n if (overridePath) return path.resolve(overridePath);\n if (process.env.PAPERCLIP_CONFIG) return path.resolve(process.env.PAPERCLIP_CONFIG);\n return findConfigFileFromAncestors(process.cwd()) ?? resolveDefaultConfigPath(resolvePaperclipInstanceId());\n}\n\nfunction parseJson(filePath: string): unknown {\n try {\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch (err) {\n throw new Error(`Failed to parse JSON at ${filePath}: ${err instanceof Error ? err.message : String(err)}`);\n }\n}\n\nfunction migrateLegacyConfig(raw: unknown): unknown {\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) return raw;\n const config = { ...(raw as Record<string, unknown>) };\n const databaseRaw = config.database;\n if (typeof databaseRaw !== \"object\" || databaseRaw === null || Array.isArray(databaseRaw)) {\n return config;\n }\n\n const database = { ...(databaseRaw as Record<string, unknown>) };\n if (database.mode === \"pglite\") {\n database.mode = \"embedded-postgres\";\n\n if (typeof database.embeddedPostgresDataDir !== \"string\" && typeof database.pgliteDataDir === \"string\") {\n database.embeddedPostgresDataDir = database.pgliteDataDir;\n }\n if (\n typeof database.embeddedPostgresPort !== \"number\" &&\n typeof database.pglitePort === \"number\" &&\n Number.isFinite(database.pglitePort)\n ) {\n database.embeddedPostgresPort = database.pglitePort;\n }\n }\n\n config.database = database;\n return config;\n}\n\nfunction formatValidationError(err: unknown): string {\n const issues = (err as { issues?: Array<{ path?: unknown; message?: unknown }> })?.issues;\n if (Array.isArray(issues) && issues.length > 0) {\n return issues\n .map((issue) => {\n const pathParts = Array.isArray(issue.path) ? issue.path.map(String) : [];\n const issuePath = pathParts.length > 0 ? pathParts.join(\".\") : \"config\";\n const message = typeof issue.message === \"string\" ? issue.message : \"Invalid value\";\n return `${issuePath}: ${message}`;\n })\n .join(\"; \");\n }\n return err instanceof Error ? err.message : String(err);\n}\n\nexport function readConfig(configPath?: string): PaperclipConfig | null {\n const filePath = resolveConfigPath(configPath);\n if (!fs.existsSync(filePath)) return null;\n const raw = parseJson(filePath);\n const migrated = migrateLegacyConfig(raw);\n const parsed = paperclipConfigSchema.safeParse(migrated);\n if (!parsed.success) {\n throw new Error(`Invalid config at ${filePath}: ${formatValidationError(parsed.error)}`);\n }\n return parsed.data;\n}\n\nexport function writeConfig(\n config: PaperclipConfig,\n configPath?: string,\n): void {\n const filePath = resolveConfigPath(configPath);\n const dir = path.dirname(filePath);\n fs.mkdirSync(dir, { recursive: true });\n\n // Backup existing config before overwriting\n if (fs.existsSync(filePath)) {\n const backupPath = filePath + \".backup\";\n fs.copyFileSync(filePath, backupPath);\n fs.chmodSync(backupPath, 0o600);\n }\n\n fs.writeFileSync(filePath, JSON.stringify(config, null, 2) + \"\\n\", {\n mode: 0o600,\n });\n}\n\nexport function configExists(configPath?: string): boolean {\n return fs.existsSync(resolveConfigPath(configPath));\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { randomBytes } from \"node:crypto\";\nimport { config as loadDotenv, parse as parseEnvFileContents } from \"dotenv\";\nimport { resolveConfigPath } from \"./store.js\";\n\nconst JWT_SECRET_ENV_KEY = \"PAPERCLIP_AGENT_JWT_SECRET\";\nfunction resolveEnvFilePath(configPath?: string) {\n return path.resolve(path.dirname(resolveConfigPath(configPath)), \".env\");\n}\nconst loadedEnvFiles = new Set<string>();\n\nfunction isNonEmpty(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction parseEnvFile(contents: string) {\n try {\n return parseEnvFileContents(contents);\n } catch {\n return {};\n }\n}\n\nfunction renderEnvFile(entries: Record<string, string>) {\n const lines = [\n \"# Paperclip environment variables\",\n \"# Generated by `paperclipai onboard`\",\n ...Object.entries(entries).map(([key, value]) => `${key}=${value}`),\n \"\",\n ];\n return lines.join(\"\\n\");\n}\n\nexport function resolveAgentJwtEnvFile(configPath?: string): string {\n return resolveEnvFilePath(configPath);\n}\n\nexport function loadAgentJwtEnvFile(filePath = resolveEnvFilePath()): void {\n if (loadedEnvFiles.has(filePath)) return;\n\n if (!fs.existsSync(filePath)) return;\n loadedEnvFiles.add(filePath);\n loadDotenv({ path: filePath, override: false, quiet: true });\n}\n\nexport function readAgentJwtSecretFromEnv(configPath?: string): string | null {\n loadAgentJwtEnvFile(resolveEnvFilePath(configPath));\n const raw = process.env[JWT_SECRET_ENV_KEY];\n return isNonEmpty(raw) ? raw!.trim() : null;\n}\n\nexport function readAgentJwtSecretFromEnvFile(filePath = resolveEnvFilePath()): string | null {\n if (!fs.existsSync(filePath)) return null;\n\n const raw = fs.readFileSync(filePath, \"utf-8\");\n const values = parseEnvFile(raw);\n const value = values[JWT_SECRET_ENV_KEY];\n return isNonEmpty(value) ? value!.trim() : null;\n}\n\nexport function ensureAgentJwtSecret(configPath?: string): { secret: string; created: boolean } {\n const existingEnv = readAgentJwtSecretFromEnv(configPath);\n if (existingEnv) {\n return { secret: existingEnv, created: false };\n }\n\n const envFilePath = resolveEnvFilePath(configPath);\n const existingFile = readAgentJwtSecretFromEnvFile(envFilePath);\n const secret = existingFile ?? randomBytes(32).toString(\"hex\");\n const created = !existingFile;\n\n if (!existingFile) {\n writeAgentJwtEnv(secret, envFilePath);\n }\n\n return { secret, created };\n}\n\nexport function writeAgentJwtEnv(secret: string, filePath = resolveEnvFilePath()): void {\n const dir = path.dirname(filePath);\n fs.mkdirSync(dir, { recursive: true });\n\n const current = fs.existsSync(filePath) ? parseEnvFile(fs.readFileSync(filePath, \"utf-8\")) : {};\n current[JWT_SECRET_ENV_KEY] = secret;\n\n fs.writeFileSync(filePath, renderEnvFile(current), {\n mode: 0o600,\n });\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { expandHomePrefix } from \"../config/home.js\";\n\nfunction unique(items: string[]): string[] {\n return Array.from(new Set(items));\n}\n\nexport function resolveRuntimeLikePath(value: string, configPath?: string): string {\n const expanded = expandHomePrefix(value);\n if (path.isAbsolute(expanded)) return path.resolve(expanded);\n\n const cwd = process.cwd();\n const configDir = configPath ? path.dirname(configPath) : null;\n const workspaceRoot = configDir ? path.resolve(configDir, \"..\") : cwd;\n\n const candidates = unique([\n ...(configDir ? [path.resolve(configDir, expanded)] : []),\n path.resolve(workspaceRoot, \"server\", expanded),\n path.resolve(workspaceRoot, expanded),\n path.resolve(cwd, expanded),\n ]);\n\n return candidates.find((candidate) => fs.existsSync(candidate)) ?? candidates[0];\n}\n", "import { randomBytes } from \"node:crypto\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { PaperclipConfig } from \"./schema.js\";\nimport { resolveRuntimeLikePath } from \"../utils/path-resolver.js\";\n\nexport type EnsureSecretsKeyResult =\n | { status: \"created\"; path: string }\n | { status: \"existing\"; path: string }\n | { status: \"skipped_env\"; path: null }\n | { status: \"skipped_provider\"; path: null };\n\nexport function ensureLocalSecretsKeyFile(\n config: Pick<PaperclipConfig, \"secrets\">,\n configPath?: string,\n): EnsureSecretsKeyResult {\n if (config.secrets.provider !== \"local_encrypted\") {\n return { status: \"skipped_provider\", path: null };\n }\n\n const envMasterKey = process.env.PAPERCLIP_SECRETS_MASTER_KEY;\n if (envMasterKey && envMasterKey.trim().length > 0) {\n return { status: \"skipped_env\", path: null };\n }\n\n const keyFileOverride = process.env.PAPERCLIP_SECRETS_MASTER_KEY_FILE;\n const configuredPath =\n keyFileOverride && keyFileOverride.trim().length > 0\n ? keyFileOverride.trim()\n : config.secrets.localEncrypted.keyFilePath;\n const keyFilePath = resolveRuntimeLikePath(configuredPath, configPath);\n\n if (fs.existsSync(keyFilePath)) {\n return { status: \"existing\", path: keyFilePath };\n }\n\n fs.mkdirSync(path.dirname(keyFilePath), { recursive: true });\n fs.writeFileSync(keyFilePath, randomBytes(32).toString(\"base64\"), {\n encoding: \"utf8\",\n mode: 0o600,\n });\n try {\n fs.chmodSync(keyFilePath, 0o600);\n } catch {\n // best effort\n }\n return { status: \"created\", path: keyFilePath };\n}\n", "import * as p from \"@clack/prompts\";\nimport type { DatabaseConfig } from \"../config/schema.js\";\nimport { resolveDefaultEmbeddedPostgresDir, resolvePaperclipInstanceId } from \"../config/home.js\";\n\nexport async function promptDatabase(): Promise<DatabaseConfig> {\n const defaultEmbeddedDir = resolveDefaultEmbeddedPostgresDir(resolvePaperclipInstanceId());\n\n const mode = await p.select({\n message: \"Database mode\",\n options: [\n { value: \"embedded-postgres\" as const, label: \"Embedded PostgreSQL (managed locally)\", hint: \"recommended\" },\n { value: \"postgres\" as const, label: \"PostgreSQL (external server)\" },\n ],\n });\n\n if (p.isCancel(mode)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n if (mode === \"postgres\") {\n const connectionString = await p.text({\n message: \"PostgreSQL connection string\",\n placeholder: \"postgres://user:pass@localhost:5432/paperclip\",\n validate: (val) => {\n if (!val) return \"Connection string is required for PostgreSQL mode\";\n if (!val.startsWith(\"postgres\")) return \"Must be a postgres:// or postgresql:// URL\";\n },\n });\n\n if (p.isCancel(connectionString)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return {\n mode: \"postgres\",\n connectionString,\n embeddedPostgresDataDir: defaultEmbeddedDir,\n embeddedPostgresPort: 54329,\n };\n }\n\n const embeddedPostgresDataDir = await p.text({\n message: \"Embedded PostgreSQL data directory\",\n defaultValue: defaultEmbeddedDir,\n placeholder: defaultEmbeddedDir,\n });\n\n if (p.isCancel(embeddedPostgresDataDir)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const embeddedPostgresPort = await p.text({\n message: \"Embedded PostgreSQL port\",\n defaultValue: \"54329\",\n placeholder: \"54329\",\n validate: (val) => {\n const n = Number(val);\n if (!Number.isInteger(n) || n < 1 || n > 65535) return \"Port must be an integer between 1 and 65535\";\n },\n });\n\n if (p.isCancel(embeddedPostgresPort)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return {\n mode: \"embedded-postgres\",\n embeddedPostgresDataDir: embeddedPostgresDataDir || defaultEmbeddedDir,\n embeddedPostgresPort: Number(embeddedPostgresPort || \"54329\"),\n };\n}\n", "import * as p from \"@clack/prompts\";\nimport type { LlmConfig } from \"../config/schema.js\";\n\nexport async function promptLlm(): Promise<LlmConfig | undefined> {\n const configureLlm = await p.confirm({\n message: \"Configure an LLM provider now?\",\n initialValue: false,\n });\n\n if (p.isCancel(configureLlm)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n if (!configureLlm) return undefined;\n\n const provider = await p.select({\n message: \"LLM provider\",\n options: [\n { value: \"claude\" as const, label: \"Claude (Anthropic)\" },\n { value: \"openai\" as const, label: \"OpenAI\" },\n ],\n });\n\n if (p.isCancel(provider)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const apiKey = await p.password({\n message: `${provider === \"claude\" ? \"Anthropic\" : \"OpenAI\"} API key`,\n validate: (val) => {\n if (!val) return \"API key is required\";\n },\n });\n\n if (p.isCancel(apiKey)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return { provider, apiKey };\n}\n", "import * as p from \"@clack/prompts\";\nimport type { LoggingConfig } from \"../config/schema.js\";\nimport { resolveDefaultLogsDir, resolvePaperclipInstanceId } from \"../config/home.js\";\n\nexport async function promptLogging(): Promise<LoggingConfig> {\n const defaultLogDir = resolveDefaultLogsDir(resolvePaperclipInstanceId());\n const mode = await p.select({\n message: \"Logging mode\",\n options: [\n { value: \"file\" as const, label: \"File-based logging\", hint: \"recommended\" },\n { value: \"cloud\" as const, label: \"Cloud logging\", hint: \"coming soon\" },\n ],\n });\n\n if (p.isCancel(mode)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n if (mode === \"file\") {\n const logDir = await p.text({\n message: \"Log directory\",\n defaultValue: defaultLogDir,\n placeholder: defaultLogDir,\n });\n\n if (p.isCancel(logDir)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return { mode: \"file\", logDir: logDir || defaultLogDir };\n }\n\n p.note(\"Cloud logging is coming soon. Using file-based logging for now.\");\n return { mode: \"file\", logDir: defaultLogDir };\n}\n", "import * as p from \"@clack/prompts\";\nimport type { SecretProvider } from \"@paperclipai/shared\";\nimport type { SecretsConfig } from \"../config/schema.js\";\nimport { resolveDefaultSecretsKeyFilePath, resolvePaperclipInstanceId } from \"../config/home.js\";\n\nfunction defaultKeyFilePath(): string {\n return resolveDefaultSecretsKeyFilePath(resolvePaperclipInstanceId());\n}\n\nexport function defaultSecretsConfig(): SecretsConfig {\n const keyFilePath = defaultKeyFilePath();\n return {\n provider: \"local_encrypted\",\n strictMode: false,\n localEncrypted: {\n keyFilePath,\n },\n };\n}\n\nexport async function promptSecrets(current?: SecretsConfig): Promise<SecretsConfig> {\n const base = current ?? defaultSecretsConfig();\n\n const provider = await p.select({\n message: \"Secrets provider\",\n options: [\n {\n value: \"local_encrypted\" as const,\n label: \"Local encrypted (recommended)\",\n hint: \"best for single-developer installs\",\n },\n {\n value: \"aws_secrets_manager\" as const,\n label: \"AWS Secrets Manager\",\n hint: \"requires external adapter integration\",\n },\n {\n value: \"gcp_secret_manager\" as const,\n label: \"GCP Secret Manager\",\n hint: \"requires external adapter integration\",\n },\n {\n value: \"vault\" as const,\n label: \"HashiCorp Vault\",\n hint: \"requires external adapter integration\",\n },\n ],\n initialValue: base.provider,\n });\n\n if (p.isCancel(provider)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const strictMode = await p.confirm({\n message: \"Require secret refs for sensitive env vars?\",\n initialValue: base.strictMode,\n });\n\n if (p.isCancel(strictMode)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const fallbackDefault = defaultKeyFilePath();\n let keyFilePath = base.localEncrypted.keyFilePath || fallbackDefault;\n if (provider === \"local_encrypted\") {\n const keyPath = await p.text({\n message: \"Local encrypted key file path\",\n defaultValue: keyFilePath,\n placeholder: fallbackDefault,\n validate: (value) => {\n if (!value || value.trim().length === 0) return \"Key file path is required\";\n },\n });\n\n if (p.isCancel(keyPath)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n keyFilePath = keyPath.trim();\n }\n\n if (provider !== \"local_encrypted\") {\n p.note(\n `${provider} is not fully wired in this build yet. Keep local_encrypted unless you are actively implementing that adapter.`,\n \"Heads up\",\n );\n }\n\n return {\n provider: provider as SecretProvider,\n strictMode,\n localEncrypted: {\n keyFilePath,\n },\n };\n}\n", "import * as p from \"@clack/prompts\";\nimport type { StorageConfig } from \"../config/schema.js\";\nimport { resolveDefaultStorageDir, resolvePaperclipInstanceId } from \"../config/home.js\";\n\nfunction defaultStorageBaseDir(): string {\n return resolveDefaultStorageDir(resolvePaperclipInstanceId());\n}\n\nexport function defaultStorageConfig(): StorageConfig {\n return {\n provider: \"local_disk\",\n localDisk: {\n baseDir: defaultStorageBaseDir(),\n },\n s3: {\n bucket: \"paperclip\",\n region: \"us-east-1\",\n endpoint: undefined,\n prefix: \"\",\n forcePathStyle: false,\n },\n };\n}\n\nexport async function promptStorage(current?: StorageConfig): Promise<StorageConfig> {\n const base = current ?? defaultStorageConfig();\n\n const provider = await p.select({\n message: \"Storage provider\",\n options: [\n {\n value: \"local_disk\" as const,\n label: \"Local disk (recommended)\",\n hint: \"best for single-user local deployments\",\n },\n {\n value: \"s3\" as const,\n label: \"S3 compatible\",\n hint: \"for cloud/object storage backends\",\n },\n ],\n initialValue: base.provider,\n });\n\n if (p.isCancel(provider)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n if (provider === \"local_disk\") {\n const baseDir = await p.text({\n message: \"Local storage base directory\",\n defaultValue: base.localDisk.baseDir || defaultStorageBaseDir(),\n placeholder: defaultStorageBaseDir(),\n validate: (value) => {\n if (!value || value.trim().length === 0) return \"Storage base directory is required\";\n },\n });\n\n if (p.isCancel(baseDir)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return {\n provider: \"local_disk\",\n localDisk: {\n baseDir: baseDir.trim(),\n },\n s3: base.s3,\n };\n }\n\n const bucket = await p.text({\n message: \"S3 bucket\",\n defaultValue: base.s3.bucket || \"paperclip\",\n placeholder: \"paperclip\",\n validate: (value) => {\n if (!value || value.trim().length === 0) return \"Bucket is required\";\n },\n });\n\n if (p.isCancel(bucket)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const region = await p.text({\n message: \"S3 region\",\n defaultValue: base.s3.region || \"us-east-1\",\n placeholder: \"us-east-1\",\n validate: (value) => {\n if (!value || value.trim().length === 0) return \"Region is required\";\n },\n });\n\n if (p.isCancel(region)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const endpoint = await p.text({\n message: \"S3 endpoint (optional for compatible backends)\",\n defaultValue: base.s3.endpoint ?? \"\",\n placeholder: \"https://s3.amazonaws.com\",\n });\n\n if (p.isCancel(endpoint)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const prefix = await p.text({\n message: \"Object key prefix (optional)\",\n defaultValue: base.s3.prefix ?? \"\",\n placeholder: \"paperclip/\",\n });\n\n if (p.isCancel(prefix)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const forcePathStyle = await p.confirm({\n message: \"Use S3 path-style URLs?\",\n initialValue: base.s3.forcePathStyle ?? false,\n });\n\n if (p.isCancel(forcePathStyle)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return {\n provider: \"s3\",\n localDisk: base.localDisk,\n s3: {\n bucket: bucket.trim(),\n region: region.trim(),\n endpoint: endpoint.trim() || undefined,\n prefix: prefix.trim(),\n forcePathStyle,\n },\n };\n}\n\n", "export function normalizeHostnameInput(raw: string): string {\n const input = raw.trim();\n if (!input) {\n throw new Error(\"Hostname is required\");\n }\n\n try {\n const url = input.includes(\"://\") ? new URL(input) : new URL(`http://${input}`);\n const hostname = url.hostname.trim().toLowerCase();\n if (!hostname) throw new Error(\"Hostname is required\");\n return hostname;\n } catch {\n throw new Error(`Invalid hostname: ${raw}`);\n }\n}\n\nexport function parseHostnameCsv(raw: string): string[] {\n if (!raw.trim()) return [];\n const unique = new Set<string>();\n for (const part of raw.split(\",\")) {\n const hostname = normalizeHostnameInput(part);\n unique.add(hostname);\n }\n return Array.from(unique);\n}\n\n", "import * as p from \"@clack/prompts\";\nimport type { AuthConfig, ServerConfig } from \"../config/schema.js\";\nimport { parseHostnameCsv } from \"../config/hostnames.js\";\n\nexport async function promptServer(opts?: {\n currentServer?: Partial<ServerConfig>;\n currentAuth?: Partial<AuthConfig>;\n}): Promise<{ server: ServerConfig; auth: AuthConfig }> {\n const currentServer = opts?.currentServer;\n const currentAuth = opts?.currentAuth;\n\n const deploymentModeSelection = await p.select({\n message: \"Deployment mode\",\n options: [\n {\n value: \"local_trusted\",\n label: \"Local trusted\",\n hint: \"Easiest for local setup (no login, localhost-only)\",\n },\n {\n value: \"authenticated\",\n label: \"Authenticated\",\n hint: \"Login required; use for private network or public hosting\",\n },\n ],\n initialValue: currentServer?.deploymentMode ?? \"local_trusted\",\n });\n\n if (p.isCancel(deploymentModeSelection)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n const deploymentMode = deploymentModeSelection as ServerConfig[\"deploymentMode\"];\n\n let exposure: ServerConfig[\"exposure\"] = \"private\";\n if (deploymentMode === \"authenticated\") {\n const exposureSelection = await p.select({\n message: \"Exposure profile\",\n options: [\n {\n value: \"private\",\n label: \"Private network\",\n hint: \"Private access (for example Tailscale), lower setup friction\",\n },\n {\n value: \"public\",\n label: \"Public internet\",\n hint: \"Internet-facing deployment with stricter requirements\",\n },\n ],\n initialValue: currentServer?.exposure ?? \"private\",\n });\n if (p.isCancel(exposureSelection)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n exposure = exposureSelection as ServerConfig[\"exposure\"];\n }\n\n const hostDefault = deploymentMode === \"local_trusted\" ? \"127.0.0.1\" : \"0.0.0.0\";\n const hostStr = await p.text({\n message: \"Bind host\",\n defaultValue: currentServer?.host ?? hostDefault,\n placeholder: hostDefault,\n validate: (val) => {\n if (!val.trim()) return \"Host is required\";\n },\n });\n\n if (p.isCancel(hostStr)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const portStr = await p.text({\n message: \"Server port\",\n defaultValue: String(currentServer?.port ?? 3100),\n placeholder: \"3100\",\n validate: (val) => {\n const n = Number(val);\n if (isNaN(n) || n < 1 || n > 65535 || !Number.isInteger(n)) {\n return \"Must be an integer between 1 and 65535\";\n }\n },\n });\n\n if (p.isCancel(portStr)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n let allowedHostnames: string[] = [];\n if (deploymentMode === \"authenticated\" && exposure === \"private\") {\n const allowedHostnamesInput = await p.text({\n message: \"Allowed hostnames (comma-separated, optional)\",\n defaultValue: (currentServer?.allowedHostnames ?? []).join(\", \"),\n placeholder: \"dotta-macbook-pro, your-host.tailnet.ts.net\",\n validate: (val) => {\n try {\n parseHostnameCsv(val);\n return;\n } catch (err) {\n return err instanceof Error ? err.message : \"Invalid hostname list\";\n }\n },\n });\n\n if (p.isCancel(allowedHostnamesInput)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n allowedHostnames = parseHostnameCsv(allowedHostnamesInput);\n }\n\n const port = Number(portStr) || 3100;\n let auth: AuthConfig = { baseUrlMode: \"auto\" };\n if (deploymentMode === \"authenticated\" && exposure === \"public\") {\n const urlInput = await p.text({\n message: \"Public base URL\",\n defaultValue: currentAuth?.publicBaseUrl ?? \"\",\n placeholder: \"https://paperclip.example.com\",\n validate: (val) => {\n const candidate = val.trim();\n if (!candidate) return \"Public base URL is required for public exposure\";\n try {\n const url = new URL(candidate);\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return \"URL must start with http:// or https://\";\n }\n return;\n } catch {\n return \"Enter a valid URL\";\n }\n },\n });\n if (p.isCancel(urlInput)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n auth = {\n baseUrlMode: \"explicit\",\n publicBaseUrl: urlInput.trim().replace(/\\/+$/, \"\"),\n };\n } else if (currentAuth?.baseUrlMode === \"explicit\" && currentAuth.publicBaseUrl) {\n auth = {\n baseUrlMode: \"explicit\",\n publicBaseUrl: currentAuth.publicBaseUrl,\n };\n }\n\n return {\n server: { deploymentMode, exposure, host: hostStr.trim(), port, allowedHostnames, serveUi: true },\n auth,\n };\n}\n\n", "import { pgTable, uuid, text, integer, timestamp, boolean, uniqueIndex } from \"drizzle-orm/pg-core\";\n\nexport const companies = pgTable(\n \"companies\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n status: text(\"status\").notNull().default(\"active\"),\n issuePrefix: text(\"issue_prefix\").notNull().default(\"PAP\"),\n issueCounter: integer(\"issue_counter\").notNull().default(0),\n budgetMonthlyCents: integer(\"budget_monthly_cents\").notNull().default(0),\n spentMonthlyCents: integer(\"spent_monthly_cents\").notNull().default(0),\n requireBoardApprovalForNewAgents: boolean(\"require_board_approval_for_new_agents\")\n .notNull()\n .default(true),\n brandColor: text(\"brand_color\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n issuePrefixUniqueIdx: uniqueIndex(\"companies_issue_prefix_idx\").on(table.issuePrefix),\n }),\n);\n", "import { pgTable, text, timestamp, boolean } from \"drizzle-orm/pg-core\";\n\nexport const authUsers = pgTable(\"user\", {\n id: text(\"id\").primaryKey(),\n name: text(\"name\").notNull(),\n email: text(\"email\").notNull(),\n emailVerified: boolean(\"email_verified\").notNull().default(false),\n image: text(\"image\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n});\n\nexport const authSessions = pgTable(\"session\", {\n id: text(\"id\").primaryKey(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n token: text(\"token\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n ipAddress: text(\"ip_address\"),\n userAgent: text(\"user_agent\"),\n userId: text(\"user_id\").notNull().references(() => authUsers.id, { onDelete: \"cascade\" }),\n});\n\nexport const authAccounts = pgTable(\"account\", {\n id: text(\"id\").primaryKey(),\n accountId: text(\"account_id\").notNull(),\n providerId: text(\"provider_id\").notNull(),\n userId: text(\"user_id\").notNull().references(() => authUsers.id, { onDelete: \"cascade\" }),\n accessToken: text(\"access_token\"),\n refreshToken: text(\"refresh_token\"),\n idToken: text(\"id_token\"),\n accessTokenExpiresAt: timestamp(\"access_token_expires_at\", { withTimezone: true }),\n refreshTokenExpiresAt: timestamp(\"refresh_token_expires_at\", { withTimezone: true }),\n scope: text(\"scope\"),\n password: text(\"password\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n});\n\nexport const authVerifications = pgTable(\"verification\", {\n id: text(\"id\").primaryKey(),\n identifier: text(\"identifier\").notNull(),\n value: text(\"value\").notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }),\n});\n", "import { pgTable, uuid, text, timestamp, uniqueIndex, index } from \"drizzle-orm/pg-core\";\n\nexport const instanceUserRoles = pgTable(\n \"instance_user_roles\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\").notNull(),\n role: text(\"role\").notNull().default(\"instance_admin\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n userRoleUniqueIdx: uniqueIndex(\"instance_user_roles_user_role_unique_idx\").on(table.userId, table.role),\n roleIdx: index(\"instance_user_roles_role_idx\").on(table.role),\n }),\n);\n", "import {\n type AnyPgColumn,\n pgTable,\n uuid,\n text,\n integer,\n timestamp,\n jsonb,\n index,\n} from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\n\nexport const agents = pgTable(\n \"agents\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n name: text(\"name\").notNull(),\n role: text(\"role\").notNull().default(\"general\"),\n title: text(\"title\"),\n icon: text(\"icon\"),\n status: text(\"status\").notNull().default(\"idle\"),\n reportsTo: uuid(\"reports_to\").references((): AnyPgColumn => agents.id),\n capabilities: text(\"capabilities\"),\n adapterType: text(\"adapter_type\").notNull().default(\"process\"),\n adapterConfig: jsonb(\"adapter_config\").$type<Record<string, unknown>>().notNull().default({}),\n runtimeConfig: jsonb(\"runtime_config\").$type<Record<string, unknown>>().notNull().default({}),\n budgetMonthlyCents: integer(\"budget_monthly_cents\").notNull().default(0),\n spentMonthlyCents: integer(\"spent_monthly_cents\").notNull().default(0),\n permissions: jsonb(\"permissions\").$type<Record<string, unknown>>().notNull().default({}),\n lastHeartbeatAt: timestamp(\"last_heartbeat_at\", { withTimezone: true }),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyStatusIdx: index(\"agents_company_status_idx\").on(table.companyId, table.status),\n companyReportsToIdx: index(\"agents_company_reports_to_idx\").on(table.companyId, table.reportsTo),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, uniqueIndex, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\n\nexport const companyMemberships = pgTable(\n \"company_memberships\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n principalType: text(\"principal_type\").notNull(),\n principalId: text(\"principal_id\").notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n membershipRole: text(\"membership_role\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyPrincipalUniqueIdx: uniqueIndex(\"company_memberships_company_principal_unique_idx\").on(\n table.companyId,\n table.principalType,\n table.principalId,\n ),\n principalStatusIdx: index(\"company_memberships_principal_status_idx\").on(\n table.principalType,\n table.principalId,\n table.status,\n ),\n companyStatusIdx: index(\"company_memberships_company_status_idx\").on(table.companyId, table.status),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, uniqueIndex, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\n\nexport const principalPermissionGrants = pgTable(\n \"principal_permission_grants\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n principalType: text(\"principal_type\").notNull(),\n principalId: text(\"principal_id\").notNull(),\n permissionKey: text(\"permission_key\").notNull(),\n scope: jsonb(\"scope\").$type<Record<string, unknown> | null>(),\n grantedByUserId: text(\"granted_by_user_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n uniqueGrantIdx: uniqueIndex(\"principal_permission_grants_unique_idx\").on(\n table.companyId,\n table.principalType,\n table.principalId,\n table.permissionKey,\n ),\n companyPermissionIdx: index(\"principal_permission_grants_company_permission_idx\").on(\n table.companyId,\n table.permissionKey,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\n\nexport const invites = pgTable(\n \"invites\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").references(() => companies.id),\n inviteType: text(\"invite_type\").notNull().default(\"company_join\"),\n tokenHash: text(\"token_hash\").notNull(),\n allowedJoinTypes: text(\"allowed_join_types\").notNull().default(\"both\"),\n defaultsPayload: jsonb(\"defaults_payload\").$type<Record<string, unknown> | null>(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n invitedByUserId: text(\"invited_by_user_id\"),\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n acceptedAt: timestamp(\"accepted_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n tokenHashUniqueIdx: uniqueIndex(\"invites_token_hash_unique_idx\").on(table.tokenHash),\n companyInviteStateIdx: index(\"invites_company_invite_state_idx\").on(\n table.companyId,\n table.inviteType,\n table.revokedAt,\n table.expiresAt,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { invites } from \"./invites.js\";\nimport { agents } from \"./agents.js\";\n\nexport const joinRequests = pgTable(\n \"join_requests\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n inviteId: uuid(\"invite_id\").notNull().references(() => invites.id),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n requestType: text(\"request_type\").notNull(),\n status: text(\"status\").notNull().default(\"pending_approval\"),\n requestIp: text(\"request_ip\").notNull(),\n requestingUserId: text(\"requesting_user_id\"),\n requestEmailSnapshot: text(\"request_email_snapshot\"),\n agentName: text(\"agent_name\"),\n adapterType: text(\"adapter_type\"),\n capabilities: text(\"capabilities\"),\n agentDefaultsPayload: jsonb(\"agent_defaults_payload\").$type<Record<string, unknown> | null>(),\n claimSecretHash: text(\"claim_secret_hash\"),\n claimSecretExpiresAt: timestamp(\"claim_secret_expires_at\", { withTimezone: true }),\n claimSecretConsumedAt: timestamp(\"claim_secret_consumed_at\", { withTimezone: true }),\n createdAgentId: uuid(\"created_agent_id\").references(() => agents.id),\n approvedByUserId: text(\"approved_by_user_id\"),\n approvedAt: timestamp(\"approved_at\", { withTimezone: true }),\n rejectedByUserId: text(\"rejected_by_user_id\"),\n rejectedAt: timestamp(\"rejected_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n inviteUniqueIdx: uniqueIndex(\"join_requests_invite_unique_idx\").on(table.inviteId),\n companyStatusTypeCreatedIdx: index(\"join_requests_company_status_type_created_idx\").on(\n table.companyId,\n table.status,\n table.requestType,\n table.createdAt,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\n\nexport const agentConfigRevisions = pgTable(\n \"agent_config_revisions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id, { onDelete: \"cascade\" }),\n createdByAgentId: uuid(\"created_by_agent_id\").references(() => agents.id, { onDelete: \"set null\" }),\n createdByUserId: text(\"created_by_user_id\"),\n source: text(\"source\").notNull().default(\"patch\"),\n rolledBackFromRevisionId: uuid(\"rolled_back_from_revision_id\"),\n changedKeys: jsonb(\"changed_keys\").$type<string[]>().notNull().default([]),\n beforeConfig: jsonb(\"before_config\").$type<Record<string, unknown>>().notNull(),\n afterConfig: jsonb(\"after_config\").$type<Record<string, unknown>>().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyAgentCreatedIdx: index(\"agent_config_revisions_company_agent_created_idx\").on(\n table.companyId,\n table.agentId,\n table.createdAt,\n ),\n agentCreatedIdx: index(\"agent_config_revisions_agent_created_idx\").on(table.agentId, table.createdAt),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, index } from \"drizzle-orm/pg-core\";\nimport { agents } from \"./agents.js\";\nimport { companies } from \"./companies.js\";\n\nexport const agentApiKeys = pgTable(\n \"agent_api_keys\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n name: text(\"name\").notNull(),\n keyHash: text(\"key_hash\").notNull(),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }),\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n keyHashIdx: index(\"agent_api_keys_key_hash_idx\").on(table.keyHash),\n companyAgentIdx: index(\"agent_api_keys_company_agent_idx\").on(table.companyId, table.agentId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, bigint, index } from \"drizzle-orm/pg-core\";\nimport { agents } from \"./agents.js\";\nimport { companies } from \"./companies.js\";\n\nexport const agentRuntimeState = pgTable(\n \"agent_runtime_state\",\n {\n agentId: uuid(\"agent_id\").primaryKey().references(() => agents.id),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n adapterType: text(\"adapter_type\").notNull(),\n sessionId: text(\"session_id\"),\n stateJson: jsonb(\"state_json\").$type<Record<string, unknown>>().notNull().default({}),\n lastRunId: uuid(\"last_run_id\"),\n lastRunStatus: text(\"last_run_status\"),\n totalInputTokens: bigint(\"total_input_tokens\", { mode: \"number\" }).notNull().default(0),\n totalOutputTokens: bigint(\"total_output_tokens\", { mode: \"number\" }).notNull().default(0),\n totalCachedInputTokens: bigint(\"total_cached_input_tokens\", { mode: \"number\" }).notNull().default(0),\n totalCostCents: bigint(\"total_cost_cents\", { mode: \"number\" }).notNull().default(0),\n lastError: text(\"last_error\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyAgentIdx: index(\"agent_runtime_state_company_agent_idx\").on(table.companyId, table.agentId),\n companyUpdatedIdx: index(\"agent_runtime_state_company_updated_idx\").on(table.companyId, table.updatedAt),\n }),\n);\n\n", "import { pgTable, uuid, text, timestamp, jsonb, integer, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\n\nexport const agentWakeupRequests = pgTable(\n \"agent_wakeup_requests\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n source: text(\"source\").notNull(),\n triggerDetail: text(\"trigger_detail\"),\n reason: text(\"reason\"),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>(),\n status: text(\"status\").notNull().default(\"queued\"),\n coalescedCount: integer(\"coalesced_count\").notNull().default(0),\n requestedByActorType: text(\"requested_by_actor_type\"),\n requestedByActorId: text(\"requested_by_actor_id\"),\n idempotencyKey: text(\"idempotency_key\"),\n runId: uuid(\"run_id\"),\n requestedAt: timestamp(\"requested_at\", { withTimezone: true }).notNull().defaultNow(),\n claimedAt: timestamp(\"claimed_at\", { withTimezone: true }),\n finishedAt: timestamp(\"finished_at\", { withTimezone: true }),\n error: text(\"error\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyAgentStatusIdx: index(\"agent_wakeup_requests_company_agent_status_idx\").on(\n table.companyId,\n table.agentId,\n table.status,\n ),\n companyRequestedIdx: index(\"agent_wakeup_requests_company_requested_idx\").on(\n table.companyId,\n table.requestedAt,\n ),\n agentRequestedIdx: index(\"agent_wakeup_requests_agent_requested_idx\").on(table.agentId, table.requestedAt),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index, integer, bigint, boolean } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\nimport { agentWakeupRequests } from \"./agent_wakeup_requests.js\";\n\nexport const heartbeatRuns = pgTable(\n \"heartbeat_runs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n invocationSource: text(\"invocation_source\").notNull().default(\"on_demand\"),\n triggerDetail: text(\"trigger_detail\"),\n status: text(\"status\").notNull().default(\"queued\"),\n startedAt: timestamp(\"started_at\", { withTimezone: true }),\n finishedAt: timestamp(\"finished_at\", { withTimezone: true }),\n error: text(\"error\"),\n wakeupRequestId: uuid(\"wakeup_request_id\").references(() => agentWakeupRequests.id),\n exitCode: integer(\"exit_code\"),\n signal: text(\"signal\"),\n usageJson: jsonb(\"usage_json\").$type<Record<string, unknown>>(),\n resultJson: jsonb(\"result_json\").$type<Record<string, unknown>>(),\n sessionIdBefore: text(\"session_id_before\"),\n sessionIdAfter: text(\"session_id_after\"),\n logStore: text(\"log_store\"),\n logRef: text(\"log_ref\"),\n logBytes: bigint(\"log_bytes\", { mode: \"number\" }),\n logSha256: text(\"log_sha256\"),\n logCompressed: boolean(\"log_compressed\").notNull().default(false),\n stdoutExcerpt: text(\"stdout_excerpt\"),\n stderrExcerpt: text(\"stderr_excerpt\"),\n errorCode: text(\"error_code\"),\n externalRunId: text(\"external_run_id\"),\n contextSnapshot: jsonb(\"context_snapshot\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyAgentStartedIdx: index(\"heartbeat_runs_company_agent_started_idx\").on(\n table.companyId,\n table.agentId,\n table.startedAt,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\nimport { heartbeatRuns } from \"./heartbeat_runs.js\";\n\nexport const agentTaskSessions = pgTable(\n \"agent_task_sessions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n adapterType: text(\"adapter_type\").notNull(),\n taskKey: text(\"task_key\").notNull(),\n sessionParamsJson: jsonb(\"session_params_json\").$type<Record<string, unknown>>(),\n sessionDisplayId: text(\"session_display_id\"),\n lastRunId: uuid(\"last_run_id\").references(() => heartbeatRuns.id),\n lastError: text(\"last_error\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyAgentTaskUniqueIdx: uniqueIndex(\"agent_task_sessions_company_agent_adapter_task_uniq\").on(\n table.companyId,\n table.agentId,\n table.adapterType,\n table.taskKey,\n ),\n companyAgentUpdatedIdx: index(\"agent_task_sessions_company_agent_updated_idx\").on(\n table.companyId,\n table.agentId,\n table.updatedAt,\n ),\n companyTaskUpdatedIdx: index(\"agent_task_sessions_company_task_updated_idx\").on(\n table.companyId,\n table.taskKey,\n table.updatedAt,\n ),\n }),\n);\n", "import {\n type AnyPgColumn,\n pgTable,\n uuid,\n text,\n timestamp,\n index,\n} from \"drizzle-orm/pg-core\";\nimport { agents } from \"./agents.js\";\nimport { companies } from \"./companies.js\";\n\nexport const goals = pgTable(\n \"goals\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n title: text(\"title\").notNull(),\n description: text(\"description\"),\n level: text(\"level\").notNull().default(\"task\"),\n status: text(\"status\").notNull().default(\"planned\"),\n parentId: uuid(\"parent_id\").references((): AnyPgColumn => goals.id),\n ownerAgentId: uuid(\"owner_agent_id\").references(() => agents.id),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIdx: index(\"goals_company_idx\").on(table.companyId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, date, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { goals } from \"./goals.js\";\nimport { agents } from \"./agents.js\";\n\nexport const projects = pgTable(\n \"projects\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n goalId: uuid(\"goal_id\").references(() => goals.id),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n status: text(\"status\").notNull().default(\"backlog\"),\n leadAgentId: uuid(\"lead_agent_id\").references(() => agents.id),\n targetDate: date(\"target_date\"),\n color: text(\"color\"),\n archivedAt: timestamp(\"archived_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIdx: index(\"projects_company_idx\").on(table.companyId),\n }),\n);\n", "import {\n boolean,\n index,\n jsonb,\n pgTable,\n text,\n timestamp,\n uuid,\n} from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { projects } from \"./projects.js\";\n\nexport const projectWorkspaces = pgTable(\n \"project_workspaces\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n projectId: uuid(\"project_id\").notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n cwd: text(\"cwd\"),\n repoUrl: text(\"repo_url\"),\n repoRef: text(\"repo_ref\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>(),\n isPrimary: boolean(\"is_primary\").notNull().default(false),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyProjectIdx: index(\"project_workspaces_company_project_idx\").on(table.companyId, table.projectId),\n projectPrimaryIdx: index(\"project_workspaces_project_primary_idx\").on(table.projectId, table.isPrimary),\n }),\n);\n", "import { pgTable, uuid, timestamp, index, primaryKey } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { projects } from \"./projects.js\";\nimport { goals } from \"./goals.js\";\n\nexport const projectGoals = pgTable(\n \"project_goals\",\n {\n projectId: uuid(\"project_id\").notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n goalId: uuid(\"goal_id\").notNull().references(() => goals.id, { onDelete: \"cascade\" }),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({ columns: [table.projectId, table.goalId] }),\n projectIdx: index(\"project_goals_project_idx\").on(table.projectId),\n goalIdx: index(\"project_goals_goal_idx\").on(table.goalId),\n companyIdx: index(\"project_goals_company_idx\").on(table.companyId),\n }),\n);\n", "import {\n type AnyPgColumn,\n pgTable,\n uuid,\n text,\n timestamp,\n integer,\n jsonb,\n index,\n uniqueIndex,\n} from \"drizzle-orm/pg-core\";\nimport { agents } from \"./agents.js\";\nimport { projects } from \"./projects.js\";\nimport { goals } from \"./goals.js\";\nimport { companies } from \"./companies.js\";\nimport { heartbeatRuns } from \"./heartbeat_runs.js\";\n\nexport const issues = pgTable(\n \"issues\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n projectId: uuid(\"project_id\").references(() => projects.id),\n goalId: uuid(\"goal_id\").references(() => goals.id),\n parentId: uuid(\"parent_id\").references((): AnyPgColumn => issues.id),\n title: text(\"title\").notNull(),\n description: text(\"description\"),\n status: text(\"status\").notNull().default(\"backlog\"),\n priority: text(\"priority\").notNull().default(\"medium\"),\n assigneeAgentId: uuid(\"assignee_agent_id\").references(() => agents.id),\n assigneeUserId: text(\"assignee_user_id\"),\n checkoutRunId: uuid(\"checkout_run_id\").references(() => heartbeatRuns.id, { onDelete: \"set null\" }),\n executionRunId: uuid(\"execution_run_id\").references(() => heartbeatRuns.id, { onDelete: \"set null\" }),\n executionAgentNameKey: text(\"execution_agent_name_key\"),\n executionLockedAt: timestamp(\"execution_locked_at\", { withTimezone: true }),\n createdByAgentId: uuid(\"created_by_agent_id\").references(() => agents.id),\n createdByUserId: text(\"created_by_user_id\"),\n issueNumber: integer(\"issue_number\"),\n identifier: text(\"identifier\"),\n requestDepth: integer(\"request_depth\").notNull().default(0),\n billingCode: text(\"billing_code\"),\n assigneeAdapterOverrides: jsonb(\"assignee_adapter_overrides\").$type<Record<string, unknown>>(),\n startedAt: timestamp(\"started_at\", { withTimezone: true }),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n cancelledAt: timestamp(\"cancelled_at\", { withTimezone: true }),\n hiddenAt: timestamp(\"hidden_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyStatusIdx: index(\"issues_company_status_idx\").on(table.companyId, table.status),\n assigneeStatusIdx: index(\"issues_company_assignee_status_idx\").on(\n table.companyId,\n table.assigneeAgentId,\n table.status,\n ),\n assigneeUserStatusIdx: index(\"issues_company_assignee_user_status_idx\").on(\n table.companyId,\n table.assigneeUserId,\n table.status,\n ),\n parentIdx: index(\"issues_company_parent_idx\").on(table.companyId, table.parentId),\n projectIdx: index(\"issues_company_project_idx\").on(table.companyId, table.projectId),\n identifierIdx: uniqueIndex(\"issues_identifier_idx\").on(table.identifier),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\n\nexport const labels = pgTable(\n \"labels\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n color: text(\"color\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIdx: index(\"labels_company_idx\").on(table.companyId),\n companyNameIdx: uniqueIndex(\"labels_company_name_idx\").on(table.companyId, table.name),\n }),\n);\n", "import { pgTable, uuid, timestamp, index, primaryKey } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { issues } from \"./issues.js\";\nimport { labels } from \"./labels.js\";\n\nexport const issueLabels = pgTable(\n \"issue_labels\",\n {\n issueId: uuid(\"issue_id\").notNull().references(() => issues.id, { onDelete: \"cascade\" }),\n labelId: uuid(\"label_id\").notNull().references(() => labels.id, { onDelete: \"cascade\" }),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id, { onDelete: \"cascade\" }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({ columns: [table.issueId, table.labelId], name: \"issue_labels_pk\" }),\n issueIdx: index(\"issue_labels_issue_idx\").on(table.issueId),\n labelIdx: index(\"issue_labels_label_idx\").on(table.labelId),\n companyIdx: index(\"issue_labels_company_idx\").on(table.companyId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\n\nexport const approvals = pgTable(\n \"approvals\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n type: text(\"type\").notNull(),\n requestedByAgentId: uuid(\"requested_by_agent_id\").references(() => agents.id),\n requestedByUserId: text(\"requested_by_user_id\"),\n status: text(\"status\").notNull().default(\"pending\"),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>().notNull(),\n decisionNote: text(\"decision_note\"),\n decidedByUserId: text(\"decided_by_user_id\"),\n decidedAt: timestamp(\"decided_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyStatusTypeIdx: index(\"approvals_company_status_type_idx\").on(\n table.companyId,\n table.status,\n table.type,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, index, primaryKey } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { issues } from \"./issues.js\";\nimport { approvals } from \"./approvals.js\";\nimport { agents } from \"./agents.js\";\n\nexport const issueApprovals = pgTable(\n \"issue_approvals\",\n {\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n issueId: uuid(\"issue_id\").notNull().references(() => issues.id, { onDelete: \"cascade\" }),\n approvalId: uuid(\"approval_id\").notNull().references(() => approvals.id, { onDelete: \"cascade\" }),\n linkedByAgentId: uuid(\"linked_by_agent_id\").references(() => agents.id, { onDelete: \"set null\" }),\n linkedByUserId: text(\"linked_by_user_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({ columns: [table.issueId, table.approvalId], name: \"issue_approvals_pk\" }),\n issueIdx: index(\"issue_approvals_issue_idx\").on(table.issueId),\n approvalIdx: index(\"issue_approvals_approval_idx\").on(table.approvalId),\n companyIdx: index(\"issue_approvals_company_idx\").on(table.companyId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { issues } from \"./issues.js\";\nimport { agents } from \"./agents.js\";\n\nexport const issueComments = pgTable(\n \"issue_comments\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n issueId: uuid(\"issue_id\").notNull().references(() => issues.id),\n authorAgentId: uuid(\"author_agent_id\").references(() => agents.id),\n authorUserId: text(\"author_user_id\"),\n body: text(\"body\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n issueIdx: index(\"issue_comments_issue_idx\").on(table.issueId),\n companyIdx: index(\"issue_comments_company_idx\").on(table.companyId),\n }),\n);\n", "import { pgTable, uuid, text, integer, timestamp, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\n\nexport const assets = pgTable(\n \"assets\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n provider: text(\"provider\").notNull(),\n objectKey: text(\"object_key\").notNull(),\n contentType: text(\"content_type\").notNull(),\n byteSize: integer(\"byte_size\").notNull(),\n sha256: text(\"sha256\").notNull(),\n originalFilename: text(\"original_filename\"),\n createdByAgentId: uuid(\"created_by_agent_id\").references(() => agents.id),\n createdByUserId: text(\"created_by_user_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyCreatedIdx: index(\"assets_company_created_idx\").on(table.companyId, table.createdAt),\n companyProviderIdx: index(\"assets_company_provider_idx\").on(table.companyId, table.provider),\n companyObjectKeyUq: uniqueIndex(\"assets_company_object_key_uq\").on(table.companyId, table.objectKey),\n }),\n);\n", "import { pgTable, uuid, timestamp, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { issues } from \"./issues.js\";\nimport { assets } from \"./assets.js\";\nimport { issueComments } from \"./issue_comments.js\";\n\nexport const issueAttachments = pgTable(\n \"issue_attachments\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n issueId: uuid(\"issue_id\").notNull().references(() => issues.id, { onDelete: \"cascade\" }),\n assetId: uuid(\"asset_id\").notNull().references(() => assets.id, { onDelete: \"cascade\" }),\n issueCommentId: uuid(\"issue_comment_id\").references(() => issueComments.id, { onDelete: \"set null\" }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIssueIdx: index(\"issue_attachments_company_issue_idx\").on(table.companyId, table.issueId),\n issueCommentIdx: index(\"issue_attachments_issue_comment_idx\").on(table.issueCommentId),\n assetUq: uniqueIndex(\"issue_attachments_asset_uq\").on(table.assetId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, integer, jsonb, index, bigserial } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\nimport { heartbeatRuns } from \"./heartbeat_runs.js\";\n\nexport const heartbeatRunEvents = pgTable(\n \"heartbeat_run_events\",\n {\n id: bigserial(\"id\", { mode: \"number\" }).primaryKey(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n runId: uuid(\"run_id\").notNull().references(() => heartbeatRuns.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n seq: integer(\"seq\").notNull(),\n eventType: text(\"event_type\").notNull(),\n stream: text(\"stream\"),\n level: text(\"level\"),\n color: text(\"color\"),\n message: text(\"message\"),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n runSeqIdx: index(\"heartbeat_run_events_run_seq_idx\").on(table.runId, table.seq),\n companyRunIdx: index(\"heartbeat_run_events_company_run_idx\").on(table.companyId, table.runId),\n companyCreatedIdx: index(\"heartbeat_run_events_company_created_idx\").on(table.companyId, table.createdAt),\n }),\n);\n\n", "import { pgTable, uuid, text, timestamp, integer, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\nimport { issues } from \"./issues.js\";\nimport { projects } from \"./projects.js\";\nimport { goals } from \"./goals.js\";\n\nexport const costEvents = pgTable(\n \"cost_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n issueId: uuid(\"issue_id\").references(() => issues.id),\n projectId: uuid(\"project_id\").references(() => projects.id),\n goalId: uuid(\"goal_id\").references(() => goals.id),\n billingCode: text(\"billing_code\"),\n provider: text(\"provider\").notNull(),\n model: text(\"model\").notNull(),\n inputTokens: integer(\"input_tokens\").notNull().default(0),\n outputTokens: integer(\"output_tokens\").notNull().default(0),\n costCents: integer(\"cost_cents\").notNull(),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyOccurredIdx: index(\"cost_events_company_occurred_idx\").on(table.companyId, table.occurredAt),\n companyAgentOccurredIdx: index(\"cost_events_company_agent_occurred_idx\").on(\n table.companyId,\n table.agentId,\n table.occurredAt,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { approvals } from \"./approvals.js\";\nimport { agents } from \"./agents.js\";\n\nexport const approvalComments = pgTable(\n \"approval_comments\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n approvalId: uuid(\"approval_id\").notNull().references(() => approvals.id),\n authorAgentId: uuid(\"author_agent_id\").references(() => agents.id),\n authorUserId: text(\"author_user_id\"),\n body: text(\"body\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIdx: index(\"approval_comments_company_idx\").on(table.companyId),\n approvalIdx: index(\"approval_comments_approval_idx\").on(table.approvalId),\n approvalCreatedIdx: index(\"approval_comments_approval_created_idx\").on(\n table.approvalId,\n table.createdAt,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\nimport { heartbeatRuns } from \"./heartbeat_runs.js\";\n\nexport const activityLog = pgTable(\n \"activity_log\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n actorType: text(\"actor_type\").notNull().default(\"system\"),\n actorId: text(\"actor_id\").notNull(),\n action: text(\"action\").notNull(),\n entityType: text(\"entity_type\").notNull(),\n entityId: text(\"entity_id\").notNull(),\n agentId: uuid(\"agent_id\").references(() => agents.id),\n runId: uuid(\"run_id\").references(() => heartbeatRuns.id),\n details: jsonb(\"details\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyCreatedIdx: index(\"activity_log_company_created_idx\").on(table.companyId, table.createdAt),\n runIdIdx: index(\"activity_log_run_id_idx\").on(table.runId),\n entityIdx: index(\"activity_log_entity_type_id_idx\").on(table.entityType, table.entityId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, integer, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\n\nexport const companySecrets = pgTable(\n \"company_secrets\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n name: text(\"name\").notNull(),\n provider: text(\"provider\").notNull().default(\"local_encrypted\"),\n externalRef: text(\"external_ref\"),\n latestVersion: integer(\"latest_version\").notNull().default(1),\n description: text(\"description\"),\n createdByAgentId: uuid(\"created_by_agent_id\").references(() => agents.id, { onDelete: \"set null\" }),\n createdByUserId: text(\"created_by_user_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIdx: index(\"company_secrets_company_idx\").on(table.companyId),\n companyProviderIdx: index(\"company_secrets_company_provider_idx\").on(table.companyId, table.provider),\n companyNameUq: uniqueIndex(\"company_secrets_company_name_uq\").on(table.companyId, table.name),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, integer, jsonb, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { agents } from \"./agents.js\";\nimport { companySecrets } from \"./company_secrets.js\";\n\nexport const companySecretVersions = pgTable(\n \"company_secret_versions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n secretId: uuid(\"secret_id\").notNull().references(() => companySecrets.id, { onDelete: \"cascade\" }),\n version: integer(\"version\").notNull(),\n material: jsonb(\"material\").$type<Record<string, unknown>>().notNull(),\n valueSha256: text(\"value_sha256\").notNull(),\n createdByAgentId: uuid(\"created_by_agent_id\").references(() => agents.id, { onDelete: \"set null\" }),\n createdByUserId: text(\"created_by_user_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n },\n (table) => ({\n secretIdx: index(\"company_secret_versions_secret_idx\").on(table.secretId, table.createdAt),\n valueHashIdx: index(\"company_secret_versions_value_sha256_idx\").on(table.valueSha256),\n secretVersionUq: uniqueIndex(\"company_secret_versions_secret_version_uq\").on(table.secretId, table.version),\n }),\n);\n", "export { companies } from \"./companies.js\";\nexport { authUsers, authSessions, authAccounts, authVerifications } from \"./auth.js\";\nexport { instanceUserRoles } from \"./instance_user_roles.js\";\nexport { agents } from \"./agents.js\";\nexport { companyMemberships } from \"./company_memberships.js\";\nexport { principalPermissionGrants } from \"./principal_permission_grants.js\";\nexport { invites } from \"./invites.js\";\nexport { joinRequests } from \"./join_requests.js\";\nexport { agentConfigRevisions } from \"./agent_config_revisions.js\";\nexport { agentApiKeys } from \"./agent_api_keys.js\";\nexport { agentRuntimeState } from \"./agent_runtime_state.js\";\nexport { agentTaskSessions } from \"./agent_task_sessions.js\";\nexport { agentWakeupRequests } from \"./agent_wakeup_requests.js\";\nexport { projects } from \"./projects.js\";\nexport { projectWorkspaces } from \"./project_workspaces.js\";\nexport { projectGoals } from \"./project_goals.js\";\nexport { goals } from \"./goals.js\";\nexport { issues } from \"./issues.js\";\nexport { labels } from \"./labels.js\";\nexport { issueLabels } from \"./issue_labels.js\";\nexport { issueApprovals } from \"./issue_approvals.js\";\nexport { issueComments } from \"./issue_comments.js\";\nexport { assets } from \"./assets.js\";\nexport { issueAttachments } from \"./issue_attachments.js\";\nexport { heartbeatRuns } from \"./heartbeat_runs.js\";\nexport { heartbeatRunEvents } from \"./heartbeat_run_events.js\";\nexport { costEvents } from \"./cost_events.js\";\nexport { approvals } from \"./approvals.js\";\nexport { approvalComments } from \"./approval_comments.js\";\nexport { activityLog } from \"./activity_log.js\";\nexport { companySecrets } from \"./company_secrets.js\";\nexport { companySecretVersions } from \"./company_secret_versions.js\";\n", "import { createHash } from \"node:crypto\";\nimport { drizzle as drizzlePg } from \"drizzle-orm/postgres-js\";\nimport { migrate as migratePg } from \"drizzle-orm/postgres-js/migrator\";\nimport { readFile, readdir } from \"node:fs/promises\";\nimport postgres from \"postgres\";\nimport * as schema from \"./schema/index.js\";\n\nconst MIGRATIONS_FOLDER = new URL(\"./migrations\", import.meta.url).pathname;\nconst DRIZZLE_MIGRATIONS_TABLE = \"__drizzle_migrations\";\nconst MIGRATIONS_JOURNAL_JSON = new URL(\"./migrations/meta/_journal.json\", import.meta.url).pathname;\n\nfunction isSafeIdentifier(value: string): boolean {\n return /^[A-Za-z_][A-Za-z0-9_]*$/.test(value);\n}\n\nfunction quoteIdentifier(value: string): string {\n if (!isSafeIdentifier(value)) throw new Error(`Unsafe SQL identifier: ${value}`);\n return `\"${value.replaceAll(\"\\\"\", \"\\\"\\\"\")}\"`;\n}\n\nfunction quoteLiteral(value: string): string {\n return `'${value.replaceAll(\"'\", \"''\")}'`;\n}\n\nfunction splitMigrationStatements(content: string): string[] {\n return content\n .split(\"--> statement-breakpoint\")\n .map((statement) => statement.trim())\n .filter((statement) => statement.length > 0);\n}\n\nexport type MigrationState =\n | { status: \"upToDate\"; tableCount: number; availableMigrations: string[]; appliedMigrations: string[] }\n | {\n status: \"needsMigrations\";\n tableCount: number;\n availableMigrations: string[];\n appliedMigrations: string[];\n pendingMigrations: string[];\n reason: \"no-migration-journal-empty-db\" | \"no-migration-journal-non-empty-db\" | \"pending-migrations\";\n };\n\nexport function createDb(url: string) {\n const sql = postgres(url);\n return drizzlePg(sql, { schema });\n}\n\nasync function listMigrationFiles(): Promise<string[]> {\n const entries = await readdir(MIGRATIONS_FOLDER, { withFileTypes: true });\n return entries\n .filter((entry) => entry.isFile() && entry.name.endsWith(\".sql\"))\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n}\n\ntype MigrationJournalFile = {\n entries?: Array<{ idx?: number; tag?: string; when?: number }>;\n};\n\ntype JournalMigrationEntry = {\n fileName: string;\n folderMillis: number;\n order: number;\n};\n\nasync function listJournalMigrationEntries(): Promise<JournalMigrationEntry[]> {\n try {\n const raw = await readFile(MIGRATIONS_JOURNAL_JSON, \"utf8\");\n const parsed = JSON.parse(raw) as MigrationJournalFile;\n if (!Array.isArray(parsed.entries)) return [];\n return parsed.entries\n .map((entry, entryIndex) => {\n if (typeof entry?.tag !== \"string\") return null;\n if (typeof entry?.when !== \"number\" || !Number.isFinite(entry.when)) return null;\n const order = Number.isInteger(entry.idx) ? Number(entry.idx) : entryIndex;\n return { fileName: `${entry.tag}.sql`, folderMillis: entry.when, order };\n })\n .filter((entry): entry is JournalMigrationEntry => entry !== null);\n } catch {\n return [];\n }\n}\n\nasync function listJournalMigrationFiles(): Promise<string[]> {\n const entries = await listJournalMigrationEntries();\n return entries.map((entry) => entry.fileName);\n}\n\nasync function readMigrationFileContent(migrationFile: string): Promise<string> {\n return readFile(new URL(`./migrations/${migrationFile}`, import.meta.url), \"utf8\");\n}\n\nasync function orderMigrationsByJournal(migrationFiles: string[]): Promise<string[]> {\n const journalEntries = await listJournalMigrationEntries();\n const orderByFileName = new Map(journalEntries.map((entry) => [entry.fileName, entry.order]));\n return [...migrationFiles].sort((left, right) => {\n const leftOrder = orderByFileName.get(left);\n const rightOrder = orderByFileName.get(right);\n if (leftOrder === undefined && rightOrder === undefined) return left.localeCompare(right);\n if (leftOrder === undefined) return 1;\n if (rightOrder === undefined) return -1;\n if (leftOrder === rightOrder) return left.localeCompare(right);\n return leftOrder - rightOrder;\n });\n}\n\ntype SqlExecutor = Pick<ReturnType<typeof postgres>, \"unsafe\">;\n\nasync function runInTransaction(sql: SqlExecutor, action: () => Promise<void>): Promise<void> {\n await sql.unsafe(\"BEGIN\");\n try {\n await action();\n await sql.unsafe(\"COMMIT\");\n } catch (error) {\n try {\n await sql.unsafe(\"ROLLBACK\");\n } catch {\n // Ignore rollback failures and surface the original error.\n }\n throw error;\n }\n}\n\nasync function latestMigrationCreatedAt(\n sql: SqlExecutor,\n qualifiedTable: string,\n): Promise<number | null> {\n const rows = await sql.unsafe<{ created_at: string | number | null }[]>(\n `SELECT created_at FROM ${qualifiedTable} ORDER BY created_at DESC NULLS LAST LIMIT 1`,\n );\n const value = Number(rows[0]?.created_at ?? Number.NaN);\n return Number.isFinite(value) ? value : null;\n}\n\nfunction normalizeFolderMillis(value: number | null | undefined): number {\n if (typeof value === \"number\" && Number.isFinite(value) && value >= 0) {\n return Math.trunc(value);\n }\n return Date.now();\n}\n\nasync function ensureMigrationJournalTable(\n sql: ReturnType<typeof postgres>,\n): Promise<{ migrationTableSchema: string; columnNames: Set<string> }> {\n let migrationTableSchema = await discoverMigrationTableSchema(sql);\n if (!migrationTableSchema) {\n const drizzleSchema = quoteIdentifier(\"drizzle\");\n const migrationTable = quoteIdentifier(DRIZZLE_MIGRATIONS_TABLE);\n await sql.unsafe(`CREATE SCHEMA IF NOT EXISTS ${drizzleSchema}`);\n await sql.unsafe(\n `CREATE TABLE IF NOT EXISTS ${drizzleSchema}.${migrationTable} (id SERIAL PRIMARY KEY, hash text NOT NULL, created_at bigint)`,\n );\n migrationTableSchema = (await discoverMigrationTableSchema(sql)) ?? \"drizzle\";\n }\n\n const columnNames = await getMigrationTableColumnNames(sql, migrationTableSchema);\n return { migrationTableSchema, columnNames };\n}\n\nasync function migrationHistoryEntryExists(\n sql: SqlExecutor,\n qualifiedTable: string,\n columnNames: Set<string>,\n migrationFile: string,\n hash: string,\n): Promise<boolean> {\n const predicates: string[] = [];\n if (columnNames.has(\"hash\")) predicates.push(`hash = ${quoteLiteral(hash)}`);\n if (columnNames.has(\"name\")) predicates.push(`name = ${quoteLiteral(migrationFile)}`);\n if (predicates.length === 0) return false;\n\n const rows = await sql.unsafe<{ one: number }[]>(\n `SELECT 1 AS one FROM ${qualifiedTable} WHERE ${predicates.join(\" OR \")} LIMIT 1`,\n );\n return rows.length > 0;\n}\n\nasync function recordMigrationHistoryEntry(\n sql: SqlExecutor,\n qualifiedTable: string,\n columnNames: Set<string>,\n migrationFile: string,\n hash: string,\n folderMillis: number,\n): Promise<void> {\n const insertColumns: string[] = [];\n const insertValues: string[] = [];\n\n if (columnNames.has(\"hash\")) {\n insertColumns.push(quoteIdentifier(\"hash\"));\n insertValues.push(quoteLiteral(hash));\n }\n if (columnNames.has(\"name\")) {\n insertColumns.push(quoteIdentifier(\"name\"));\n insertValues.push(quoteLiteral(migrationFile));\n }\n if (columnNames.has(\"created_at\")) {\n const latestCreatedAt = await latestMigrationCreatedAt(sql, qualifiedTable);\n const createdAt = latestCreatedAt === null\n ? normalizeFolderMillis(folderMillis)\n : Math.max(latestCreatedAt + 1, normalizeFolderMillis(folderMillis));\n insertColumns.push(quoteIdentifier(\"created_at\"));\n insertValues.push(quoteLiteral(String(createdAt)));\n }\n\n if (insertColumns.length === 0) return;\n\n await sql.unsafe(\n `INSERT INTO ${qualifiedTable} (${insertColumns.join(\", \")}) VALUES (${insertValues.join(\", \")})`,\n );\n}\n\nasync function applyPendingMigrationsManually(\n url: string,\n pendingMigrations: string[],\n): Promise<void> {\n if (pendingMigrations.length === 0) return;\n\n const orderedPendingMigrations = await orderMigrationsByJournal(pendingMigrations);\n const journalEntries = await listJournalMigrationEntries();\n const folderMillisByFileName = new Map(\n journalEntries.map((entry) => [entry.fileName, normalizeFolderMillis(entry.folderMillis)]),\n );\n\n const sql = postgres(url, { max: 1 });\n try {\n const { migrationTableSchema, columnNames } = await ensureMigrationJournalTable(sql);\n const qualifiedTable = `${quoteIdentifier(migrationTableSchema)}.${quoteIdentifier(DRIZZLE_MIGRATIONS_TABLE)}`;\n\n for (const migrationFile of orderedPendingMigrations) {\n const migrationContent = await readMigrationFileContent(migrationFile);\n const hash = createHash(\"sha256\").update(migrationContent).digest(\"hex\");\n const existingEntry = await migrationHistoryEntryExists(\n sql,\n qualifiedTable,\n columnNames,\n migrationFile,\n hash,\n );\n if (existingEntry) continue;\n\n await runInTransaction(sql, async () => {\n for (const statement of splitMigrationStatements(migrationContent)) {\n await sql.unsafe(statement);\n }\n\n await recordMigrationHistoryEntry(\n sql,\n qualifiedTable,\n columnNames,\n migrationFile,\n hash,\n folderMillisByFileName.get(migrationFile) ?? Date.now(),\n );\n });\n }\n } finally {\n await sql.end();\n }\n}\n\nasync function mapHashesToMigrationFiles(migrationFiles: string[]): Promise<Map<string, string>> {\n const mapped = new Map<string, string>();\n\n await Promise.all(\n migrationFiles.map(async (migrationFile) => {\n const content = await readMigrationFileContent(migrationFile);\n const hash = createHash(\"sha256\").update(content).digest(\"hex\");\n mapped.set(hash, migrationFile);\n }),\n );\n\n return mapped;\n}\n\nasync function getMigrationTableColumnNames(\n sql: ReturnType<typeof postgres>,\n migrationTableSchema: string,\n): Promise<Set<string>> {\n const columns = await sql.unsafe<{ column_name: string }[]>(\n `\n SELECT column_name\n FROM information_schema.columns\n WHERE table_schema = ${quoteLiteral(migrationTableSchema)}\n AND table_name = ${quoteLiteral(DRIZZLE_MIGRATIONS_TABLE)}\n `,\n );\n return new Set(columns.map((column) => column.column_name));\n}\n\nasync function tableExists(\n sql: ReturnType<typeof postgres>,\n tableName: string,\n): Promise<boolean> {\n const rows = await sql<{ exists: boolean }[]>`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_schema = 'public'\n AND table_name = ${tableName}\n ) AS exists\n `;\n return rows[0]?.exists ?? false;\n}\n\nasync function columnExists(\n sql: ReturnType<typeof postgres>,\n tableName: string,\n columnName: string,\n): Promise<boolean> {\n const rows = await sql<{ exists: boolean }[]>`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = ${tableName}\n AND column_name = ${columnName}\n ) AS exists\n `;\n return rows[0]?.exists ?? false;\n}\n\nasync function indexExists(\n sql: ReturnType<typeof postgres>,\n indexName: string,\n): Promise<boolean> {\n const rows = await sql<{ exists: boolean }[]>`\n SELECT EXISTS (\n SELECT 1\n FROM pg_class c\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE n.nspname = 'public'\n AND c.relkind = 'i'\n AND c.relname = ${indexName}\n ) AS exists\n `;\n return rows[0]?.exists ?? false;\n}\n\nasync function constraintExists(\n sql: ReturnType<typeof postgres>,\n constraintName: string,\n): Promise<boolean> {\n const rows = await sql<{ exists: boolean }[]>`\n SELECT EXISTS (\n SELECT 1\n FROM pg_constraint c\n JOIN pg_namespace n ON n.oid = c.connamespace\n WHERE n.nspname = 'public'\n AND c.conname = ${constraintName}\n ) AS exists\n `;\n return rows[0]?.exists ?? false;\n}\n\nasync function migrationStatementAlreadyApplied(\n sql: ReturnType<typeof postgres>,\n statement: string,\n): Promise<boolean> {\n const normalized = statement.replace(/\\s+/g, \" \").trim();\n\n const createTableMatch = normalized.match(/^CREATE TABLE(?: IF NOT EXISTS)? \"([^\"]+)\"/i);\n if (createTableMatch) {\n return tableExists(sql, createTableMatch[1]);\n }\n\n const addColumnMatch = normalized.match(\n /^ALTER TABLE \"([^\"]+)\" ADD COLUMN(?: IF NOT EXISTS)? \"([^\"]+)\"/i,\n );\n if (addColumnMatch) {\n return columnExists(sql, addColumnMatch[1], addColumnMatch[2]);\n }\n\n const createIndexMatch = normalized.match(/^CREATE (?:UNIQUE )?INDEX(?: IF NOT EXISTS)? \"([^\"]+)\"/i);\n if (createIndexMatch) {\n return indexExists(sql, createIndexMatch[1]);\n }\n\n const addConstraintMatch = normalized.match(/^ALTER TABLE \"([^\"]+)\" ADD CONSTRAINT \"([^\"]+)\"/i);\n if (addConstraintMatch) {\n return constraintExists(sql, addConstraintMatch[2]);\n }\n\n // If we cannot reason about a statement safely, require manual migration.\n return false;\n}\n\nasync function migrationContentAlreadyApplied(\n sql: ReturnType<typeof postgres>,\n migrationContent: string,\n): Promise<boolean> {\n const statements = splitMigrationStatements(migrationContent);\n if (statements.length === 0) return false;\n\n for (const statement of statements) {\n const applied = await migrationStatementAlreadyApplied(sql, statement);\n if (!applied) return false;\n }\n\n return true;\n}\n\nasync function loadAppliedMigrations(\n sql: ReturnType<typeof postgres>,\n migrationTableSchema: string,\n availableMigrations: string[],\n): Promise<string[]> {\n const quotedSchema = quoteIdentifier(migrationTableSchema);\n const qualifiedTable = `${quotedSchema}.${quoteIdentifier(DRIZZLE_MIGRATIONS_TABLE)}`;\n const columnNames = await getMigrationTableColumnNames(sql, migrationTableSchema);\n\n if (columnNames.has(\"name\")) {\n const rows = await sql.unsafe<{ name: string }[]>(`SELECT name FROM ${qualifiedTable} ORDER BY id`);\n return rows.map((row) => row.name).filter((name): name is string => Boolean(name));\n }\n\n if (columnNames.has(\"hash\")) {\n const rows = await sql.unsafe<{ hash: string }[]>(`SELECT hash FROM ${qualifiedTable} ORDER BY id`);\n const hashesToMigrationFiles = await mapHashesToMigrationFiles(availableMigrations);\n const appliedFromHashes = rows\n .map((row) => hashesToMigrationFiles.get(row.hash))\n .filter((name): name is string => Boolean(name));\n\n if (appliedFromHashes.length > 0) {\n // Best-effort: when all hashes resolve, this is authoritative.\n if (appliedFromHashes.length === rows.length) return appliedFromHashes;\n\n // Partial hash resolution can happen when files have changed; return what we can trust.\n return appliedFromHashes;\n }\n\n // Fallback only when hashes are unavailable/unresolved.\n if (columnNames.has(\"created_at\")) {\n const journalEntries = await listJournalMigrationEntries();\n if (journalEntries.length > 0) {\n const lastDbRows = await sql.unsafe<{ created_at: string | number | null }[]>(\n `SELECT created_at FROM ${qualifiedTable} ORDER BY created_at DESC LIMIT 1`,\n );\n const lastCreatedAt = Number(lastDbRows[0]?.created_at ?? -1);\n if (Number.isFinite(lastCreatedAt) && lastCreatedAt >= 0) {\n return journalEntries\n .filter((entry) => availableMigrations.includes(entry.fileName))\n .filter((entry) => entry.folderMillis <= lastCreatedAt)\n .map((entry) => entry.fileName)\n .slice(0, rows.length);\n }\n }\n }\n }\n\n const rows = await sql.unsafe<{ id: number }[]>(`SELECT id FROM ${qualifiedTable} ORDER BY id`);\n const journalMigrationFiles = await listJournalMigrationFiles();\n const appliedFromIds = rows\n .map((row) => journalMigrationFiles[row.id - 1])\n .filter((name): name is string => Boolean(name));\n if (appliedFromIds.length > 0) return appliedFromIds;\n\n return availableMigrations.slice(0, Math.max(0, rows.length));\n}\n\nexport type MigrationHistoryReconcileResult = {\n repairedMigrations: string[];\n remainingMigrations: string[];\n};\n\nexport async function reconcilePendingMigrationHistory(\n url: string,\n): Promise<MigrationHistoryReconcileResult> {\n const state = await inspectMigrations(url);\n if (state.status !== \"needsMigrations\" || state.reason !== \"pending-migrations\") {\n return { repairedMigrations: [], remainingMigrations: [] };\n }\n\n const sql = postgres(url, { max: 1 });\n const repairedMigrations: string[] = [];\n\n try {\n const journalEntries = await listJournalMigrationEntries();\n const folderMillisByFile = new Map(journalEntries.map((entry) => [entry.fileName, entry.folderMillis]));\n const migrationTableSchema = await discoverMigrationTableSchema(sql);\n if (!migrationTableSchema) {\n return { repairedMigrations, remainingMigrations: state.pendingMigrations };\n }\n\n const columnNames = await getMigrationTableColumnNames(sql, migrationTableSchema);\n const qualifiedTable = `${quoteIdentifier(migrationTableSchema)}.${quoteIdentifier(DRIZZLE_MIGRATIONS_TABLE)}`;\n\n for (const migrationFile of state.pendingMigrations) {\n const migrationContent = await readMigrationFileContent(migrationFile);\n const alreadyApplied = await migrationContentAlreadyApplied(sql, migrationContent);\n if (!alreadyApplied) break;\n\n const hash = createHash(\"sha256\").update(migrationContent).digest(\"hex\");\n const folderMillis = folderMillisByFile.get(migrationFile) ?? Date.now();\n const existingByHash = columnNames.has(\"hash\")\n ? await sql.unsafe<{ created_at: string | number | null }[]>(\n `SELECT created_at FROM ${qualifiedTable} WHERE hash = ${quoteLiteral(hash)} ORDER BY created_at DESC LIMIT 1`,\n )\n : [];\n const existingByName = columnNames.has(\"name\")\n ? await sql.unsafe<{ created_at: string | number | null }[]>(\n `SELECT created_at FROM ${qualifiedTable} WHERE name = ${quoteLiteral(migrationFile)} ORDER BY created_at DESC LIMIT 1`,\n )\n : [];\n if (existingByHash.length > 0 || existingByName.length > 0) {\n if (columnNames.has(\"created_at\")) {\n const existingHashCreatedAt = Number(existingByHash[0]?.created_at ?? -1);\n if (existingByHash.length > 0 && Number.isFinite(existingHashCreatedAt) && existingHashCreatedAt < folderMillis) {\n await sql.unsafe(\n `UPDATE ${qualifiedTable} SET created_at = ${quoteLiteral(String(folderMillis))} WHERE hash = ${quoteLiteral(hash)} AND created_at < ${quoteLiteral(String(folderMillis))}`,\n );\n }\n\n const existingNameCreatedAt = Number(existingByName[0]?.created_at ?? -1);\n if (existingByName.length > 0 && Number.isFinite(existingNameCreatedAt) && existingNameCreatedAt < folderMillis) {\n await sql.unsafe(\n `UPDATE ${qualifiedTable} SET created_at = ${quoteLiteral(String(folderMillis))} WHERE name = ${quoteLiteral(migrationFile)} AND created_at < ${quoteLiteral(String(folderMillis))}`,\n );\n }\n }\n\n repairedMigrations.push(migrationFile);\n continue;\n }\n\n const insertColumns: string[] = [];\n const insertValues: string[] = [];\n\n if (columnNames.has(\"hash\")) {\n insertColumns.push(quoteIdentifier(\"hash\"));\n insertValues.push(quoteLiteral(hash));\n }\n if (columnNames.has(\"name\")) {\n insertColumns.push(quoteIdentifier(\"name\"));\n insertValues.push(quoteLiteral(migrationFile));\n }\n if (columnNames.has(\"created_at\")) {\n insertColumns.push(quoteIdentifier(\"created_at\"));\n insertValues.push(quoteLiteral(String(folderMillis)));\n }\n\n if (insertColumns.length === 0) break;\n\n await sql.unsafe(\n `INSERT INTO ${qualifiedTable} (${insertColumns.join(\", \")}) VALUES (${insertValues.join(\", \")})`,\n );\n repairedMigrations.push(migrationFile);\n }\n } finally {\n await sql.end();\n }\n\n const refreshed = await inspectMigrations(url);\n return {\n repairedMigrations,\n remainingMigrations:\n refreshed.status === \"needsMigrations\" ? refreshed.pendingMigrations : [],\n };\n}\n\nasync function discoverMigrationTableSchema(sql: ReturnType<typeof postgres>): Promise<string | null> {\n const rows = await sql<{ schemaName: string }[]>`\n SELECT n.nspname AS \"schemaName\"\n FROM pg_class c\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE c.relname = ${DRIZZLE_MIGRATIONS_TABLE} AND c.relkind = 'r'\n `;\n\n if (rows.length === 0) return null;\n\n const drizzleSchema = rows.find(({ schemaName }) => schemaName === \"drizzle\");\n if (drizzleSchema) return drizzleSchema.schemaName;\n\n const publicSchema = rows.find(({ schemaName }) => schemaName === \"public\");\n if (publicSchema) return publicSchema.schemaName;\n\n return rows[0]?.schemaName ?? null;\n}\n\nexport async function inspectMigrations(url: string): Promise<MigrationState> {\n const sql = postgres(url, { max: 1 });\n\n try {\n const availableMigrations = await listMigrationFiles();\n const tableCountResult = await sql<{ count: number }[]>`\n select count(*)::int as count\n from information_schema.tables\n where table_schema = 'public'\n and table_type = 'BASE TABLE'\n `;\n const tableCount = tableCountResult[0]?.count ?? 0;\n\n const migrationTableSchema = await discoverMigrationTableSchema(sql);\n if (!migrationTableSchema) {\n if (tableCount > 0) {\n return {\n status: \"needsMigrations\",\n tableCount,\n availableMigrations,\n appliedMigrations: [],\n pendingMigrations: availableMigrations,\n reason: \"no-migration-journal-non-empty-db\",\n };\n }\n\n return {\n status: \"needsMigrations\",\n tableCount,\n availableMigrations,\n appliedMigrations: [],\n pendingMigrations: availableMigrations,\n reason: \"no-migration-journal-empty-db\",\n };\n }\n\n const appliedMigrations = await loadAppliedMigrations(sql, migrationTableSchema, availableMigrations);\n const pendingMigrations = availableMigrations.filter((name) => !appliedMigrations.includes(name));\n if (pendingMigrations.length === 0) {\n return {\n status: \"upToDate\",\n tableCount,\n availableMigrations,\n appliedMigrations,\n };\n }\n\n return {\n status: \"needsMigrations\",\n tableCount,\n availableMigrations,\n appliedMigrations,\n pendingMigrations,\n reason: \"pending-migrations\",\n };\n } finally {\n await sql.end();\n }\n}\n\nexport async function applyPendingMigrations(url: string): Promise<void> {\n const initialState = await inspectMigrations(url);\n if (initialState.status === \"upToDate\") return;\n\n const sql = postgres(url, { max: 1 });\n\n try {\n const db = drizzlePg(sql);\n await migratePg(db, { migrationsFolder: MIGRATIONS_FOLDER });\n } finally {\n await sql.end();\n }\n\n let state = await inspectMigrations(url);\n if (state.status === \"upToDate\") return;\n\n const repair = await reconcilePendingMigrationHistory(url);\n if (repair.repairedMigrations.length > 0) {\n state = await inspectMigrations(url);\n if (state.status === \"upToDate\") return;\n }\n\n if (state.status !== \"needsMigrations\" || state.reason !== \"pending-migrations\") {\n throw new Error(\"Migrations are still pending after attempted apply; run inspectMigrations for details.\");\n }\n\n await applyPendingMigrationsManually(url, state.pendingMigrations);\n\n const finalState = await inspectMigrations(url);\n if (finalState.status !== \"upToDate\") {\n throw new Error(\n `Failed to apply pending migrations: ${finalState.pendingMigrations.join(\", \")}`,\n );\n }\n}\n\nexport type MigrationBootstrapResult =\n | { migrated: true; reason: \"migrated-empty-db\"; tableCount: 0 }\n | { migrated: false; reason: \"already-migrated\"; tableCount: number }\n | { migrated: false; reason: \"not-empty-no-migration-journal\"; tableCount: number };\n\nexport async function migratePostgresIfEmpty(url: string): Promise<MigrationBootstrapResult> {\n const sql = postgres(url, { max: 1 });\n\n try {\n const migrationTableSchema = await discoverMigrationTableSchema(sql);\n\n const tableCountResult = await sql<{ count: number }[]>`\n select count(*)::int as count\n from information_schema.tables\n where table_schema = 'public'\n and table_type = 'BASE TABLE'\n `;\n\n const tableCount = tableCountResult[0]?.count ?? 0;\n\n if (migrationTableSchema) {\n return { migrated: false, reason: \"already-migrated\", tableCount };\n }\n\n if (tableCount > 0) {\n return { migrated: false, reason: \"not-empty-no-migration-journal\", tableCount };\n }\n\n const db = drizzlePg(sql);\n const migrationsFolder = new URL(\"./migrations\", import.meta.url).pathname;\n await migratePg(db, { migrationsFolder });\n\n return { migrated: true, reason: \"migrated-empty-db\", tableCount: 0 };\n } finally {\n await sql.end();\n }\n}\n\nexport async function ensurePostgresDatabase(\n url: string,\n databaseName: string,\n): Promise<\"created\" | \"exists\"> {\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(databaseName)) {\n throw new Error(`Unsafe database name: ${databaseName}`);\n }\n\n const sql = postgres(url, { max: 1 });\n try {\n const existing = await sql<{ one: number }[]>`\n select 1 as one from pg_database where datname = ${databaseName} limit 1\n `;\n if (existing.length > 0) return \"exists\";\n\n await sql.unsafe(`create database \"${databaseName}\"`);\n return \"created\";\n } finally {\n await sql.end();\n }\n}\n\nexport type Db = ReturnType<typeof createDb>;\n", "export {\n createDb,\n ensurePostgresDatabase,\n inspectMigrations,\n applyPendingMigrations,\n reconcilePendingMigrationHistory,\n type MigrationState,\n type MigrationHistoryReconcileResult,\n migratePostgresIfEmpty,\n type MigrationBootstrapResult,\n type Db,\n} from \"./client.js\";\nexport * from \"./schema/index.js\";\n", "import { createHash, randomBytes } from \"node:crypto\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { and, eq, gt, isNull } from \"drizzle-orm\";\nimport { createDb, instanceUserRoles, invites } from \"@paperclipai/db\";\nimport { readConfig, resolveConfigPath } from \"../config/store.js\";\n\nfunction hashToken(token: string) {\n return createHash(\"sha256\").update(token).digest(\"hex\");\n}\n\nfunction createInviteToken() {\n return `pcp_bootstrap_${randomBytes(24).toString(\"hex\")}`;\n}\n\nfunction resolveDbUrl(configPath?: string) {\n const config = readConfig(configPath);\n if (process.env.DATABASE_URL) return process.env.DATABASE_URL;\n if (config?.database.mode === \"postgres\" && config.database.connectionString) {\n return config.database.connectionString;\n }\n if (config?.database.mode === \"embedded-postgres\") {\n const port = config.database.embeddedPostgresPort ?? 54329;\n return `postgres://paperclip:paperclip@127.0.0.1:${port}/paperclip`;\n }\n return null;\n}\n\nfunction resolveBaseUrl(configPath?: string, explicitBaseUrl?: string) {\n if (explicitBaseUrl) return explicitBaseUrl.replace(/\\/+$/, \"\");\n const config = readConfig(configPath);\n if (config?.auth.baseUrlMode === \"explicit\" && config.auth.publicBaseUrl) {\n return config.auth.publicBaseUrl.replace(/\\/+$/, \"\");\n }\n const host = config?.server.host ?? \"localhost\";\n const port = config?.server.port ?? 3100;\n const publicHost = host === \"0.0.0.0\" ? \"localhost\" : host;\n return `http://${publicHost}:${port}`;\n}\n\nexport async function bootstrapCeoInvite(opts: {\n config?: string;\n force?: boolean;\n expiresHours?: number;\n baseUrl?: string;\n}) {\n const configPath = resolveConfigPath(opts.config);\n const config = readConfig(configPath);\n if (!config) {\n p.log.error(`No config found at ${configPath}. Run ${pc.cyan(\"paperclip onboard\")} first.`);\n return;\n }\n\n if (config.server.deploymentMode !== \"authenticated\") {\n p.log.info(\"Deployment mode is local_trusted. Bootstrap CEO invite is only required for authenticated mode.\");\n return;\n }\n\n const dbUrl = resolveDbUrl(configPath);\n if (!dbUrl) {\n p.log.error(\n \"Could not resolve database connection for bootstrap.\",\n );\n return;\n }\n\n const db = createDb(dbUrl);\n try {\n const existingAdminCount = await db\n .select()\n .from(instanceUserRoles)\n .where(eq(instanceUserRoles.role, \"instance_admin\"))\n .then((rows) => rows.length);\n\n if (existingAdminCount > 0 && !opts.force) {\n p.log.info(\"Instance already has an admin user. Use --force to generate a new bootstrap invite.\");\n return;\n }\n\n const now = new Date();\n await db\n .update(invites)\n .set({ revokedAt: now, updatedAt: now })\n .where(\n and(\n eq(invites.inviteType, \"bootstrap_ceo\"),\n isNull(invites.revokedAt),\n isNull(invites.acceptedAt),\n gt(invites.expiresAt, now),\n ),\n );\n\n const token = createInviteToken();\n const expiresHours = Math.max(1, Math.min(24 * 30, opts.expiresHours ?? 72));\n const created = await db\n .insert(invites)\n .values({\n inviteType: \"bootstrap_ceo\",\n tokenHash: hashToken(token),\n allowedJoinTypes: \"human\",\n expiresAt: new Date(Date.now() + expiresHours * 60 * 60 * 1000),\n invitedByUserId: \"system\",\n })\n .returning()\n .then((rows) => rows[0]);\n\n const baseUrl = resolveBaseUrl(configPath, opts.baseUrl);\n const inviteUrl = `${baseUrl}/invite/${token}`;\n p.log.success(\"Created bootstrap CEO invite.\");\n p.log.message(`Invite URL: ${pc.cyan(inviteUrl)}`);\n p.log.message(`Expires: ${pc.dim(created.expiresAt.toISOString())}`);\n } catch (err) {\n p.log.error(`Could not create bootstrap invite: ${err instanceof Error ? err.message : String(err)}`);\n p.log.info(\"If using embedded-postgres, start the Paperclip server and run this command again.\");\n }\n}\n", "import pc from \"picocolors\";\n\nconst PAPERCLIP_ART = [\n \"\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \",\n \"\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\",\n \"\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\",\n \"\u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u255D \",\n \"\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \",\n \"\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u255D \",\n] as const;\n\nconst TAGLINE = \"Open-source orchestration for zero-human companies\";\n\nexport function printPaperclipCliBanner(): void {\n const lines = [\n \"\",\n ...PAPERCLIP_ART.map((line) => pc.cyan(line)),\n pc.blue(\" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\"),\n pc.bold(pc.white(` ${TAGLINE}`)),\n \"\",\n ];\n\n console.log(lines.join(\"\\n\"));\n}\n", "import {\n ensureAgentJwtSecret,\n readAgentJwtSecretFromEnv,\n readAgentJwtSecretFromEnvFile,\n resolveAgentJwtEnvFile,\n} from \"../config/env.js\";\nimport type { CheckResult } from \"./index.js\";\n\nexport function agentJwtSecretCheck(configPath?: string): CheckResult {\n if (readAgentJwtSecretFromEnv(configPath)) {\n return {\n name: \"Agent JWT secret\",\n status: \"pass\",\n message: \"PAPERCLIP_AGENT_JWT_SECRET is set in environment\",\n };\n }\n\n const envPath = resolveAgentJwtEnvFile(configPath);\n const fileSecret = readAgentJwtSecretFromEnvFile(envPath);\n\n if (fileSecret) {\n return {\n name: \"Agent JWT secret\",\n status: \"warn\",\n message: `PAPERCLIP_AGENT_JWT_SECRET is present in ${envPath} but not loaded into environment`,\n repairHint: `Set the value from ${envPath} in your shell before starting the Paperclip server`,\n };\n }\n\n return {\n name: \"Agent JWT secret\",\n status: \"fail\",\n message: `PAPERCLIP_AGENT_JWT_SECRET missing from environment and ${envPath}`,\n canRepair: true,\n repair: () => {\n ensureAgentJwtSecret(configPath);\n },\n repairHint: `Run with --repair to create ${envPath} containing PAPERCLIP_AGENT_JWT_SECRET`,\n };\n}\n", "import { readConfig, configExists, resolveConfigPath } from \"../config/store.js\";\nimport type { CheckResult } from \"./index.js\";\n\nexport function configCheck(configPath?: string): CheckResult {\n const filePath = resolveConfigPath(configPath);\n\n if (!configExists(configPath)) {\n return {\n name: \"Config file\",\n status: \"fail\",\n message: `Config file not found at ${filePath}`,\n canRepair: false,\n repairHint: \"Run `paperclipai onboard` to create one\",\n };\n }\n\n try {\n readConfig(configPath);\n return {\n name: \"Config file\",\n status: \"pass\",\n message: `Valid config at ${filePath}`,\n };\n } catch (err) {\n return {\n name: \"Config file\",\n status: \"fail\",\n message: `Invalid config: ${err instanceof Error ? err.message : String(err)}`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section database` (or `paperclipai onboard` to recreate)\",\n };\n }\n}\n", "import type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\n\nfunction isLoopbackHost(host: string) {\n const normalized = host.trim().toLowerCase();\n return normalized === \"127.0.0.1\" || normalized === \"localhost\" || normalized === \"::1\";\n}\n\nexport function deploymentAuthCheck(config: PaperclipConfig): CheckResult {\n const mode = config.server.deploymentMode;\n const exposure = config.server.exposure;\n const auth = config.auth;\n\n if (mode === \"local_trusted\") {\n if (!isLoopbackHost(config.server.host)) {\n return {\n name: \"Deployment/auth mode\",\n status: \"fail\",\n message: `local_trusted requires loopback host binding (found ${config.server.host})`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section server` and set host to 127.0.0.1\",\n };\n }\n return {\n name: \"Deployment/auth mode\",\n status: \"pass\",\n message: \"local_trusted mode is configured for loopback-only access\",\n };\n }\n\n const secret =\n process.env.BETTER_AUTH_SECRET?.trim() ??\n process.env.PAPERCLIP_AGENT_JWT_SECRET?.trim();\n if (!secret) {\n return {\n name: \"Deployment/auth mode\",\n status: \"fail\",\n message: \"authenticated mode requires BETTER_AUTH_SECRET (or PAPERCLIP_AGENT_JWT_SECRET)\",\n canRepair: false,\n repairHint: \"Set BETTER_AUTH_SECRET before starting Paperclip\",\n };\n }\n\n if (auth.baseUrlMode === \"explicit\" && !auth.publicBaseUrl) {\n return {\n name: \"Deployment/auth mode\",\n status: \"fail\",\n message: \"auth.baseUrlMode=explicit requires auth.publicBaseUrl\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section server` and provide a base URL\",\n };\n }\n\n if (exposure === \"public\") {\n if (auth.baseUrlMode !== \"explicit\" || !auth.publicBaseUrl) {\n return {\n name: \"Deployment/auth mode\",\n status: \"fail\",\n message: \"authenticated/public requires explicit auth.publicBaseUrl\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section server` and select public exposure\",\n };\n }\n try {\n const url = new URL(auth.publicBaseUrl);\n if (url.protocol !== \"https:\") {\n return {\n name: \"Deployment/auth mode\",\n status: \"warn\",\n message: \"Public exposure should use an https:// auth.publicBaseUrl\",\n canRepair: false,\n repairHint: \"Use HTTPS in production for secure session cookies\",\n };\n }\n } catch {\n return {\n name: \"Deployment/auth mode\",\n status: \"fail\",\n message: \"auth.publicBaseUrl is not a valid URL\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section server` and provide a valid URL\",\n };\n }\n }\n\n return {\n name: \"Deployment/auth mode\",\n status: \"pass\",\n message: `Mode ${mode}/${exposure} with auth URL mode ${auth.baseUrlMode}`,\n };\n}\n", "export { resolveRuntimeLikePath } from \"../utils/path-resolver.js\";\n", "import fs from \"node:fs\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\nimport { resolveRuntimeLikePath } from \"./path-resolver.js\";\n\nexport async function databaseCheck(config: PaperclipConfig, configPath?: string): Promise<CheckResult> {\n if (config.database.mode === \"postgres\") {\n if (!config.database.connectionString) {\n return {\n name: \"Database\",\n status: \"fail\",\n message: \"PostgreSQL mode selected but no connection string configured\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section database`\",\n };\n }\n\n try {\n const { createDb } = await import(\"@paperclipai/db\");\n const db = createDb(config.database.connectionString);\n await db.execute(\"SELECT 1\");\n return {\n name: \"Database\",\n status: \"pass\",\n message: \"PostgreSQL connection successful\",\n };\n } catch (err) {\n return {\n name: \"Database\",\n status: \"fail\",\n message: `Cannot connect to PostgreSQL: ${err instanceof Error ? err.message : String(err)}`,\n canRepair: false,\n repairHint: \"Check your connection string and ensure PostgreSQL is running\",\n };\n }\n }\n\n if (config.database.mode === \"embedded-postgres\") {\n const dataDir = resolveRuntimeLikePath(config.database.embeddedPostgresDataDir, configPath);\n const reportedPath = dataDir;\n if (!fs.existsSync(dataDir)) {\n return {\n name: \"Database\",\n status: \"warn\",\n message: `Embedded PostgreSQL data directory does not exist: ${reportedPath}`,\n canRepair: true,\n repair: () => {\n fs.mkdirSync(reportedPath, { recursive: true });\n },\n };\n }\n\n return {\n name: \"Database\",\n status: \"pass\",\n message: `Embedded PostgreSQL configured at ${dataDir} (port ${config.database.embeddedPostgresPort})`,\n };\n }\n\n return {\n name: \"Database\",\n status: \"fail\",\n message: `Unknown database mode: ${String(config.database.mode)}`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section database`\",\n };\n}\n", "import type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\n\nexport async function llmCheck(config: PaperclipConfig): Promise<CheckResult> {\n if (!config.llm) {\n return {\n name: \"LLM provider\",\n status: \"warn\",\n message: \"No LLM provider configured\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section llm` to set one up\",\n };\n }\n\n if (!config.llm.apiKey) {\n return {\n name: \"LLM provider\",\n status: \"warn\",\n message: `${config.llm.provider} configured but no API key set`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section llm`\",\n };\n }\n\n try {\n if (config.llm.provider === \"claude\") {\n const res = await fetch(\"https://api.anthropic.com/v1/messages\", {\n method: \"POST\",\n headers: {\n \"x-api-key\": config.llm.apiKey,\n \"anthropic-version\": \"2023-06-01\",\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n model: \"claude-sonnet-4-5-20250929\",\n max_tokens: 1,\n messages: [{ role: \"user\", content: \"hi\" }],\n }),\n });\n if (res.ok || res.status === 400) {\n return { name: \"LLM provider\", status: \"pass\", message: \"Claude API key is valid\" };\n }\n if (res.status === 401) {\n return {\n name: \"LLM provider\",\n status: \"fail\",\n message: \"Claude API key is invalid (401)\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section llm`\",\n };\n }\n return {\n name: \"LLM provider\",\n status: \"warn\",\n message: `Claude API returned status ${res.status}`,\n };\n } else {\n const res = await fetch(\"https://api.openai.com/v1/models\", {\n headers: { Authorization: `Bearer ${config.llm.apiKey}` },\n });\n if (res.ok) {\n return { name: \"LLM provider\", status: \"pass\", message: \"OpenAI API key is valid\" };\n }\n if (res.status === 401) {\n return {\n name: \"LLM provider\",\n status: \"fail\",\n message: \"OpenAI API key is invalid (401)\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section llm`\",\n };\n }\n return {\n name: \"LLM provider\",\n status: \"warn\",\n message: `OpenAI API returned status ${res.status}`,\n };\n }\n } catch {\n return {\n name: \"LLM provider\",\n status: \"warn\",\n message: \"Could not reach API to validate key\",\n };\n }\n}\n", "import fs from \"node:fs\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\nimport { resolveRuntimeLikePath } from \"./path-resolver.js\";\n\nexport function logCheck(config: PaperclipConfig, configPath?: string): CheckResult {\n const logDir = resolveRuntimeLikePath(config.logging.logDir, configPath);\n const reportedDir = logDir;\n\n if (!fs.existsSync(logDir)) {\n return {\n name: \"Log directory\",\n status: \"warn\",\n message: `Log directory does not exist: ${reportedDir}`,\n canRepair: true,\n repair: () => {\n fs.mkdirSync(reportedDir, { recursive: true });\n },\n };\n }\n\n try {\n fs.accessSync(reportedDir, fs.constants.W_OK);\n return {\n name: \"Log directory\",\n status: \"pass\",\n message: `Log directory is writable: ${reportedDir}`,\n };\n } catch {\n return {\n name: \"Log directory\",\n status: \"fail\",\n message: `Log directory is not writable: ${logDir}`,\n canRepair: false,\n repairHint: \"Check file permissions on the log directory\",\n };\n }\n}\n", "import net from \"node:net\";\n\nexport function checkPort(port: number): Promise<{ available: boolean; error?: string }> {\n return new Promise((resolve) => {\n const server = net.createServer();\n server.once(\"error\", (err: NodeJS.ErrnoException) => {\n if (err.code === \"EADDRINUSE\") {\n resolve({ available: false, error: `Port ${port} is already in use` });\n } else {\n resolve({ available: false, error: err.message });\n }\n });\n server.once(\"listening\", () => {\n server.close(() => resolve({ available: true }));\n });\n server.listen(port, \"127.0.0.1\");\n });\n}\n", "import type { PaperclipConfig } from \"../config/schema.js\";\nimport { checkPort } from \"../utils/net.js\";\nimport type { CheckResult } from \"./index.js\";\n\nexport async function portCheck(config: PaperclipConfig): Promise<CheckResult> {\n const port = config.server.port;\n const result = await checkPort(port);\n\n if (result.available) {\n return {\n name: \"Server port\",\n status: \"pass\",\n message: `Port ${port} is available`,\n };\n }\n\n return {\n name: \"Server port\",\n status: \"warn\",\n message: result.error ?? `Port ${port} is not available`,\n canRepair: false,\n repairHint: `Check what's using port ${port} with: lsof -i :${port}`,\n };\n}\n", "import { randomBytes } from \"node:crypto\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\nimport { resolveRuntimeLikePath } from \"./path-resolver.js\";\n\nfunction decodeMasterKey(raw: string): Buffer | null {\n const trimmed = raw.trim();\n if (!trimmed) return null;\n\n if (/^[A-Fa-f0-9]{64}$/.test(trimmed)) {\n return Buffer.from(trimmed, \"hex\");\n }\n\n try {\n const decoded = Buffer.from(trimmed, \"base64\");\n if (decoded.length === 32) return decoded;\n } catch {\n // ignored\n }\n\n if (Buffer.byteLength(trimmed, \"utf8\") === 32) {\n return Buffer.from(trimmed, \"utf8\");\n }\n return null;\n}\n\nfunction withStrictModeNote(\n base: Pick<CheckResult, \"name\" | \"status\" | \"message\" | \"canRepair\" | \"repair\" | \"repairHint\">,\n config: PaperclipConfig,\n): CheckResult {\n const strictModeDisabledInDeployedSetup =\n config.database.mode === \"postgres\" && config.secrets.strictMode === false;\n if (!strictModeDisabledInDeployedSetup) return base;\n\n if (base.status === \"fail\") return base;\n return {\n ...base,\n status: \"warn\",\n message: `${base.message}; strict secret mode is disabled for postgres deployment`,\n repairHint: base.repairHint\n ? `${base.repairHint}. Consider enabling secrets.strictMode`\n : \"Consider enabling secrets.strictMode\",\n };\n}\n\nexport function secretsCheck(config: PaperclipConfig, configPath?: string): CheckResult {\n const provider = config.secrets.provider;\n if (provider !== \"local_encrypted\") {\n return {\n name: \"Secrets adapter\",\n status: \"fail\",\n message: `${provider} is configured, but this build only supports local_encrypted`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section secrets` and set provider to local_encrypted\",\n };\n }\n\n const envMasterKey = process.env.PAPERCLIP_SECRETS_MASTER_KEY;\n if (envMasterKey && envMasterKey.trim().length > 0) {\n if (!decodeMasterKey(envMasterKey)) {\n return {\n name: \"Secrets adapter\",\n status: \"fail\",\n message:\n \"PAPERCLIP_SECRETS_MASTER_KEY is invalid (expected 32-byte base64, 64-char hex, or raw 32-char string)\",\n canRepair: false,\n repairHint: \"Set PAPERCLIP_SECRETS_MASTER_KEY to a valid key or unset it to use a key file\",\n };\n }\n\n return withStrictModeNote(\n {\n name: \"Secrets adapter\",\n status: \"pass\",\n message: \"Local encrypted provider configured via PAPERCLIP_SECRETS_MASTER_KEY\",\n },\n config,\n );\n }\n\n const keyFileOverride = process.env.PAPERCLIP_SECRETS_MASTER_KEY_FILE;\n const configuredPath =\n keyFileOverride && keyFileOverride.trim().length > 0\n ? keyFileOverride.trim()\n : config.secrets.localEncrypted.keyFilePath;\n const keyFilePath = resolveRuntimeLikePath(configuredPath, configPath);\n\n if (!fs.existsSync(keyFilePath)) {\n return withStrictModeNote(\n {\n name: \"Secrets adapter\",\n status: \"warn\",\n message: `Secrets key file does not exist yet: ${keyFilePath}`,\n canRepair: true,\n repair: () => {\n fs.mkdirSync(path.dirname(keyFilePath), { recursive: true });\n fs.writeFileSync(keyFilePath, randomBytes(32).toString(\"base64\"), {\n encoding: \"utf8\",\n mode: 0o600,\n });\n try {\n fs.chmodSync(keyFilePath, 0o600);\n } catch {\n // best effort\n }\n },\n repairHint: \"Run with --repair to create a local encrypted secrets key file\",\n },\n config,\n );\n }\n\n let raw: string;\n try {\n raw = fs.readFileSync(keyFilePath, \"utf8\");\n } catch (err) {\n return {\n name: \"Secrets adapter\",\n status: \"fail\",\n message: `Could not read secrets key file: ${err instanceof Error ? err.message : String(err)}`,\n canRepair: false,\n repairHint: \"Check file permissions or set PAPERCLIP_SECRETS_MASTER_KEY\",\n };\n }\n\n if (!decodeMasterKey(raw)) {\n return {\n name: \"Secrets adapter\",\n status: \"fail\",\n message: `Invalid key material in ${keyFilePath}`,\n canRepair: false,\n repairHint: \"Replace with valid key material or delete it and run doctor --repair\",\n };\n }\n\n return withStrictModeNote(\n {\n name: \"Secrets adapter\",\n status: \"pass\",\n message: `Local encrypted provider configured with key file ${keyFilePath}`,\n },\n config,\n );\n}\n", "import fs from \"node:fs\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\nimport { resolveRuntimeLikePath } from \"./path-resolver.js\";\n\nexport function storageCheck(config: PaperclipConfig, configPath?: string): CheckResult {\n if (config.storage.provider === \"local_disk\") {\n const baseDir = resolveRuntimeLikePath(config.storage.localDisk.baseDir, configPath);\n if (!fs.existsSync(baseDir)) {\n return {\n name: \"Storage\",\n status: \"warn\",\n message: `Local storage directory does not exist: ${baseDir}`,\n canRepair: true,\n repair: () => {\n fs.mkdirSync(baseDir, { recursive: true });\n },\n repairHint: \"Run with --repair to create local storage directory\",\n };\n }\n\n try {\n fs.accessSync(baseDir, fs.constants.W_OK);\n return {\n name: \"Storage\",\n status: \"pass\",\n message: `Local disk storage is writable: ${baseDir}`,\n };\n } catch {\n return {\n name: \"Storage\",\n status: \"fail\",\n message: `Local storage directory is not writable: ${baseDir}`,\n canRepair: false,\n repairHint: \"Check file permissions for storage.localDisk.baseDir\",\n };\n }\n }\n\n const bucket = config.storage.s3.bucket.trim();\n const region = config.storage.s3.region.trim();\n if (!bucket || !region) {\n return {\n name: \"Storage\",\n status: \"fail\",\n message: \"S3 storage requires non-empty bucket and region\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section storage`\",\n };\n }\n\n return {\n name: \"Storage\",\n status: \"warn\",\n message: `S3 storage configured (bucket=${bucket}, region=${region}). Reachability check is skipped in doctor.`,\n canRepair: false,\n repairHint: \"Verify credentials and endpoint in deployment environment\",\n };\n}\n\n", "export interface CheckResult {\n name: string;\n status: \"pass\" | \"warn\" | \"fail\";\n message: string;\n canRepair?: boolean;\n repair?: () => void | Promise<void>;\n repairHint?: string;\n}\n\nexport { agentJwtSecretCheck } from \"./agent-jwt-secret-check.js\";\nexport { configCheck } from \"./config-check.js\";\nexport { deploymentAuthCheck } from \"./deployment-auth-check.js\";\nexport { databaseCheck } from \"./database-check.js\";\nexport { llmCheck } from \"./llm-check.js\";\nexport { logCheck } from \"./log-check.js\";\nexport { portCheck } from \"./port-check.js\";\nexport { secretsCheck } from \"./secrets-check.js\";\nexport { storageCheck } from \"./storage-check.js\";\n", "import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport { readConfig, resolveConfigPath } from \"../config/store.js\";\nimport {\n agentJwtSecretCheck,\n configCheck,\n databaseCheck,\n deploymentAuthCheck,\n llmCheck,\n logCheck,\n portCheck,\n secretsCheck,\n storageCheck,\n type CheckResult,\n} from \"../checks/index.js\";\nimport { printPaperclipCliBanner } from \"../utils/banner.js\";\n\nconst STATUS_ICON = {\n pass: pc.green(\"\u2713\"),\n warn: pc.yellow(\"!\"),\n fail: pc.red(\"\u2717\"),\n} as const;\n\nexport async function doctor(opts: {\n config?: string;\n repair?: boolean;\n yes?: boolean;\n}): Promise<{ passed: number; warned: number; failed: number }> {\n printPaperclipCliBanner();\n p.intro(pc.bgCyan(pc.black(\" paperclip doctor \")));\n\n const configPath = resolveConfigPath(opts.config);\n const results: CheckResult[] = [];\n\n // 1. Config check (must pass before others)\n const cfgResult = configCheck(opts.config);\n results.push(cfgResult);\n printResult(cfgResult);\n\n if (cfgResult.status === \"fail\") {\n return printSummary(results);\n }\n\n let config: PaperclipConfig;\n try {\n config = readConfig(opts.config)!;\n } catch (err) {\n const readResult: CheckResult = {\n name: \"Config file\",\n status: \"fail\",\n message: `Could not read config: ${err instanceof Error ? err.message : String(err)}`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section database` or `paperclipai onboard`\",\n };\n results.push(readResult);\n printResult(readResult);\n return printSummary(results);\n }\n\n // 2. Deployment/auth mode check\n const deploymentAuthResult = deploymentAuthCheck(config);\n results.push(deploymentAuthResult);\n printResult(deploymentAuthResult);\n\n // 3. Agent JWT check\n const jwtResult = agentJwtSecretCheck(opts.config);\n results.push(jwtResult);\n printResult(jwtResult);\n await maybeRepair(jwtResult, opts);\n\n // 4. Secrets adapter check\n const secretsResult = secretsCheck(config, configPath);\n results.push(secretsResult);\n printResult(secretsResult);\n await maybeRepair(secretsResult, opts);\n\n // 5. Storage check\n const storageResult = storageCheck(config, configPath);\n results.push(storageResult);\n printResult(storageResult);\n await maybeRepair(storageResult, opts);\n\n // 6. Database check\n const dbResult = await databaseCheck(config, configPath);\n results.push(dbResult);\n printResult(dbResult);\n await maybeRepair(dbResult, opts);\n\n // 7. LLM check\n const llmResult = await llmCheck(config);\n results.push(llmResult);\n printResult(llmResult);\n\n // 8. Log directory check\n const logResult = logCheck(config, configPath);\n results.push(logResult);\n printResult(logResult);\n await maybeRepair(logResult, opts);\n\n // 9. Port check\n const portResult = await portCheck(config);\n results.push(portResult);\n printResult(portResult);\n\n // Summary\n return printSummary(results);\n}\n\nfunction printResult(result: CheckResult): void {\n const icon = STATUS_ICON[result.status];\n p.log.message(`${icon} ${pc.bold(result.name)}: ${result.message}`);\n if (result.status !== \"pass\" && result.repairHint) {\n p.log.message(` ${pc.dim(result.repairHint)}`);\n }\n}\n\nasync function maybeRepair(\n result: CheckResult,\n opts: { repair?: boolean; yes?: boolean },\n): Promise<void> {\n if (result.status === \"pass\" || !result.canRepair || !result.repair) return;\n if (!opts.repair) return;\n\n let shouldRepair = opts.yes;\n if (!shouldRepair) {\n const answer = await p.confirm({\n message: `Repair \"${result.name}\"?`,\n initialValue: true,\n });\n if (p.isCancel(answer)) return;\n shouldRepair = answer;\n }\n\n if (shouldRepair) {\n try {\n await result.repair();\n p.log.success(`Repaired: ${result.name}`);\n } catch (err) {\n p.log.error(`Repair failed: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n}\n\nfunction printSummary(results: CheckResult[]): { passed: number; warned: number; failed: number } {\n const passed = results.filter((r) => r.status === \"pass\").length;\n const warned = results.filter((r) => r.status === \"warn\").length;\n const failed = results.filter((r) => r.status === \"fail\").length;\n\n const parts: string[] = [];\n parts.push(pc.green(`${passed} passed`));\n if (warned) parts.push(pc.yellow(`${warned} warnings`));\n if (failed) parts.push(pc.red(`${failed} failed`));\n\n p.note(parts.join(\", \"), \"Summary\");\n\n if (failed > 0) {\n p.outro(pc.red(\"Some checks failed. Fix the issues above and re-run doctor.\"));\n } else if (warned > 0) {\n p.outro(pc.yellow(\"All critical checks passed with some warnings.\"));\n } else {\n p.outro(pc.green(\"All checks passed!\"));\n }\n\n return { passed, warned, failed };\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { onboard } from \"./onboard.js\";\nimport { doctor } from \"./doctor.js\";\nimport { configExists, resolveConfigPath } from \"../config/store.js\";\nimport {\n describeLocalInstancePaths,\n resolvePaperclipHomeDir,\n resolvePaperclipInstanceId,\n} from \"../config/home.js\";\n\ninterface RunOptions {\n config?: string;\n instance?: string;\n repair?: boolean;\n yes?: boolean;\n}\n\nexport async function runCommand(opts: RunOptions): Promise<void> {\n const instanceId = resolvePaperclipInstanceId(opts.instance);\n process.env.PAPERCLIP_INSTANCE_ID = instanceId;\n\n const homeDir = resolvePaperclipHomeDir();\n fs.mkdirSync(homeDir, { recursive: true });\n\n const paths = describeLocalInstancePaths(instanceId);\n fs.mkdirSync(paths.instanceRoot, { recursive: true });\n\n const configPath = resolveConfigPath(opts.config);\n process.env.PAPERCLIP_CONFIG = configPath;\n\n p.intro(pc.bgCyan(pc.black(\" paperclipai run \")));\n p.log.message(pc.dim(`Home: ${paths.homeDir}`));\n p.log.message(pc.dim(`Instance: ${paths.instanceId}`));\n p.log.message(pc.dim(`Config: ${configPath}`));\n\n if (!configExists(configPath)) {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n p.log.error(\"No config found and terminal is non-interactive.\");\n p.log.message(`Run ${pc.cyan(\"paperclipai onboard\")} once, then retry ${pc.cyan(\"paperclipai run\")}.`);\n process.exit(1);\n }\n\n p.log.step(\"No config found. Starting onboarding...\");\n await onboard({ config: configPath, invokedByRun: true });\n }\n\n p.log.step(\"Running doctor checks...\");\n const summary = await doctor({\n config: configPath,\n repair: opts.repair ?? true,\n yes: opts.yes ?? true,\n });\n\n if (summary.failed > 0) {\n p.log.error(\"Doctor found blocking issues. Not starting server.\");\n process.exit(1);\n }\n\n p.log.step(\"Starting Paperclip server...\");\n await importServerEntry();\n}\n\nfunction formatError(err: unknown): string {\n if (err instanceof Error) {\n if (err.message && err.message.trim().length > 0) return err.message;\n return err.name;\n }\n if (typeof err === \"string\") return err;\n try {\n return JSON.stringify(err);\n } catch {\n return String(err);\n }\n}\n\nfunction isModuleNotFoundError(err: unknown): boolean {\n if (!(err instanceof Error)) return false;\n const code = (err as { code?: unknown }).code;\n if (code === \"ERR_MODULE_NOT_FOUND\") return true;\n return err.message.includes(\"Cannot find module\");\n}\n\nfunction maybeEnableUiDevMiddleware(entrypoint: string): void {\n if (process.env.PAPERCLIP_UI_DEV_MIDDLEWARE !== undefined) return;\n const normalized = entrypoint.replaceAll(\"\\\\\", \"/\");\n if (normalized.endsWith(\"/server/src/index.ts\") || normalized.endsWith(\"@paperclipai/server/src/index.ts\")) {\n process.env.PAPERCLIP_UI_DEV_MIDDLEWARE = \"true\";\n }\n}\n\nasync function importServerEntry(): Promise<void> {\n // Dev mode: try local workspace path (monorepo with tsx)\n const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"../../..\");\n const devEntry = path.resolve(projectRoot, \"server/src/index.ts\");\n if (fs.existsSync(devEntry)) {\n maybeEnableUiDevMiddleware(devEntry);\n await import(pathToFileURL(devEntry).href);\n return;\n }\n\n // Production mode: import the published @paperclipai/server package\n try {\n await import(\"@paperclipai/server\");\n } catch (err) {\n throw new Error(\n `Could not locate a Paperclip server entrypoint.\\n` +\n `Tried: ${devEntry}, @paperclipai/server\\n` +\n `${formatError(err)}`,\n );\n }\n}\n", "import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { configExists, readConfig, resolveConfigPath, writeConfig } from \"../config/store.js\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport { ensureAgentJwtSecret, resolveAgentJwtEnvFile } from \"../config/env.js\";\nimport { ensureLocalSecretsKeyFile } from \"../config/secrets-key.js\";\nimport { promptDatabase } from \"../prompts/database.js\";\nimport { promptLlm } from \"../prompts/llm.js\";\nimport { promptLogging } from \"../prompts/logging.js\";\nimport { defaultSecretsConfig } from \"../prompts/secrets.js\";\nimport { defaultStorageConfig, promptStorage } from \"../prompts/storage.js\";\nimport { promptServer } from \"../prompts/server.js\";\nimport {\n describeLocalInstancePaths,\n resolveDefaultEmbeddedPostgresDir,\n resolveDefaultLogsDir,\n resolvePaperclipInstanceId,\n} from \"../config/home.js\";\nimport { bootstrapCeoInvite } from \"./auth-bootstrap-ceo.js\";\nimport { printPaperclipCliBanner } from \"../utils/banner.js\";\n\ntype SetupMode = \"quickstart\" | \"advanced\";\n\ntype OnboardOptions = {\n config?: string;\n run?: boolean;\n yes?: boolean;\n invokedByRun?: boolean;\n};\n\nfunction quickstartDefaults(): Pick<PaperclipConfig, \"database\" | \"logging\" | \"server\" | \"auth\" | \"storage\" | \"secrets\"> {\n const instanceId = resolvePaperclipInstanceId();\n return {\n database: {\n mode: \"embedded-postgres\",\n embeddedPostgresDataDir: resolveDefaultEmbeddedPostgresDir(instanceId),\n embeddedPostgresPort: 54329,\n },\n logging: {\n mode: \"file\",\n logDir: resolveDefaultLogsDir(instanceId),\n },\n server: {\n deploymentMode: \"local_trusted\",\n exposure: \"private\",\n host: \"127.0.0.1\",\n port: 3100,\n allowedHostnames: [],\n serveUi: true,\n },\n auth: {\n baseUrlMode: \"auto\",\n },\n storage: defaultStorageConfig(),\n secrets: defaultSecretsConfig(),\n };\n}\n\nexport async function onboard(opts: OnboardOptions): Promise<void> {\n printPaperclipCliBanner();\n p.intro(pc.bgCyan(pc.black(\" paperclipai onboard \")));\n const configPath = resolveConfigPath(opts.config);\n const instance = describeLocalInstancePaths(resolvePaperclipInstanceId());\n p.log.message(\n pc.dim(\n `Local home: ${instance.homeDir} | instance: ${instance.instanceId} | config: ${configPath}`,\n ),\n );\n\n if (configExists(opts.config)) {\n p.log.message(pc.dim(`${configPath} exists, updating config`));\n\n try {\n readConfig(opts.config);\n } catch (err) {\n p.log.message(\n pc.yellow(\n `Existing config appears invalid and will be updated.\\n${err instanceof Error ? err.message : String(err)}`,\n ),\n );\n }\n }\n\n let setupMode: SetupMode = \"quickstart\";\n if (opts.yes) {\n p.log.message(pc.dim(\"`--yes` enabled: using Quickstart defaults.\"));\n } else {\n const setupModeChoice = await p.select({\n message: \"Choose setup path\",\n options: [\n {\n value: \"quickstart\" as const,\n label: \"Quickstart\",\n hint: \"Recommended: local defaults + ready to run\",\n },\n {\n value: \"advanced\" as const,\n label: \"Advanced setup\",\n hint: \"Customize database, server, storage, and more\",\n },\n ],\n initialValue: \"quickstart\",\n });\n if (p.isCancel(setupModeChoice)) {\n p.cancel(\"Setup cancelled.\");\n return;\n }\n setupMode = setupModeChoice as SetupMode;\n }\n\n let llm: PaperclipConfig[\"llm\"] | undefined;\n let {\n database,\n logging,\n server,\n auth,\n storage,\n secrets,\n } = quickstartDefaults();\n\n if (setupMode === \"advanced\") {\n p.log.step(pc.bold(\"Database\"));\n database = await promptDatabase();\n\n if (database.mode === \"postgres\" && database.connectionString) {\n const s = p.spinner();\n s.start(\"Testing database connection...\");\n try {\n const { createDb } = await import(\"@paperclipai/db\");\n const db = createDb(database.connectionString);\n await db.execute(\"SELECT 1\");\n s.stop(\"Database connection successful\");\n } catch {\n s.stop(pc.yellow(\"Could not connect to database \u2014 you can fix this later with `paperclipai doctor`\"));\n }\n }\n\n p.log.step(pc.bold(\"LLM Provider\"));\n llm = await promptLlm();\n\n if (llm?.apiKey) {\n const s = p.spinner();\n s.start(\"Validating API key...\");\n try {\n if (llm.provider === \"claude\") {\n const res = await fetch(\"https://api.anthropic.com/v1/messages\", {\n method: \"POST\",\n headers: {\n \"x-api-key\": llm.apiKey,\n \"anthropic-version\": \"2023-06-01\",\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n model: \"claude-sonnet-4-5-20250929\",\n max_tokens: 1,\n messages: [{ role: \"user\", content: \"hi\" }],\n }),\n });\n if (res.ok || res.status === 400) {\n s.stop(\"API key is valid\");\n } else if (res.status === 401) {\n s.stop(pc.yellow(\"API key appears invalid \u2014 you can update it later\"));\n } else {\n s.stop(pc.yellow(\"Could not validate API key \u2014 continuing anyway\"));\n }\n } else {\n const res = await fetch(\"https://api.openai.com/v1/models\", {\n headers: { Authorization: `Bearer ${llm.apiKey}` },\n });\n if (res.ok) {\n s.stop(\"API key is valid\");\n } else if (res.status === 401) {\n s.stop(pc.yellow(\"API key appears invalid \u2014 you can update it later\"));\n } else {\n s.stop(pc.yellow(\"Could not validate API key \u2014 continuing anyway\"));\n }\n }\n } catch {\n s.stop(pc.yellow(\"Could not reach API \u2014 continuing anyway\"));\n }\n }\n\n p.log.step(pc.bold(\"Logging\"));\n logging = await promptLogging();\n\n p.log.step(pc.bold(\"Server\"));\n ({ server, auth } = await promptServer());\n\n p.log.step(pc.bold(\"Storage\"));\n storage = await promptStorage(defaultStorageConfig());\n\n p.log.step(pc.bold(\"Secrets\"));\n secrets = defaultSecretsConfig();\n p.log.message(\n pc.dim(\n `Using defaults: provider=${secrets.provider}, strictMode=${secrets.strictMode}, keyFile=${secrets.localEncrypted.keyFilePath}`,\n ),\n );\n } else {\n p.log.step(pc.bold(\"Quickstart\"));\n p.log.message(\n pc.dim(\"Using local defaults: embedded database, no LLM provider, file storage, and local encrypted secrets.\"),\n );\n }\n\n const jwtSecret = ensureAgentJwtSecret(configPath);\n const envFilePath = resolveAgentJwtEnvFile(configPath);\n if (jwtSecret.created) {\n p.log.success(`Created ${pc.cyan(\"PAPERCLIP_AGENT_JWT_SECRET\")} in ${pc.dim(envFilePath)}`);\n } else if (process.env.PAPERCLIP_AGENT_JWT_SECRET?.trim()) {\n p.log.info(`Using existing ${pc.cyan(\"PAPERCLIP_AGENT_JWT_SECRET\")} from environment`);\n } else {\n p.log.info(`Using existing ${pc.cyan(\"PAPERCLIP_AGENT_JWT_SECRET\")} in ${pc.dim(envFilePath)}`);\n }\n\n const config: PaperclipConfig = {\n $meta: {\n version: 1,\n updatedAt: new Date().toISOString(),\n source: \"onboard\",\n },\n ...(llm && { llm }),\n database,\n logging,\n server,\n auth,\n storage,\n secrets,\n };\n\n const keyResult = ensureLocalSecretsKeyFile(config, configPath);\n if (keyResult.status === \"created\") {\n p.log.success(`Created local secrets key file at ${pc.dim(keyResult.path)}`);\n } else if (keyResult.status === \"existing\") {\n p.log.message(pc.dim(`Using existing local secrets key file at ${keyResult.path}`));\n }\n\n writeConfig(config, opts.config);\n\n p.note(\n [\n `Database: ${database.mode}`,\n llm ? `LLM: ${llm.provider}` : \"LLM: not configured\",\n `Logging: ${logging.mode} -> ${logging.logDir}`,\n `Server: ${server.deploymentMode}/${server.exposure} @ ${server.host}:${server.port}`,\n `Allowed hosts: ${server.allowedHostnames.length > 0 ? server.allowedHostnames.join(\", \") : \"(loopback only)\"}`,\n `Auth URL mode: ${auth.baseUrlMode}${auth.publicBaseUrl ? ` (${auth.publicBaseUrl})` : \"\"}`,\n `Storage: ${storage.provider}`,\n `Secrets: ${secrets.provider} (strict mode ${secrets.strictMode ? \"on\" : \"off\"})`,\n \"Agent auth: PAPERCLIP_AGENT_JWT_SECRET configured\",\n ].join(\"\\n\"),\n \"Configuration saved\",\n );\n\n p.note(\n [\n `Run: ${pc.cyan(\"paperclipai run\")}`,\n `Reconfigure later: ${pc.cyan(\"paperclipai configure\")}`,\n `Diagnose setup: ${pc.cyan(\"paperclipai doctor\")}`,\n ].join(\"\\n\"),\n \"Next commands\",\n );\n\n if (server.deploymentMode === \"authenticated\") {\n p.log.step(\"Generating bootstrap CEO invite\");\n await bootstrapCeoInvite({ config: configPath });\n }\n\n let shouldRunNow = opts.run === true || opts.yes === true;\n if (!shouldRunNow && !opts.invokedByRun && process.stdin.isTTY && process.stdout.isTTY) {\n const answer = await p.confirm({\n message: \"Start Paperclip now?\",\n initialValue: true,\n });\n if (!p.isCancel(answer)) {\n shouldRunNow = answer;\n }\n }\n\n if (shouldRunNow && !opts.invokedByRun) {\n process.env.PAPERCLIP_OPEN_ON_LISTEN = \"true\";\n const { runCommand } = await import(\"./run.js\");\n await runCommand({ config: configPath, repair: true, yes: true });\n return;\n }\n\n p.outro(\"You're all set!\");\n}\n", "import { Command } from \"commander\";\nimport { onboard } from \"./commands/onboard.js\";\nimport { doctor } from \"./commands/doctor.js\";\nimport { envCommand } from \"./commands/env.js\";\nimport { configure } from \"./commands/configure.js\";\nimport { addAllowedHostname } from \"./commands/allowed-hostname.js\";\nimport { heartbeatRun } from \"./commands/heartbeat-run.js\";\nimport { runCommand } from \"./commands/run.js\";\nimport { bootstrapCeoInvite } from \"./commands/auth-bootstrap-ceo.js\";\nimport { registerContextCommands } from \"./commands/client/context.js\";\nimport { registerCompanyCommands } from \"./commands/client/company.js\";\nimport { registerIssueCommands } from \"./commands/client/issue.js\";\nimport { registerAgentCommands } from \"./commands/client/agent.js\";\nimport { registerApprovalCommands } from \"./commands/client/approval.js\";\nimport { registerActivityCommands } from \"./commands/client/activity.js\";\nimport { registerDashboardCommands } from \"./commands/client/dashboard.js\";\nimport { applyDataDirOverride, type DataDirOptionLike } from \"./config/data-dir.js\";\n\nconst program = new Command();\nconst DATA_DIR_OPTION_HELP =\n \"Paperclip data directory root (isolates state from ~/.paperclip)\";\n\nprogram\n .name(\"paperclipai\")\n .description(\"Paperclip CLI \u2014 setup, diagnose, and configure your instance\")\n .version(\"0.2.2\");\n\nprogram.hook(\"preAction\", (_thisCommand, actionCommand) => {\n const options = actionCommand.optsWithGlobals() as DataDirOptionLike;\n const optionNames = new Set(actionCommand.options.map((option) => option.attributeName()));\n applyDataDirOverride(options, {\n hasConfigOption: optionNames.has(\"config\"),\n hasContextOption: optionNames.has(\"context\"),\n });\n});\n\nprogram\n .command(\"onboard\")\n .description(\"Interactive first-run setup wizard\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"-y, --yes\", \"Accept defaults (quickstart + start immediately)\", false)\n .option(\"--run\", \"Start Paperclip immediately after saving config\", false)\n .action(onboard);\n\nprogram\n .command(\"doctor\")\n .description(\"Run diagnostic checks on your Paperclip setup\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"--repair\", \"Attempt to repair issues automatically\")\n .alias(\"--fix\")\n .option(\"-y, --yes\", \"Skip repair confirmation prompts\")\n .action(async (opts) => {\n await doctor(opts);\n });\n\nprogram\n .command(\"env\")\n .description(\"Print environment variables for deployment\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .action(envCommand);\n\nprogram\n .command(\"configure\")\n .description(\"Update configuration sections\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"-s, --section <section>\", \"Section to configure (llm, database, logging, server, storage, secrets)\")\n .action(configure);\n\nprogram\n .command(\"allowed-hostname\")\n .description(\"Allow a hostname for authenticated/private mode access\")\n .argument(\"<host>\", \"Hostname to allow (for example dotta-macbook-pro)\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .action(addAllowedHostname);\n\nprogram\n .command(\"run\")\n .description(\"Bootstrap local setup (onboard + doctor) and run Paperclip\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"-i, --instance <id>\", \"Local instance id (default: default)\")\n .option(\"--repair\", \"Attempt automatic repairs during doctor\", true)\n .option(\"--no-repair\", \"Disable automatic repairs during doctor\")\n .action(runCommand);\n\nconst heartbeat = program.command(\"heartbeat\").description(\"Heartbeat utilities\");\n\nheartbeat\n .command(\"run\")\n .description(\"Run one agent heartbeat and stream live logs\")\n .requiredOption(\"-a, --agent-id <agentId>\", \"Agent ID to invoke\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"--context <path>\", \"Path to CLI context file\")\n .option(\"--profile <name>\", \"CLI context profile name\")\n .option(\"--api-base <url>\", \"Base URL for the Paperclip server API\")\n .option(\"--api-key <token>\", \"Bearer token for agent-authenticated calls\")\n .option(\n \"--source <source>\",\n \"Invocation source (timer | assignment | on_demand | automation)\",\n \"on_demand\",\n )\n .option(\"--trigger <trigger>\", \"Trigger detail (manual | ping | callback | system)\", \"manual\")\n .option(\"--timeout-ms <ms>\", \"Max time to wait before giving up\", \"0\")\n .option(\"--json\", \"Output raw JSON where applicable\")\n .option(\"--debug\", \"Show raw adapter stdout/stderr JSON chunks\")\n .action(heartbeatRun);\n\nregisterContextCommands(program);\nregisterCompanyCommands(program);\nregisterIssueCommands(program);\nregisterAgentCommands(program);\nregisterApprovalCommands(program);\nregisterActivityCommands(program);\nregisterDashboardCommands(program);\n\nconst auth = program.command(\"auth\").description(\"Authentication and bootstrap utilities\");\n\nauth\n .command(\"bootstrap-ceo\")\n .description(\"Create a one-time bootstrap invite URL for first instance admin\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"--force\", \"Create new invite even if admin already exists\", false)\n .option(\"--expires-hours <hours>\", \"Invite expiration window in hours\", (value) => Number(value))\n .option(\"--base-url <url>\", \"Public base URL used to print invite link\")\n .action(bootstrapCeoInvite);\n\nprogram.parseAsync().catch((err) => {\n console.error(err instanceof Error ? err.message : String(err));\n process.exit(1);\n});\n", "import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport { configExists, readConfig, resolveConfigPath } from \"../config/store.js\";\nimport {\n readAgentJwtSecretFromEnv,\n readAgentJwtSecretFromEnvFile,\n resolveAgentJwtEnvFile,\n} from \"../config/env.js\";\nimport {\n resolveDefaultSecretsKeyFilePath,\n resolveDefaultStorageDir,\n resolvePaperclipInstanceId,\n} from \"../config/home.js\";\n\ntype EnvSource = \"env\" | \"config\" | \"file\" | \"default\" | \"missing\";\n\ntype EnvVarRow = {\n key: string;\n value: string;\n source: EnvSource;\n required: boolean;\n note: string;\n};\n\nconst DEFAULT_AGENT_JWT_TTL_SECONDS = \"172800\";\nconst DEFAULT_AGENT_JWT_ISSUER = \"paperclip\";\nconst DEFAULT_AGENT_JWT_AUDIENCE = \"paperclip-api\";\nconst DEFAULT_HEARTBEAT_SCHEDULER_INTERVAL_MS = \"30000\";\nconst DEFAULT_SECRETS_PROVIDER = \"local_encrypted\";\nconst DEFAULT_STORAGE_PROVIDER = \"local_disk\";\nfunction defaultSecretsKeyFilePath(): string {\n return resolveDefaultSecretsKeyFilePath(resolvePaperclipInstanceId());\n}\nfunction defaultStorageBaseDir(): string {\n return resolveDefaultStorageDir(resolvePaperclipInstanceId());\n}\n\nexport async function envCommand(opts: { config?: string }): Promise<void> {\n p.intro(pc.bgCyan(pc.black(\" paperclip env \")));\n\n const configPath = resolveConfigPath(opts.config);\n let config: PaperclipConfig | null = null;\n let configReadError: string | null = null;\n\n if (configExists(opts.config)) {\n p.log.message(pc.dim(`Config file: ${configPath}`));\n try {\n config = readConfig(opts.config);\n } catch (err) {\n configReadError = err instanceof Error ? err.message : String(err);\n p.log.message(pc.yellow(`Could not parse config: ${configReadError}`));\n }\n } else {\n p.log.message(pc.dim(`Config file missing: ${configPath}`));\n }\n\n const rows = collectDeploymentEnvRows(config, configPath);\n const missingRequired = rows.filter((row) => row.required && row.source === \"missing\");\n const sortedRows = rows.sort((a, b) => Number(b.required) - Number(a.required) || a.key.localeCompare(b.key));\n\n const requiredRows = sortedRows.filter((row) => row.required);\n const optionalRows = sortedRows.filter((row) => !row.required);\n\n const formatSection = (title: string, entries: EnvVarRow[]) => {\n if (entries.length === 0) return;\n\n p.log.message(pc.bold(title));\n for (const entry of entries) {\n const status = entry.source === \"missing\" ? pc.red(\"missing\") : entry.source === \"default\" ? pc.yellow(\"default\") : pc.green(\"set\");\n const sourceNote = {\n env: \"environment\",\n config: \"config\",\n file: \"file\",\n default: \"default\",\n missing: \"missing\",\n }[entry.source];\n p.log.message(\n `${pc.cyan(entry.key)} ${status.padEnd(7)} ${pc.dim(`[${sourceNote}] ${entry.note}`)}${entry.source === \"missing\" ? \"\" : ` ${pc.dim(\"=>\")} ${pc.white(quoteShellValue(entry.value))}`}`,\n );\n }\n };\n\n formatSection(\"Required environment variables\", requiredRows);\n formatSection(\"Optional environment variables\", optionalRows);\n\n const exportRows = rows.map((row) => (row.source === \"missing\" ? { ...row, value: \"<set-this-value>\" } : row));\n const uniqueRows = uniqueByKey(exportRows);\n const exportBlock = uniqueRows.map((row) => `export ${row.key}=${quoteShellValue(row.value)}`).join(\"\\n\");\n\n if (configReadError) {\n p.log.error(`Could not load config cleanly: ${configReadError}`);\n }\n\n p.note(\n exportBlock || \"No values detected. Set required variables manually.\",\n \"Deployment export block\",\n );\n\n if (missingRequired.length > 0) {\n p.log.message(\n pc.yellow(\n `Missing required values: ${missingRequired.map((row) => row.key).join(\", \")}. Set these before deployment.`,\n ),\n );\n } else {\n p.log.message(pc.green(\"All required deployment variables are present.\"));\n }\n p.outro(\"Done\");\n}\n\nfunction collectDeploymentEnvRows(config: PaperclipConfig | null, configPath: string): EnvVarRow[] {\n const agentJwtEnvFile = resolveAgentJwtEnvFile(configPath);\n const jwtEnv = readAgentJwtSecretFromEnv(configPath);\n const jwtFile = jwtEnv ? null : readAgentJwtSecretFromEnvFile(agentJwtEnvFile);\n const jwtSource = jwtEnv ? \"env\" : jwtFile ? \"file\" : \"missing\";\n\n const dbUrl = process.env.DATABASE_URL ?? config?.database?.connectionString ?? \"\";\n const databaseMode = config?.database?.mode ?? \"embedded-postgres\";\n const dbUrlSource: EnvSource = process.env.DATABASE_URL ? \"env\" : config?.database?.connectionString ? \"config\" : \"missing\";\n\n const heartbeatInterval = process.env.HEARTBEAT_SCHEDULER_INTERVAL_MS ?? DEFAULT_HEARTBEAT_SCHEDULER_INTERVAL_MS;\n const heartbeatEnabled = process.env.HEARTBEAT_SCHEDULER_ENABLED ?? \"true\";\n const secretsProvider =\n process.env.PAPERCLIP_SECRETS_PROVIDER ??\n config?.secrets?.provider ??\n DEFAULT_SECRETS_PROVIDER;\n const secretsStrictMode =\n process.env.PAPERCLIP_SECRETS_STRICT_MODE ??\n String(config?.secrets?.strictMode ?? false);\n const secretsKeyFilePath =\n process.env.PAPERCLIP_SECRETS_MASTER_KEY_FILE ??\n config?.secrets?.localEncrypted?.keyFilePath ??\n defaultSecretsKeyFilePath();\n const storageProvider =\n process.env.PAPERCLIP_STORAGE_PROVIDER ??\n config?.storage?.provider ??\n DEFAULT_STORAGE_PROVIDER;\n const storageLocalDir =\n process.env.PAPERCLIP_STORAGE_LOCAL_DIR ??\n config?.storage?.localDisk?.baseDir ??\n defaultStorageBaseDir();\n const storageS3Bucket =\n process.env.PAPERCLIP_STORAGE_S3_BUCKET ??\n config?.storage?.s3?.bucket ??\n \"paperclip\";\n const storageS3Region =\n process.env.PAPERCLIP_STORAGE_S3_REGION ??\n config?.storage?.s3?.region ??\n \"us-east-1\";\n const storageS3Endpoint =\n process.env.PAPERCLIP_STORAGE_S3_ENDPOINT ??\n config?.storage?.s3?.endpoint ??\n \"\";\n const storageS3Prefix =\n process.env.PAPERCLIP_STORAGE_S3_PREFIX ??\n config?.storage?.s3?.prefix ??\n \"\";\n const storageS3ForcePathStyle =\n process.env.PAPERCLIP_STORAGE_S3_FORCE_PATH_STYLE ??\n String(config?.storage?.s3?.forcePathStyle ?? false);\n\n const rows: EnvVarRow[] = [\n {\n key: \"PAPERCLIP_AGENT_JWT_SECRET\",\n value: jwtEnv ?? jwtFile ?? \"\",\n source: jwtSource,\n required: true,\n note:\n jwtSource === \"missing\"\n ? \"Generate during onboard or set manually (required for local adapter authentication)\"\n : jwtSource === \"env\"\n ? \"Set in process environment\"\n : `Set in ${agentJwtEnvFile}`,\n },\n {\n key: \"DATABASE_URL\",\n value: dbUrl,\n source: dbUrlSource,\n required: true,\n note:\n databaseMode === \"postgres\"\n ? \"Configured for postgres mode (required)\"\n : \"Required for live deployment with managed PostgreSQL\",\n },\n {\n key: \"PORT\",\n value:\n process.env.PORT ??\n (config?.server?.port !== undefined ? String(config.server.port) : \"3100\"),\n source: process.env.PORT ? \"env\" : config?.server?.port !== undefined ? \"config\" : \"default\",\n required: false,\n note: \"HTTP listen port\",\n },\n {\n key: \"PAPERCLIP_AGENT_JWT_TTL_SECONDS\",\n value: process.env.PAPERCLIP_AGENT_JWT_TTL_SECONDS ?? DEFAULT_AGENT_JWT_TTL_SECONDS,\n source: process.env.PAPERCLIP_AGENT_JWT_TTL_SECONDS ? \"env\" : \"default\",\n required: false,\n note: \"JWT lifetime in seconds\",\n },\n {\n key: \"PAPERCLIP_AGENT_JWT_ISSUER\",\n value: process.env.PAPERCLIP_AGENT_JWT_ISSUER ?? DEFAULT_AGENT_JWT_ISSUER,\n source: process.env.PAPERCLIP_AGENT_JWT_ISSUER ? \"env\" : \"default\",\n required: false,\n note: \"JWT issuer\",\n },\n {\n key: \"PAPERCLIP_AGENT_JWT_AUDIENCE\",\n value: process.env.PAPERCLIP_AGENT_JWT_AUDIENCE ?? DEFAULT_AGENT_JWT_AUDIENCE,\n source: process.env.PAPERCLIP_AGENT_JWT_AUDIENCE ? \"env\" : \"default\",\n required: false,\n note: \"JWT audience\",\n },\n {\n key: \"HEARTBEAT_SCHEDULER_INTERVAL_MS\",\n value: heartbeatInterval,\n source: process.env.HEARTBEAT_SCHEDULER_INTERVAL_MS ? \"env\" : \"default\",\n required: false,\n note: \"Heartbeat worker interval in ms\",\n },\n {\n key: \"HEARTBEAT_SCHEDULER_ENABLED\",\n value: heartbeatEnabled,\n source: process.env.HEARTBEAT_SCHEDULER_ENABLED ? \"env\" : \"default\",\n required: false,\n note: \"Set to `false` to disable timer scheduling\",\n },\n {\n key: \"PAPERCLIP_SECRETS_PROVIDER\",\n value: secretsProvider,\n source: process.env.PAPERCLIP_SECRETS_PROVIDER\n ? \"env\"\n : config?.secrets?.provider\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Default provider for new secrets\",\n },\n {\n key: \"PAPERCLIP_SECRETS_STRICT_MODE\",\n value: secretsStrictMode,\n source: process.env.PAPERCLIP_SECRETS_STRICT_MODE\n ? \"env\"\n : config?.secrets?.strictMode !== undefined\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Require secret refs for sensitive env keys\",\n },\n {\n key: \"PAPERCLIP_SECRETS_MASTER_KEY_FILE\",\n value: secretsKeyFilePath,\n source: process.env.PAPERCLIP_SECRETS_MASTER_KEY_FILE\n ? \"env\"\n : config?.secrets?.localEncrypted?.keyFilePath\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Path to local encrypted secrets key file\",\n },\n {\n key: \"PAPERCLIP_STORAGE_PROVIDER\",\n value: storageProvider,\n source: process.env.PAPERCLIP_STORAGE_PROVIDER\n ? \"env\"\n : config?.storage?.provider\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Storage provider (local_disk or s3)\",\n },\n {\n key: \"PAPERCLIP_STORAGE_LOCAL_DIR\",\n value: storageLocalDir,\n source: process.env.PAPERCLIP_STORAGE_LOCAL_DIR\n ? \"env\"\n : config?.storage?.localDisk?.baseDir\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Local storage base directory for local_disk provider\",\n },\n {\n key: \"PAPERCLIP_STORAGE_S3_BUCKET\",\n value: storageS3Bucket,\n source: process.env.PAPERCLIP_STORAGE_S3_BUCKET\n ? \"env\"\n : config?.storage?.s3?.bucket\n ? \"config\"\n : \"default\",\n required: false,\n note: \"S3 bucket name for s3 provider\",\n },\n {\n key: \"PAPERCLIP_STORAGE_S3_REGION\",\n value: storageS3Region,\n source: process.env.PAPERCLIP_STORAGE_S3_REGION\n ? \"env\"\n : config?.storage?.s3?.region\n ? \"config\"\n : \"default\",\n required: false,\n note: \"S3 region for s3 provider\",\n },\n {\n key: \"PAPERCLIP_STORAGE_S3_ENDPOINT\",\n value: storageS3Endpoint,\n source: process.env.PAPERCLIP_STORAGE_S3_ENDPOINT\n ? \"env\"\n : config?.storage?.s3?.endpoint\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Optional custom endpoint for S3-compatible providers\",\n },\n {\n key: \"PAPERCLIP_STORAGE_S3_PREFIX\",\n value: storageS3Prefix,\n source: process.env.PAPERCLIP_STORAGE_S3_PREFIX\n ? \"env\"\n : config?.storage?.s3?.prefix\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Optional object key prefix\",\n },\n {\n key: \"PAPERCLIP_STORAGE_S3_FORCE_PATH_STYLE\",\n value: storageS3ForcePathStyle,\n source: process.env.PAPERCLIP_STORAGE_S3_FORCE_PATH_STYLE\n ? \"env\"\n : config?.storage?.s3?.forcePathStyle !== undefined\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Set true for path-style access on compatible providers\",\n },\n ];\n\n const defaultConfigPath = resolveConfigPath();\n if (process.env.PAPERCLIP_CONFIG || configPath !== defaultConfigPath) {\n rows.push({\n key: \"PAPERCLIP_CONFIG\",\n value: process.env.PAPERCLIP_CONFIG ?? configPath,\n source: process.env.PAPERCLIP_CONFIG ? \"env\" : \"default\",\n required: false,\n note: \"Optional path override for config file\",\n });\n }\n\n return rows;\n}\n\nfunction uniqueByKey(rows: EnvVarRow[]): EnvVarRow[] {\n const seen = new Set<string>();\n const result: EnvVarRow[] = [];\n for (const row of rows) {\n if (seen.has(row.key)) continue;\n seen.add(row.key);\n result.push(row);\n }\n return result;\n}\n\nfunction quoteShellValue(value: string): string {\n if (value === \"\") return \"\\\"\\\"\";\n return `'${value.replaceAll(\"'\", \"'\\\\''\")}'`;\n}\n", "import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { readConfig, writeConfig, configExists, resolveConfigPath } from \"../config/store.js\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport { ensureLocalSecretsKeyFile } from \"../config/secrets-key.js\";\nimport { promptDatabase } from \"../prompts/database.js\";\nimport { promptLlm } from \"../prompts/llm.js\";\nimport { promptLogging } from \"../prompts/logging.js\";\nimport { defaultSecretsConfig, promptSecrets } from \"../prompts/secrets.js\";\nimport { defaultStorageConfig, promptStorage } from \"../prompts/storage.js\";\nimport { promptServer } from \"../prompts/server.js\";\nimport {\n resolveDefaultEmbeddedPostgresDir,\n resolveDefaultLogsDir,\n resolvePaperclipInstanceId,\n} from \"../config/home.js\";\nimport { printPaperclipCliBanner } from \"../utils/banner.js\";\n\ntype Section = \"llm\" | \"database\" | \"logging\" | \"server\" | \"storage\" | \"secrets\";\n\nconst SECTION_LABELS: Record<Section, string> = {\n llm: \"LLM Provider\",\n database: \"Database\",\n logging: \"Logging\",\n server: \"Server\",\n storage: \"Storage\",\n secrets: \"Secrets\",\n};\n\nfunction defaultConfig(): PaperclipConfig {\n const instanceId = resolvePaperclipInstanceId();\n return {\n $meta: {\n version: 1,\n updatedAt: new Date().toISOString(),\n source: \"configure\",\n },\n database: {\n mode: \"embedded-postgres\",\n embeddedPostgresDataDir: resolveDefaultEmbeddedPostgresDir(instanceId),\n embeddedPostgresPort: 54329,\n },\n logging: {\n mode: \"file\",\n logDir: resolveDefaultLogsDir(instanceId),\n },\n server: {\n deploymentMode: \"local_trusted\",\n exposure: \"private\",\n host: \"127.0.0.1\",\n port: 3100,\n allowedHostnames: [],\n serveUi: true,\n },\n auth: {\n baseUrlMode: \"auto\",\n },\n storage: defaultStorageConfig(),\n secrets: defaultSecretsConfig(),\n };\n}\n\nexport async function configure(opts: {\n config?: string;\n section?: string;\n}): Promise<void> {\n printPaperclipCliBanner();\n p.intro(pc.bgCyan(pc.black(\" paperclip configure \")));\n const configPath = resolveConfigPath(opts.config);\n\n if (!configExists(opts.config)) {\n p.log.error(\"No config file found. Run `paperclipai onboard` first.\");\n p.outro(\"\");\n return;\n }\n\n let config: PaperclipConfig;\n try {\n config = readConfig(opts.config) ?? defaultConfig();\n } catch (err) {\n p.log.message(\n pc.yellow(\n `Existing config is invalid. Loading defaults so you can repair it now.\\n${err instanceof Error ? err.message : String(err)}`,\n ),\n );\n config = defaultConfig();\n }\n\n let section: Section | undefined = opts.section as Section | undefined;\n\n if (section && !SECTION_LABELS[section]) {\n p.log.error(`Unknown section: ${section}. Choose from: ${Object.keys(SECTION_LABELS).join(\", \")}`);\n p.outro(\"\");\n return;\n }\n\n // Section selection loop\n let continueLoop = true;\n while (continueLoop) {\n if (!section) {\n const choice = await p.select({\n message: \"Which section do you want to configure?\",\n options: Object.entries(SECTION_LABELS).map(([value, label]) => ({\n value: value as Section,\n label,\n })),\n });\n\n if (p.isCancel(choice)) {\n p.cancel(\"Configuration cancelled.\");\n return;\n }\n\n section = choice;\n }\n\n p.log.step(pc.bold(SECTION_LABELS[section]));\n\n switch (section) {\n case \"database\":\n config.database = await promptDatabase();\n break;\n case \"llm\": {\n const llm = await promptLlm();\n if (llm) {\n config.llm = llm;\n } else {\n delete config.llm;\n }\n break;\n }\n case \"logging\":\n config.logging = await promptLogging();\n break;\n case \"server\":\n {\n const { server, auth } = await promptServer({\n currentServer: config.server,\n currentAuth: config.auth,\n });\n config.server = server;\n config.auth = auth;\n }\n break;\n case \"storage\":\n config.storage = await promptStorage(config.storage);\n break;\n case \"secrets\":\n config.secrets = await promptSecrets(config.secrets);\n {\n const keyResult = ensureLocalSecretsKeyFile(config, configPath);\n if (keyResult.status === \"created\") {\n p.log.success(`Created local secrets key file at ${pc.dim(keyResult.path)}`);\n } else if (keyResult.status === \"existing\") {\n p.log.message(pc.dim(`Using existing local secrets key file at ${keyResult.path}`));\n } else if (keyResult.status === \"skipped_provider\") {\n p.log.message(pc.dim(\"Skipping local key file management for non-local provider\"));\n } else {\n p.log.message(pc.dim(\"Skipping local key file management because PAPERCLIP_SECRETS_MASTER_KEY is set\"));\n }\n }\n break;\n }\n\n config.$meta.updatedAt = new Date().toISOString();\n config.$meta.source = \"configure\";\n\n writeConfig(config, opts.config);\n p.log.success(`${SECTION_LABELS[section]} configuration updated.`);\n\n // If section was provided via CLI flag, don't loop\n if (opts.section) {\n continueLoop = false;\n } else {\n const another = await p.confirm({\n message: \"Configure another section?\",\n initialValue: false,\n });\n\n if (p.isCancel(another) || !another) {\n continueLoop = false;\n } else {\n section = undefined; // Reset to show picker again\n }\n }\n }\n\n p.outro(\"Configuration saved.\");\n}\n", "import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { normalizeHostnameInput } from \"../config/hostnames.js\";\nimport { readConfig, resolveConfigPath, writeConfig } from \"../config/store.js\";\n\nexport async function addAllowedHostname(host: string, opts: { config?: string }): Promise<void> {\n const configPath = resolveConfigPath(opts.config);\n const config = readConfig(opts.config);\n\n if (!config) {\n p.log.error(`No config found at ${configPath}. Run ${pc.cyan(\"paperclip onboard\")} first.`);\n return;\n }\n\n const normalized = normalizeHostnameInput(host);\n const current = new Set((config.server.allowedHostnames ?? []).map((value) => value.trim().toLowerCase()).filter(Boolean));\n const existed = current.has(normalized);\n current.add(normalized);\n\n config.server.allowedHostnames = Array.from(current).sort();\n config.$meta.updatedAt = new Date().toISOString();\n config.$meta.source = \"configure\";\n writeConfig(config, opts.config);\n\n if (existed) {\n p.log.info(`Hostname ${pc.cyan(normalized)} is already allowed.`);\n } else {\n p.log.success(`Added allowed hostname: ${pc.cyan(normalized)}`);\n }\n\n if (!(config.server.deploymentMode === \"authenticated\" && config.server.exposure === \"private\")) {\n p.log.message(\n pc.dim(\"Note: allowed hostnames are enforced only in authenticated/private mode.\"),\n );\n }\n}\n\n", "import { setTimeout as delay } from \"node:timers/promises\";\nimport pc from \"picocolors\";\nimport type { Agent, HeartbeatRun, HeartbeatRunEvent, HeartbeatRunStatus } from \"@paperclipai/shared\";\nimport { getCLIAdapter } from \"../adapters/index.js\";\nimport { resolveCommandContext } from \"./client/common.js\";\n\nconst HEARTBEAT_SOURCES = [\"timer\", \"assignment\", \"on_demand\", \"automation\"] as const;\nconst HEARTBEAT_TRIGGERS = [\"manual\", \"ping\", \"callback\", \"system\"] as const;\nconst TERMINAL_STATUSES = new Set<HeartbeatRunStatus>([\"succeeded\", \"failed\", \"cancelled\", \"timed_out\"]);\nconst POLL_INTERVAL_MS = 200;\n\ntype HeartbeatSource = (typeof HEARTBEAT_SOURCES)[number];\ntype HeartbeatTrigger = (typeof HEARTBEAT_TRIGGERS)[number];\ntype InvokedHeartbeat = HeartbeatRun | { status: \"skipped\" };\ninterface HeartbeatRunEventRecord extends HeartbeatRunEvent {\n type?: string | null;\n}\n\ninterface HeartbeatRunOptions {\n config?: string;\n context?: string;\n profile?: string;\n agentId: string;\n apiBase?: string;\n apiKey?: string;\n source: string;\n trigger: string;\n timeoutMs: string;\n debug?: boolean;\n json?: boolean;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null;\n}\n\nfunction asErrorText(value: unknown): string {\n if (typeof value === \"string\") return value;\n const obj = asRecord(value);\n if (!obj) return \"\";\n const message =\n (typeof obj.message === \"string\" && obj.message) ||\n (typeof obj.error === \"string\" && obj.error) ||\n (typeof obj.code === \"string\" && obj.code) ||\n \"\";\n if (message) return message;\n try {\n return JSON.stringify(obj);\n } catch {\n return \"\";\n }\n}\n\ntype AdapterType = string;\n\nexport async function heartbeatRun(opts: HeartbeatRunOptions): Promise<void> {\n const debug = Boolean(opts.debug);\n const parsedTimeout = Number.parseInt(opts.timeoutMs, 10);\n const timeoutMs = Number.isFinite(parsedTimeout) ? parsedTimeout : 0;\n const source = HEARTBEAT_SOURCES.includes(opts.source as HeartbeatSource)\n ? (opts.source as HeartbeatSource)\n : \"on_demand\";\n const triggerDetail = HEARTBEAT_TRIGGERS.includes(opts.trigger as HeartbeatTrigger)\n ? (opts.trigger as HeartbeatTrigger)\n : \"manual\";\n\n const ctx = resolveCommandContext({\n config: opts.config,\n context: opts.context,\n profile: opts.profile,\n apiBase: opts.apiBase,\n apiKey: opts.apiKey,\n json: opts.json,\n });\n const api = ctx.api;\n\n const agent = await api.get<Agent>(`/api/agents/${opts.agentId}`);\n if (!agent || typeof agent !== \"object\" || !agent.id) {\n console.error(pc.red(`Agent not found: ${opts.agentId}`));\n return;\n }\n\n const invokeRes = await api.post<InvokedHeartbeat>(\n `/api/agents/${opts.agentId}/wakeup`,\n {\n source: source,\n triggerDetail: triggerDetail,\n },\n );\n if (!invokeRes) {\n console.error(pc.red(\"Failed to invoke heartbeat\"));\n return;\n }\n if ((invokeRes as { status?: string }).status === \"skipped\") {\n console.log(pc.yellow(\"Heartbeat invocation was skipped\"));\n return;\n }\n\n const run = invokeRes as HeartbeatRun;\n console.log(pc.cyan(`Invoked heartbeat run ${run.id} for agent ${agent.name} (${agent.id})`));\n\n const runId = run.id;\n let activeRunId: string | null = null;\n let lastEventSeq = 0;\n let logOffset = 0;\n let stdoutJsonBuffer = \"\";\n\n const printRawChunk = (stream: \"stdout\" | \"stderr\" | \"system\", chunk: string) => {\n if (stream === \"stdout\") process.stdout.write(pc.green(\"[stdout] \") + chunk);\n else if (stream === \"stderr\") process.stdout.write(pc.red(\"[stderr] \") + chunk);\n else process.stdout.write(pc.yellow(\"[system] \") + chunk);\n };\n\n const printAdapterInvoke = (payload: Record<string, unknown>) => {\n const adapterType = typeof payload.adapterType === \"string\" ? payload.adapterType : \"unknown\";\n const command = typeof payload.command === \"string\" ? payload.command : \"\";\n const cwd = typeof payload.cwd === \"string\" ? payload.cwd : \"\";\n const args =\n Array.isArray(payload.commandArgs) &&\n (payload.commandArgs as unknown[]).every((v) => typeof v === \"string\")\n ? (payload.commandArgs as string[])\n : [];\n const env =\n typeof payload.env === \"object\" && payload.env !== null && !Array.isArray(payload.env)\n ? (payload.env as Record<string, unknown>)\n : null;\n const prompt = typeof payload.prompt === \"string\" ? payload.prompt : \"\";\n const context =\n typeof payload.context === \"object\" && payload.context !== null && !Array.isArray(payload.context)\n ? (payload.context as Record<string, unknown>)\n : null;\n\n console.log(pc.cyan(`Adapter: ${adapterType}`));\n if (cwd) console.log(pc.cyan(`Working dir: ${cwd}`));\n if (command) {\n const rendered = args.length > 0 ? `${command} ${args.join(\" \")}` : command;\n console.log(pc.cyan(`Command: ${rendered}`));\n }\n if (env) {\n console.log(pc.cyan(\"Env:\"));\n console.log(pc.gray(JSON.stringify(env, null, 2)));\n }\n if (context) {\n console.log(pc.cyan(\"Context:\"));\n console.log(pc.gray(JSON.stringify(context, null, 2)));\n }\n if (prompt) {\n console.log(pc.cyan(\"Prompt:\"));\n console.log(prompt);\n }\n };\n\n const adapterType: AdapterType = agent.adapterType ?? \"claude_local\";\n const cliAdapter = getCLIAdapter(adapterType);\n\n const handleStreamChunk = (stream: \"stdout\" | \"stderr\" | \"system\", chunk: string) => {\n if (debug) {\n printRawChunk(stream, chunk);\n return;\n }\n\n if (stream !== \"stdout\") {\n printRawChunk(stream, chunk);\n return;\n }\n\n const combined = stdoutJsonBuffer + chunk;\n const lines = combined.split(/\\r?\\n/);\n stdoutJsonBuffer = lines.pop() ?? \"\";\n for (const line of lines) {\n cliAdapter.formatStdoutEvent(line, debug);\n }\n };\n\n const handleEvent = (event: HeartbeatRunEventRecord) => {\n const payload = normalizePayload(event.payload);\n if (event.runId !== runId) return;\n const eventType = typeof event.eventType === \"string\"\n ? event.eventType\n : typeof event.type === \"string\"\n ? event.type\n : \"\";\n\n if (eventType === \"heartbeat.run.status\") {\n const status = typeof payload.status === \"string\" ? payload.status : null;\n if (status) {\n console.log(pc.blue(`[status] ${status}`));\n }\n } else if (eventType === \"adapter.invoke\") {\n printAdapterInvoke(payload);\n } else if (eventType === \"heartbeat.run.log\") {\n const stream = typeof payload.stream === \"string\" ? payload.stream : \"system\";\n const chunk = typeof payload.chunk === \"string\" ? payload.chunk : \"\";\n if (!chunk) return;\n if (stream === \"stdout\" || stream === \"stderr\" || stream === \"system\") {\n handleStreamChunk(stream, chunk);\n }\n } else if (typeof event.message === \"string\") {\n console.log(pc.gray(`[event] ${eventType || \"heartbeat.run.event\"}: ${event.message}`));\n }\n\n lastEventSeq = Math.max(lastEventSeq, event.seq ?? 0);\n };\n\n activeRunId = runId;\n let finalStatus: string | null = null;\n let finalError: string | null = null;\n let finalRun: HeartbeatRun | null = null;\n\n const deadline = timeoutMs > 0 ? Date.now() + timeoutMs : null;\n if (!activeRunId) {\n console.error(pc.red(\"Failed to capture heartbeat run id\"));\n return;\n }\n\n while (true) {\n const events = await api.get<HeartbeatRunEvent[]>(\n `/api/heartbeat-runs/${activeRunId}/events?afterSeq=${lastEventSeq}&limit=100`,\n );\n for (const event of Array.isArray(events) ? (events as HeartbeatRunEventRecord[]) : []) {\n handleEvent(event);\n }\n\n const runList = (await api.get<(HeartbeatRun | null)[]>(\n `/api/companies/${agent.companyId}/heartbeat-runs?agentId=${agent.id}`,\n )) || [];\n const currentRun = runList.find((r) => r && r.id === activeRunId) ?? null;\n\n if (!currentRun) {\n console.error(pc.red(\"Heartbeat run disappeared\"));\n break;\n }\n\n const currentStatus = currentRun.status as HeartbeatRunStatus | undefined;\n if (currentStatus !== finalStatus && currentStatus) {\n finalStatus = currentStatus;\n console.log(pc.blue(`Status: ${currentStatus}`));\n }\n\n if (currentStatus && TERMINAL_STATUSES.has(currentStatus)) {\n finalStatus = currentRun.status;\n finalError = currentRun.error;\n finalRun = currentRun;\n break;\n }\n\n if (deadline && Date.now() >= deadline) {\n finalError = `CLI timed out after ${timeoutMs}ms`;\n finalStatus = \"timed_out\";\n console.error(pc.yellow(finalError));\n break;\n }\n\n const logResult = await api.get<{ content: string; nextOffset?: number }>(\n `/api/heartbeat-runs/${activeRunId}/log?offset=${logOffset}&limitBytes=16384`,\n { ignoreNotFound: true },\n );\n if (logResult && logResult.content) {\n for (const chunk of logResult.content.split(/\\r?\\n/)) {\n if (!chunk) continue;\n const parsed = safeParseLogLine(chunk);\n if (!parsed) continue;\n handleStreamChunk(parsed.stream, parsed.chunk);\n }\n if (typeof logResult.nextOffset === \"number\") {\n logOffset = logResult.nextOffset;\n } else if (logResult.content) {\n logOffset += Buffer.byteLength(logResult.content, \"utf8\");\n }\n }\n\n await delay(POLL_INTERVAL_MS);\n }\n\n if (finalStatus) {\n if (!debug && stdoutJsonBuffer.trim()) {\n cliAdapter.formatStdoutEvent(stdoutJsonBuffer, debug);\n stdoutJsonBuffer = \"\";\n }\n const label = `Run ${activeRunId} completed with status ${finalStatus}`;\n if (finalStatus === \"succeeded\") {\n console.log(pc.green(label));\n return;\n }\n\n console.log(pc.red(label));\n if (finalError) {\n console.log(pc.red(`Error: ${finalError}`));\n }\n if (finalRun) {\n const resultObj = asRecord(finalRun.resultJson);\n if (resultObj) {\n const subtype = typeof resultObj.subtype === \"string\" ? resultObj.subtype : \"\";\n const isError = resultObj.is_error === true;\n const errors = Array.isArray(resultObj.errors) ? resultObj.errors.map(asErrorText).filter(Boolean) : [];\n const resultText = typeof resultObj.result === \"string\" ? resultObj.result.trim() : \"\";\n if (subtype || isError || errors.length > 0 || resultText) {\n console.log(pc.red(\"Claude result details:\"));\n if (subtype) console.log(pc.red(` subtype: ${subtype}`));\n if (isError) console.log(pc.red(\" is_error: true\"));\n if (errors.length > 0) console.log(pc.red(` errors: ${errors.join(\" | \")}`));\n if (resultText) console.log(pc.red(` result: ${resultText}`));\n }\n }\n\n const stderrExcerpt = typeof finalRun.stderrExcerpt === \"string\" ? finalRun.stderrExcerpt.trim() : \"\";\n const stdoutExcerpt = typeof finalRun.stdoutExcerpt === \"string\" ? finalRun.stdoutExcerpt.trim() : \"\";\n if (stderrExcerpt) {\n console.log(pc.red(\"stderr excerpt:\"));\n console.log(stderrExcerpt);\n }\n if (stdoutExcerpt && (debug || !stderrExcerpt)) {\n console.log(pc.gray(\"stdout excerpt:\"));\n console.log(stdoutExcerpt);\n }\n }\n process.exitCode = 1;\n } else {\n process.exitCode = 1;\n console.log(pc.gray(\"Heartbeat stream ended without terminal status\"));\n }\n}\n\nfunction normalizePayload(payload: unknown): Record<string, unknown> {\n return typeof payload === \"object\" && payload !== null ? (payload as Record<string, unknown>) : {};\n}\n\nfunction safeParseLogLine(line: string): { stream: \"stdout\" | \"stderr\" | \"system\"; chunk: string } | null {\n try {\n const parsed = JSON.parse(line) as { stream?: unknown; chunk?: unknown };\n const stream =\n parsed.stream === \"stdout\" || parsed.stream === \"stderr\" || parsed.stream === \"system\"\n ? parsed.stream\n : \"system\";\n const chunk = typeof parsed.chunk === \"string\" ? parsed.chunk : \"\";\n\n if (!chunk) return null;\n return { stream, chunk };\n } catch {\n return null;\n }\n}\n", "import pc from \"picocolors\";\n\nfunction asErrorText(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return \"\";\n const obj = value as Record<string, unknown>;\n const message =\n (typeof obj.message === \"string\" && obj.message) ||\n (typeof obj.error === \"string\" && obj.error) ||\n (typeof obj.code === \"string\" && obj.code) ||\n \"\";\n if (message) return message;\n try {\n return JSON.stringify(obj);\n } catch {\n return \"\";\n }\n}\n\nexport function printClaudeStreamEvent(raw: string, debug: boolean): void {\n const line = raw.trim();\n if (!line) return;\n\n let parsed: Record<string, unknown> | null = null;\n try {\n parsed = JSON.parse(line) as Record<string, unknown>;\n } catch {\n console.log(line);\n return;\n }\n\n const type = typeof parsed.type === \"string\" ? parsed.type : \"\";\n\n if (type === \"system\" && parsed.subtype === \"init\") {\n const model = typeof parsed.model === \"string\" ? parsed.model : \"unknown\";\n const sessionId = typeof parsed.session_id === \"string\" ? parsed.session_id : \"\";\n console.log(pc.blue(`Claude initialized (model: ${model}${sessionId ? `, session: ${sessionId}` : \"\"})`));\n return;\n }\n\n if (type === \"assistant\") {\n const message =\n typeof parsed.message === \"object\" && parsed.message !== null && !Array.isArray(parsed.message)\n ? (parsed.message as Record<string, unknown>)\n : {};\n const content = Array.isArray(message.content) ? message.content : [];\n for (const blockRaw of content) {\n if (typeof blockRaw !== \"object\" || blockRaw === null || Array.isArray(blockRaw)) continue;\n const block = blockRaw as Record<string, unknown>;\n const blockType = typeof block.type === \"string\" ? block.type : \"\";\n if (blockType === \"text\") {\n const text = typeof block.text === \"string\" ? block.text : \"\";\n if (text) console.log(pc.green(`assistant: ${text}`));\n } else if (blockType === \"tool_use\") {\n const name = typeof block.name === \"string\" ? block.name : \"unknown\";\n console.log(pc.yellow(`tool_call: ${name}`));\n if (block.input !== undefined) {\n console.log(pc.gray(JSON.stringify(block.input, null, 2)));\n }\n }\n }\n return;\n }\n\n if (type === \"result\") {\n const usage =\n typeof parsed.usage === \"object\" && parsed.usage !== null && !Array.isArray(parsed.usage)\n ? (parsed.usage as Record<string, unknown>)\n : {};\n const input = Number(usage.input_tokens ?? 0);\n const output = Number(usage.output_tokens ?? 0);\n const cached = Number(usage.cache_read_input_tokens ?? 0);\n const cost = Number(parsed.total_cost_usd ?? 0);\n const subtype = typeof parsed.subtype === \"string\" ? parsed.subtype : \"\";\n const isError = parsed.is_error === true;\n const resultText = typeof parsed.result === \"string\" ? parsed.result : \"\";\n if (resultText) {\n console.log(pc.green(\"result:\"));\n console.log(resultText);\n }\n const errors = Array.isArray(parsed.errors) ? parsed.errors.map(asErrorText).filter(Boolean) : [];\n if (subtype.startsWith(\"error\") || isError || errors.length > 0) {\n console.log(pc.red(`claude_result: subtype=${subtype || \"unknown\"} is_error=${isError ? \"true\" : \"false\"}`));\n if (errors.length > 0) {\n console.log(pc.red(`claude_errors: ${errors.join(\" | \")}`));\n }\n }\n console.log(\n pc.blue(\n `tokens: in=${Number.isFinite(input) ? input : 0} out=${Number.isFinite(output) ? output : 0} cached=${Number.isFinite(cached) ? cached : 0} cost=$${Number.isFinite(cost) ? cost.toFixed(6) : \"0.000000\"}`,\n ),\n );\n return;\n }\n\n if (debug) {\n console.log(pc.gray(line));\n }\n}\n", "import pc from \"picocolors\";\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return null;\n return value as Record<string, unknown>;\n}\n\nfunction asString(value: unknown, fallback = \"\"): string {\n return typeof value === \"string\" ? value : fallback;\n}\n\nfunction asNumber(value: unknown, fallback = 0): number {\n return typeof value === \"number\" && Number.isFinite(value) ? value : fallback;\n}\n\nfunction errorText(value: unknown): string {\n if (typeof value === \"string\") return value;\n const rec = asRecord(value);\n if (!rec) return \"\";\n const msg =\n (typeof rec.message === \"string\" && rec.message) ||\n (typeof rec.error === \"string\" && rec.error) ||\n (typeof rec.code === \"string\" && rec.code) ||\n \"\";\n if (msg) return msg;\n try {\n return JSON.stringify(rec);\n } catch {\n return \"\";\n }\n}\n\nfunction printItemStarted(item: Record<string, unknown>): boolean {\n const itemType = asString(item.type);\n if (itemType === \"command_execution\") {\n const command = asString(item.command);\n console.log(pc.yellow(\"tool_call: command_execution\"));\n if (command) console.log(pc.gray(command));\n return true;\n }\n\n if (itemType === \"tool_use\") {\n const name = asString(item.name, \"unknown\");\n console.log(pc.yellow(`tool_call: ${name}`));\n if (item.input !== undefined) {\n try {\n console.log(pc.gray(JSON.stringify(item.input, null, 2)));\n } catch {\n console.log(pc.gray(String(item.input)));\n }\n }\n return true;\n }\n\n return false;\n}\n\nfunction printItemCompleted(item: Record<string, unknown>): boolean {\n const itemType = asString(item.type);\n\n if (itemType === \"agent_message\") {\n const text = asString(item.text);\n if (text) console.log(pc.green(`assistant: ${text}`));\n return true;\n }\n\n if (itemType === \"reasoning\") {\n const text = asString(item.text);\n if (text) console.log(pc.gray(`thinking: ${text}`));\n return true;\n }\n\n if (itemType === \"tool_use\") {\n const name = asString(item.name, \"unknown\");\n console.log(pc.yellow(`tool_call: ${name}`));\n if (item.input !== undefined) {\n try {\n console.log(pc.gray(JSON.stringify(item.input, null, 2)));\n } catch {\n console.log(pc.gray(String(item.input)));\n }\n }\n return true;\n }\n\n if (itemType === \"command_execution\") {\n const command = asString(item.command);\n const status = asString(item.status);\n const exitCode = typeof item.exit_code === \"number\" && Number.isFinite(item.exit_code) ? item.exit_code : null;\n const output = asString(item.aggregated_output).replace(/\\s+$/, \"\");\n const isError =\n (exitCode !== null && exitCode !== 0) ||\n status === \"failed\" ||\n status === \"errored\" ||\n status === \"error\" ||\n status === \"cancelled\";\n\n const summaryParts = [\n \"tool_result: command_execution\",\n command ? `command=\"${command}\"` : \"\",\n status ? `status=${status}` : \"\",\n exitCode !== null ? `exit_code=${exitCode}` : \"\",\n ].filter(Boolean);\n console.log((isError ? pc.red : pc.cyan)(summaryParts.join(\" \")));\n if (output) console.log((isError ? pc.red : pc.gray)(output));\n return true;\n }\n\n if (itemType === \"file_change\") {\n const changes = Array.isArray(item.changes) ? item.changes : [];\n const entries = changes\n .map((changeRaw) => asRecord(changeRaw))\n .filter((change): change is Record<string, unknown> => Boolean(change))\n .map((change) => {\n const kind = asString(change.kind, \"update\");\n const path = asString(change.path, \"unknown\");\n return `${kind} ${path}`;\n });\n const preview = entries.length > 0 ? entries.slice(0, 6).join(\", \") : \"none\";\n const more = entries.length > 6 ? ` (+${entries.length - 6} more)` : \"\";\n console.log(pc.cyan(`file_change: ${preview}${more}`));\n return true;\n }\n\n if (itemType === \"error\") {\n const message = errorText(item.message ?? item.error ?? item);\n if (message) console.log(pc.red(`error: ${message}`));\n return true;\n }\n\n if (itemType === \"tool_result\") {\n const isError = item.is_error === true || asString(item.status) === \"error\";\n const text = asString(item.content) || asString(item.result) || asString(item.output);\n console.log((isError ? pc.red : pc.cyan)(`tool_result${isError ? \" (error)\" : \"\"}`));\n if (text) console.log((isError ? pc.red : pc.gray)(text));\n return true;\n }\n\n return false;\n}\n\nexport function printCodexStreamEvent(raw: string, _debug: boolean): void {\n const line = raw.trim();\n if (!line) return;\n\n let parsed: Record<string, unknown> | null = null;\n try {\n parsed = JSON.parse(line) as Record<string, unknown>;\n } catch {\n console.log(line);\n return;\n }\n\n const type = asString(parsed.type);\n\n if (type === \"thread.started\") {\n const threadId = asString(parsed.thread_id);\n const model = asString(parsed.model);\n const details = [threadId ? `session: ${threadId}` : \"\", model ? `model: ${model}` : \"\"].filter(Boolean).join(\", \");\n console.log(pc.blue(`Codex thread started${details ? ` (${details})` : \"\"}`));\n return;\n }\n\n if (type === \"turn.started\") {\n console.log(pc.blue(\"turn started\"));\n return;\n }\n\n if (type === \"item.started\" || type === \"item.completed\") {\n const item = asRecord(parsed.item);\n if (item) {\n const handled =\n type === \"item.started\"\n ? printItemStarted(item)\n : printItemCompleted(item);\n if (!handled) {\n const itemType = asString(item.type, \"unknown\");\n const id = asString(item.id);\n const status = asString(item.status);\n const meta = [id ? `id=${id}` : \"\", status ? `status=${status}` : \"\"].filter(Boolean).join(\" \");\n console.log(pc.gray(`${type}: ${itemType}${meta ? ` (${meta})` : \"\"}`));\n }\n } else {\n console.log(pc.gray(type));\n }\n return;\n }\n\n if (type === \"turn.completed\") {\n const usage = asRecord(parsed.usage);\n const input = asNumber(usage?.input_tokens);\n const output = asNumber(usage?.output_tokens);\n const cached = asNumber(usage?.cached_input_tokens, asNumber(usage?.cache_read_input_tokens));\n const cost = asNumber(parsed.total_cost_usd);\n const isError = parsed.is_error === true;\n const subtype = asString(parsed.subtype);\n const errors = Array.isArray(parsed.errors) ? parsed.errors.map(errorText).filter(Boolean) : [];\n\n console.log(\n pc.blue(`tokens: in=${input} out=${output} cached=${cached} cost=$${cost.toFixed(6)}`),\n );\n if (subtype || isError || errors.length > 0) {\n console.log(\n pc.red(`result: subtype=${subtype || \"unknown\"} is_error=${isError ? \"true\" : \"false\"}`),\n );\n if (errors.length > 0) console.log(pc.red(`errors: ${errors.join(\" | \")}`));\n }\n return;\n }\n\n if (type === \"turn.failed\") {\n const usage = asRecord(parsed.usage);\n const input = asNumber(usage?.input_tokens);\n const output = asNumber(usage?.output_tokens);\n const cached = asNumber(usage?.cached_input_tokens, asNumber(usage?.cache_read_input_tokens));\n const message = errorText(parsed.error ?? parsed.message);\n console.log(pc.red(`turn failed${message ? `: ${message}` : \"\"}`));\n console.log(pc.blue(`tokens: in=${input} out=${output} cached=${cached}`));\n return;\n }\n\n if (type === \"error\") {\n const message = errorText(parsed.message ?? parsed.error ?? parsed);\n if (message) console.log(pc.red(`error: ${message}`));\n return;\n }\n\n console.log(line);\n}\n", "import pc from \"picocolors\";\n\nexport function printOpenClawStreamEvent(raw: string, debug: boolean): void {\n const line = raw.trim();\n if (!line) return;\n\n if (!debug) {\n console.log(line);\n return;\n }\n\n if (line.startsWith(\"[openclaw]\")) {\n console.log(pc.cyan(line));\n return;\n }\n\n console.log(pc.gray(line));\n}\n", "export function printProcessStdoutEvent(raw: string, _debug: boolean): void {\n const line = raw.trim();\n if (line) console.log(line);\n}\n", "import type { CLIAdapterModule } from \"@paperclipai/adapter-utils\";\nimport { printProcessStdoutEvent } from \"./format-event.js\";\n\nexport const processCLIAdapter: CLIAdapterModule = {\n type: \"process\",\n formatStdoutEvent: printProcessStdoutEvent,\n};\n", "export function printHttpStdoutEvent(raw: string, _debug: boolean): void {\n const line = raw.trim();\n if (line) console.log(line);\n}\n", "import type { CLIAdapterModule } from \"@paperclipai/adapter-utils\";\nimport { printHttpStdoutEvent } from \"./format-event.js\";\n\nexport const httpCLIAdapter: CLIAdapterModule = {\n type: \"http\",\n formatStdoutEvent: printHttpStdoutEvent,\n};\n", "import type { CLIAdapterModule } from \"@paperclipai/adapter-utils\";\nimport { printClaudeStreamEvent } from \"@paperclipai/adapter-claude-local/cli\";\nimport { printCodexStreamEvent } from \"@paperclipai/adapter-codex-local/cli\";\nimport { printOpenClawStreamEvent } from \"@paperclipai/adapter-openclaw/cli\";\nimport { processCLIAdapter } from \"./process/index.js\";\nimport { httpCLIAdapter } from \"./http/index.js\";\n\nconst claudeLocalCLIAdapter: CLIAdapterModule = {\n type: \"claude_local\",\n formatStdoutEvent: printClaudeStreamEvent,\n};\n\nconst codexLocalCLIAdapter: CLIAdapterModule = {\n type: \"codex_local\",\n formatStdoutEvent: printCodexStreamEvent,\n};\n\nconst openclawCLIAdapter: CLIAdapterModule = {\n type: \"openclaw\",\n formatStdoutEvent: printOpenClawStreamEvent,\n};\n\nconst adaptersByType = new Map<string, CLIAdapterModule>(\n [claudeLocalCLIAdapter, codexLocalCLIAdapter, openclawCLIAdapter, processCLIAdapter, httpCLIAdapter].map((a) => [a.type, a]),\n);\n\nexport function getCLIAdapter(type: string): CLIAdapterModule {\n return adaptersByType.get(type) ?? processCLIAdapter;\n}\n", "import pc from \"picocolors\";\nimport type { Command } from \"commander\";\nimport { readConfig } from \"../../config/store.js\";\nimport { readContext, resolveProfile, type ClientContextProfile } from \"../../client/context.js\";\nimport { ApiRequestError, PaperclipApiClient } from \"../../client/http.js\";\n\nexport interface BaseClientOptions {\n config?: string;\n dataDir?: string;\n context?: string;\n profile?: string;\n apiBase?: string;\n apiKey?: string;\n companyId?: string;\n json?: boolean;\n}\n\nexport interface ResolvedClientContext {\n api: PaperclipApiClient;\n companyId?: string;\n profileName: string;\n profile: ClientContextProfile;\n json: boolean;\n}\n\nexport function addCommonClientOptions(command: Command, opts?: { includeCompany?: boolean }): Command {\n command\n .option(\"-c, --config <path>\", \"Path to Paperclip config file\")\n .option(\"-d, --data-dir <path>\", \"Paperclip data directory root (isolates state from ~/.paperclip)\")\n .option(\"--context <path>\", \"Path to CLI context file\")\n .option(\"--profile <name>\", \"CLI context profile name\")\n .option(\"--api-base <url>\", \"Base URL for the Paperclip API\")\n .option(\"--api-key <token>\", \"Bearer token for agent-authenticated calls\")\n .option(\"--json\", \"Output raw JSON\");\n\n if (opts?.includeCompany) {\n command.option(\"-C, --company-id <id>\", \"Company ID (overrides context default)\");\n }\n\n return command;\n}\n\nexport function resolveCommandContext(\n options: BaseClientOptions,\n opts?: { requireCompany?: boolean },\n): ResolvedClientContext {\n const context = readContext(options.context);\n const { name: profileName, profile } = resolveProfile(context, options.profile);\n\n const apiBase =\n options.apiBase?.trim() ||\n process.env.PAPERCLIP_API_URL?.trim() ||\n profile.apiBase ||\n inferApiBaseFromConfig(options.config);\n\n const apiKey =\n options.apiKey?.trim() ||\n process.env.PAPERCLIP_API_KEY?.trim() ||\n readKeyFromProfileEnv(profile);\n\n const companyId =\n options.companyId?.trim() ||\n process.env.PAPERCLIP_COMPANY_ID?.trim() ||\n profile.companyId;\n\n if (opts?.requireCompany && !companyId) {\n throw new Error(\n \"Company ID is required. Pass --company-id, set PAPERCLIP_COMPANY_ID, or set context profile companyId via `paperclipai context set`.\",\n );\n }\n\n const api = new PaperclipApiClient({ apiBase, apiKey });\n return {\n api,\n companyId,\n profileName,\n profile,\n json: Boolean(options.json),\n };\n}\n\nexport function printOutput(data: unknown, opts: { json?: boolean; label?: string } = {}): void {\n if (opts.json) {\n console.log(JSON.stringify(data, null, 2));\n return;\n }\n\n if (opts.label) {\n console.log(pc.bold(opts.label));\n }\n\n if (Array.isArray(data)) {\n if (data.length === 0) {\n console.log(pc.dim(\"(empty)\"));\n return;\n }\n for (const item of data) {\n if (typeof item === \"object\" && item !== null) {\n console.log(formatInlineRecord(item as Record<string, unknown>));\n } else {\n console.log(String(item));\n }\n }\n return;\n }\n\n if (typeof data === \"object\" && data !== null) {\n console.log(JSON.stringify(data, null, 2));\n return;\n }\n\n if (data === undefined || data === null) {\n console.log(pc.dim(\"(null)\"));\n return;\n }\n\n console.log(String(data));\n}\n\nexport function formatInlineRecord(record: Record<string, unknown>): string {\n const keyOrder = [\"identifier\", \"id\", \"name\", \"status\", \"priority\", \"title\", \"action\"];\n const seen = new Set<string>();\n const parts: string[] = [];\n\n for (const key of keyOrder) {\n if (!(key in record)) continue;\n parts.push(`${key}=${renderValue(record[key])}`);\n seen.add(key);\n }\n\n for (const [key, value] of Object.entries(record)) {\n if (seen.has(key)) continue;\n if (typeof value === \"object\") continue;\n parts.push(`${key}=${renderValue(value)}`);\n }\n\n return parts.join(\" \");\n}\n\nfunction renderValue(value: unknown): string {\n if (value === null || value === undefined) return \"-\";\n if (typeof value === \"string\") {\n const compact = value.replace(/\\s+/g, \" \").trim();\n return compact.length > 90 ? `${compact.slice(0, 87)}...` : compact;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n return \"[object]\";\n}\n\nfunction inferApiBaseFromConfig(configPath?: string): string {\n const envHost = process.env.PAPERCLIP_SERVER_HOST?.trim() || \"localhost\";\n let port = Number(process.env.PAPERCLIP_SERVER_PORT || \"\");\n\n if (!Number.isFinite(port) || port <= 0) {\n try {\n const config = readConfig(configPath);\n port = Number(config?.server?.port ?? 3100);\n } catch {\n port = 3100;\n }\n }\n\n if (!Number.isFinite(port) || port <= 0) {\n port = 3100;\n }\n\n return `http://${envHost}:${port}`;\n}\n\nfunction readKeyFromProfileEnv(profile: ClientContextProfile): string | undefined {\n if (!profile.apiKeyEnvVarName) return undefined;\n return process.env[profile.apiKeyEnvVarName]?.trim() || undefined;\n}\n\nexport function handleCommandError(error: unknown): never {\n if (error instanceof ApiRequestError) {\n const detailSuffix = error.details !== undefined ? ` details=${JSON.stringify(error.details)}` : \"\";\n console.error(pc.red(`API error ${error.status}: ${error.message}${detailSuffix}`));\n process.exit(1);\n }\n\n const message = error instanceof Error ? error.message : String(error);\n console.error(pc.red(message));\n process.exit(1);\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { resolveDefaultContextPath } from \"../config/home.js\";\n\nconst DEFAULT_CONTEXT_BASENAME = \"context.json\";\nconst DEFAULT_PROFILE = \"default\";\n\nexport interface ClientContextProfile {\n apiBase?: string;\n companyId?: string;\n apiKeyEnvVarName?: string;\n}\n\nexport interface ClientContext {\n version: 1;\n currentProfile: string;\n profiles: Record<string, ClientContextProfile>;\n}\n\nfunction findContextFileFromAncestors(startDir: string): string | null {\n const absoluteStartDir = path.resolve(startDir);\n let currentDir = absoluteStartDir;\n\n while (true) {\n const candidate = path.resolve(currentDir, \".paperclip\", DEFAULT_CONTEXT_BASENAME);\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n\n const nextDir = path.resolve(currentDir, \"..\");\n if (nextDir === currentDir) break;\n currentDir = nextDir;\n }\n\n return null;\n}\n\nexport function resolveContextPath(overridePath?: string): string {\n if (overridePath) return path.resolve(overridePath);\n if (process.env.PAPERCLIP_CONTEXT) return path.resolve(process.env.PAPERCLIP_CONTEXT);\n return findContextFileFromAncestors(process.cwd()) ?? resolveDefaultContextPath();\n}\n\nexport function defaultClientContext(): ClientContext {\n return {\n version: 1,\n currentProfile: DEFAULT_PROFILE,\n profiles: {\n [DEFAULT_PROFILE]: {},\n },\n };\n}\n\nfunction parseJson(filePath: string): unknown {\n try {\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch (err) {\n throw new Error(`Failed to parse JSON at ${filePath}: ${err instanceof Error ? err.message : String(err)}`);\n }\n}\n\nfunction toStringOrUndefined(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nfunction normalizeProfile(value: unknown): ClientContextProfile {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return {};\n const profile = value as Record<string, unknown>;\n\n return {\n apiBase: toStringOrUndefined(profile.apiBase),\n companyId: toStringOrUndefined(profile.companyId),\n apiKeyEnvVarName: toStringOrUndefined(profile.apiKeyEnvVarName),\n };\n}\n\nfunction normalizeContext(raw: unknown): ClientContext {\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) {\n return defaultClientContext();\n }\n\n const record = raw as Record<string, unknown>;\n const version = record.version === 1 ? 1 : 1;\n const currentProfile = toStringOrUndefined(record.currentProfile) ?? DEFAULT_PROFILE;\n\n const rawProfiles = record.profiles;\n const profiles: Record<string, ClientContextProfile> = {};\n\n if (typeof rawProfiles === \"object\" && rawProfiles !== null && !Array.isArray(rawProfiles)) {\n for (const [name, profile] of Object.entries(rawProfiles as Record<string, unknown>)) {\n if (!name.trim()) continue;\n profiles[name] = normalizeProfile(profile);\n }\n }\n\n if (!profiles[currentProfile]) {\n profiles[currentProfile] = {};\n }\n\n if (Object.keys(profiles).length === 0) {\n profiles[DEFAULT_PROFILE] = {};\n }\n\n return {\n version,\n currentProfile,\n profiles,\n };\n}\n\nexport function readContext(contextPath?: string): ClientContext {\n const filePath = resolveContextPath(contextPath);\n if (!fs.existsSync(filePath)) {\n return defaultClientContext();\n }\n\n const raw = parseJson(filePath);\n return normalizeContext(raw);\n}\n\nexport function writeContext(context: ClientContext, contextPath?: string): void {\n const filePath = resolveContextPath(contextPath);\n const dir = path.dirname(filePath);\n fs.mkdirSync(dir, { recursive: true });\n\n const normalized = normalizeContext(context);\n fs.writeFileSync(filePath, `${JSON.stringify(normalized, null, 2)}\\n`, { mode: 0o600 });\n}\n\nexport function upsertProfile(\n profileName: string,\n patch: Partial<ClientContextProfile>,\n contextPath?: string,\n): ClientContext {\n const context = readContext(contextPath);\n const existing = context.profiles[profileName] ?? {};\n const merged: ClientContextProfile = {\n ...existing,\n ...patch,\n };\n\n if (patch.apiBase !== undefined && patch.apiBase.trim().length === 0) {\n delete merged.apiBase;\n }\n if (patch.companyId !== undefined && patch.companyId.trim().length === 0) {\n delete merged.companyId;\n }\n if (patch.apiKeyEnvVarName !== undefined && patch.apiKeyEnvVarName.trim().length === 0) {\n delete merged.apiKeyEnvVarName;\n }\n\n context.profiles[profileName] = merged;\n context.currentProfile = context.currentProfile || profileName;\n writeContext(context, contextPath);\n return context;\n}\n\nexport function setCurrentProfile(profileName: string, contextPath?: string): ClientContext {\n const context = readContext(contextPath);\n if (!context.profiles[profileName]) {\n context.profiles[profileName] = {};\n }\n context.currentProfile = profileName;\n writeContext(context, contextPath);\n return context;\n}\n\nexport function resolveProfile(\n context: ClientContext,\n profileName?: string,\n): { name: string; profile: ClientContextProfile } {\n const name = profileName?.trim() || context.currentProfile || DEFAULT_PROFILE;\n const profile = context.profiles[name] ?? {};\n return { name, profile };\n}\n", "import { URL } from \"node:url\";\n\nexport class ApiRequestError extends Error {\n status: number;\n details?: unknown;\n body?: unknown;\n\n constructor(status: number, message: string, details?: unknown, body?: unknown) {\n super(message);\n this.status = status;\n this.details = details;\n this.body = body;\n }\n}\n\ninterface RequestOptions {\n ignoreNotFound?: boolean;\n}\n\ninterface ApiClientOptions {\n apiBase: string;\n apiKey?: string;\n runId?: string;\n}\n\nexport class PaperclipApiClient {\n readonly apiBase: string;\n readonly apiKey?: string;\n readonly runId?: string;\n\n constructor(opts: ApiClientOptions) {\n this.apiBase = opts.apiBase.replace(/\\/+$/, \"\");\n this.apiKey = opts.apiKey?.trim() || undefined;\n this.runId = opts.runId?.trim() || undefined;\n }\n\n get<T>(path: string, opts?: RequestOptions): Promise<T | null> {\n return this.request<T>(path, { method: \"GET\" }, opts);\n }\n\n post<T>(path: string, body?: unknown, opts?: RequestOptions): Promise<T | null> {\n return this.request<T>(path, {\n method: \"POST\",\n body: body === undefined ? undefined : JSON.stringify(body),\n }, opts);\n }\n\n patch<T>(path: string, body?: unknown, opts?: RequestOptions): Promise<T | null> {\n return this.request<T>(path, {\n method: \"PATCH\",\n body: body === undefined ? undefined : JSON.stringify(body),\n }, opts);\n }\n\n delete<T>(path: string, opts?: RequestOptions): Promise<T | null> {\n return this.request<T>(path, { method: \"DELETE\" }, opts);\n }\n\n private async request<T>(path: string, init: RequestInit, opts?: RequestOptions): Promise<T | null> {\n const url = buildUrl(this.apiBase, path);\n\n const headers: Record<string, string> = {\n accept: \"application/json\",\n ...toStringRecord(init.headers),\n };\n\n if (init.body !== undefined) {\n headers[\"content-type\"] = headers[\"content-type\"] ?? \"application/json\";\n }\n\n if (this.apiKey) {\n headers.authorization = `Bearer ${this.apiKey}`;\n }\n\n if (this.runId) {\n headers[\"x-paperclip-run-id\"] = this.runId;\n }\n\n const response = await fetch(url, {\n ...init,\n headers,\n });\n\n if (opts?.ignoreNotFound && response.status === 404) {\n return null;\n }\n\n if (!response.ok) {\n throw await toApiError(response);\n }\n\n if (response.status === 204) {\n return null;\n }\n\n const text = await response.text();\n if (!text.trim()) {\n return null;\n }\n\n return safeParseJson(text) as T;\n }\n}\n\nfunction buildUrl(apiBase: string, path: string): string {\n const normalizedPath = path.startsWith(\"/\") ? path : `/${path}`;\n const url = new URL(apiBase);\n url.pathname = `${url.pathname.replace(/\\/+$/, \"\")}${normalizedPath}`;\n return url.toString();\n}\n\nfunction safeParseJson(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nasync function toApiError(response: Response): Promise<ApiRequestError> {\n const text = await response.text();\n const parsed = safeParseJson(text);\n\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n const body = parsed as Record<string, unknown>;\n const message =\n (typeof body.error === \"string\" && body.error.trim()) ||\n (typeof body.message === \"string\" && body.message.trim()) ||\n `Request failed with status ${response.status}`;\n\n return new ApiRequestError(response.status, message, body.details, parsed);\n }\n\n return new ApiRequestError(response.status, `Request failed with status ${response.status}`, undefined, parsed);\n}\n\nfunction toStringRecord(headers: HeadersInit | undefined): Record<string, string> {\n if (!headers) return {};\n if (Array.isArray(headers)) {\n return Object.fromEntries(headers.map(([key, value]) => [key, String(value)]));\n }\n if (headers instanceof Headers) {\n return Object.fromEntries(headers.entries());\n }\n return Object.fromEntries(\n Object.entries(headers).map(([key, value]) => [key, String(value)]),\n );\n}\n", "import { Command } from \"commander\";\nimport pc from \"picocolors\";\nimport {\n readContext,\n resolveContextPath,\n resolveProfile,\n setCurrentProfile,\n upsertProfile,\n} from \"../../client/context.js\";\nimport { printOutput } from \"./common.js\";\n\ninterface ContextOptions {\n dataDir?: string;\n context?: string;\n profile?: string;\n json?: boolean;\n}\n\ninterface ContextSetOptions extends ContextOptions {\n apiBase?: string;\n companyId?: string;\n apiKeyEnvVarName?: string;\n use?: boolean;\n}\n\nexport function registerContextCommands(program: Command): void {\n const context = program.command(\"context\").description(\"Manage CLI client context profiles\");\n\n context\n .command(\"show\")\n .description(\"Show current context and active profile\")\n .option(\"-d, --data-dir <path>\", \"Paperclip data directory root (isolates state from ~/.paperclip)\")\n .option(\"--context <path>\", \"Path to CLI context file\")\n .option(\"--profile <name>\", \"Profile to inspect\")\n .option(\"--json\", \"Output raw JSON\")\n .action((opts: ContextOptions) => {\n const contextPath = resolveContextPath(opts.context);\n const store = readContext(opts.context);\n const resolved = resolveProfile(store, opts.profile);\n const payload = {\n contextPath,\n currentProfile: store.currentProfile,\n profileName: resolved.name,\n profile: resolved.profile,\n profiles: store.profiles,\n };\n printOutput(payload, { json: opts.json });\n });\n\n context\n .command(\"list\")\n .description(\"List available context profiles\")\n .option(\"-d, --data-dir <path>\", \"Paperclip data directory root (isolates state from ~/.paperclip)\")\n .option(\"--context <path>\", \"Path to CLI context file\")\n .option(\"--json\", \"Output raw JSON\")\n .action((opts: ContextOptions) => {\n const store = readContext(opts.context);\n const rows = Object.entries(store.profiles).map(([name, profile]) => ({\n name,\n current: name === store.currentProfile,\n apiBase: profile.apiBase ?? null,\n companyId: profile.companyId ?? null,\n apiKeyEnvVarName: profile.apiKeyEnvVarName ?? null,\n }));\n printOutput(rows, { json: opts.json });\n });\n\n context\n .command(\"use\")\n .description(\"Set active context profile\")\n .argument(\"<profile>\", \"Profile name\")\n .option(\"-d, --data-dir <path>\", \"Paperclip data directory root (isolates state from ~/.paperclip)\")\n .option(\"--context <path>\", \"Path to CLI context file\")\n .action((profile: string, opts: ContextOptions) => {\n setCurrentProfile(profile, opts.context);\n console.log(pc.green(`Active profile set to '${profile}'.`));\n });\n\n context\n .command(\"set\")\n .description(\"Set values on a profile\")\n .option(\"-d, --data-dir <path>\", \"Paperclip data directory root (isolates state from ~/.paperclip)\")\n .option(\"--context <path>\", \"Path to CLI context file\")\n .option(\"--profile <name>\", \"Profile name (default: current profile)\")\n .option(\"--api-base <url>\", \"Default API base URL\")\n .option(\"--company-id <id>\", \"Default company ID\")\n .option(\"--api-key-env-var-name <name>\", \"Env var containing API key (recommended)\")\n .option(\"--use\", \"Set this profile as active\")\n .option(\"--json\", \"Output raw JSON\")\n .action((opts: ContextSetOptions) => {\n const existing = readContext(opts.context);\n const targetProfile = opts.profile?.trim() || existing.currentProfile || \"default\";\n\n upsertProfile(\n targetProfile,\n {\n apiBase: opts.apiBase,\n companyId: opts.companyId,\n apiKeyEnvVarName: opts.apiKeyEnvVarName,\n },\n opts.context,\n );\n\n if (opts.use) {\n setCurrentProfile(targetProfile, opts.context);\n }\n\n const updated = readContext(opts.context);\n const resolved = resolveProfile(updated, targetProfile);\n const payload = {\n contextPath: resolveContextPath(opts.context),\n currentProfile: updated.currentProfile,\n profileName: resolved.name,\n profile: resolved.profile,\n };\n\n if (!opts.json) {\n console.log(pc.green(`Updated profile '${targetProfile}'.`));\n if (opts.use) {\n console.log(pc.green(`Set '${targetProfile}' as active profile.`));\n }\n }\n printOutput(payload, { json: opts.json });\n });\n}\n", "import { Command } from \"commander\";\nimport { mkdir, readFile, stat, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type {\n Company,\n CompanyPortabilityExportResult,\n CompanyPortabilityInclude,\n CompanyPortabilityManifest,\n CompanyPortabilityPreviewResult,\n CompanyPortabilityImportResult,\n} from \"@paperclipai/shared\";\nimport { ApiRequestError } from \"../../client/http.js\";\nimport {\n addCommonClientOptions,\n formatInlineRecord,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface CompanyCommandOptions extends BaseClientOptions {}\ntype CompanyDeleteSelectorMode = \"auto\" | \"id\" | \"prefix\";\ntype CompanyImportTargetMode = \"new\" | \"existing\";\ntype CompanyCollisionMode = \"rename\" | \"skip\" | \"replace\";\n\ninterface CompanyDeleteOptions extends BaseClientOptions {\n by?: CompanyDeleteSelectorMode;\n yes?: boolean;\n confirm?: string;\n}\n\ninterface CompanyExportOptions extends BaseClientOptions {\n out?: string;\n include?: string;\n}\n\ninterface CompanyImportOptions extends BaseClientOptions {\n from?: string;\n include?: string;\n target?: CompanyImportTargetMode;\n companyId?: string;\n newCompanyName?: string;\n agents?: string;\n collision?: CompanyCollisionMode;\n dryRun?: boolean;\n}\n\nfunction isUuidLike(value: string): boolean {\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);\n}\n\nfunction normalizeSelector(input: string): string {\n return input.trim();\n}\n\nfunction parseInclude(input: string | undefined): CompanyPortabilityInclude {\n if (!input || !input.trim()) return { company: true, agents: true };\n const values = input.split(\",\").map((part) => part.trim().toLowerCase()).filter(Boolean);\n const include = {\n company: values.includes(\"company\"),\n agents: values.includes(\"agents\"),\n };\n if (!include.company && !include.agents) {\n throw new Error(\"Invalid --include value. Use one or both of: company,agents\");\n }\n return include;\n}\n\nfunction parseAgents(input: string | undefined): \"all\" | string[] {\n if (!input || !input.trim()) return \"all\";\n const normalized = input.trim().toLowerCase();\n if (normalized === \"all\") return \"all\";\n const values = input.split(\",\").map((part) => part.trim()).filter(Boolean);\n if (values.length === 0) return \"all\";\n return Array.from(new Set(values));\n}\n\nfunction isHttpUrl(input: string): boolean {\n return /^https?:\\/\\//i.test(input.trim());\n}\n\nfunction isGithubUrl(input: string): boolean {\n return /^https?:\\/\\/github\\.com\\//i.test(input.trim());\n}\n\nasync function resolveInlineSourceFromPath(inputPath: string): Promise<{\n manifest: CompanyPortabilityManifest;\n files: Record<string, string>;\n}> {\n const resolved = path.resolve(inputPath);\n const resolvedStat = await stat(resolved);\n const manifestPath = resolvedStat.isDirectory()\n ? path.join(resolved, \"paperclip.manifest.json\")\n : resolved;\n const manifestBaseDir = path.dirname(manifestPath);\n const manifestRaw = await readFile(manifestPath, \"utf8\");\n const manifest = JSON.parse(manifestRaw) as CompanyPortabilityManifest;\n const files: Record<string, string> = {};\n\n if (manifest.company?.path) {\n const companyPath = manifest.company.path.replace(/\\\\/g, \"/\");\n files[companyPath] = await readFile(path.join(manifestBaseDir, companyPath), \"utf8\");\n }\n for (const agent of manifest.agents ?? []) {\n const agentPath = agent.path.replace(/\\\\/g, \"/\");\n files[agentPath] = await readFile(path.join(manifestBaseDir, agentPath), \"utf8\");\n }\n\n return { manifest, files };\n}\n\nasync function writeExportToFolder(outDir: string, exported: CompanyPortabilityExportResult): Promise<void> {\n const root = path.resolve(outDir);\n await mkdir(root, { recursive: true });\n const manifestPath = path.join(root, \"paperclip.manifest.json\");\n await writeFile(manifestPath, JSON.stringify(exported.manifest, null, 2), \"utf8\");\n for (const [relativePath, content] of Object.entries(exported.files)) {\n const normalized = relativePath.replace(/\\\\/g, \"/\");\n const filePath = path.join(root, normalized);\n await mkdir(path.dirname(filePath), { recursive: true });\n await writeFile(filePath, content, \"utf8\");\n }\n}\n\nfunction matchesPrefix(company: Company, selector: string): boolean {\n return company.issuePrefix.toUpperCase() === selector.toUpperCase();\n}\n\nexport function resolveCompanyForDeletion(\n companies: Company[],\n selectorRaw: string,\n by: CompanyDeleteSelectorMode = \"auto\",\n): Company {\n const selector = normalizeSelector(selectorRaw);\n if (!selector) {\n throw new Error(\"Company selector is required.\");\n }\n\n const idMatch = companies.find((company) => company.id === selector);\n const prefixMatch = companies.find((company) => matchesPrefix(company, selector));\n\n if (by === \"id\") {\n if (!idMatch) {\n throw new Error(`No company found by ID '${selector}'.`);\n }\n return idMatch;\n }\n\n if (by === \"prefix\") {\n if (!prefixMatch) {\n throw new Error(`No company found by shortname/prefix '${selector}'.`);\n }\n return prefixMatch;\n }\n\n if (idMatch && prefixMatch && idMatch.id !== prefixMatch.id) {\n throw new Error(\n `Selector '${selector}' is ambiguous (matches both an ID and a shortname). Re-run with --by id or --by prefix.`,\n );\n }\n\n if (idMatch) return idMatch;\n if (prefixMatch) return prefixMatch;\n\n throw new Error(\n `No company found for selector '${selector}'. Use company ID or issue prefix (for example PAP).`,\n );\n}\n\nexport function assertDeleteConfirmation(company: Company, opts: CompanyDeleteOptions): void {\n if (!opts.yes) {\n throw new Error(\"Deletion requires --yes.\");\n }\n\n const confirm = opts.confirm?.trim();\n if (!confirm) {\n throw new Error(\n \"Deletion requires --confirm <value> where value matches the company ID or issue prefix.\",\n );\n }\n\n const confirmsById = confirm === company.id;\n const confirmsByPrefix = confirm.toUpperCase() === company.issuePrefix.toUpperCase();\n if (!confirmsById && !confirmsByPrefix) {\n throw new Error(\n `Confirmation '${confirm}' does not match target company. Expected ID '${company.id}' or prefix '${company.issuePrefix}'.`,\n );\n }\n}\n\nfunction assertDeleteFlags(opts: CompanyDeleteOptions): void {\n if (!opts.yes) {\n throw new Error(\"Deletion requires --yes.\");\n }\n if (!opts.confirm?.trim()) {\n throw new Error(\n \"Deletion requires --confirm <value> where value matches the company ID or issue prefix.\",\n );\n }\n}\n\nexport function registerCompanyCommands(program: Command): void {\n const company = program.command(\"company\").description(\"Company operations\");\n\n addCommonClientOptions(\n company\n .command(\"list\")\n .description(\"List companies\")\n .action(async (opts: CompanyCommandOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const rows = (await ctx.api.get<Company[]>(\"/api/companies\")) ?? [];\n if (ctx.json) {\n printOutput(rows, { json: true });\n return;\n }\n\n if (rows.length === 0) {\n printOutput([], { json: false });\n return;\n }\n\n const formatted = rows.map((row) => ({\n id: row.id,\n name: row.name,\n status: row.status,\n budgetMonthlyCents: row.budgetMonthlyCents,\n spentMonthlyCents: row.spentMonthlyCents,\n requireBoardApprovalForNewAgents: row.requireBoardApprovalForNewAgents,\n }));\n for (const row of formatted) {\n console.log(formatInlineRecord(row));\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n company\n .command(\"get\")\n .description(\"Get one company\")\n .argument(\"<companyId>\", \"Company ID\")\n .action(async (companyId: string, opts: CompanyCommandOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const row = await ctx.api.get<Company>(`/api/companies/${companyId}`);\n printOutput(row, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n company\n .command(\"export\")\n .description(\"Export a company into portable manifest + markdown files\")\n .argument(\"<companyId>\", \"Company ID\")\n .requiredOption(\"--out <path>\", \"Output directory\")\n .option(\"--include <values>\", \"Comma-separated include set: company,agents\", \"company,agents\")\n .action(async (companyId: string, opts: CompanyExportOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const include = parseInclude(opts.include);\n const exported = await ctx.api.post<CompanyPortabilityExportResult>(\n `/api/companies/${companyId}/export`,\n { include },\n );\n if (!exported) {\n throw new Error(\"Export request returned no data\");\n }\n await writeExportToFolder(opts.out!, exported);\n printOutput(\n {\n ok: true,\n out: path.resolve(opts.out!),\n filesWritten: Object.keys(exported.files).length + 1,\n warningCount: exported.warnings.length,\n },\n { json: ctx.json },\n );\n if (!ctx.json && exported.warnings.length > 0) {\n for (const warning of exported.warnings) {\n console.log(`warning=${warning}`);\n }\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n company\n .command(\"import\")\n .description(\"Import a portable company package from local path, URL, or GitHub\")\n .requiredOption(\"--from <pathOrUrl>\", \"Source path or URL\")\n .option(\"--include <values>\", \"Comma-separated include set: company,agents\", \"company,agents\")\n .option(\"--target <mode>\", \"Target mode: new | existing\")\n .option(\"-C, --company-id <id>\", \"Existing target company ID\")\n .option(\"--new-company-name <name>\", \"Name override for --target new\")\n .option(\"--agents <list>\", \"Comma-separated agent slugs to import, or all\", \"all\")\n .option(\"--collision <mode>\", \"Collision strategy: rename | skip | replace\", \"rename\")\n .option(\"--dry-run\", \"Run preview only without applying\", false)\n .action(async (opts: CompanyImportOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const from = (opts.from ?? \"\").trim();\n if (!from) {\n throw new Error(\"--from is required\");\n }\n\n const include = parseInclude(opts.include);\n const agents = parseAgents(opts.agents);\n const collision = (opts.collision ?? \"rename\").toLowerCase() as CompanyCollisionMode;\n if (![\"rename\", \"skip\", \"replace\"].includes(collision)) {\n throw new Error(\"Invalid --collision value. Use: rename, skip, replace\");\n }\n\n const inferredTarget = opts.target ?? (opts.companyId || ctx.companyId ? \"existing\" : \"new\");\n const target = inferredTarget.toLowerCase() as CompanyImportTargetMode;\n if (![\"new\", \"existing\"].includes(target)) {\n throw new Error(\"Invalid --target value. Use: new | existing\");\n }\n\n const existingTargetCompanyId = opts.companyId?.trim() || ctx.companyId;\n const targetPayload =\n target === \"existing\"\n ? {\n mode: \"existing_company\" as const,\n companyId: existingTargetCompanyId,\n }\n : {\n mode: \"new_company\" as const,\n newCompanyName: opts.newCompanyName?.trim() || null,\n };\n\n if (targetPayload.mode === \"existing_company\" && !targetPayload.companyId) {\n throw new Error(\"Target existing company requires --company-id (or context default companyId).\");\n }\n\n let sourcePayload:\n | { type: \"inline\"; manifest: CompanyPortabilityManifest; files: Record<string, string> }\n | { type: \"url\"; url: string }\n | { type: \"github\"; url: string };\n\n if (isHttpUrl(from)) {\n sourcePayload = isGithubUrl(from)\n ? { type: \"github\", url: from }\n : { type: \"url\", url: from };\n } else {\n const inline = await resolveInlineSourceFromPath(from);\n sourcePayload = {\n type: \"inline\",\n manifest: inline.manifest,\n files: inline.files,\n };\n }\n\n const payload = {\n source: sourcePayload,\n include,\n target: targetPayload,\n agents,\n collisionStrategy: collision,\n };\n\n if (opts.dryRun) {\n const preview = await ctx.api.post<CompanyPortabilityPreviewResult>(\n \"/api/companies/import/preview\",\n payload,\n );\n printOutput(preview, { json: ctx.json });\n return;\n }\n\n const imported = await ctx.api.post<CompanyPortabilityImportResult>(\"/api/companies/import\", payload);\n printOutput(imported, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n company\n .command(\"delete\")\n .description(\"Delete a company by ID or shortname/prefix (destructive)\")\n .argument(\"<selector>\", \"Company ID or issue prefix (for example PAP)\")\n .option(\n \"--by <mode>\",\n \"Selector mode: auto | id | prefix\",\n \"auto\",\n )\n .option(\"--yes\", \"Required safety flag to confirm destructive action\", false)\n .option(\n \"--confirm <value>\",\n \"Required safety value: target company ID or shortname/prefix\",\n )\n .action(async (selector: string, opts: CompanyDeleteOptions) => {\n try {\n const by = (opts.by ?? \"auto\").trim().toLowerCase() as CompanyDeleteSelectorMode;\n if (![\"auto\", \"id\", \"prefix\"].includes(by)) {\n throw new Error(`Invalid --by mode '${opts.by}'. Expected one of: auto, id, prefix.`);\n }\n\n const ctx = resolveCommandContext(opts);\n const normalizedSelector = normalizeSelector(selector);\n assertDeleteFlags(opts);\n\n let target: Company | null = null;\n const shouldTryIdLookup = by === \"id\" || (by === \"auto\" && isUuidLike(normalizedSelector));\n if (shouldTryIdLookup) {\n const byId = await ctx.api.get<Company>(`/api/companies/${normalizedSelector}`, { ignoreNotFound: true });\n if (byId) {\n target = byId;\n } else if (by === \"id\") {\n throw new Error(`No company found by ID '${normalizedSelector}'.`);\n }\n }\n\n if (!target && ctx.companyId) {\n const scoped = await ctx.api.get<Company>(`/api/companies/${ctx.companyId}`, { ignoreNotFound: true });\n if (scoped) {\n try {\n target = resolveCompanyForDeletion([scoped], normalizedSelector, by);\n } catch {\n // Fallback to board-wide lookup below.\n }\n }\n }\n\n if (!target) {\n try {\n const companies = (await ctx.api.get<Company[]>(\"/api/companies\")) ?? [];\n target = resolveCompanyForDeletion(companies, normalizedSelector, by);\n } catch (error) {\n if (error instanceof ApiRequestError && error.status === 403 && error.message.includes(\"Board access required\")) {\n throw new Error(\n \"Board access is required to resolve companies across the instance. Use a company ID/prefix for your current company, or run with board authentication.\",\n );\n }\n throw error;\n }\n }\n\n if (!target) {\n throw new Error(`No company found for selector '${normalizedSelector}'.`);\n }\n\n assertDeleteConfirmation(target, opts);\n\n await ctx.api.delete<{ ok: true }>(`/api/companies/${target.id}`);\n\n printOutput(\n {\n ok: true,\n deletedCompanyId: target.id,\n deletedCompanyName: target.name,\n deletedCompanyPrefix: target.issuePrefix,\n },\n { json: ctx.json },\n );\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n}\n", "import { Command } from \"commander\";\nimport {\n addIssueCommentSchema,\n checkoutIssueSchema,\n createIssueSchema,\n updateIssueSchema,\n type Issue,\n type IssueComment,\n} from \"@paperclipai/shared\";\nimport {\n addCommonClientOptions,\n formatInlineRecord,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface IssueBaseOptions extends BaseClientOptions {\n status?: string;\n assigneeAgentId?: string;\n projectId?: string;\n match?: string;\n}\n\ninterface IssueCreateOptions extends BaseClientOptions {\n title: string;\n description?: string;\n status?: string;\n priority?: string;\n assigneeAgentId?: string;\n projectId?: string;\n goalId?: string;\n parentId?: string;\n requestDepth?: string;\n billingCode?: string;\n}\n\ninterface IssueUpdateOptions extends BaseClientOptions {\n title?: string;\n description?: string;\n status?: string;\n priority?: string;\n assigneeAgentId?: string;\n projectId?: string;\n goalId?: string;\n parentId?: string;\n requestDepth?: string;\n billingCode?: string;\n comment?: string;\n hiddenAt?: string;\n}\n\ninterface IssueCommentOptions extends BaseClientOptions {\n body: string;\n reopen?: boolean;\n}\n\ninterface IssueCheckoutOptions extends BaseClientOptions {\n agentId: string;\n expectedStatuses?: string;\n}\n\nexport function registerIssueCommands(program: Command): void {\n const issue = program.command(\"issue\").description(\"Issue operations\");\n\n addCommonClientOptions(\n issue\n .command(\"list\")\n .description(\"List issues for a company\")\n .option(\"-C, --company-id <id>\", \"Company ID\")\n .option(\"--status <csv>\", \"Comma-separated statuses\")\n .option(\"--assignee-agent-id <id>\", \"Filter by assignee agent ID\")\n .option(\"--project-id <id>\", \"Filter by project ID\")\n .option(\"--match <text>\", \"Local text match on identifier/title/description\")\n .action(async (opts: IssueBaseOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const params = new URLSearchParams();\n if (opts.status) params.set(\"status\", opts.status);\n if (opts.assigneeAgentId) params.set(\"assigneeAgentId\", opts.assigneeAgentId);\n if (opts.projectId) params.set(\"projectId\", opts.projectId);\n\n const query = params.toString();\n const path = `/api/companies/${ctx.companyId}/issues${query ? `?${query}` : \"\"}`;\n const rows = (await ctx.api.get<Issue[]>(path)) ?? [];\n\n const filtered = filterIssueRows(rows, opts.match);\n if (ctx.json) {\n printOutput(filtered, { json: true });\n return;\n }\n\n if (filtered.length === 0) {\n printOutput([], { json: false });\n return;\n }\n\n for (const item of filtered) {\n console.log(\n formatInlineRecord({\n identifier: item.identifier,\n id: item.id,\n status: item.status,\n priority: item.priority,\n assigneeAgentId: item.assigneeAgentId,\n title: item.title,\n projectId: item.projectId,\n }),\n );\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n\n addCommonClientOptions(\n issue\n .command(\"get\")\n .description(\"Get an issue by UUID or identifier (e.g. PC-12)\")\n .argument(\"<idOrIdentifier>\", \"Issue ID or identifier\")\n .action(async (idOrIdentifier: string, opts: BaseClientOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const row = await ctx.api.get<Issue>(`/api/issues/${idOrIdentifier}`);\n printOutput(row, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n issue\n .command(\"create\")\n .description(\"Create an issue\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .requiredOption(\"--title <title>\", \"Issue title\")\n .option(\"--description <text>\", \"Issue description\")\n .option(\"--status <status>\", \"Issue status\")\n .option(\"--priority <priority>\", \"Issue priority\")\n .option(\"--assignee-agent-id <id>\", \"Assignee agent ID\")\n .option(\"--project-id <id>\", \"Project ID\")\n .option(\"--goal-id <id>\", \"Goal ID\")\n .option(\"--parent-id <id>\", \"Parent issue ID\")\n .option(\"--request-depth <n>\", \"Request depth integer\")\n .option(\"--billing-code <code>\", \"Billing code\")\n .action(async (opts: IssueCreateOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const payload = createIssueSchema.parse({\n title: opts.title,\n description: opts.description,\n status: opts.status,\n priority: opts.priority,\n assigneeAgentId: opts.assigneeAgentId,\n projectId: opts.projectId,\n goalId: opts.goalId,\n parentId: opts.parentId,\n requestDepth: parseOptionalInt(opts.requestDepth),\n billingCode: opts.billingCode,\n });\n\n const created = await ctx.api.post<Issue>(`/api/companies/${ctx.companyId}/issues`, payload);\n printOutput(created, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n\n addCommonClientOptions(\n issue\n .command(\"update\")\n .description(\"Update an issue\")\n .argument(\"<issueId>\", \"Issue ID\")\n .option(\"--title <title>\", \"Issue title\")\n .option(\"--description <text>\", \"Issue description\")\n .option(\"--status <status>\", \"Issue status\")\n .option(\"--priority <priority>\", \"Issue priority\")\n .option(\"--assignee-agent-id <id>\", \"Assignee agent ID\")\n .option(\"--project-id <id>\", \"Project ID\")\n .option(\"--goal-id <id>\", \"Goal ID\")\n .option(\"--parent-id <id>\", \"Parent issue ID\")\n .option(\"--request-depth <n>\", \"Request depth integer\")\n .option(\"--billing-code <code>\", \"Billing code\")\n .option(\"--comment <text>\", \"Optional comment to add with update\")\n .option(\"--hidden-at <iso8601|null>\", \"Set hiddenAt timestamp or literal 'null'\")\n .action(async (issueId: string, opts: IssueUpdateOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = updateIssueSchema.parse({\n title: opts.title,\n description: opts.description,\n status: opts.status,\n priority: opts.priority,\n assigneeAgentId: opts.assigneeAgentId,\n projectId: opts.projectId,\n goalId: opts.goalId,\n parentId: opts.parentId,\n requestDepth: parseOptionalInt(opts.requestDepth),\n billingCode: opts.billingCode,\n comment: opts.comment,\n hiddenAt: parseHiddenAt(opts.hiddenAt),\n });\n\n const updated = await ctx.api.patch<Issue & { comment?: IssueComment | null }>(`/api/issues/${issueId}`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n issue\n .command(\"comment\")\n .description(\"Add comment to issue\")\n .argument(\"<issueId>\", \"Issue ID\")\n .requiredOption(\"--body <text>\", \"Comment body\")\n .option(\"--reopen\", \"Reopen if issue is done/cancelled\")\n .action(async (issueId: string, opts: IssueCommentOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = addIssueCommentSchema.parse({\n body: opts.body,\n reopen: opts.reopen,\n });\n const comment = await ctx.api.post<IssueComment>(`/api/issues/${issueId}/comments`, payload);\n printOutput(comment, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n issue\n .command(\"checkout\")\n .description(\"Checkout issue for an agent\")\n .argument(\"<issueId>\", \"Issue ID\")\n .requiredOption(\"--agent-id <id>\", \"Agent ID\")\n .option(\n \"--expected-statuses <csv>\",\n \"Expected current statuses\",\n \"todo,backlog,blocked\",\n )\n .action(async (issueId: string, opts: IssueCheckoutOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = checkoutIssueSchema.parse({\n agentId: opts.agentId,\n expectedStatuses: parseCsv(opts.expectedStatuses),\n });\n const updated = await ctx.api.post<Issue>(`/api/issues/${issueId}/checkout`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n issue\n .command(\"release\")\n .description(\"Release issue back to todo and clear assignee\")\n .argument(\"<issueId>\", \"Issue ID\")\n .action(async (issueId: string, opts: BaseClientOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const updated = await ctx.api.post<Issue>(`/api/issues/${issueId}/release`, {});\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n}\n\nfunction parseCsv(value: string | undefined): string[] {\n if (!value) return [];\n return value.split(\",\").map((v) => v.trim()).filter(Boolean);\n}\n\nfunction parseOptionalInt(value: string | undefined): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number.parseInt(value, 10);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Invalid integer value: ${value}`);\n }\n return parsed;\n}\n\nfunction parseHiddenAt(value: string | undefined): string | null | undefined {\n if (value === undefined) return undefined;\n if (value.trim().toLowerCase() === \"null\") return null;\n return value;\n}\n\nfunction filterIssueRows(rows: Issue[], match: string | undefined): Issue[] {\n if (!match?.trim()) return rows;\n const needle = match.trim().toLowerCase();\n return rows.filter((row) => {\n const text = [row.identifier, row.title, row.description]\n .filter((part): part is string => Boolean(part))\n .join(\"\\n\")\n .toLowerCase();\n return text.includes(needle);\n });\n}\n", "import { Command } from \"commander\";\nimport type { Agent } from \"@paperclipai/shared\";\nimport {\n addCommonClientOptions,\n formatInlineRecord,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface AgentListOptions extends BaseClientOptions {\n companyId?: string;\n}\n\nexport function registerAgentCommands(program: Command): void {\n const agent = program.command(\"agent\").description(\"Agent operations\");\n\n addCommonClientOptions(\n agent\n .command(\"list\")\n .description(\"List agents for a company\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .action(async (opts: AgentListOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const rows = (await ctx.api.get<Agent[]>(`/api/companies/${ctx.companyId}/agents`)) ?? [];\n\n if (ctx.json) {\n printOutput(rows, { json: true });\n return;\n }\n\n if (rows.length === 0) {\n printOutput([], { json: false });\n return;\n }\n\n for (const row of rows) {\n console.log(\n formatInlineRecord({\n id: row.id,\n name: row.name,\n role: row.role,\n status: row.status,\n reportsTo: row.reportsTo,\n budgetMonthlyCents: row.budgetMonthlyCents,\n spentMonthlyCents: row.spentMonthlyCents,\n }),\n );\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n\n addCommonClientOptions(\n agent\n .command(\"get\")\n .description(\"Get one agent\")\n .argument(\"<agentId>\", \"Agent ID\")\n .action(async (agentId: string, opts: BaseClientOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const row = await ctx.api.get<Agent>(`/api/agents/${agentId}`);\n printOutput(row, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n}\n", "import { Command } from \"commander\";\nimport {\n createApprovalSchema,\n requestApprovalRevisionSchema,\n resolveApprovalSchema,\n resubmitApprovalSchema,\n type Approval,\n type ApprovalComment,\n} from \"@paperclipai/shared\";\nimport {\n addCommonClientOptions,\n formatInlineRecord,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface ApprovalListOptions extends BaseClientOptions {\n companyId?: string;\n status?: string;\n}\n\ninterface ApprovalDecisionOptions extends BaseClientOptions {\n decisionNote?: string;\n decidedByUserId?: string;\n}\n\ninterface ApprovalCreateOptions extends BaseClientOptions {\n companyId?: string;\n type: string;\n requestedByAgentId?: string;\n payload: string;\n issueIds?: string;\n}\n\ninterface ApprovalResubmitOptions extends BaseClientOptions {\n payload?: string;\n}\n\ninterface ApprovalCommentOptions extends BaseClientOptions {\n body: string;\n}\n\nexport function registerApprovalCommands(program: Command): void {\n const approval = program.command(\"approval\").description(\"Approval operations\");\n\n addCommonClientOptions(\n approval\n .command(\"list\")\n .description(\"List approvals for a company\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .option(\"--status <status>\", \"Status filter\")\n .action(async (opts: ApprovalListOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const params = new URLSearchParams();\n if (opts.status) params.set(\"status\", opts.status);\n const query = params.toString();\n const rows =\n (await ctx.api.get<Approval[]>(\n `/api/companies/${ctx.companyId}/approvals${query ? `?${query}` : \"\"}`,\n )) ?? [];\n\n if (ctx.json) {\n printOutput(rows, { json: true });\n return;\n }\n\n if (rows.length === 0) {\n printOutput([], { json: false });\n return;\n }\n\n for (const row of rows) {\n console.log(\n formatInlineRecord({\n id: row.id,\n type: row.type,\n status: row.status,\n requestedByAgentId: row.requestedByAgentId,\n requestedByUserId: row.requestedByUserId,\n }),\n );\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n\n addCommonClientOptions(\n approval\n .command(\"get\")\n .description(\"Get one approval\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .action(async (approvalId: string, opts: BaseClientOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const row = await ctx.api.get<Approval>(`/api/approvals/${approvalId}`);\n printOutput(row, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n approval\n .command(\"create\")\n .description(\"Create an approval request\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .requiredOption(\"--type <type>\", \"Approval type (hire_agent|approve_ceo_strategy)\")\n .requiredOption(\"--payload <json>\", \"Approval payload as JSON object\")\n .option(\"--requested-by-agent-id <id>\", \"Requesting agent ID\")\n .option(\"--issue-ids <csv>\", \"Comma-separated linked issue IDs\")\n .action(async (opts: ApprovalCreateOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const payloadJson = parseJsonObject(opts.payload, \"payload\");\n const payload = createApprovalSchema.parse({\n type: opts.type,\n payload: payloadJson,\n requestedByAgentId: opts.requestedByAgentId,\n issueIds: parseCsv(opts.issueIds),\n });\n const created = await ctx.api.post<Approval>(`/api/companies/${ctx.companyId}/approvals`, payload);\n printOutput(created, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n\n addCommonClientOptions(\n approval\n .command(\"approve\")\n .description(\"Approve an approval request\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .option(\"--decision-note <text>\", \"Decision note\")\n .option(\"--decided-by-user-id <id>\", \"Decision actor user ID\")\n .action(async (approvalId: string, opts: ApprovalDecisionOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = resolveApprovalSchema.parse({\n decisionNote: opts.decisionNote,\n decidedByUserId: opts.decidedByUserId,\n });\n const updated = await ctx.api.post<Approval>(`/api/approvals/${approvalId}/approve`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n approval\n .command(\"reject\")\n .description(\"Reject an approval request\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .option(\"--decision-note <text>\", \"Decision note\")\n .option(\"--decided-by-user-id <id>\", \"Decision actor user ID\")\n .action(async (approvalId: string, opts: ApprovalDecisionOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = resolveApprovalSchema.parse({\n decisionNote: opts.decisionNote,\n decidedByUserId: opts.decidedByUserId,\n });\n const updated = await ctx.api.post<Approval>(`/api/approvals/${approvalId}/reject`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n approval\n .command(\"request-revision\")\n .description(\"Request revision for an approval\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .option(\"--decision-note <text>\", \"Decision note\")\n .option(\"--decided-by-user-id <id>\", \"Decision actor user ID\")\n .action(async (approvalId: string, opts: ApprovalDecisionOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = requestApprovalRevisionSchema.parse({\n decisionNote: opts.decisionNote,\n decidedByUserId: opts.decidedByUserId,\n });\n const updated = await ctx.api.post<Approval>(`/api/approvals/${approvalId}/request-revision`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n approval\n .command(\"resubmit\")\n .description(\"Resubmit an approval (optionally with new payload)\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .option(\"--payload <json>\", \"Payload JSON object\")\n .action(async (approvalId: string, opts: ApprovalResubmitOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = resubmitApprovalSchema.parse({\n payload: opts.payload ? parseJsonObject(opts.payload, \"payload\") : undefined,\n });\n const updated = await ctx.api.post<Approval>(`/api/approvals/${approvalId}/resubmit`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n approval\n .command(\"comment\")\n .description(\"Add comment to an approval\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .requiredOption(\"--body <text>\", \"Comment body\")\n .action(async (approvalId: string, opts: ApprovalCommentOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const created = await ctx.api.post<ApprovalComment>(`/api/approvals/${approvalId}/comments`, {\n body: opts.body,\n });\n printOutput(created, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n}\n\nfunction parseCsv(value: string | undefined): string[] | undefined {\n if (!value) return undefined;\n const rows = value.split(\",\").map((v) => v.trim()).filter(Boolean);\n return rows.length > 0 ? rows : undefined;\n}\n\nfunction parseJsonObject(value: string, name: string): Record<string, unknown> {\n try {\n const parsed = JSON.parse(value) as unknown;\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n throw new Error(`${name} must be a JSON object`);\n }\n return parsed as Record<string, unknown>;\n } catch (err) {\n throw new Error(`Invalid ${name} JSON: ${err instanceof Error ? err.message : String(err)}`);\n }\n}\n", "import { Command } from \"commander\";\nimport type { ActivityEvent } from \"@paperclipai/shared\";\nimport {\n addCommonClientOptions,\n formatInlineRecord,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface ActivityListOptions extends BaseClientOptions {\n companyId?: string;\n agentId?: string;\n entityType?: string;\n entityId?: string;\n}\n\nexport function registerActivityCommands(program: Command): void {\n const activity = program.command(\"activity\").description(\"Activity log operations\");\n\n addCommonClientOptions(\n activity\n .command(\"list\")\n .description(\"List company activity log entries\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .option(\"--agent-id <id>\", \"Filter by agent ID\")\n .option(\"--entity-type <type>\", \"Filter by entity type\")\n .option(\"--entity-id <id>\", \"Filter by entity ID\")\n .action(async (opts: ActivityListOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const params = new URLSearchParams();\n if (opts.agentId) params.set(\"agentId\", opts.agentId);\n if (opts.entityType) params.set(\"entityType\", opts.entityType);\n if (opts.entityId) params.set(\"entityId\", opts.entityId);\n\n const query = params.toString();\n const path = `/api/companies/${ctx.companyId}/activity${query ? `?${query}` : \"\"}`;\n const rows = (await ctx.api.get<ActivityEvent[]>(path)) ?? [];\n\n if (ctx.json) {\n printOutput(rows, { json: true });\n return;\n }\n\n if (rows.length === 0) {\n printOutput([], { json: false });\n return;\n }\n\n for (const row of rows) {\n console.log(\n formatInlineRecord({\n id: row.id,\n action: row.action,\n actorType: row.actorType,\n actorId: row.actorId,\n entityType: row.entityType,\n entityId: row.entityId,\n createdAt: String(row.createdAt),\n }),\n );\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n}\n", "import { Command } from \"commander\";\nimport type { DashboardSummary } from \"@paperclipai/shared\";\nimport {\n addCommonClientOptions,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface DashboardGetOptions extends BaseClientOptions {\n companyId?: string;\n}\n\nexport function registerDashboardCommands(program: Command): void {\n const dashboard = program.command(\"dashboard\").description(\"Dashboard summary operations\");\n\n addCommonClientOptions(\n dashboard\n .command(\"get\")\n .description(\"Get dashboard summary for a company\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .action(async (opts: DashboardGetOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const row = await ctx.api.get<DashboardSummary>(`/api/companies/${ctx.companyId}/dashboard`);\n printOutput(row, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n}\n", "import path from \"node:path\";\nimport {\n expandHomePrefix,\n resolveDefaultConfigPath,\n resolveDefaultContextPath,\n resolvePaperclipInstanceId,\n} from \"./home.js\";\n\nexport interface DataDirOptionLike {\n dataDir?: string;\n config?: string;\n context?: string;\n instance?: string;\n}\n\nexport interface DataDirCommandSupport {\n hasConfigOption?: boolean;\n hasContextOption?: boolean;\n}\n\nexport function applyDataDirOverride(\n options: DataDirOptionLike,\n support: DataDirCommandSupport = {},\n): string | null {\n const rawDataDir = options.dataDir?.trim();\n if (!rawDataDir) return null;\n\n const resolvedDataDir = path.resolve(expandHomePrefix(rawDataDir));\n process.env.PAPERCLIP_HOME = resolvedDataDir;\n\n if (support.hasConfigOption) {\n const hasConfigOverride = Boolean(options.config?.trim()) || Boolean(process.env.PAPERCLIP_CONFIG?.trim());\n if (!hasConfigOverride) {\n const instanceId = resolvePaperclipInstanceId(options.instance);\n process.env.PAPERCLIP_INSTANCE_ID = instanceId;\n process.env.PAPERCLIP_CONFIG = resolveDefaultConfigPath(instanceId);\n }\n }\n\n if (support.hasContextOption) {\n const hasContextOverride = Boolean(options.context?.trim()) || Boolean(process.env.PAPERCLIP_CONTEXT?.trim());\n if (!hasContextOverride) {\n process.env.PAPERCLIP_CONTEXT = resolveDefaultContextPath();\n }\n }\n\n return resolvedDataDir;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;AAAA,IAAa,kBAGA,kBAGA,sBAGA,qBAGA,gBAWA,qBAGA,aAeA,kBA6CA,gBAWA,kBAGA,aAGA,eAGA,kBAsBA,gBAYA,kBAQA,mBA0DA,mBAGA,oBAGA,uBAGA;AAvNb;AAAA;AAAA;AAAO,IAAM,mBAAmB,CAAC,UAAU,UAAU,UAAU;AAGxD,IAAM,mBAAmB,CAAC,iBAAiB,eAAe;AAG1D,IAAM,uBAAuB,CAAC,WAAW,QAAQ;AAGjD,IAAM,sBAAsB,CAAC,QAAQ,UAAU;AAG/C,IAAM,iBAAiB;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAGO,IAAM,sBAAsB,CAAC,WAAW,QAAQ,gBAAgB,eAAe,UAAU;AAGzF,IAAM,cAAc;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAGO,IAAM,mBAAmB;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAGO,IAAM,iBAAiB;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAGO,IAAM,mBAAmB,CAAC,YAAY,QAAQ,UAAU,KAAK;AAG7D,IAAM,cAAc,CAAC,WAAW,QAAQ,SAAS,MAAM;AAGvD,IAAM,gBAAgB,CAAC,WAAW,UAAU,YAAY,WAAW;AAGnE,IAAM,mBAAmB;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAgBO,IAAM,iBAAiB,CAAC,cAAc,sBAAsB;AAY5D,IAAM,mBAAmB;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAGO,IAAM,oBAAoB,CAAC,cAAc,IAAI;AA0D7C,IAAM,oBAAoB,CAAC,SAAS,SAAS,MAAM;AAGnD,IAAM,qBAAqB,CAAC,SAAS,OAAO;AAG5C,IAAM,wBAAwB,CAAC,oBAAoB,YAAY,UAAU;AAGzE,IAAM,kBAAkB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;AC9NA,SAAS,SAAS;AAAlB,IAGa,qBAQA;AAXb;AAAA;AAAA;AACA;AAEO,IAAM,sBAAsB,EAAE,OAAO;AAAA,MAC1C,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACtB,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC5C,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC;AAAA,IACzE,CAAC;AAIM,IAAM,sBAAsB,oBAChC,QAAQ,EACR,OAAO;AAAA,MACN,QAAQ,EAAE,KAAK,gBAAgB,EAAE,SAAS;AAAA,MAC1C,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,MAC3D,kCAAkC,EAAE,QAAQ,EAAE,SAAS;AAAA,MACvD,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,EAAE,SAAS,EAAE,SAAS;AAAA,IACxE,CAAC;AAAA;AAAA;;;AClBH,SAAS,KAAAA,UAAS;AAAlB,IAEa,0BAOA,oCAOA,uCAQA,qCAiBA,2BAkBA,yBAgBA,yBAWA,iCAKA,oCAEA,gCAMA;AAnGb;AAAA;AAAA;AAEO,IAAM,2BAA2BA,GACrC,OAAO;AAAA,MACN,SAASA,GAAE,QAAQ,EAAE,SAAS;AAAA,MAC9B,QAAQA,GAAE,QAAQ,EAAE,SAAS;AAAA,IAC/B,CAAC,EACA,QAAQ;AAEJ,IAAM,qCAAqCA,GAAE,OAAO;AAAA,MACzD,KAAKA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACrB,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,MACjC,WAAWA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACtC,cAAcA,GAAE,OAAO,EAAE,SAAS;AAAA,IACpC,CAAC;AAEM,IAAM,wCAAwCA,GAAE,OAAO;AAAA,MAC5D,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACtB,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACtB,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,MACjC,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,MAChC,kCAAkCA,GAAE,QAAQ;AAAA,IAC9C,CAAC;AAEM,IAAM,sCAAsCA,GAAE,OAAO;AAAA,MAC1D,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACtB,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACtB,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACtB,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACtB,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,MAC3B,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,MAC1B,cAAcA,GAAE,OAAO,EAAE,SAAS;AAAA,MAClC,eAAeA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MAC1C,aAAaA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MAC7B,eAAeA,GAAE,OAAOA,GAAE,QAAQ,CAAC;AAAA,MACnC,eAAeA,GAAE,OAAOA,GAAE,QAAQ,CAAC;AAAA,MACnC,aAAaA,GAAE,OAAOA,GAAE,QAAQ,CAAC;AAAA,MACjC,oBAAoBA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,MACjD,UAAUA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,IAC3C,CAAC;AAEM,IAAM,4BAA4BA,GAAE,OAAO;AAAA,MAChD,eAAeA,GAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,MACzC,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,MACjC,QAAQA,GACL,OAAO;AAAA,QACN,WAAWA,GAAE,OAAO,EAAE,KAAK;AAAA,QAC3B,aAAaA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MAC/B,CAAC,EACA,SAAS;AAAA,MACZ,UAAUA,GAAE,OAAO;AAAA,QACjB,SAASA,GAAE,QAAQ;AAAA,QACnB,QAAQA,GAAE,QAAQ;AAAA,MACpB,CAAC;AAAA,MACD,SAAS,sCAAsC,SAAS;AAAA,MACxD,QAAQA,GAAE,MAAM,mCAAmC;AAAA,MACnD,iBAAiBA,GAAE,MAAM,kCAAkC,EAAE,QAAQ,CAAC,CAAC;AAAA,IACzE,CAAC;AAEM,IAAM,0BAA0BA,GAAE,mBAAmB,QAAQ;AAAA,MAClEA,GAAE,OAAO;AAAA,QACP,MAAMA,GAAE,QAAQ,QAAQ;AAAA,QACxB,UAAU;AAAA,QACV,OAAOA,GAAE,OAAOA,GAAE,OAAO,CAAC;AAAA,MAC5B,CAAC;AAAA,MACDA,GAAE,OAAO;AAAA,QACP,MAAMA,GAAE,QAAQ,KAAK;AAAA,QACrB,KAAKA,GAAE,OAAO,EAAE,IAAI;AAAA,MACtB,CAAC;AAAA,MACDA,GAAE,OAAO;AAAA,QACP,MAAMA,GAAE,QAAQ,QAAQ;AAAA,QACxB,KAAKA,GAAE,OAAO,EAAE,IAAI;AAAA,MACtB,CAAC;AAAA,IACH,CAAC;AAEM,IAAM,0BAA0BA,GAAE,mBAAmB,QAAQ;AAAA,MAClEA,GAAE,OAAO;AAAA,QACP,MAAMA,GAAE,QAAQ,aAAa;AAAA,QAC7B,gBAAgBA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,MACxD,CAAC;AAAA,MACDA,GAAE,OAAO;AAAA,QACP,MAAMA,GAAE,QAAQ,kBAAkB;AAAA,QAClC,WAAWA,GAAE,OAAO,EAAE,KAAK;AAAA,MAC7B,CAAC;AAAA,IACH,CAAC;AAEM,IAAM,kCAAkCA,GAAE,MAAM;AAAA,MACrDA,GAAE,QAAQ,KAAK;AAAA,MACfA,GAAE,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAAA,IAC3B,CAAC;AAEM,IAAM,qCAAqCA,GAAE,KAAK,CAAC,UAAU,QAAQ,SAAS,CAAC;AAE/E,IAAM,iCAAiCA,GAAE,OAAO;AAAA,MACrD,SAAS,yBAAyB,SAAS;AAAA,IAC7C,CAAC;AAIM,IAAM,kCAAkCA,GAAE,OAAO;AAAA,MACtD,QAAQ;AAAA,MACR,SAAS,yBAAyB,SAAS;AAAA,MAC3C,QAAQ;AAAA,MACR,QAAQ,gCAAgC,SAAS;AAAA,MACjD,mBAAmB,mCAAmC,SAAS;AAAA,IACjE,CAAC;AAAA;AAAA;;;ACzGD,SAAS,KAAAC,UAAS;AAAlB,IAGa,uBAKA,2BAOA,kBAMA,iBAEA,oBAUA,oBAOA;AAxCb;AAAA;AAAA;AACA;AAEO,IAAM,wBAAwBA,GAAE,OAAO;AAAA,MAC5C,MAAMA,GAAE,QAAQ,OAAO;AAAA,MACvB,OAAOA,GAAE,OAAO;AAAA,IAClB,CAAC;AAEM,IAAM,4BAA4BA,GAAE,OAAO;AAAA,MAChD,MAAMA,GAAE,QAAQ,YAAY;AAAA,MAC5B,UAAUA,GAAE,OAAO,EAAE,KAAK;AAAA,MAC1B,SAASA,GAAE,MAAM,CAACA,GAAE,QAAQ,QAAQ,GAAGA,GAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS;AAAA,IAChF,CAAC;AAGM,IAAM,mBAAmBA,GAAE,MAAM;AAAA,MACtCA,GAAE,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC;AAEM,IAAM,kBAAkBA,GAAE,OAAO,gBAAgB;AAEjD,IAAM,qBAAqBA,GAAE,OAAO;AAAA,MACzC,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACtB,UAAUA,GAAE,KAAK,gBAAgB,EAAE,SAAS;AAAA,MAC5C,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACvB,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC5C,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IAC9C,CAAC;AAIM,IAAM,qBAAqBA,GAAE,OAAO;AAAA,MACzC,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACvB,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IAC9C,CAAC;AAIM,IAAM,qBAAqBA,GAAE,OAAO;AAAA,MACzC,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACjC,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC5C,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IAC9C,CAAC;AAAA;AAAA;;;AC5CD,SAAS,KAAAC,UAAS;AAAlB,IASa,wBAIP,qBAaO,mBAiBA,uBAOA,mBAWA,mCAOA,sBAMA,iBAUA,yBAMA,8BAMA;AAhGb;AAAA;AAAA;AACA;AAMA;AAEO,IAAM,yBAAyBA,GAAE,OAAO;AAAA,MAC7C,iBAAiBA,GAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,IACvD,CAAC;AAED,IAAM,sBAAsBA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,QAAQ;AAC5E,YAAM,WAAW,MAAM;AACvB,UAAI,aAAa,OAAW;AAC5B,YAAM,SAAS,gBAAgB,UAAU,QAAQ;AACjD,UAAI,CAAC,OAAO,SAAS;AACnB,YAAI,SAAS;AAAA,UACX,MAAMA,GAAE,aAAa;AAAA,UACrB,SAAS;AAAA,UACT,MAAM,CAAC,KAAK;AAAA,QACd,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAEM,IAAM,oBAAoBA,GAAE,OAAO;AAAA,MACxC,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACtB,MAAMA,GAAE,KAAK,WAAW,EAAE,SAAS,EAAE,QAAQ,SAAS;AAAA,MACtD,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MACtC,MAAMA,GAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,SAAS;AAAA,MACnD,WAAWA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MACjD,cAAcA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC7C,aAAaA,GAAE,KAAK,mBAAmB,EAAE,SAAS,EAAE,QAAQ,SAAS;AAAA,MACrE,eAAe,oBAAoB,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,MACxD,eAAeA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,MAC1D,oBAAoBA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC;AAAA,MACvE,aAAa,uBAAuB,SAAS;AAAA,MAC7C,UAAUA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,IACtD,CAAC;AAIM,IAAM,wBAAwB,kBAAkB,OAAO;AAAA,MAC5D,eAAeA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MACrD,gBAAgBA,GAAE,MAAMA,GAAE,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS;AAAA,IACtD,CAAC;AAIM,IAAM,oBAAoB,kBAC9B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,QAAQ,EACR,OAAO;AAAA,MACN,aAAaA,GAAE,MAAM,EAAE,SAAS;AAAA,MAChC,QAAQA,GAAE,KAAK,cAAc,EAAE,SAAS;AAAA,MACxC,mBAAmBA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,IAC7D,CAAC;AAII,IAAM,oCAAoCA,GAAE,OAAO;AAAA,MACxD,MAAMA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACxC,kBAAkBA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,IACtD,CAAC;AAIM,IAAM,uBAAuBA,GAAE,OAAO;AAAA,MAC3C,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,SAAS;AAAA,IAC3C,CAAC;AAIM,IAAM,kBAAkBA,GAAE,OAAO;AAAA,MACtC,QAAQA,GAAE,KAAK,CAAC,SAAS,cAAc,aAAa,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,WAAW;AAAA,MACjG,eAAeA,GAAE,KAAK,CAAC,UAAU,QAAQ,YAAY,QAAQ,CAAC,EAAE,SAAS;AAAA,MACzE,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MACvC,SAASA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,MACnD,gBAAgBA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IACjD,CAAC;AAIM,IAAM,0BAA0BA,GAAE,OAAO;AAAA,MAC9C,SAASA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,IACjD,CAAC;AAIM,IAAM,+BAA+BA,GAAE,OAAO;AAAA,MACnD,eAAe,oBAAoB,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,IAC1D,CAAC;AAIM,IAAM,+BAA+BA,GAAE,OAAO;AAAA,MACnD,iBAAiBA,GAAE,QAAQ;AAAA,IAC7B,CAAC;AAAA;AAAA;;;AClGD,SAAS,KAAAC,UAAS;AAAlB,IAGM,wBAQO,8BAiBA,8BAOP,eAaO,qBAOA;AAvDb;AAAA;AAAA;AACA;AAEA,IAAM,yBAAyB;AAAA,MAC7B,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACjC,KAAKA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,MAC3C,SAASA,GAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,MAC9C,SAASA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MACxC,UAAUA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,IACtD;AAEO,IAAM,+BAA+BA,GAAE,OAAO;AAAA,MACnD,GAAG;AAAA,MACH,WAAWA,GAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,IACjD,CAAC,EAAE,YAAY,CAAC,OAAO,QAAQ;AAC7B,YAAM,SAAS,OAAO,MAAM,QAAQ,YAAY,MAAM,IAAI,KAAK,EAAE,SAAS;AAC1E,YAAM,UAAU,OAAO,MAAM,YAAY,YAAY,MAAM,QAAQ,KAAK,EAAE,SAAS;AACnF,UAAI,CAAC,UAAU,CAAC,SAAS;AACvB,YAAI,SAAS;AAAA,UACX,MAAMA,GAAE,aAAa;AAAA,UACrB,SAAS;AAAA,UACT,MAAM,CAAC,KAAK;AAAA,QACd,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAIM,IAAM,+BAA+BA,GAAE,OAAO;AAAA,MACnD,GAAG;AAAA,MACH,WAAWA,GAAE,QAAQ,EAAE,SAAS;AAAA,IAClC,CAAC,EAAE,QAAQ;AAIX,IAAM,gBAAgB;AAAA;AAAA,MAEpB,QAAQA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MAC9C,SAASA,GAAE,MAAMA,GAAE,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS;AAAA,MAC7C,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACtB,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC5C,QAAQA,GAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,QAAQ,SAAS;AAAA,MAC7D,aAAaA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MACnD,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC3C,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MACtC,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;AAAA,IACxD;AAEO,IAAM,sBAAsBA,GAAE,OAAO;AAAA,MAC1C,GAAG;AAAA,MACH,WAAW,6BAA6B,SAAS;AAAA,IACnD,CAAC;AAIM,IAAM,sBAAsBA,GAAE,OAAO,aAAa,EAAE,QAAQ;AAAA;AAAA;;;ACvDnE,SAAS,KAAAC,UAAS;AAAlB,IAGa,qCAOA,mBAkBA,wBAOA,mBAOA,qBAOA,uBAQA,yBAMA;AA/Db;AAAA;AAAA;AACA;AAEO,IAAM,sCAAsCA,GAChD,OAAO;AAAA,MACN,eAAeA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,MAC9C,qBAAqBA,GAAE,QAAQ,EAAE,SAAS;AAAA,IAC5C,CAAC,EACA,OAAO;AAEH,IAAM,oBAAoBA,GAAE,OAAO;AAAA,MACxC,WAAWA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MACjD,QAAQA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MAC9C,UAAUA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MAChD,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACvB,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC5C,QAAQA,GAAE,KAAK,cAAc,EAAE,SAAS,EAAE,QAAQ,SAAS;AAAA,MAC3D,UAAUA,GAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,QAAQ,QAAQ;AAAA,MAC9D,iBAAiBA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MACvD,gBAAgBA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC/C,cAAcA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC;AAAA,MACjE,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC5C,0BAA0B,oCAAoC,SAAS,EAAE,SAAS;AAAA,MAClF,UAAUA,GAAE,MAAMA,GAAE,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS;AAAA,IAChD,CAAC;AAIM,IAAM,yBAAyBA,GAAE,OAAO;AAAA,MAC7C,MAAMA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;AAAA,MACrC,OAAOA,GAAE,OAAO,EAAE,MAAM,yBAAyB,mCAAmC;AAAA,IACtF,CAAC;AAIM,IAAM,oBAAoB,kBAAkB,QAAQ,EAAE,OAAO;AAAA,MAClE,SAASA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACpC,UAAUA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;AAAA,IACtD,CAAC;AAIM,IAAM,sBAAsBA,GAAE,OAAO;AAAA,MAC1C,SAASA,GAAE,OAAO,EAAE,KAAK;AAAA,MACzB,kBAAkBA,GAAE,MAAMA,GAAE,KAAK,cAAc,CAAC,EAAE,SAAS;AAAA,IAC7D,CAAC;AAIM,IAAM,wBAAwBA,GAAE,OAAO;AAAA,MAC5C,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACtB,QAAQA,GAAE,QAAQ,EAAE,SAAS;AAAA,MAC7B,WAAWA,GAAE,QAAQ,EAAE,SAAS;AAAA,IAClC,CAAC;AAIM,IAAM,0BAA0BA,GAAE,OAAO;AAAA,MAC9C,YAAYA,GAAE,OAAO,EAAE,KAAK;AAAA,IAC9B,CAAC;AAIM,IAAM,sCAAsCA,GAAE,OAAO;AAAA,MAC1D,gBAAgBA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,IACxD,CAAC;AAAA;AAAA;;;ACjED,SAAS,KAAAC,UAAS;AAAlB,IAGa,kBAWA;AAdb;AAAA;AAAA;AACA;AAEO,IAAM,mBAAmBA,GAAE,OAAO;AAAA,MACvC,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACvB,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC5C,OAAOA,GAAE,KAAK,WAAW,EAAE,SAAS,EAAE,QAAQ,MAAM;AAAA,MACpD,QAAQA,GAAE,KAAK,aAAa,EAAE,SAAS,EAAE,QAAQ,SAAS;AAAA,MAC1D,UAAUA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MAChD,cAAcA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,IACtD,CAAC;AAIM,IAAM,mBAAmB,iBAAiB,QAAQ;AAAA;AAAA;;;ACdzD,SAAS,KAAAC,UAAS;AAAlB,IAGa,sBASA,uBAOA,+BAOA,wBAMA;AAhCb;AAAA;AAAA;AACA;AAEO,IAAM,uBAAuBA,GAAE,OAAO;AAAA,MAC3C,MAAMA,GAAE,KAAK,cAAc;AAAA,MAC3B,oBAAoBA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MAC1D,SAASA,GAAE,OAAOA,GAAE,QAAQ,CAAC;AAAA,MAC7B,UAAUA,GAAE,MAAMA,GAAE,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS;AAAA,IAChD,CAAC;AAIM,IAAM,wBAAwBA,GAAE,OAAO;AAAA,MAC5C,cAAcA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC7C,iBAAiBA,GAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,OAAO;AAAA,IACxD,CAAC;AAIM,IAAM,gCAAgCA,GAAE,OAAO;AAAA,MACpD,cAAcA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC7C,iBAAiBA,GAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,OAAO;AAAA,IACxD,CAAC;AAIM,IAAM,yBAAyBA,GAAE,OAAO;AAAA,MAC7C,SAASA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,IAC1C,CAAC;AAIM,IAAM,2BAA2BA,GAAE,OAAO;AAAA,MAC/C,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACxB,CAAC;AAAA;AAAA;;;AClCD,SAAS,KAAAC,UAAS;AAAlB,IAEa,uBAgBA;AAlBb;AAAA;AAAA;AAEO,IAAM,wBAAwBA,GAAE,OAAO;AAAA,MAC5C,SAASA,GAAE,OAAO,EAAE,KAAK;AAAA,MACzB,SAASA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MAC/C,WAAWA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MACjD,QAAQA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,MAC9C,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC5C,UAAUA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MAC1B,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACvB,aAAaA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC;AAAA,MAChE,cAAcA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC;AAAA,MACjE,WAAWA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,MACxC,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,IAClC,CAAC;AAIM,IAAM,qBAAqBA,GAAE,OAAO;AAAA,MACzC,oBAAoBA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,IACnD,CAAC;AAAA;AAAA;;;ACpBD,SAAS,KAAAC,WAAS;AAAlB,IAEa;AAFb;AAAA;AAAA;AAEO,IAAM,iCAAiCA,IAAE,OAAO;AAAA,MACrD,WAAWA,IACR,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,IAAI,GAAG,EACP,MAAM,mBAAmB,EACzB,SAAS;AAAA,IACd,CAAC;AAAA;AAAA;;;ACVD,SAAS,KAAAC,WAAS;AAAlB,IASa,2BAQA,oBAUA,6BAOA,8BAMA,+BAWA;AAnDb;AAAA;AAAA;AACA;AAQO,IAAM,4BAA4BA,IAAE,OAAO;AAAA,MAChD,kBAAkBA,IAAE,KAAK,iBAAiB,EAAE,QAAQ,MAAM;AAAA,MAC1D,gBAAgBA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;AAAA,MAC1E,iBAAiBA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,IACzE,CAAC;AAIM,IAAM,qBAAqBA,IAAE,OAAO;AAAA,MACzC,aAAaA,IAAE,KAAK,kBAAkB;AAAA,MACtC,WAAWA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,MAC/C,aAAaA,IAAE,KAAK,mBAAmB,EAAE,SAAS;AAAA,MAClD,cAAcA,IAAE,OAAO,EAAE,IAAI,GAAI,EAAE,SAAS,EAAE,SAAS;AAAA,MACvD,sBAAsBA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,IAC9E,CAAC;AAIM,IAAM,8BAA8BA,IAAE,OAAO;AAAA,MAClD,QAAQA,IAAE,KAAK,qBAAqB,EAAE,SAAS;AAAA,MAC/C,aAAaA,IAAE,KAAK,kBAAkB,EAAE,SAAS;AAAA,IACnD,CAAC;AAIM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,MACnD,aAAaA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG;AAAA,IACzC,CAAC;AAIM,IAAM,gCAAgCA,IAAE,OAAO;AAAA,MACpD,QAAQA,IAAE;AAAA,QACRA,IAAE,OAAO;AAAA,UACP,eAAeA,IAAE,KAAK,eAAe;AAAA,UACrC,OAAOA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,QAC/D,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAIM,IAAM,gCAAgCA,IAAE,OAAO;AAAA,MACpD,YAAYA,IAAE,MAAMA,IAAE,OAAO,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,IACnD,CAAC;AAAA;AAAA;;;ACrDD;AAAA;AAAA;AAAA;AAMA;AAkBA;AAsBA;AAWA;AAiBA;AAOA;AAaA;AAaA;AAOA;AAKA;AAAA;AAAA;;;ACvHA,IAAa,YAEA;AAFb;AAAA;AAAA;AAAO,IAAM,aAAa;AAEnB,IAAM,MAAM;AAAA,MACjB,QAAQ,GAAG,UAAU;AAAA,MACrB,WAAW,GAAG,UAAU;AAAA,MACxB,QAAQ,GAAG,UAAU;AAAA,MACrB,UAAU,GAAG,UAAU;AAAA,MACvB,QAAQ,GAAG,UAAU;AAAA,MACrB,OAAO,GAAG,UAAU;AAAA,MACpB,WAAW,GAAG,UAAU;AAAA,MACxB,SAAS,GAAG,UAAU;AAAA,MACtB,OAAO,GAAG,UAAU;AAAA,MACpB,UAAU,GAAG,UAAU;AAAA,MACvB,WAAW,GAAG,UAAU;AAAA,MACxB,eAAe,GAAG,UAAU;AAAA,MAC5B,SAAS,GAAG,UAAU;AAAA,MACtB,cAAc,GAAG,UAAU;AAAA,MAC3B,SAAS,GAAG,UAAU;AAAA,MACtB,OAAO,GAAG,UAAU;AAAA,IACtB;AAAA;AAAA;;;ACnBA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAS,KAAAC,WAAS;AAAlB,IASa,kBAMA,iBAKA,sBAOA,qBAKA,oBASA,kBAKA,8BAIA,uBAQA,qBAaA,mCAIA,qBAQA;AAnFb;AAAA;AAAA;AACA;AAQO,IAAM,mBAAmBA,IAAE,OAAO;AAAA,MACvC,SAASA,IAAE,QAAQ,CAAC;AAAA,MACpB,WAAWA,IAAE,OAAO;AAAA,MACpB,QAAQA,IAAE,KAAK,CAAC,WAAW,aAAa,QAAQ,CAAC;AAAA,IACnD,CAAC;AAEM,IAAM,kBAAkBA,IAAE,OAAO;AAAA,MACtC,UAAUA,IAAE,KAAK,CAAC,UAAU,QAAQ,CAAC;AAAA,MACrC,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC9B,CAAC;AAEM,IAAM,uBAAuBA,IAAE,OAAO;AAAA,MAC3C,MAAMA,IAAE,KAAK,CAAC,qBAAqB,UAAU,CAAC,EAAE,QAAQ,mBAAmB;AAAA,MAC3E,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA,MACtC,yBAAyBA,IAAE,OAAO,EAAE,QAAQ,mCAAmC;AAAA,MAC/E,sBAAsBA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,QAAQ,KAAK;AAAA,IACxE,CAAC;AAEM,IAAM,sBAAsBA,IAAE,OAAO;AAAA,MAC1C,MAAMA,IAAE,KAAK,CAAC,QAAQ,OAAO,CAAC;AAAA,MAC9B,QAAQA,IAAE,OAAO,EAAE,QAAQ,qCAAqC;AAAA,IAClE,CAAC;AAEM,IAAM,qBAAqBA,IAAE,OAAO;AAAA,MACzC,gBAAgBA,IAAE,KAAK,gBAAgB,EAAE,QAAQ,eAAe;AAAA,MAChE,UAAUA,IAAE,KAAK,oBAAoB,EAAE,QAAQ,SAAS;AAAA,MACxD,MAAMA,IAAE,OAAO,EAAE,QAAQ,WAAW;AAAA,MACpC,MAAMA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,QAAQ,IAAI;AAAA,MACrD,kBAAkBA,IAAE,MAAMA,IAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACvD,SAASA,IAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IACnC,CAAC;AAEM,IAAM,mBAAmBA,IAAE,OAAO;AAAA,MACvC,aAAaA,IAAE,KAAK,mBAAmB,EAAE,QAAQ,MAAM;AAAA,MACvD,eAAeA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IAC3C,CAAC;AAEM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,MACnD,SAASA,IAAE,OAAO,EAAE,QAAQ,6CAA6C;AAAA,IAC3E,CAAC;AAEM,IAAM,wBAAwBA,IAAE,OAAO;AAAA,MAC5C,QAAQA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,WAAW;AAAA,MAC7C,QAAQA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,WAAW;AAAA,MAC7C,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,MAC9B,QAAQA,IAAE,OAAO,EAAE,QAAQ,EAAE;AAAA,MAC7B,gBAAgBA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,IAC3C,CAAC;AAEM,IAAM,sBAAsBA,IAAE,OAAO;AAAA,MAC1C,UAAUA,IAAE,KAAK,iBAAiB,EAAE,QAAQ,YAAY;AAAA,MACxD,WAAW,6BAA6B,QAAQ;AAAA,QAC9C,SAAS;AAAA,MACX,CAAC;AAAA,MACD,IAAI,sBAAsB,QAAQ;AAAA,QAChC,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB,CAAC;AAAA,IACH,CAAC;AAEM,IAAM,oCAAoCA,IAAE,OAAO;AAAA,MACxD,aAAaA,IAAE,OAAO,EAAE,QAAQ,mDAAmD;AAAA,IACrF,CAAC;AAEM,IAAM,sBAAsBA,IAAE,OAAO;AAAA,MAC1C,UAAUA,IAAE,KAAK,gBAAgB,EAAE,QAAQ,iBAAiB;AAAA,MAC5D,YAAYA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,MACrC,gBAAgB,kCAAkC,QAAQ;AAAA,QACxD,aAAa;AAAA,MACf,CAAC;AAAA,IACH,CAAC;AAEM,IAAM,wBAAwBA,IAClC,OAAO;AAAA,MACN,OAAO;AAAA,MACP,KAAK,gBAAgB,SAAS;AAAA,MAC9B,UAAU;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM,iBAAiB,QAAQ;AAAA,QAC7B,aAAa;AAAA,MACf,CAAC;AAAA,MACD,SAAS,oBAAoB,QAAQ;AAAA,QACnC,UAAU;AAAA,QACV,WAAW;AAAA,UACT,SAAS;AAAA,QACX;AAAA,QACA,IAAI;AAAA,UACF,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,gBAAgB;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,MACD,SAAS,oBAAoB,QAAQ;AAAA,QACnC,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,gBAAgB;AAAA,UACd,aAAa;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH,CAAC,EACA,YAAY,CAAC,OAAO,QAAQ;AAC3B,UAAI,MAAM,OAAO,mBAAmB,iBAAiB;AACnD,YAAI,MAAM,OAAO,aAAa,WAAW;AACvC,cAAI,SAAS;AAAA,YACX,MAAMA,IAAE,aAAa;AAAA,YACrB,SAAS;AAAA,YACT,MAAM,CAAC,UAAU,UAAU;AAAA,UAC7B,CAAC;AAAA,QACH;AACA;AAAA,MACF;AAEA,UAAI,MAAM,KAAK,gBAAgB,cAAc,CAAC,MAAM,KAAK,eAAe;AACtE,YAAI,SAAS;AAAA,UACX,MAAMA,IAAE,aAAa;AAAA,UACrB,SAAS;AAAA,UACT,MAAM,CAAC,QAAQ,eAAe;AAAA,QAChC,CAAC;AAAA,MACH;AAEA,UAAI,MAAM,OAAO,aAAa,YAAY,MAAM,KAAK,gBAAgB,YAAY;AAC/E,YAAI,SAAS;AAAA,UACX,MAAMA,IAAE,aAAa;AAAA,UACrB,SAAS;AAAA,UACT,MAAM,CAAC,QAAQ,aAAa;AAAA,QAC9B,CAAC;AAAA,MACH;AAEA,UAAI,MAAM,OAAO,aAAa,YAAY,CAAC,MAAM,KAAK,eAAe;AACnE,YAAI,SAAS;AAAA,UACX,MAAMA,IAAE,aAAa;AAAA,UACrB,SAAS;AAAA,UACT,MAAM,CAAC,QAAQ,eAAe;AAAA,QAChC,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA;AAAA;;;ACpJH;AAAA;AAAA;AAAA;AA6HA;AAyGA;AACA;AACA;AACA;AAQA;AAAA;AAAA;;;ACjPA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,OAAO,QAAQ;AACf,OAAO,UAAU;AAKV,SAAS,0BAAkC;AAChD,QAAM,UAAU,QAAQ,IAAI,gBAAgB,KAAK;AACjD,MAAI,QAAS,QAAO,KAAK,QAAQ,iBAAiB,OAAO,CAAC;AAC1D,SAAO,KAAK,QAAQ,GAAG,QAAQ,GAAG,YAAY;AAChD;AAEO,SAAS,2BAA2B,UAA2B;AACpE,QAAM,MAAM,UAAU,KAAK,KAAK,QAAQ,IAAI,uBAAuB,KAAK,KAAK;AAC7E,MAAI,CAAC,eAAe,KAAK,GAAG,GAAG;AAC7B,UAAM,IAAI;AAAA,MACR,wBAAwB,GAAG;AAAA,IAC7B;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,6BAA6B,YAA6B;AACxE,QAAM,KAAK,2BAA2B,UAAU;AAChD,SAAO,KAAK,QAAQ,wBAAwB,GAAG,aAAa,EAAE;AAChE;AAEO,SAAS,yBAAyB,YAA6B;AACpE,SAAO,KAAK,QAAQ,6BAA6B,UAAU,GAAG,aAAa;AAC7E;AAEO,SAAS,4BAAoC;AAClD,SAAO,KAAK,QAAQ,wBAAwB,GAAG,cAAc;AAC/D;AAEO,SAAS,kCAAkC,YAA6B;AAC7E,SAAO,KAAK,QAAQ,6BAA6B,UAAU,GAAG,IAAI;AACpE;AAEO,SAAS,sBAAsB,YAA6B;AACjE,SAAO,KAAK,QAAQ,6BAA6B,UAAU,GAAG,MAAM;AACtE;AAEO,SAAS,iCAAiC,YAA6B;AAC5E,SAAO,KAAK,QAAQ,6BAA6B,UAAU,GAAG,WAAW,YAAY;AACvF;AAEO,SAAS,yBAAyB,YAA6B;AACpE,SAAO,KAAK,QAAQ,6BAA6B,UAAU,GAAG,QAAQ,SAAS;AACjF;AAEO,SAAS,iBAAiB,OAAuB;AACtD,MAAI,UAAU,IAAK,QAAO,GAAG,QAAQ;AACrC,MAAI,MAAM,WAAW,IAAI,EAAG,QAAO,KAAK,QAAQ,GAAG,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC;AAC5E,SAAO;AACT;AAEO,SAAS,2BAA2B,YAAqB;AAC9D,QAAM,qBAAqB,2BAA2B,UAAU;AAChE,QAAM,eAAe,6BAA6B,kBAAkB;AACpE,SAAO;AAAA,IACL,SAAS,wBAAwB;AAAA,IACjC,YAAY;AAAA,IACZ;AAAA,IACA,YAAY,yBAAyB,kBAAkB;AAAA,IACvD,yBAAyB,kCAAkC,kBAAkB;AAAA,IAC7E,QAAQ,sBAAsB,kBAAkB;AAAA,IAChD,oBAAoB,iCAAiC,kBAAkB;AAAA,IACvE,YAAY,yBAAyB,kBAAkB;AAAA,EACzD;AACF;AAtEA,IAGM,qBACA;AAJN;AAAA;AAAA;AAGA,IAAM,sBAAsB;AAC5B,IAAM,iBAAiB;AAAA;AAAA;;;ACJvB,OAAO,QAAQ;AACf,OAAOC,WAAU;AASjB,SAAS,4BAA4B,UAAiC;AACpE,QAAM,mBAAmBA,MAAK,QAAQ,QAAQ;AAC9C,MAAI,aAAa;AAEjB,SAAO,MAAM;AACX,UAAM,YAAYA,MAAK,QAAQ,YAAY,cAAc,uBAAuB;AAChF,QAAI,GAAG,WAAW,SAAS,GAAG;AAC5B,aAAO;AAAA,IACT;AAEA,UAAM,UAAUA,MAAK,QAAQ,YAAY,IAAI;AAC7C,QAAI,YAAY,WAAY;AAC5B,iBAAa;AAAA,EACf;AAEA,SAAO;AACT;AAEO,SAAS,kBAAkB,cAA+B;AAC/D,MAAI,aAAc,QAAOA,MAAK,QAAQ,YAAY;AAClD,MAAI,QAAQ,IAAI,iBAAkB,QAAOA,MAAK,QAAQ,QAAQ,IAAI,gBAAgB;AAClF,SAAO,4BAA4B,QAAQ,IAAI,CAAC,KAAK,yBAAyB,2BAA2B,CAAC;AAC5G;AAEA,SAAS,UAAU,UAA2B;AAC5C,MAAI;AACF,WAAO,KAAK,MAAM,GAAG,aAAa,UAAU,OAAO,CAAC;AAAA,EACtD,SAAS,KAAK;AACZ,UAAM,IAAI,MAAM,2BAA2B,QAAQ,KAAK,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC,EAAE;AAAA,EAC5G;AACF;AAEA,SAAS,oBAAoB,KAAuB;AAClD,MAAI,OAAO,QAAQ,YAAY,QAAQ,QAAQ,MAAM,QAAQ,GAAG,EAAG,QAAO;AAC1E,QAAM,SAAS,EAAE,GAAI,IAAgC;AACrD,QAAM,cAAc,OAAO;AAC3B,MAAI,OAAO,gBAAgB,YAAY,gBAAgB,QAAQ,MAAM,QAAQ,WAAW,GAAG;AACzF,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,EAAE,GAAI,YAAwC;AAC/D,MAAI,SAAS,SAAS,UAAU;AAC9B,aAAS,OAAO;AAEhB,QAAI,OAAO,SAAS,4BAA4B,YAAY,OAAO,SAAS,kBAAkB,UAAU;AACtG,eAAS,0BAA0B,SAAS;AAAA,IAC9C;AACA,QACE,OAAO,SAAS,yBAAyB,YACzC,OAAO,SAAS,eAAe,YAC/B,OAAO,SAAS,SAAS,UAAU,GACnC;AACA,eAAS,uBAAuB,SAAS;AAAA,IAC3C;AAAA,EACF;AAEA,SAAO,WAAW;AAClB,SAAO;AACT;AAEA,SAAS,sBAAsB,KAAsB;AACnD,QAAMC,UAAU,KAAmE;AACnF,MAAI,MAAM,QAAQA,OAAM,KAAKA,QAAO,SAAS,GAAG;AAC9C,WAAOA,QACJ,IAAI,CAAC,UAAU;AACd,YAAM,YAAY,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,KAAK,IAAI,MAAM,IAAI,CAAC;AACxE,YAAM,YAAY,UAAU,SAAS,IAAI,UAAU,KAAK,GAAG,IAAI;AAC/D,YAAM,UAAU,OAAO,MAAM,YAAY,WAAW,MAAM,UAAU;AACpE,aAAO,GAAG,SAAS,KAAK,OAAO;AAAA,IACjC,CAAC,EACA,KAAK,IAAI;AAAA,EACd;AACA,SAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AACxD;AAEO,SAAS,WAAW,YAA6C;AACtE,QAAM,WAAW,kBAAkB,UAAU;AAC7C,MAAI,CAAC,GAAG,WAAW,QAAQ,EAAG,QAAO;AACrC,QAAM,MAAM,UAAU,QAAQ;AAC9B,QAAM,WAAW,oBAAoB,GAAG;AACxC,QAAM,SAAS,sBAAsB,UAAU,QAAQ;AACvD,MAAI,CAAC,OAAO,SAAS;AACnB,UAAM,IAAI,MAAM,qBAAqB,QAAQ,KAAK,sBAAsB,OAAO,KAAK,CAAC,EAAE;AAAA,EACzF;AACA,SAAO,OAAO;AAChB;AAEO,SAAS,YACd,QACA,YACM;AACN,QAAM,WAAW,kBAAkB,UAAU;AAC7C,QAAM,MAAMD,MAAK,QAAQ,QAAQ;AACjC,KAAG,UAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAGrC,MAAI,GAAG,WAAW,QAAQ,GAAG;AAC3B,UAAM,aAAa,WAAW;AAC9B,OAAG,aAAa,UAAU,UAAU;AACpC,OAAG,UAAU,YAAY,GAAK;AAAA,EAChC;AAEA,KAAG,cAAc,UAAU,KAAK,UAAU,QAAQ,MAAM,CAAC,IAAI,MAAM;AAAA,IACjE,MAAM;AAAA,EACR,CAAC;AACH;AAEO,SAAS,aAAa,YAA8B;AACzD,SAAO,GAAG,WAAW,kBAAkB,UAAU,CAAC;AACpD;AAvHA,IAQM;AARN;AAAA;AAAA;AAEA;AACA;AAKA,IAAM,0BAA0B;AAAA;AAAA;;;ACRhC,OAAOE,SAAQ;AACf,OAAOC,WAAU;AACjB,SAAS,mBAAmB;AAC5B,SAAS,UAAU,YAAY,SAAS,4BAA4B;AAIpE,SAAS,mBAAmB,YAAqB;AAC/C,SAAOA,MAAK,QAAQA,MAAK,QAAQ,kBAAkB,UAAU,CAAC,GAAG,MAAM;AACzE;AAGA,SAAS,WAAW,OAAiC;AACnD,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS;AAC5D;AAEA,SAAS,aAAa,UAAkB;AACtC,MAAI;AACF,WAAO,qBAAqB,QAAQ;AAAA,EACtC,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEA,SAAS,cAAc,SAAiC;AACtD,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA,GAAG,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE;AAAA,IAClE;AAAA,EACF;AACA,SAAO,MAAM,KAAK,IAAI;AACxB;AAEO,SAAS,uBAAuB,YAA6B;AAClE,SAAO,mBAAmB,UAAU;AACtC;AAEO,SAAS,oBAAoB,WAAW,mBAAmB,GAAS;AACzE,MAAI,eAAe,IAAI,QAAQ,EAAG;AAElC,MAAI,CAACD,IAAG,WAAW,QAAQ,EAAG;AAC9B,iBAAe,IAAI,QAAQ;AAC3B,aAAW,EAAE,MAAM,UAAU,UAAU,OAAO,OAAO,KAAK,CAAC;AAC7D;AAEO,SAAS,0BAA0B,YAAoC;AAC5E,sBAAoB,mBAAmB,UAAU,CAAC;AAClD,QAAM,MAAM,QAAQ,IAAI,kBAAkB;AAC1C,SAAO,WAAW,GAAG,IAAI,IAAK,KAAK,IAAI;AACzC;AAEO,SAAS,8BAA8B,WAAW,mBAAmB,GAAkB;AAC5F,MAAI,CAACA,IAAG,WAAW,QAAQ,EAAG,QAAO;AAErC,QAAM,MAAMA,IAAG,aAAa,UAAU,OAAO;AAC7C,QAAM,SAAS,aAAa,GAAG;AAC/B,QAAM,QAAQ,OAAO,kBAAkB;AACvC,SAAO,WAAW,KAAK,IAAI,MAAO,KAAK,IAAI;AAC7C;AAEO,SAAS,qBAAqB,YAA2D;AAC9F,QAAM,cAAc,0BAA0B,UAAU;AACxD,MAAI,aAAa;AACf,WAAO,EAAE,QAAQ,aAAa,SAAS,MAAM;AAAA,EAC/C;AAEA,QAAM,cAAc,mBAAmB,UAAU;AACjD,QAAM,eAAe,8BAA8B,WAAW;AAC9D,QAAM,SAAS,gBAAgB,YAAY,EAAE,EAAE,SAAS,KAAK;AAC7D,QAAM,UAAU,CAAC;AAEjB,MAAI,CAAC,cAAc;AACjB,qBAAiB,QAAQ,WAAW;AAAA,EACtC;AAEA,SAAO,EAAE,QAAQ,QAAQ;AAC3B;AAEO,SAAS,iBAAiB,QAAgB,WAAW,mBAAmB,GAAS;AACtF,QAAM,MAAMC,MAAK,QAAQ,QAAQ;AACjC,EAAAD,IAAG,UAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAErC,QAAM,UAAUA,IAAG,WAAW,QAAQ,IAAI,aAAaA,IAAG,aAAa,UAAU,OAAO,CAAC,IAAI,CAAC;AAC9F,UAAQ,kBAAkB,IAAI;AAE9B,EAAAA,IAAG,cAAc,UAAU,cAAc,OAAO,GAAG;AAAA,IACjD,MAAM;AAAA,EACR,CAAC;AACH;AAzFA,IAMM,oBAIA;AAVN;AAAA;AAAA;AAIA;AAEA,IAAM,qBAAqB;AAI3B,IAAM,iBAAiB,oBAAI,IAAY;AAAA;AAAA;;;ACVvC,OAAOE,SAAQ;AACf,OAAOC,WAAU;AAGjB,SAAS,OAAO,OAA2B;AACzC,SAAO,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC;AAClC;AAEO,SAAS,uBAAuB,OAAe,YAA6B;AACjF,QAAM,WAAW,iBAAiB,KAAK;AACvC,MAAIA,MAAK,WAAW,QAAQ,EAAG,QAAOA,MAAK,QAAQ,QAAQ;AAE3D,QAAM,MAAM,QAAQ,IAAI;AACxB,QAAM,YAAY,aAAaA,MAAK,QAAQ,UAAU,IAAI;AAC1D,QAAM,gBAAgB,YAAYA,MAAK,QAAQ,WAAW,IAAI,IAAI;AAElE,QAAM,aAAa,OAAO;AAAA,IACxB,GAAI,YAAY,CAACA,MAAK,QAAQ,WAAW,QAAQ,CAAC,IAAI,CAAC;AAAA,IACvDA,MAAK,QAAQ,eAAe,UAAU,QAAQ;AAAA,IAC9CA,MAAK,QAAQ,eAAe,QAAQ;AAAA,IACpCA,MAAK,QAAQ,KAAK,QAAQ;AAAA,EAC5B,CAAC;AAED,SAAO,WAAW,KAAK,CAAC,cAAcD,IAAG,WAAW,SAAS,CAAC,KAAK,WAAW,CAAC;AACjF;AAxBA;AAAA;AAAA;AAEA;AAAA;AAAA;;;ACFA,SAAS,eAAAE,oBAAmB;AAC5B,OAAOC,SAAQ;AACf,OAAOC,WAAU;AAUV,SAAS,0BACd,QACA,YACwB;AACxB,MAAI,OAAO,QAAQ,aAAa,mBAAmB;AACjD,WAAO,EAAE,QAAQ,oBAAoB,MAAM,KAAK;AAAA,EAClD;AAEA,QAAM,eAAe,QAAQ,IAAI;AACjC,MAAI,gBAAgB,aAAa,KAAK,EAAE,SAAS,GAAG;AAClD,WAAO,EAAE,QAAQ,eAAe,MAAM,KAAK;AAAA,EAC7C;AAEA,QAAM,kBAAkB,QAAQ,IAAI;AACpC,QAAM,iBACJ,mBAAmB,gBAAgB,KAAK,EAAE,SAAS,IAC/C,gBAAgB,KAAK,IACrB,OAAO,QAAQ,eAAe;AACpC,QAAM,cAAc,uBAAuB,gBAAgB,UAAU;AAErE,MAAID,IAAG,WAAW,WAAW,GAAG;AAC9B,WAAO,EAAE,QAAQ,YAAY,MAAM,YAAY;AAAA,EACjD;AAEA,EAAAA,IAAG,UAAUC,MAAK,QAAQ,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAC3D,EAAAD,IAAG,cAAc,aAAaD,aAAY,EAAE,EAAE,SAAS,QAAQ,GAAG;AAAA,IAChE,UAAU;AAAA,IACV,MAAM;AAAA,EACR,CAAC;AACD,MAAI;AACF,IAAAC,IAAG,UAAU,aAAa,GAAK;AAAA,EACjC,QAAQ;AAAA,EAER;AACA,SAAO,EAAE,QAAQ,WAAW,MAAM,YAAY;AAChD;AA/CA;AAAA;AAAA;AAIA;AAAA;AAAA;;;ACJA,YAAY,OAAO;AAInB,eAAsB,iBAA0C;AAC9D,QAAM,qBAAqB,kCAAkC,2BAA2B,CAAC;AAEzF,QAAM,OAAO,MAAQ,SAAO;AAAA,IAC1B,SAAS;AAAA,IACT,SAAS;AAAA,MACP,EAAE,OAAO,qBAA8B,OAAO,yCAAyC,MAAM,cAAc;AAAA,MAC3G,EAAE,OAAO,YAAqB,OAAO,+BAA+B;AAAA,IACtE;AAAA,EACF,CAAC;AAED,MAAM,WAAS,IAAI,GAAG;AACpB,IAAE,SAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,SAAS,YAAY;AACvB,UAAM,mBAAmB,MAAQ,OAAK;AAAA,MACpC,SAAS;AAAA,MACT,aAAa;AAAA,MACb,UAAU,CAAC,QAAQ;AACjB,YAAI,CAAC,IAAK,QAAO;AACjB,YAAI,CAAC,IAAI,WAAW,UAAU,EAAG,QAAO;AAAA,MAC1C;AAAA,IACF,CAAC;AAED,QAAM,WAAS,gBAAgB,GAAG;AAChC,MAAE,SAAO,kBAAkB;AAC3B,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA,yBAAyB;AAAA,MACzB,sBAAsB;AAAA,IACxB;AAAA,EACF;AAEA,QAAM,0BAA0B,MAAQ,OAAK;AAAA,IAC3C,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,EACf,CAAC;AAED,MAAM,WAAS,uBAAuB,GAAG;AACvC,IAAE,SAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,uBAAuB,MAAQ,OAAK;AAAA,IACxC,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,IACb,UAAU,CAAC,QAAQ;AACjB,YAAM,IAAI,OAAO,GAAG;AACpB,UAAI,CAAC,OAAO,UAAU,CAAC,KAAK,IAAI,KAAK,IAAI,MAAO,QAAO;AAAA,IACzD;AAAA,EACF,CAAC;AAED,MAAM,WAAS,oBAAoB,GAAG;AACpC,IAAE,SAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,yBAAyB,2BAA2B;AAAA,IACpD,sBAAsB,OAAO,wBAAwB,OAAO;AAAA,EAC9D;AACF;AA1EA;AAAA;AAAA;AAEA;AAAA;AAAA;;;ACFA,YAAYE,QAAO;AAGnB,eAAsB,YAA4C;AAChE,QAAM,eAAe,MAAQ,WAAQ;AAAA,IACnC,SAAS;AAAA,IACT,cAAc;AAAA,EAChB,CAAC;AAED,MAAM,YAAS,YAAY,GAAG;AAC5B,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,CAAC,aAAc,QAAO;AAE1B,QAAM,WAAW,MAAQ,UAAO;AAAA,IAC9B,SAAS;AAAA,IACT,SAAS;AAAA,MACP,EAAE,OAAO,UAAmB,OAAO,qBAAqB;AAAA,MACxD,EAAE,OAAO,UAAmB,OAAO,SAAS;AAAA,IAC9C;AAAA,EACF,CAAC;AAED,MAAM,YAAS,QAAQ,GAAG;AACxB,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,SAAS,MAAQ,YAAS;AAAA,IAC9B,SAAS,GAAG,aAAa,WAAW,cAAc,QAAQ;AAAA,IAC1D,UAAU,CAAC,QAAQ;AACjB,UAAI,CAAC,IAAK,QAAO;AAAA,IACnB;AAAA,EACF,CAAC;AAED,MAAM,YAAS,MAAM,GAAG;AACtB,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,SAAO,EAAE,UAAU,OAAO;AAC5B;AA1CA;AAAA;AAAA;AAAA;AAAA;;;ACAA,YAAYC,QAAO;AAInB,eAAsB,gBAAwC;AAC5D,QAAM,gBAAgB,sBAAsB,2BAA2B,CAAC;AACxE,QAAM,OAAO,MAAQ,UAAO;AAAA,IAC1B,SAAS;AAAA,IACT,SAAS;AAAA,MACP,EAAE,OAAO,QAAiB,OAAO,sBAAsB,MAAM,cAAc;AAAA,MAC3E,EAAE,OAAO,SAAkB,OAAO,iBAAiB,MAAM,cAAc;AAAA,IACzE;AAAA,EACF,CAAC;AAED,MAAM,YAAS,IAAI,GAAG;AACpB,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,SAAS,QAAQ;AACnB,UAAM,SAAS,MAAQ,QAAK;AAAA,MAC1B,SAAS;AAAA,MACT,cAAc;AAAA,MACd,aAAa;AAAA,IACf,CAAC;AAED,QAAM,YAAS,MAAM,GAAG;AACtB,MAAE,UAAO,kBAAkB;AAC3B,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,WAAO,EAAE,MAAM,QAAQ,QAAQ,UAAU,cAAc;AAAA,EACzD;AAEA,EAAE,QAAK,iEAAiE;AACxE,SAAO,EAAE,MAAM,QAAQ,QAAQ,cAAc;AAC/C;AApCA;AAAA;AAAA;AAEA;AAAA;AAAA;;;ACFA,YAAYC,QAAO;AAKnB,SAAS,qBAA6B;AACpC,SAAO,iCAAiC,2BAA2B,CAAC;AACtE;AAEO,SAAS,uBAAsC;AACpD,QAAM,cAAc,mBAAmB;AACvC,SAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAsB,cAAc,SAAiD;AACnF,QAAM,OAAO,WAAW,qBAAqB;AAE7C,QAAM,WAAW,MAAQ,UAAO;AAAA,IAC9B,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,cAAc,KAAK;AAAA,EACrB,CAAC;AAED,MAAM,YAAS,QAAQ,GAAG;AACxB,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,aAAa,MAAQ,WAAQ;AAAA,IACjC,SAAS;AAAA,IACT,cAAc,KAAK;AAAA,EACrB,CAAC;AAED,MAAM,YAAS,UAAU,GAAG;AAC1B,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,kBAAkB,mBAAmB;AAC3C,MAAI,cAAc,KAAK,eAAe,eAAe;AACrD,MAAI,aAAa,mBAAmB;AAClC,UAAM,UAAU,MAAQ,QAAK;AAAA,MAC3B,SAAS;AAAA,MACT,cAAc;AAAA,MACd,aAAa;AAAA,MACb,UAAU,CAAC,UAAU;AACnB,YAAI,CAAC,SAAS,MAAM,KAAK,EAAE,WAAW,EAAG,QAAO;AAAA,MAClD;AAAA,IACF,CAAC;AAED,QAAM,YAAS,OAAO,GAAG;AACvB,MAAE,UAAO,kBAAkB;AAC3B,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,kBAAc,QAAQ,KAAK;AAAA,EAC7B;AAEA,MAAI,aAAa,mBAAmB;AAClC,IAAE;AAAA,MACA,GAAG,QAAQ;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACF;AAlGA;AAAA;AAAA;AAGA;AAAA;AAAA;;;ACHA,YAAYC,QAAO;AAInB,SAAS,wBAAgC;AACvC,SAAO,yBAAyB,2BAA2B,CAAC;AAC9D;AAEO,SAAS,uBAAsC;AACpD,SAAO;AAAA,IACL,UAAU;AAAA,IACV,WAAW;AAAA,MACT,SAAS,sBAAsB;AAAA,IACjC;AAAA,IACA,IAAI;AAAA,MACF,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEA,eAAsB,cAAc,SAAiD;AACnF,QAAM,OAAO,WAAW,qBAAqB;AAE7C,QAAM,WAAW,MAAQ,UAAO;AAAA,IAC9B,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,cAAc,KAAK;AAAA,EACrB,CAAC;AAED,MAAM,YAAS,QAAQ,GAAG;AACxB,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,aAAa,cAAc;AAC7B,UAAM,UAAU,MAAQ,QAAK;AAAA,MAC3B,SAAS;AAAA,MACT,cAAc,KAAK,UAAU,WAAW,sBAAsB;AAAA,MAC9D,aAAa,sBAAsB;AAAA,MACnC,UAAU,CAAC,UAAU;AACnB,YAAI,CAAC,SAAS,MAAM,KAAK,EAAE,WAAW,EAAG,QAAO;AAAA,MAClD;AAAA,IACF,CAAC;AAED,QAAM,YAAS,OAAO,GAAG;AACvB,MAAE,UAAO,kBAAkB;AAC3B,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,WAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,QACT,SAAS,QAAQ,KAAK;AAAA,MACxB;AAAA,MACA,IAAI,KAAK;AAAA,IACX;AAAA,EACF;AAEA,QAAM,SAAS,MAAQ,QAAK;AAAA,IAC1B,SAAS;AAAA,IACT,cAAc,KAAK,GAAG,UAAU;AAAA,IAChC,aAAa;AAAA,IACb,UAAU,CAAC,UAAU;AACnB,UAAI,CAAC,SAAS,MAAM,KAAK,EAAE,WAAW,EAAG,QAAO;AAAA,IAClD;AAAA,EACF,CAAC;AAED,MAAM,YAAS,MAAM,GAAG;AACtB,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,SAAS,MAAQ,QAAK;AAAA,IAC1B,SAAS;AAAA,IACT,cAAc,KAAK,GAAG,UAAU;AAAA,IAChC,aAAa;AAAA,IACb,UAAU,CAAC,UAAU;AACnB,UAAI,CAAC,SAAS,MAAM,KAAK,EAAE,WAAW,EAAG,QAAO;AAAA,IAClD;AAAA,EACF,CAAC;AAED,MAAM,YAAS,MAAM,GAAG;AACtB,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,WAAW,MAAQ,QAAK;AAAA,IAC5B,SAAS;AAAA,IACT,cAAc,KAAK,GAAG,YAAY;AAAA,IAClC,aAAa;AAAA,EACf,CAAC;AAED,MAAM,YAAS,QAAQ,GAAG;AACxB,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,SAAS,MAAQ,QAAK;AAAA,IAC1B,SAAS;AAAA,IACT,cAAc,KAAK,GAAG,UAAU;AAAA,IAChC,aAAa;AAAA,EACf,CAAC;AAED,MAAM,YAAS,MAAM,GAAG;AACtB,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,iBAAiB,MAAQ,WAAQ;AAAA,IACrC,SAAS;AAAA,IACT,cAAc,KAAK,GAAG,kBAAkB;AAAA,EAC1C,CAAC;AAED,MAAM,YAAS,cAAc,GAAG;AAC9B,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,SAAO;AAAA,IACL,UAAU;AAAA,IACV,WAAW,KAAK;AAAA,IAChB,IAAI;AAAA,MACF,QAAQ,OAAO,KAAK;AAAA,MACpB,QAAQ,OAAO,KAAK;AAAA,MACpB,UAAU,SAAS,KAAK,KAAK;AAAA,MAC7B,QAAQ,OAAO,KAAK;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AACF;AAhJA;AAAA;AAAA;AAEA;AAAA;AAAA;;;ACFO,SAAS,uBAAuB,KAAqB;AAC1D,QAAM,QAAQ,IAAI,KAAK;AACvB,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AAEA,MAAI;AACF,UAAM,MAAM,MAAM,SAAS,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,UAAU,KAAK,EAAE;AAC9E,UAAM,WAAW,IAAI,SAAS,KAAK,EAAE,YAAY;AACjD,QAAI,CAAC,SAAU,OAAM,IAAI,MAAM,sBAAsB;AACrD,WAAO;AAAA,EACT,QAAQ;AACN,UAAM,IAAI,MAAM,qBAAqB,GAAG,EAAE;AAAA,EAC5C;AACF;AAEO,SAAS,iBAAiB,KAAuB;AACtD,MAAI,CAAC,IAAI,KAAK,EAAG,QAAO,CAAC;AACzB,QAAMC,UAAS,oBAAI,IAAY;AAC/B,aAAW,QAAQ,IAAI,MAAM,GAAG,GAAG;AACjC,UAAM,WAAW,uBAAuB,IAAI;AAC5C,IAAAA,QAAO,IAAI,QAAQ;AAAA,EACrB;AACA,SAAO,MAAM,KAAKA,OAAM;AAC1B;AAxBA;AAAA;AAAA;AAAA;AAAA;;;ACAA,YAAYC,QAAO;AAInB,eAAsB,aAAa,MAGqB;AACtD,QAAM,gBAAgB,MAAM;AAC5B,QAAM,cAAc,MAAM;AAE1B,QAAM,0BAA0B,MAAQ,UAAO;AAAA,IAC7C,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,cAAc,eAAe,kBAAkB;AAAA,EACjD,CAAC;AAED,MAAM,YAAS,uBAAuB,GAAG;AACvC,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,QAAM,iBAAiB;AAEvB,MAAI,WAAqC;AACzC,MAAI,mBAAmB,iBAAiB;AACtC,UAAM,oBAAoB,MAAQ,UAAO;AAAA,MACvC,SAAS;AAAA,MACT,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,cAAc,eAAe,YAAY;AAAA,IAC3C,CAAC;AACD,QAAM,YAAS,iBAAiB,GAAG;AACjC,MAAE,UAAO,kBAAkB;AAC3B,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,eAAW;AAAA,EACb;AAEA,QAAM,cAAc,mBAAmB,kBAAkB,cAAc;AACvE,QAAM,UAAU,MAAQ,QAAK;AAAA,IAC3B,SAAS;AAAA,IACT,cAAc,eAAe,QAAQ;AAAA,IACrC,aAAa;AAAA,IACb,UAAU,CAAC,QAAQ;AACjB,UAAI,CAAC,IAAI,KAAK,EAAG,QAAO;AAAA,IAC1B;AAAA,EACF,CAAC;AAED,MAAM,YAAS,OAAO,GAAG;AACvB,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,UAAU,MAAQ,QAAK;AAAA,IAC3B,SAAS;AAAA,IACT,cAAc,OAAO,eAAe,QAAQ,IAAI;AAAA,IAChD,aAAa;AAAA,IACb,UAAU,CAAC,QAAQ;AACjB,YAAM,IAAI,OAAO,GAAG;AACpB,UAAI,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,SAAS,CAAC,OAAO,UAAU,CAAC,GAAG;AAC1D,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AAED,MAAM,YAAS,OAAO,GAAG;AACvB,IAAE,UAAO,kBAAkB;AAC3B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,mBAA6B,CAAC;AAClC,MAAI,mBAAmB,mBAAmB,aAAa,WAAW;AAChE,UAAM,wBAAwB,MAAQ,QAAK;AAAA,MACzC,SAAS;AAAA,MACT,eAAe,eAAe,oBAAoB,CAAC,GAAG,KAAK,IAAI;AAAA,MAC/D,aAAa;AAAA,MACb,UAAU,CAAC,QAAQ;AACjB,YAAI;AACF,2BAAiB,GAAG;AACpB;AAAA,QACF,SAAS,KAAK;AACZ,iBAAO,eAAe,QAAQ,IAAI,UAAU;AAAA,QAC9C;AAAA,MACF;AAAA,IACF,CAAC;AAED,QAAM,YAAS,qBAAqB,GAAG;AACrC,MAAE,UAAO,kBAAkB;AAC3B,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,uBAAmB,iBAAiB,qBAAqB;AAAA,EAC3D;AAEA,QAAM,OAAO,OAAO,OAAO,KAAK;AAChC,MAAIC,QAAmB,EAAE,aAAa,OAAO;AAC7C,MAAI,mBAAmB,mBAAmB,aAAa,UAAU;AAC/D,UAAM,WAAW,MAAQ,QAAK;AAAA,MAC5B,SAAS;AAAA,MACT,cAAc,aAAa,iBAAiB;AAAA,MAC5C,aAAa;AAAA,MACb,UAAU,CAAC,QAAQ;AACjB,cAAM,YAAY,IAAI,KAAK;AAC3B,YAAI,CAAC,UAAW,QAAO;AACvB,YAAI;AACF,gBAAM,MAAM,IAAI,IAAI,SAAS;AAC7B,cAAI,IAAI,aAAa,WAAW,IAAI,aAAa,UAAU;AACzD,mBAAO;AAAA,UACT;AACA;AAAA,QACF,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AACD,QAAM,YAAS,QAAQ,GAAG;AACxB,MAAE,UAAO,kBAAkB;AAC3B,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,IAAAA,QAAO;AAAA,MACL,aAAa;AAAA,MACb,eAAe,SAAS,KAAK,EAAE,QAAQ,QAAQ,EAAE;AAAA,IACnD;AAAA,EACF,WAAW,aAAa,gBAAgB,cAAc,YAAY,eAAe;AAC/E,IAAAA,QAAO;AAAA,MACL,aAAa;AAAA,MACb,eAAe,YAAY;AAAA,IAC7B;AAAA,EACF;AAEA,SAAO;AAAA,IACL,QAAQ,EAAE,gBAAgB,UAAU,MAAM,QAAQ,KAAK,GAAG,MAAM,kBAAkB,SAAS,KAAK;AAAA,IAChG,MAAAA;AAAA,EACF;AACF;AA1JA;AAAA;AAAA;AAEA;AAAA;AAAA;;;ACFA,SAAS,SAAS,MAAM,QAAAC,OAAM,SAAS,WAAW,SAAS,mBAAmB;AAA9E,IAEa;AAFb;AAAA;AAAA;AAEO,IAAM,YAAY;AAAA,MACvB;AAAA,MACA;AAAA,QACE,IAAI,KAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,MAAMA,MAAK,MAAM,EAAE,QAAQ;AAAA,QAC3B,aAAaA,MAAK,aAAa;AAAA,QAC/B,QAAQA,MAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,QAAQ;AAAA,QACjD,aAAaA,MAAK,cAAc,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,QACzD,cAAc,QAAQ,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QAC1D,oBAAoB,QAAQ,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QACvE,mBAAmB,QAAQ,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QACrE,kCAAkC,QAAQ,uCAAuC,EAC9E,QAAQ,EACR,QAAQ,IAAI;AAAA,QACf,YAAYA,MAAK,aAAa;AAAA,QAC9B,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,sBAAsB,YAAY,4BAA4B,EAAE,GAAG,MAAM,WAAW;AAAA,MACtF;AAAA,IACF;AAAA;AAAA;;;ACvBA,SAAS,WAAAC,UAAS,QAAAC,OAAM,aAAAC,YAAW,WAAAC,gBAAe;AAAlD,IAEa,WAUA,cAWA,cAgBA;AAvCb;AAAA;AAAA;AAEO,IAAM,YAAYH,SAAQ,QAAQ;AAAA,MACvC,IAAIC,MAAK,IAAI,EAAE,WAAW;AAAA,MAC1B,MAAMA,MAAK,MAAM,EAAE,QAAQ;AAAA,MAC3B,OAAOA,MAAK,OAAO,EAAE,QAAQ;AAAA,MAC7B,eAAeE,SAAQ,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,MAChE,OAAOF,MAAK,OAAO;AAAA,MACnB,WAAWC,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ;AAAA,MACnE,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ;AAAA,IACrE,CAAC;AAEM,IAAM,eAAeF,SAAQ,WAAW;AAAA,MAC7C,IAAIC,MAAK,IAAI,EAAE,WAAW;AAAA,MAC1B,WAAWC,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ;AAAA,MACnE,OAAOD,MAAK,OAAO,EAAE,QAAQ;AAAA,MAC7B,WAAWC,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ;AAAA,MACnE,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ;AAAA,MACnE,WAAWD,MAAK,YAAY;AAAA,MAC5B,WAAWA,MAAK,YAAY;AAAA,MAC5B,QAAQA,MAAK,SAAS,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,IAC1F,CAAC;AAEM,IAAM,eAAeD,SAAQ,WAAW;AAAA,MAC7C,IAAIC,MAAK,IAAI,EAAE,WAAW;AAAA,MAC1B,WAAWA,MAAK,YAAY,EAAE,QAAQ;AAAA,MACtC,YAAYA,MAAK,aAAa,EAAE,QAAQ;AAAA,MACxC,QAAQA,MAAK,SAAS,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,MACxF,aAAaA,MAAK,cAAc;AAAA,MAChC,cAAcA,MAAK,eAAe;AAAA,MAClC,SAASA,MAAK,UAAU;AAAA,MACxB,sBAAsBC,WAAU,2BAA2B,EAAE,cAAc,KAAK,CAAC;AAAA,MACjF,uBAAuBA,WAAU,4BAA4B,EAAE,cAAc,KAAK,CAAC;AAAA,MACnF,OAAOD,MAAK,OAAO;AAAA,MACnB,UAAUA,MAAK,UAAU;AAAA,MACzB,WAAWC,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ;AAAA,MACnE,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ;AAAA,IACrE,CAAC;AAEM,IAAM,oBAAoBF,SAAQ,gBAAgB;AAAA,MACvD,IAAIC,MAAK,IAAI,EAAE,WAAW;AAAA,MAC1B,YAAYA,MAAK,YAAY,EAAE,QAAQ;AAAA,MACvC,OAAOA,MAAK,OAAO,EAAE,QAAQ;AAAA,MAC7B,WAAWC,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ;AAAA,MACnE,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC;AAAA,MACzD,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC;AAAA,IAC3D,CAAC;AAAA;AAAA;;;AC9CD,SAAS,WAAAE,UAAS,QAAAC,OAAM,QAAAC,OAAM,aAAAC,YAAW,eAAAC,cAAa,aAAa;AAAnE,IAEa;AAFb;AAAA;AAAA;AAEO,IAAM,oBAAoBJ;AAAA,MAC/B;AAAA,MACA;AAAA,QACE,IAAIC,MAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,QAAQC,MAAK,SAAS,EAAE,QAAQ;AAAA,QAChC,MAAMA,MAAK,MAAM,EAAE,QAAQ,EAAE,QAAQ,gBAAgB;AAAA,QACrD,WAAWC,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,mBAAmBC,aAAY,0CAA0C,EAAE,GAAG,MAAM,QAAQ,MAAM,IAAI;AAAA,QACtG,SAAS,MAAM,8BAA8B,EAAE,GAAG,MAAM,IAAI;AAAA,MAC9D;AAAA,IACF;AAAA;AAAA;;;ACfA;AAAA,EAEE,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA;AAAA,EACA,SAAAC;AAAA,OACK;AATP,IAYa;AAZb;AAAA;AAAA;AAUA;AAEO,IAAM,SAASL;AAAA,MACpB;AAAA,MACA;AAAA,QACE,IAAIC,MAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,MAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,MAAMC,MAAK,MAAM,EAAE,QAAQ;AAAA,QAC3B,MAAMA,MAAK,MAAM,EAAE,QAAQ,EAAE,QAAQ,SAAS;AAAA,QAC9C,OAAOA,MAAK,OAAO;AAAA,QACnB,MAAMA,MAAK,MAAM;AAAA,QACjB,QAAQA,MAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,MAAM;AAAA,QAC/C,WAAWD,MAAK,YAAY,EAAE,WAAW,MAAmB,OAAO,EAAE;AAAA,QACrE,cAAcC,MAAK,cAAc;AAAA,QACjC,aAAaA,MAAK,cAAc,EAAE,QAAQ,EAAE,QAAQ,SAAS;AAAA,QAC7D,eAAe,MAAM,gBAAgB,EAAE,MAA+B,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAAA,QAC5F,eAAe,MAAM,gBAAgB,EAAE,MAA+B,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAAA,QAC5F,oBAAoBC,SAAQ,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QACvE,mBAAmBA,SAAQ,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QACrE,aAAa,MAAM,aAAa,EAAE,MAA+B,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAAA,QACvF,iBAAiBC,WAAU,qBAAqB,EAAE,cAAc,KAAK,CAAC;AAAA,QACtE,UAAU,MAAM,UAAU,EAAE,MAA+B;AAAA,QAC3D,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,kBAAkBC,OAAM,2BAA2B,EAAE,GAAG,MAAM,WAAW,MAAM,MAAM;AAAA,QACrF,qBAAqBA,OAAM,+BAA+B,EAAE,GAAG,MAAM,WAAW,MAAM,SAAS;AAAA,MACjG;AAAA,IACF;AAAA;AAAA;;;ACvCA,SAAS,WAAAC,UAAS,QAAAC,OAAM,QAAAC,QAAM,aAAAC,YAAW,eAAAC,cAAa,SAAAC,cAAa;AAAnE,IAGa;AAHb;AAAA;AAAA;AACA;AAEO,IAAM,qBAAqBL;AAAA,MAChC;AAAA,MACA;AAAA,QACE,IAAIC,MAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,MAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,eAAeC,OAAK,gBAAgB,EAAE,QAAQ;AAAA,QAC9C,aAAaA,OAAK,cAAc,EAAE,QAAQ;AAAA,QAC1C,QAAQA,OAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,QAAQ;AAAA,QACjD,gBAAgBA,OAAK,iBAAiB;AAAA,QACtC,WAAWC,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,2BAA2BC,aAAY,kDAAkD,EAAE;AAAA,UACzF,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,oBAAoBC,OAAM,0CAA0C,EAAE;AAAA,UACpE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,kBAAkBA,OAAM,wCAAwC,EAAE,GAAG,MAAM,WAAW,MAAM,MAAM;AAAA,MACpG;AAAA,IACF;AAAA;AAAA;;;AC5BA,SAAS,WAAAC,UAAS,QAAAC,OAAM,QAAAC,QAAM,aAAAC,YAAW,SAAAC,QAAO,eAAAC,cAAa,SAAAC,cAAa;AAA1E,IAGa;AAHb;AAAA;AAAA;AACA;AAEO,IAAM,4BAA4BN;AAAA,MACvC;AAAA,MACA;AAAA,QACE,IAAIC,MAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,MAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,eAAeC,OAAK,gBAAgB,EAAE,QAAQ;AAAA,QAC9C,aAAaA,OAAK,cAAc,EAAE,QAAQ;AAAA,QAC1C,eAAeA,OAAK,gBAAgB,EAAE,QAAQ;AAAA,QAC9C,OAAOE,OAAM,OAAO,EAAE,MAAsC;AAAA,QAC5D,iBAAiBF,OAAK,oBAAoB;AAAA,QAC1C,WAAWC,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,gBAAgBE,aAAY,wCAAwC,EAAE;AAAA,UACpE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,sBAAsBC,OAAM,oDAAoD,EAAE;AAAA,UAChF,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC5BA,SAAS,WAAAC,UAAS,QAAAC,OAAM,QAAAC,QAAM,aAAAC,YAAW,SAAAC,QAAO,SAAAC,QAAO,eAAAC,oBAAmB;AAA1E,IAGa;AAHb;AAAA;AAAA;AACA;AAEO,IAAM,UAAUN;AAAA,MACrB;AAAA,MACA;AAAA,QACE,IAAIC,MAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,MAAK,YAAY,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QAC3D,YAAYC,OAAK,aAAa,EAAE,QAAQ,EAAE,QAAQ,cAAc;AAAA,QAChE,WAAWA,OAAK,YAAY,EAAE,QAAQ;AAAA,QACtC,kBAAkBA,OAAK,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,MAAM;AAAA,QACrE,iBAAiBE,OAAM,kBAAkB,EAAE,MAAsC;AAAA,QACjF,WAAWD,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ;AAAA,QACnE,iBAAiBD,OAAK,oBAAoB;AAAA,QAC1C,WAAWC,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC;AAAA,QACzD,YAAYA,WAAU,eAAe,EAAE,cAAc,KAAK,CAAC;AAAA,QAC3D,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,oBAAoBG,aAAY,+BAA+B,EAAE,GAAG,MAAM,SAAS;AAAA,QACnF,uBAAuBD,OAAM,kCAAkC,EAAE;AAAA,UAC/D,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC5BA,SAAS,WAAAE,UAAS,QAAAC,OAAM,QAAAC,QAAM,aAAAC,YAAW,SAAAC,QAAO,SAAAC,QAAO,eAAAC,oBAAmB;AAA1E,IAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AAEO,IAAM,eAAeN;AAAA,MAC1B;AAAA,MACA;AAAA,QACE,IAAIC,MAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,UAAUA,MAAK,WAAW,EAAE,QAAQ,EAAE,WAAW,MAAM,QAAQ,EAAE;AAAA,QACjE,WAAWA,MAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,aAAaC,OAAK,cAAc,EAAE,QAAQ;AAAA,QAC1C,QAAQA,OAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,kBAAkB;AAAA,QAC3D,WAAWA,OAAK,YAAY,EAAE,QAAQ;AAAA,QACtC,kBAAkBA,OAAK,oBAAoB;AAAA,QAC3C,sBAAsBA,OAAK,wBAAwB;AAAA,QACnD,WAAWA,OAAK,YAAY;AAAA,QAC5B,aAAaA,OAAK,cAAc;AAAA,QAChC,cAAcA,OAAK,cAAc;AAAA,QACjC,sBAAsBE,OAAM,wBAAwB,EAAE,MAAsC;AAAA,QAC5F,iBAAiBF,OAAK,mBAAmB;AAAA,QACzC,sBAAsBC,WAAU,2BAA2B,EAAE,cAAc,KAAK,CAAC;AAAA,QACjF,uBAAuBA,WAAU,4BAA4B,EAAE,cAAc,KAAK,CAAC;AAAA,QACnF,gBAAgBF,MAAK,kBAAkB,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QACnE,kBAAkBC,OAAK,qBAAqB;AAAA,QAC5C,YAAYC,WAAU,eAAe,EAAE,cAAc,KAAK,CAAC;AAAA,QAC3D,kBAAkBD,OAAK,qBAAqB;AAAA,QAC5C,YAAYC,WAAU,eAAe,EAAE,cAAc,KAAK,CAAC;AAAA,QAC3D,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,iBAAiBG,aAAY,iCAAiC,EAAE,GAAG,MAAM,QAAQ;AAAA,QACjF,6BAA6BD,OAAM,+CAA+C,EAAE;AAAA,UAClF,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACxCA,SAAS,WAAAE,UAAS,QAAAC,OAAM,QAAAC,QAAM,aAAAC,YAAW,SAAAC,QAAO,SAAAC,cAAa;AAA7D,IAIa;AAJb;AAAA;AAAA;AACA;AACA;AAEO,IAAM,uBAAuBL;AAAA,MAClC;AAAA,MACA;AAAA,QACE,IAAIC,MAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,MAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,SAASA,MAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QACvF,kBAAkBA,MAAK,qBAAqB,EAAE,WAAW,MAAM,OAAO,IAAI,EAAE,UAAU,WAAW,CAAC;AAAA,QAClG,iBAAiBC,OAAK,oBAAoB;AAAA,QAC1C,QAAQA,OAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,OAAO;AAAA,QAChD,0BAA0BD,MAAK,8BAA8B;AAAA,QAC7D,aAAaG,OAAM,cAAc,EAAE,MAAgB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAAA,QACzE,cAAcA,OAAM,eAAe,EAAE,MAA+B,EAAE,QAAQ;AAAA,QAC9E,aAAaA,OAAM,cAAc,EAAE,MAA+B,EAAE,QAAQ;AAAA,QAC5E,WAAWD,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,wBAAwBE,OAAM,kDAAkD,EAAE;AAAA,UAChF,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,iBAAiBA,OAAM,0CAA0C,EAAE,GAAG,MAAM,SAAS,MAAM,SAAS;AAAA,MACtG;AAAA,IACF;AAAA;AAAA;;;AC3BA,SAAS,WAAAC,WAAS,QAAAC,OAAM,QAAAC,QAAM,aAAAC,aAAW,SAAAC,cAAa;AAAtD,IAIa;AAJb;AAAA;AAAA;AACA;AACA;AAEO,IAAM,eAAeJ;AAAA,MAC1B;AAAA,MACA;AAAA,QACE,IAAIC,MAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,SAASA,MAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QAC9D,WAAWA,MAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,MAAMC,OAAK,MAAM,EAAE,QAAQ;AAAA,QAC3B,SAASA,OAAK,UAAU,EAAE,QAAQ;AAAA,QAClC,YAAYC,YAAU,gBAAgB,EAAE,cAAc,KAAK,CAAC;AAAA,QAC5D,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC;AAAA,QACzD,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,YAAYC,OAAM,6BAA6B,EAAE,GAAG,MAAM,OAAO;AAAA,QACjE,iBAAiBA,OAAM,kCAAkC,EAAE,GAAG,MAAM,WAAW,MAAM,OAAO;AAAA,MAC9F;AAAA,IACF;AAAA;AAAA;;;ACpBA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,SAAAC,QAAO,QAAQ,SAAAC,cAAa;AAArE,IAIa;AAJb;AAAA;AAAA;AACA;AACA;AAEO,IAAM,oBAAoBL;AAAA,MAC/B;AAAA,MACA;AAAA,QACE,SAASC,OAAK,UAAU,EAAE,WAAW,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QACjE,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,aAAaC,OAAK,cAAc,EAAE,QAAQ;AAAA,QAC1C,WAAWA,OAAK,YAAY;AAAA,QAC5B,WAAWE,OAAM,YAAY,EAAE,MAA+B,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAAA,QACpF,WAAWH,OAAK,aAAa;AAAA,QAC7B,eAAeC,OAAK,iBAAiB;AAAA,QACrC,kBAAkB,OAAO,sBAAsB,EAAE,MAAM,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QACtF,mBAAmB,OAAO,uBAAuB,EAAE,MAAM,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QACxF,wBAAwB,OAAO,6BAA6B,EAAE,MAAM,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QACnG,gBAAgB,OAAO,oBAAoB,EAAE,MAAM,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QAClF,WAAWA,OAAK,YAAY;AAAA,QAC5B,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,iBAAiBE,OAAM,uCAAuC,EAAE,GAAG,MAAM,WAAW,MAAM,OAAO;AAAA,QACjG,mBAAmBA,OAAM,yCAAyC,EAAE,GAAG,MAAM,WAAW,MAAM,SAAS;AAAA,MACzG;AAAA,IACF;AAAA;AAAA;;;AC1BA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,SAAAC,QAAO,WAAAC,UAAS,SAAAC,eAAa;AAAtE,IAIa;AAJb;AAAA;AAAA;AACA;AACA;AAEO,IAAM,sBAAsBN;AAAA,MACjC;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,SAASA,OAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QAC9D,QAAQC,OAAK,QAAQ,EAAE,QAAQ;AAAA,QAC/B,eAAeA,OAAK,gBAAgB;AAAA,QACpC,QAAQA,OAAK,QAAQ;AAAA,QACrB,SAASE,OAAM,SAAS,EAAE,MAA+B;AAAA,QACzD,QAAQF,OAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,QAAQ;AAAA,QACjD,gBAAgBG,SAAQ,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QAC9D,sBAAsBH,OAAK,yBAAyB;AAAA,QACpD,oBAAoBA,OAAK,uBAAuB;AAAA,QAChD,gBAAgBA,OAAK,iBAAiB;AAAA,QACtC,OAAOD,OAAK,QAAQ;AAAA,QACpB,aAAaE,YAAU,gBAAgB,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QACpF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC;AAAA,QACzD,YAAYA,YAAU,eAAe,EAAE,cAAc,KAAK,CAAC;AAAA,QAC3D,OAAOD,OAAK,OAAO;AAAA,QACnB,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,uBAAuBG,QAAM,gDAAgD,EAAE;AAAA,UAC7E,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,qBAAqBA,QAAM,6CAA6C,EAAE;AAAA,UACxE,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,mBAAmBA,QAAM,2CAA2C,EAAE,GAAG,MAAM,SAAS,MAAM,WAAW;AAAA,MAC3G;AAAA,IACF;AAAA;AAAA;;;ACvCA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,SAAAC,QAAO,SAAAC,SAAO,WAAAC,UAAS,UAAAC,SAAQ,WAAAC,gBAAe;AAAvF,IAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AAEO,IAAM,gBAAgBR;AAAA,MAC3B;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,SAASA,OAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QAC9D,kBAAkBC,OAAK,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,WAAW;AAAA,QACzE,eAAeA,OAAK,gBAAgB;AAAA,QACpC,QAAQA,OAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,QAAQ;AAAA,QACjD,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC;AAAA,QACzD,YAAYA,YAAU,eAAe,EAAE,cAAc,KAAK,CAAC;AAAA,QAC3D,OAAOD,OAAK,OAAO;AAAA,QACnB,iBAAiBD,OAAK,mBAAmB,EAAE,WAAW,MAAM,oBAAoB,EAAE;AAAA,QAClF,UAAUK,SAAQ,WAAW;AAAA,QAC7B,QAAQJ,OAAK,QAAQ;AAAA,QACrB,WAAWE,OAAM,YAAY,EAAE,MAA+B;AAAA,QAC9D,YAAYA,OAAM,aAAa,EAAE,MAA+B;AAAA,QAChE,iBAAiBF,OAAK,mBAAmB;AAAA,QACzC,gBAAgBA,OAAK,kBAAkB;AAAA,QACvC,UAAUA,OAAK,WAAW;AAAA,QAC1B,QAAQA,OAAK,SAAS;AAAA,QACtB,UAAUK,QAAO,aAAa,EAAE,MAAM,SAAS,CAAC;AAAA,QAChD,WAAWL,OAAK,YAAY;AAAA,QAC5B,eAAeM,SAAQ,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,QAChE,eAAeN,OAAK,gBAAgB;AAAA,QACpC,eAAeA,OAAK,gBAAgB;AAAA,QACpC,WAAWA,OAAK,YAAY;AAAA,QAC5B,eAAeA,OAAK,iBAAiB;AAAA,QACrC,iBAAiBE,OAAM,kBAAkB,EAAE,MAA+B;AAAA,QAC1E,WAAWD,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,wBAAwBE,QAAM,0CAA0C,EAAE;AAAA,UACxE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC5CA,SAAS,WAAAI,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,SAAAC,QAAO,SAAAC,SAAO,eAAAC,oBAAmB;AAA1E,IAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AAEO,IAAM,oBAAoBN;AAAA,MAC/B;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,SAASA,OAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QAC9D,aAAaC,OAAK,cAAc,EAAE,QAAQ;AAAA,QAC1C,SAASA,OAAK,UAAU,EAAE,QAAQ;AAAA,QAClC,mBAAmBE,OAAM,qBAAqB,EAAE,MAA+B;AAAA,QAC/E,kBAAkBF,OAAK,oBAAoB;AAAA,QAC3C,WAAWD,OAAK,aAAa,EAAE,WAAW,MAAM,cAAc,EAAE;AAAA,QAChE,WAAWC,OAAK,YAAY;AAAA,QAC5B,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,2BAA2BG,aAAY,qDAAqD,EAAE;AAAA,UAC5F,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,wBAAwBD,QAAM,+CAA+C,EAAE;AAAA,UAC7E,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,uBAAuBA,QAAM,8CAA8C,EAAE;AAAA,UAC3E,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACtCA;AAAA,EAEE,WAAAE;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,OACK;AAPP,IAWa;AAXb;AAAA;AAAA;AAQA;AACA;AAEO,IAAM,QAAQJ;AAAA,MACnB;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,OAAOC,OAAK,OAAO,EAAE,QAAQ;AAAA,QAC7B,aAAaA,OAAK,aAAa;AAAA,QAC/B,OAAOA,OAAK,OAAO,EAAE,QAAQ,EAAE,QAAQ,MAAM;AAAA,QAC7C,QAAQA,OAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,SAAS;AAAA,QAClD,UAAUD,OAAK,WAAW,EAAE,WAAW,MAAmB,MAAM,EAAE;AAAA,QAClE,cAAcA,OAAK,gBAAgB,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QAC/D,WAAWE,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,YAAYC,QAAM,mBAAmB,EAAE,GAAG,MAAM,SAAS;AAAA,MAC3D;AAAA,IACF;AAAA;AAAA;;;AC5BA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,MAAM,SAAAC,eAAa;AAA5D,IAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AAEO,IAAM,WAAWJ;AAAA,MACtB;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,QAAQA,OAAK,SAAS,EAAE,WAAW,MAAM,MAAM,EAAE;AAAA,QACjD,MAAMC,OAAK,MAAM,EAAE,QAAQ;AAAA,QAC3B,aAAaA,OAAK,aAAa;AAAA,QAC/B,QAAQA,OAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,SAAS;AAAA,QAClD,aAAaD,OAAK,eAAe,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QAC7D,YAAY,KAAK,aAAa;AAAA,QAC9B,OAAOC,OAAK,OAAO;AAAA,QACnB,YAAYC,YAAU,eAAe,EAAE,cAAc,KAAK,CAAC;AAAA,QAC3D,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,YAAYC,QAAM,sBAAsB,EAAE,GAAG,MAAM,SAAS;AAAA,MAC9D;AAAA,IACF;AAAA;AAAA;;;ACxBA;AAAA,EACE,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,QAAAC;AAAA,OACK;AARP,IAYa;AAZb;AAAA;AAAA;AASA;AACA;AAEO,IAAM,oBAAoBH;AAAA,MAC/B;AAAA,MACA;AAAA,QACE,IAAIG,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,SAAS,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QAC7F,MAAMF,OAAK,MAAM,EAAE,QAAQ;AAAA,QAC3B,KAAKA,OAAK,KAAK;AAAA,QACf,SAASA,OAAK,UAAU;AAAA,QACxB,SAASA,OAAK,UAAU;AAAA,QACxB,UAAUF,QAAM,UAAU,EAAE,MAA+B;AAAA,QAC3D,WAAWF,SAAQ,YAAY,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,QACxD,WAAWK,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,mBAAmBJ,QAAM,wCAAwC,EAAE,GAAG,MAAM,WAAW,MAAM,SAAS;AAAA,QACtG,mBAAmBA,QAAM,wCAAwC,EAAE,GAAG,MAAM,WAAW,MAAM,SAAS;AAAA,MACxG;AAAA,IACF;AAAA;AAAA;;;AC/BA,SAAS,WAAAM,WAAS,QAAAC,QAAM,aAAAC,aAAW,SAAAC,SAAO,kBAAkB;AAA5D,IAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AAEO,IAAM,eAAeH;AAAA,MAC1B;AAAA,MACA;AAAA,QACE,WAAWC,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,SAAS,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QAC7F,QAAQA,OAAK,SAAS,EAAE,QAAQ,EAAE,WAAW,MAAM,MAAM,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QACpF,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,IAAI,WAAW,EAAE,SAAS,CAAC,MAAM,WAAW,MAAM,MAAM,EAAE,CAAC;AAAA,QAC3D,YAAYC,QAAM,2BAA2B,EAAE,GAAG,MAAM,SAAS;AAAA,QACjE,SAASA,QAAM,wBAAwB,EAAE,GAAG,MAAM,MAAM;AAAA,QACxD,YAAYA,QAAM,2BAA2B,EAAE,GAAG,MAAM,SAAS;AAAA,MACnE;AAAA,IACF;AAAA;AAAA;;;ACpBA;AAAA,EAEE,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,OACK;AAVP,IAiBa;AAjBb;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AAEO,IAAM,SAASP;AAAA,MACpB;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,WAAWA,OAAK,YAAY,EAAE,WAAW,MAAM,SAAS,EAAE;AAAA,QAC1D,QAAQA,OAAK,SAAS,EAAE,WAAW,MAAM,MAAM,EAAE;AAAA,QACjD,UAAUA,OAAK,WAAW,EAAE,WAAW,MAAmB,OAAO,EAAE;AAAA,QACnE,OAAOC,OAAK,OAAO,EAAE,QAAQ;AAAA,QAC7B,aAAaA,OAAK,aAAa;AAAA,QAC/B,QAAQA,OAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,SAAS;AAAA,QAClD,UAAUA,OAAK,UAAU,EAAE,QAAQ,EAAE,QAAQ,QAAQ;AAAA,QACrD,iBAAiBD,OAAK,mBAAmB,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QACrE,gBAAgBC,OAAK,kBAAkB;AAAA,QACvC,eAAeD,OAAK,iBAAiB,EAAE,WAAW,MAAM,cAAc,IAAI,EAAE,UAAU,WAAW,CAAC;AAAA,QAClG,gBAAgBA,OAAK,kBAAkB,EAAE,WAAW,MAAM,cAAc,IAAI,EAAE,UAAU,WAAW,CAAC;AAAA,QACpG,uBAAuBC,OAAK,0BAA0B;AAAA,QACtD,mBAAmBC,YAAU,uBAAuB,EAAE,cAAc,KAAK,CAAC;AAAA,QAC1E,kBAAkBF,OAAK,qBAAqB,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QACxE,iBAAiBC,OAAK,oBAAoB;AAAA,QAC1C,aAAaE,SAAQ,cAAc;AAAA,QACnC,YAAYF,OAAK,YAAY;AAAA,QAC7B,cAAcE,SAAQ,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QAC1D,aAAaF,OAAK,cAAc;AAAA,QAChC,0BAA0BG,QAAM,4BAA4B,EAAE,MAA+B;AAAA,QAC7F,WAAWF,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC;AAAA,QACzD,aAAaA,YAAU,gBAAgB,EAAE,cAAc,KAAK,CAAC;AAAA,QAC7D,aAAaA,YAAU,gBAAgB,EAAE,cAAc,KAAK,CAAC;AAAA,QAC7D,UAAUA,YAAU,aAAa,EAAE,cAAc,KAAK,CAAC;AAAA,QACvD,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,kBAAkBG,QAAM,2BAA2B,EAAE,GAAG,MAAM,WAAW,MAAM,MAAM;AAAA,QACrF,mBAAmBA,QAAM,oCAAoC,EAAE;AAAA,UAC7D,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,uBAAuBA,QAAM,yCAAyC,EAAE;AAAA,UACtE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,WAAWA,QAAM,2BAA2B,EAAE,GAAG,MAAM,WAAW,MAAM,QAAQ;AAAA,QAChF,YAAYA,QAAM,4BAA4B,EAAE,GAAG,MAAM,WAAW,MAAM,SAAS;AAAA,QACnF,eAAeC,aAAY,uBAAuB,EAAE,GAAG,MAAM,UAAU;AAAA,MACzE;AAAA,IACF;AAAA;AAAA;;;ACjEA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,SAAAC,SAAO,eAAAC,oBAAmB;AAAnE,IAGa;AAHb;AAAA;AAAA;AACA;AAEO,IAAM,SAASL;AAAA,MACpB;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QAC9F,MAAMC,OAAK,MAAM,EAAE,QAAQ;AAAA,QAC3B,OAAOA,OAAK,OAAO,EAAE,QAAQ;AAAA,QAC7B,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,YAAYC,QAAM,oBAAoB,EAAE,GAAG,MAAM,SAAS;AAAA,QAC1D,gBAAgBC,aAAY,yBAAyB,EAAE,GAAG,MAAM,WAAW,MAAM,IAAI;AAAA,MACvF;AAAA,IACF;AAAA;AAAA;;;ACjBA,SAAS,WAAAC,WAAS,QAAAC,QAAM,aAAAC,aAAW,SAAAC,SAAO,cAAAC,mBAAkB;AAA5D,IAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AAEO,IAAM,cAAcJ;AAAA,MACzB;AAAA,MACA;AAAA,QACE,SAASC,OAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QACvF,SAASA,OAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QACvF,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QAC9F,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,IAAIE,YAAW,EAAE,SAAS,CAAC,MAAM,SAAS,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC;AAAA,QACnF,UAAUD,QAAM,wBAAwB,EAAE,GAAG,MAAM,OAAO;AAAA,QAC1D,UAAUA,QAAM,wBAAwB,EAAE,GAAG,MAAM,OAAO;AAAA,QAC1D,YAAYA,QAAM,0BAA0B,EAAE,GAAG,MAAM,SAAS;AAAA,MAClE;AAAA,IACF;AAAA;AAAA;;;ACnBA,SAAS,WAAAE,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,SAAAC,SAAO,SAAAC,eAAa;AAA7D,IAIa;AAJb;AAAA;AAAA;AACA;AACA;AAEO,IAAM,YAAYL;AAAA,MACvB;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,MAAMC,OAAK,MAAM,EAAE,QAAQ;AAAA,QAC3B,oBAAoBD,OAAK,uBAAuB,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QAC5E,mBAAmBC,OAAK,sBAAsB;AAAA,QAC9C,QAAQA,OAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,SAAS;AAAA,QAClD,SAASE,QAAM,SAAS,EAAE,MAA+B,EAAE,QAAQ;AAAA,QACnE,cAAcF,OAAK,eAAe;AAAA,QAClC,iBAAiBA,OAAK,oBAAoB;AAAA,QAC1C,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC;AAAA,QACzD,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,sBAAsBE,QAAM,mCAAmC,EAAE;AAAA,UAC/D,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC3BA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,SAAAC,SAAO,cAAAC,mBAAkB;AAAlE,IAMa;AANb;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEO,IAAM,iBAAiBL;AAAA,MAC5B;AAAA,MACA;AAAA,QACE,WAAWC,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,SAASA,OAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QACvF,YAAYA,OAAK,aAAa,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QAChG,iBAAiBA,OAAK,oBAAoB,EAAE,WAAW,MAAM,OAAO,IAAI,EAAE,UAAU,WAAW,CAAC;AAAA,QAChG,gBAAgBC,OAAK,mBAAmB;AAAA,QACxC,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,IAAIE,YAAW,EAAE,SAAS,CAAC,MAAM,SAAS,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC;AAAA,QACzF,UAAUD,QAAM,2BAA2B,EAAE,GAAG,MAAM,OAAO;AAAA,QAC7D,aAAaA,QAAM,8BAA8B,EAAE,GAAG,MAAM,UAAU;AAAA,QACtE,YAAYA,QAAM,6BAA6B,EAAE,GAAG,MAAM,SAAS;AAAA,MACrE;AAAA,IACF;AAAA;AAAA;;;ACtBA,SAAS,WAAAE,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,SAAAC,eAAa;AAAtD,IAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AAEO,IAAM,gBAAgBJ;AAAA,MAC3B;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,SAASA,OAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QAC9D,eAAeA,OAAK,iBAAiB,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QACjE,cAAcC,OAAK,gBAAgB;AAAA,QACnC,MAAMA,OAAK,MAAM,EAAE,QAAQ;AAAA,QAC3B,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,UAAUC,QAAM,0BAA0B,EAAE,GAAG,MAAM,OAAO;AAAA,QAC5D,YAAYA,QAAM,4BAA4B,EAAE,GAAG,MAAM,SAAS;AAAA,MACpE;AAAA,IACF;AAAA;AAAA;;;ACrBA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,WAAAC,UAAS,aAAAC,aAAW,SAAAC,SAAO,eAAAC,qBAAmB;AAA5E,IAIa;AAJb;AAAA;AAAA;AACA;AACA;AAEO,IAAM,SAASN;AAAA,MACpB;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,UAAUC,OAAK,UAAU,EAAE,QAAQ;AAAA,QACnC,WAAWA,OAAK,YAAY,EAAE,QAAQ;AAAA,QACtC,aAAaA,OAAK,cAAc,EAAE,QAAQ;AAAA,QAC1C,UAAUC,SAAQ,WAAW,EAAE,QAAQ;AAAA,QACvC,QAAQD,OAAK,QAAQ,EAAE,QAAQ;AAAA,QAC/B,kBAAkBA,OAAK,mBAAmB;AAAA,QAC1C,kBAAkBD,OAAK,qBAAqB,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QACxE,iBAAiBC,OAAK,oBAAoB;AAAA,QAC1C,WAAWE,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,mBAAmBC,QAAM,4BAA4B,EAAE,GAAG,MAAM,WAAW,MAAM,SAAS;AAAA,QAC1F,oBAAoBA,QAAM,6BAA6B,EAAE,GAAG,MAAM,WAAW,MAAM,QAAQ;AAAA,QAC3F,oBAAoBC,cAAY,8BAA8B,EAAE,GAAG,MAAM,WAAW,MAAM,SAAS;AAAA,MACrG;AAAA,IACF;AAAA;AAAA;;;ACzBA,SAAS,WAAAC,WAAS,QAAAC,QAAM,aAAAC,aAAW,SAAAC,SAAO,eAAAC,qBAAmB;AAA7D,IAMa;AANb;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEO,IAAM,mBAAmBJ;AAAA,MAC9B;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,SAASA,OAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QACvF,SAASA,OAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QACvF,gBAAgBA,OAAK,kBAAkB,EAAE,WAAW,MAAM,cAAc,IAAI,EAAE,UAAU,WAAW,CAAC;AAAA,QACpG,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,iBAAiBC,QAAM,qCAAqC,EAAE,GAAG,MAAM,WAAW,MAAM,OAAO;AAAA,QAC/F,iBAAiBA,QAAM,qCAAqC,EAAE,GAAG,MAAM,cAAc;AAAA,QACrF,SAASC,cAAY,4BAA4B,EAAE,GAAG,MAAM,OAAO;AAAA,MACrE;AAAA,IACF;AAAA;AAAA;;;ACtBA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,WAAAC,UAAS,SAAAC,SAAO,SAAAC,SAAO,iBAAiB;AAAjF,IAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AAEO,IAAM,qBAAqBN;AAAA,MAChC;AAAA,MACA;AAAA,QACE,IAAI,UAAU,MAAM,EAAE,MAAM,SAAS,CAAC,EAAE,WAAW;AAAA,QACnD,WAAWC,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,OAAOA,OAAK,QAAQ,EAAE,QAAQ,EAAE,WAAW,MAAM,cAAc,EAAE;AAAA,QACjE,SAASA,OAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QAC9D,KAAKG,SAAQ,KAAK,EAAE,QAAQ;AAAA,QAC5B,WAAWF,OAAK,YAAY,EAAE,QAAQ;AAAA,QACtC,QAAQA,OAAK,QAAQ;AAAA,QACrB,OAAOA,OAAK,OAAO;AAAA,QACnB,OAAOA,OAAK,OAAO;AAAA,QACnB,SAASA,OAAK,SAAS;AAAA,QACvB,SAASG,QAAM,SAAS,EAAE,MAA+B;AAAA,QACzD,WAAWF,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,WAAWG,QAAM,kCAAkC,EAAE,GAAG,MAAM,OAAO,MAAM,GAAG;AAAA,QAC9E,eAAeA,QAAM,sCAAsC,EAAE,GAAG,MAAM,WAAW,MAAM,KAAK;AAAA,QAC5F,mBAAmBA,QAAM,0CAA0C,EAAE,GAAG,MAAM,WAAW,MAAM,SAAS;AAAA,MAC1G;AAAA,IACF;AAAA;AAAA;;;AC1BA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,WAAAC,UAAS,SAAAC,eAAa;AAA/D,IAOa;AAPb;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAM,aAAaL;AAAA,MACxB;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,SAASA,OAAK,UAAU,EAAE,QAAQ,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QAC9D,SAASA,OAAK,UAAU,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QACpD,WAAWA,OAAK,YAAY,EAAE,WAAW,MAAM,SAAS,EAAE;AAAA,QAC1D,QAAQA,OAAK,SAAS,EAAE,WAAW,MAAM,MAAM,EAAE;AAAA,QACjD,aAAaC,OAAK,cAAc;AAAA,QAChC,UAAUA,OAAK,UAAU,EAAE,QAAQ;AAAA,QACnC,OAAOA,OAAK,OAAO,EAAE,QAAQ;AAAA,QAC7B,aAAaE,SAAQ,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QACxD,cAAcA,SAAQ,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QAC1D,WAAWA,SAAQ,YAAY,EAAE,QAAQ;AAAA,QACzC,YAAYD,YAAU,eAAe,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ;AAAA,QACrE,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,oBAAoBE,QAAM,kCAAkC,EAAE,GAAG,MAAM,WAAW,MAAM,UAAU;AAAA,QAClG,yBAAyBA,QAAM,wCAAwC,EAAE;AAAA,UACvE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACjCA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,SAAAC,eAAa;AAAtD,IAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AAEO,IAAM,mBAAmBJ;AAAA,MAC9B;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,YAAYA,OAAK,aAAa,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACvE,eAAeA,OAAK,iBAAiB,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QACjE,cAAcC,OAAK,gBAAgB;AAAA,QACnC,MAAMA,OAAK,MAAM,EAAE,QAAQ;AAAA,QAC3B,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,YAAYC,QAAM,+BAA+B,EAAE,GAAG,MAAM,SAAS;AAAA,QACrE,aAAaA,QAAM,gCAAgC,EAAE,GAAG,MAAM,UAAU;AAAA,QACxE,oBAAoBA,QAAM,wCAAwC,EAAE;AAAA,UAClE,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACzBA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,SAAAC,SAAO,SAAAC,eAAa;AAA7D,IAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AAEO,IAAM,cAAcL;AAAA,MACzB;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,WAAWC,OAAK,YAAY,EAAE,QAAQ,EAAE,QAAQ,QAAQ;AAAA,QACxD,SAASA,OAAK,UAAU,EAAE,QAAQ;AAAA,QAClC,QAAQA,OAAK,QAAQ,EAAE,QAAQ;AAAA,QAC/B,YAAYA,OAAK,aAAa,EAAE,QAAQ;AAAA,QACxC,UAAUA,OAAK,WAAW,EAAE,QAAQ;AAAA,QACpC,SAASD,OAAK,UAAU,EAAE,WAAW,MAAM,OAAO,EAAE;AAAA,QACpD,OAAOA,OAAK,QAAQ,EAAE,WAAW,MAAM,cAAc,EAAE;AAAA,QACvD,SAASG,QAAM,SAAS,EAAE,MAA+B;AAAA,QACzD,WAAWD,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,mBAAmBE,QAAM,kCAAkC,EAAE,GAAG,MAAM,WAAW,MAAM,SAAS;AAAA,QAChG,UAAUA,QAAM,yBAAyB,EAAE,GAAG,MAAM,KAAK;AAAA,QACzD,WAAWA,QAAM,iCAAiC,EAAE,GAAG,MAAM,YAAY,MAAM,QAAQ;AAAA,MACzF;AAAA,IACF;AAAA;AAAA;;;ACzBA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,WAAAC,UAAS,SAAAC,SAAO,eAAAC,qBAAmB;AAA5E,IAIa;AAJb;AAAA;AAAA;AACA;AACA;AAEO,IAAM,iBAAiBN;AAAA,MAC5B;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,WAAWA,OAAK,YAAY,EAAE,QAAQ,EAAE,WAAW,MAAM,UAAU,EAAE;AAAA,QACrE,MAAMC,OAAK,MAAM,EAAE,QAAQ;AAAA,QAC3B,UAAUA,OAAK,UAAU,EAAE,QAAQ,EAAE,QAAQ,iBAAiB;AAAA,QAC9D,aAAaA,OAAK,cAAc;AAAA,QAChC,eAAeE,SAAQ,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,QAC5D,aAAaF,OAAK,aAAa;AAAA,QAC/B,kBAAkBD,OAAK,qBAAqB,EAAE,WAAW,MAAM,OAAO,IAAI,EAAE,UAAU,WAAW,CAAC;AAAA,QAClG,iBAAiBC,OAAK,oBAAoB;AAAA,QAC1C,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,MAClF;AAAA,MACA,CAAC,WAAW;AAAA,QACV,YAAYE,QAAM,6BAA6B,EAAE,GAAG,MAAM,SAAS;AAAA,QACnE,oBAAoBA,QAAM,sCAAsC,EAAE,GAAG,MAAM,WAAW,MAAM,QAAQ;AAAA,QACpG,eAAeC,cAAY,iCAAiC,EAAE,GAAG,MAAM,WAAW,MAAM,IAAI;AAAA,MAC9F;AAAA,IACF;AAAA;AAAA;;;ACxBA,SAAS,WAAAC,WAAS,QAAAC,QAAM,QAAAC,QAAM,aAAAC,aAAW,WAAAC,WAAS,SAAAC,SAAO,SAAAC,SAAO,eAAAC,qBAAmB;AAAnF,IAIa;AAJb;AAAA;AAAA;AACA;AACA;AAEO,IAAM,wBAAwBP;AAAA,MACnC;AAAA,MACA;AAAA,QACE,IAAIC,OAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,QAC1C,UAAUA,OAAK,WAAW,EAAE,QAAQ,EAAE,WAAW,MAAM,eAAe,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,QACjG,SAASG,UAAQ,SAAS,EAAE,QAAQ;AAAA,QACpC,UAAUC,QAAM,UAAU,EAAE,MAA+B,EAAE,QAAQ;AAAA,QACrE,aAAaH,OAAK,cAAc,EAAE,QAAQ;AAAA,QAC1C,kBAAkBD,OAAK,qBAAqB,EAAE,WAAW,MAAM,OAAO,IAAI,EAAE,UAAU,WAAW,CAAC;AAAA,QAClG,iBAAiBC,OAAK,oBAAoB;AAAA,QAC1C,WAAWC,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,QAChF,WAAWA,YAAU,cAAc,EAAE,cAAc,KAAK,CAAC;AAAA,MAC3D;AAAA,MACA,CAAC,WAAW;AAAA,QACV,WAAWG,QAAM,oCAAoC,EAAE,GAAG,MAAM,UAAU,MAAM,SAAS;AAAA,QACzF,cAAcA,QAAM,0CAA0C,EAAE,GAAG,MAAM,WAAW;AAAA,QACpF,iBAAiBC,cAAY,2CAA2C,EAAE,GAAG,MAAM,UAAU,MAAM,OAAO;AAAA,MAC5G;AAAA,IACF;AAAA;AAAA;;;ACtBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAC,eAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;AC/BA,SAAS,kBAAkB;AAC3B,SAAS,WAAW,iBAAiB;AACrC,SAAS,WAAW,iBAAiB;AACrC,SAAS,UAAU,eAAe;AAClC,OAAO,cAAc;AAOrB,SAAS,iBAAiB,OAAwB;AAChD,SAAO,2BAA2B,KAAK,KAAK;AAC9C;AAEA,SAAS,gBAAgB,OAAuB;AAC9C,MAAI,CAAC,iBAAiB,KAAK,EAAG,OAAM,IAAI,MAAM,0BAA0B,KAAK,EAAE;AAC/E,SAAO,IAAI,MAAM,WAAW,KAAM,IAAM,CAAC;AAC3C;AAEA,SAAS,aAAa,OAAuB;AAC3C,SAAO,IAAI,MAAM,WAAW,KAAK,IAAI,CAAC;AACxC;AAEA,SAAS,yBAAyB,SAA2B;AAC3D,SAAO,QACJ,MAAM,0BAA0B,EAChC,IAAI,CAAC,cAAc,UAAU,KAAK,CAAC,EACnC,OAAO,CAAC,cAAc,UAAU,SAAS,CAAC;AAC/C;AAaO,SAAS,SAAS,KAAa;AACpC,QAAM,MAAM,SAAS,GAAG;AACxB,SAAO,UAAU,KAAK,EAAE,uBAAO,CAAC;AAClC;AAEA,eAAe,qBAAwC;AACrD,QAAM,UAAU,MAAM,QAAQ,mBAAmB,EAAE,eAAe,KAAK,CAAC;AACxE,SAAO,QACJ,OAAO,CAAC,UAAU,MAAM,OAAO,KAAK,MAAM,KAAK,SAAS,MAAM,CAAC,EAC/D,IAAI,CAAC,UAAU,MAAM,IAAI,EACzB,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AACtC;AAYA,eAAe,8BAAgE;AAC7E,MAAI;AACF,UAAM,MAAM,MAAM,SAAS,yBAAyB,MAAM;AAC1D,UAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,QAAI,CAAC,MAAM,QAAQ,OAAO,OAAO,EAAG,QAAO,CAAC;AAC5C,WAAO,OAAO,QACX,IAAI,CAAC,OAAO,eAAe;AAC1B,UAAI,OAAO,OAAO,QAAQ,SAAU,QAAO;AAC3C,UAAI,OAAO,OAAO,SAAS,YAAY,CAAC,OAAO,SAAS,MAAM,IAAI,EAAG,QAAO;AAC5E,YAAM,QAAQ,OAAO,UAAU,MAAM,GAAG,IAAI,OAAO,MAAM,GAAG,IAAI;AAChE,aAAO,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,cAAc,MAAM,MAAM,MAAM;AAAA,IACzE,CAAC,EACA,OAAO,CAAC,UAA0C,UAAU,IAAI;AAAA,EACrE,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEA,eAAe,4BAA+C;AAC5D,QAAM,UAAU,MAAM,4BAA4B;AAClD,SAAO,QAAQ,IAAI,CAAC,UAAU,MAAM,QAAQ;AAC9C;AAEA,eAAe,yBAAyB,eAAwC;AAC9E,SAAO,SAAS,IAAI,IAAI,gBAAgB,aAAa,IAAI,YAAY,GAAG,GAAG,MAAM;AACnF;AAEA,eAAe,yBAAyB,gBAA6C;AACnF,QAAM,iBAAiB,MAAM,4BAA4B;AACzD,QAAM,kBAAkB,IAAI,IAAI,eAAe,IAAI,CAAC,UAAU,CAAC,MAAM,UAAU,MAAM,KAAK,CAAC,CAAC;AAC5F,SAAO,CAAC,GAAG,cAAc,EAAE,KAAK,CAAC,MAAM,UAAU;AAC/C,UAAM,YAAY,gBAAgB,IAAI,IAAI;AAC1C,UAAM,aAAa,gBAAgB,IAAI,KAAK;AAC5C,QAAI,cAAc,UAAa,eAAe,OAAW,QAAO,KAAK,cAAc,KAAK;AACxF,QAAI,cAAc,OAAW,QAAO;AACpC,QAAI,eAAe,OAAW,QAAO;AACrC,QAAI,cAAc,WAAY,QAAO,KAAK,cAAc,KAAK;AAC7D,WAAO,YAAY;AAAA,EACrB,CAAC;AACH;AAIA,eAAe,iBAAiB,KAAkB,QAA4C;AAC5F,QAAM,IAAI,OAAO,OAAO;AACxB,MAAI;AACF,UAAM,OAAO;AACb,UAAM,IAAI,OAAO,QAAQ;AAAA,EAC3B,SAAS,OAAO;AACd,QAAI;AACF,YAAM,IAAI,OAAO,UAAU;AAAA,IAC7B,QAAQ;AAAA,IAER;AACA,UAAM;AAAA,EACR;AACF;AAEA,eAAe,yBACb,KACA,gBACwB;AACxB,QAAM,OAAO,MAAM,IAAI;AAAA,IACrB,0BAA0B,cAAc;AAAA,EAC1C;AACA,QAAM,QAAQ,OAAO,KAAK,CAAC,GAAG,cAAc,OAAO,GAAG;AACtD,SAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAEA,SAAS,sBAAsB,OAA0C;AACvE,MAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,KAAK,SAAS,GAAG;AACrE,WAAO,KAAK,MAAM,KAAK;AAAA,EACzB;AACA,SAAO,KAAK,IAAI;AAClB;AAEA,eAAe,4BACb,KACqE;AACrE,MAAI,uBAAuB,MAAM,6BAA6B,GAAG;AACjE,MAAI,CAAC,sBAAsB;AACzB,UAAM,gBAAgB,gBAAgB,SAAS;AAC/C,UAAM,iBAAiB,gBAAgB,wBAAwB;AAC/D,UAAM,IAAI,OAAO,+BAA+B,aAAa,EAAE;AAC/D,UAAM,IAAI;AAAA,MACR,8BAA8B,aAAa,IAAI,cAAc;AAAA,IAC/D;AACA,2BAAwB,MAAM,6BAA6B,GAAG,KAAM;AAAA,EACtE;AAEA,QAAM,cAAc,MAAM,6BAA6B,KAAK,oBAAoB;AAChF,SAAO,EAAE,sBAAsB,YAAY;AAC7C;AAEA,eAAe,4BACb,KACA,gBACA,aACA,eACA,MACkB;AAClB,QAAM,aAAuB,CAAC;AAC9B,MAAI,YAAY,IAAI,MAAM,EAAG,YAAW,KAAK,UAAU,aAAa,IAAI,CAAC,EAAE;AAC3E,MAAI,YAAY,IAAI,MAAM,EAAG,YAAW,KAAK,UAAU,aAAa,aAAa,CAAC,EAAE;AACpF,MAAI,WAAW,WAAW,EAAG,QAAO;AAEpC,QAAM,OAAO,MAAM,IAAI;AAAA,IACrB,wBAAwB,cAAc,UAAU,WAAW,KAAK,MAAM,CAAC;AAAA,EACzE;AACA,SAAO,KAAK,SAAS;AACvB;AAEA,eAAe,4BACb,KACA,gBACA,aACA,eACA,MACA,cACe;AACf,QAAM,gBAA0B,CAAC;AACjC,QAAM,eAAyB,CAAC;AAEhC,MAAI,YAAY,IAAI,MAAM,GAAG;AAC3B,kBAAc,KAAK,gBAAgB,MAAM,CAAC;AAC1C,iBAAa,KAAK,aAAa,IAAI,CAAC;AAAA,EACtC;AACA,MAAI,YAAY,IAAI,MAAM,GAAG;AAC3B,kBAAc,KAAK,gBAAgB,MAAM,CAAC;AAC1C,iBAAa,KAAK,aAAa,aAAa,CAAC;AAAA,EAC/C;AACA,MAAI,YAAY,IAAI,YAAY,GAAG;AACjC,UAAM,kBAAkB,MAAM,yBAAyB,KAAK,cAAc;AAC1E,UAAM,YAAY,oBAAoB,OAClC,sBAAsB,YAAY,IAClC,KAAK,IAAI,kBAAkB,GAAG,sBAAsB,YAAY,CAAC;AACrE,kBAAc,KAAK,gBAAgB,YAAY,CAAC;AAChD,iBAAa,KAAK,aAAa,OAAO,SAAS,CAAC,CAAC;AAAA,EACnD;AAEA,MAAI,cAAc,WAAW,EAAG;AAEhC,QAAM,IAAI;AAAA,IACR,eAAe,cAAc,KAAK,cAAc,KAAK,IAAI,CAAC,aAAa,aAAa,KAAK,IAAI,CAAC;AAAA,EAChG;AACF;AAEA,eAAe,+BACb,KACA,mBACe;AACf,MAAI,kBAAkB,WAAW,EAAG;AAEpC,QAAM,2BAA2B,MAAM,yBAAyB,iBAAiB;AACjF,QAAM,iBAAiB,MAAM,4BAA4B;AACzD,QAAM,yBAAyB,IAAI;AAAA,IACjC,eAAe,IAAI,CAAC,UAAU,CAAC,MAAM,UAAU,sBAAsB,MAAM,YAAY,CAAC,CAAC;AAAA,EAC3F;AAEA,QAAM,MAAM,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC;AACpC,MAAI;AACF,UAAM,EAAE,sBAAsB,YAAY,IAAI,MAAM,4BAA4B,GAAG;AACnF,UAAM,iBAAiB,GAAG,gBAAgB,oBAAoB,CAAC,IAAI,gBAAgB,wBAAwB,CAAC;AAE5G,eAAW,iBAAiB,0BAA0B;AACpD,YAAM,mBAAmB,MAAM,yBAAyB,aAAa;AACrE,YAAM,OAAO,WAAW,QAAQ,EAAE,OAAO,gBAAgB,EAAE,OAAO,KAAK;AACvE,YAAM,gBAAgB,MAAM;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,UAAI,cAAe;AAEnB,YAAM,iBAAiB,KAAK,YAAY;AACtC,mBAAW,aAAa,yBAAyB,gBAAgB,GAAG;AAClE,gBAAM,IAAI,OAAO,SAAS;AAAA,QAC5B;AAEA,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,uBAAuB,IAAI,aAAa,KAAK,KAAK,IAAI;AAAA,QACxD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,UAAE;AACA,UAAM,IAAI,IAAI;AAAA,EAChB;AACF;AAEA,eAAe,0BAA0B,gBAAwD;AAC/F,QAAM,SAAS,oBAAI,IAAoB;AAEvC,QAAM,QAAQ;AAAA,IACZ,eAAe,IAAI,OAAO,kBAAkB;AAC1C,YAAM,UAAU,MAAM,yBAAyB,aAAa;AAC5D,YAAM,OAAO,WAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAC9D,aAAO,IAAI,MAAM,aAAa;AAAA,IAChC,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,eAAe,6BACb,KACA,sBACsB;AACtB,QAAM,UAAU,MAAM,IAAI;AAAA,IACxB;AAAA;AAAA;AAAA,6BAGyB,aAAa,oBAAoB,CAAC;AAAA,2BACpC,aAAa,wBAAwB,CAAC;AAAA;AAAA,EAE/D;AACA,SAAO,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,OAAO,WAAW,CAAC;AAC5D;AAEA,eAAe,YACb,KACA,WACkB;AAClB,QAAM,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKM,SAAS;AAAA;AAAA;AAGlC,SAAO,KAAK,CAAC,GAAG,UAAU;AAC5B;AAEA,eAAe,aACb,KACA,WACA,YACkB;AAClB,QAAM,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKM,SAAS;AAAA,4BACR,UAAU;AAAA;AAAA;AAGpC,SAAO,KAAK,CAAC,GAAG,UAAU;AAC5B;AAEA,eAAe,YACb,KACA,WACkB;AAClB,QAAM,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAOK,SAAS;AAAA;AAAA;AAGjC,SAAO,KAAK,CAAC,GAAG,UAAU;AAC5B;AAEA,eAAe,iBACb,KACA,gBACkB;AAClB,QAAM,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAMK,cAAc;AAAA;AAAA;AAGtC,SAAO,KAAK,CAAC,GAAG,UAAU;AAC5B;AAEA,eAAe,iCACb,KACA,WACkB;AAClB,QAAM,aAAa,UAAU,QAAQ,QAAQ,GAAG,EAAE,KAAK;AAEvD,QAAM,mBAAmB,WAAW,MAAM,6CAA6C;AACvF,MAAI,kBAAkB;AACpB,WAAO,YAAY,KAAK,iBAAiB,CAAC,CAAC;AAAA,EAC7C;AAEA,QAAM,iBAAiB,WAAW;AAAA,IAChC;AAAA,EACF;AACA,MAAI,gBAAgB;AAClB,WAAO,aAAa,KAAK,eAAe,CAAC,GAAG,eAAe,CAAC,CAAC;AAAA,EAC/D;AAEA,QAAM,mBAAmB,WAAW,MAAM,yDAAyD;AACnG,MAAI,kBAAkB;AACpB,WAAO,YAAY,KAAK,iBAAiB,CAAC,CAAC;AAAA,EAC7C;AAEA,QAAM,qBAAqB,WAAW,MAAM,kDAAkD;AAC9F,MAAI,oBAAoB;AACtB,WAAO,iBAAiB,KAAK,mBAAmB,CAAC,CAAC;AAAA,EACpD;AAGA,SAAO;AACT;AAEA,eAAe,+BACb,KACA,kBACkB;AAClB,QAAM,aAAa,yBAAyB,gBAAgB;AAC5D,MAAI,WAAW,WAAW,EAAG,QAAO;AAEpC,aAAW,aAAa,YAAY;AAClC,UAAM,UAAU,MAAM,iCAAiC,KAAK,SAAS;AACrE,QAAI,CAAC,QAAS,QAAO;AAAA,EACvB;AAEA,SAAO;AACT;AAEA,eAAe,sBACb,KACA,sBACA,qBACmB;AACnB,QAAM,eAAe,gBAAgB,oBAAoB;AACzD,QAAM,iBAAiB,GAAG,YAAY,IAAI,gBAAgB,wBAAwB,CAAC;AACnF,QAAM,cAAc,MAAM,6BAA6B,KAAK,oBAAoB;AAEhF,MAAI,YAAY,IAAI,MAAM,GAAG;AAC3B,UAAMC,QAAO,MAAM,IAAI,OAA2B,oBAAoB,cAAc,cAAc;AAClG,WAAOA,MAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,OAAO,CAAC,SAAyB,QAAQ,IAAI,CAAC;AAAA,EACnF;AAEA,MAAI,YAAY,IAAI,MAAM,GAAG;AAC3B,UAAMA,QAAO,MAAM,IAAI,OAA2B,oBAAoB,cAAc,cAAc;AAClG,UAAM,yBAAyB,MAAM,0BAA0B,mBAAmB;AAClF,UAAM,oBAAoBA,MACvB,IAAI,CAAC,QAAQ,uBAAuB,IAAI,IAAI,IAAI,CAAC,EACjD,OAAO,CAAC,SAAyB,QAAQ,IAAI,CAAC;AAEjD,QAAI,kBAAkB,SAAS,GAAG;AAEhC,UAAI,kBAAkB,WAAWA,MAAK,OAAQ,QAAO;AAGrD,aAAO;AAAA,IACT;AAGA,QAAI,YAAY,IAAI,YAAY,GAAG;AACjC,YAAM,iBAAiB,MAAM,4BAA4B;AACzD,UAAI,eAAe,SAAS,GAAG;AAC7B,cAAM,aAAa,MAAM,IAAI;AAAA,UAC3B,0BAA0B,cAAc;AAAA,QAC1C;AACA,cAAM,gBAAgB,OAAO,WAAW,CAAC,GAAG,cAAc,EAAE;AAC5D,YAAI,OAAO,SAAS,aAAa,KAAK,iBAAiB,GAAG;AACxD,iBAAO,eACJ,OAAO,CAAC,UAAU,oBAAoB,SAAS,MAAM,QAAQ,CAAC,EAC9D,OAAO,CAAC,UAAU,MAAM,gBAAgB,aAAa,EACrD,IAAI,CAAC,UAAU,MAAM,QAAQ,EAC7B,MAAM,GAAGA,MAAK,MAAM;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,OAAO,MAAM,IAAI,OAAyB,kBAAkB,cAAc,cAAc;AAC9F,QAAM,wBAAwB,MAAM,0BAA0B;AAC9D,QAAM,iBAAiB,KACpB,IAAI,CAAC,QAAQ,sBAAsB,IAAI,KAAK,CAAC,CAAC,EAC9C,OAAO,CAAC,SAAyB,QAAQ,IAAI,CAAC;AACjD,MAAI,eAAe,SAAS,EAAG,QAAO;AAEtC,SAAO,oBAAoB,MAAM,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,CAAC;AAC9D;AAOA,eAAsB,iCACpB,KAC0C;AAC1C,QAAM,QAAQ,MAAM,kBAAkB,GAAG;AACzC,MAAI,MAAM,WAAW,qBAAqB,MAAM,WAAW,sBAAsB;AAC/E,WAAO,EAAE,oBAAoB,CAAC,GAAG,qBAAqB,CAAC,EAAE;AAAA,EAC3D;AAEA,QAAM,MAAM,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC;AACpC,QAAM,qBAA+B,CAAC;AAEtC,MAAI;AACF,UAAM,iBAAiB,MAAM,4BAA4B;AACzD,UAAM,qBAAqB,IAAI,IAAI,eAAe,IAAI,CAAC,UAAU,CAAC,MAAM,UAAU,MAAM,YAAY,CAAC,CAAC;AACtG,UAAM,uBAAuB,MAAM,6BAA6B,GAAG;AACnE,QAAI,CAAC,sBAAsB;AACzB,aAAO,EAAE,oBAAoB,qBAAqB,MAAM,kBAAkB;AAAA,IAC5E;AAEA,UAAM,cAAc,MAAM,6BAA6B,KAAK,oBAAoB;AAChF,UAAM,iBAAiB,GAAG,gBAAgB,oBAAoB,CAAC,IAAI,gBAAgB,wBAAwB,CAAC;AAE5G,eAAW,iBAAiB,MAAM,mBAAmB;AACnD,YAAM,mBAAmB,MAAM,yBAAyB,aAAa;AACrE,YAAM,iBAAiB,MAAM,+BAA+B,KAAK,gBAAgB;AACjF,UAAI,CAAC,eAAgB;AAErB,YAAM,OAAO,WAAW,QAAQ,EAAE,OAAO,gBAAgB,EAAE,OAAO,KAAK;AACvE,YAAM,eAAe,mBAAmB,IAAI,aAAa,KAAK,KAAK,IAAI;AACvE,YAAM,iBAAiB,YAAY,IAAI,MAAM,IACzC,MAAM,IAAI;AAAA,QACR,0BAA0B,cAAc,iBAAiB,aAAa,IAAI,CAAC;AAAA,MAC7E,IACA,CAAC;AACL,YAAM,iBAAiB,YAAY,IAAI,MAAM,IACzC,MAAM,IAAI;AAAA,QACR,0BAA0B,cAAc,iBAAiB,aAAa,aAAa,CAAC;AAAA,MACtF,IACA,CAAC;AACL,UAAI,eAAe,SAAS,KAAK,eAAe,SAAS,GAAG;AAC1D,YAAI,YAAY,IAAI,YAAY,GAAG;AACjC,gBAAM,wBAAwB,OAAO,eAAe,CAAC,GAAG,cAAc,EAAE;AACxE,cAAI,eAAe,SAAS,KAAK,OAAO,SAAS,qBAAqB,KAAK,wBAAwB,cAAc;AAC/G,kBAAM,IAAI;AAAA,cACR,UAAU,cAAc,qBAAqB,aAAa,OAAO,YAAY,CAAC,CAAC,iBAAiB,aAAa,IAAI,CAAC,qBAAqB,aAAa,OAAO,YAAY,CAAC,CAAC;AAAA,YAC3K;AAAA,UACF;AAEA,gBAAM,wBAAwB,OAAO,eAAe,CAAC,GAAG,cAAc,EAAE;AACxE,cAAI,eAAe,SAAS,KAAK,OAAO,SAAS,qBAAqB,KAAK,wBAAwB,cAAc;AAC/G,kBAAM,IAAI;AAAA,cACR,UAAU,cAAc,qBAAqB,aAAa,OAAO,YAAY,CAAC,CAAC,iBAAiB,aAAa,aAAa,CAAC,qBAAqB,aAAa,OAAO,YAAY,CAAC,CAAC;AAAA,YACpL;AAAA,UACF;AAAA,QACF;AAEA,2BAAmB,KAAK,aAAa;AACrC;AAAA,MACF;AAEA,YAAM,gBAA0B,CAAC;AACjC,YAAM,eAAyB,CAAC;AAEhC,UAAI,YAAY,IAAI,MAAM,GAAG;AAC3B,sBAAc,KAAK,gBAAgB,MAAM,CAAC;AAC1C,qBAAa,KAAK,aAAa,IAAI,CAAC;AAAA,MACtC;AACA,UAAI,YAAY,IAAI,MAAM,GAAG;AAC3B,sBAAc,KAAK,gBAAgB,MAAM,CAAC;AAC1C,qBAAa,KAAK,aAAa,aAAa,CAAC;AAAA,MAC/C;AACA,UAAI,YAAY,IAAI,YAAY,GAAG;AACjC,sBAAc,KAAK,gBAAgB,YAAY,CAAC;AAChD,qBAAa,KAAK,aAAa,OAAO,YAAY,CAAC,CAAC;AAAA,MACtD;AAEA,UAAI,cAAc,WAAW,EAAG;AAEhC,YAAM,IAAI;AAAA,QACR,eAAe,cAAc,KAAK,cAAc,KAAK,IAAI,CAAC,aAAa,aAAa,KAAK,IAAI,CAAC;AAAA,MAChG;AACA,yBAAmB,KAAK,aAAa;AAAA,IACvC;AAAA,EACF,UAAE;AACA,UAAM,IAAI,IAAI;AAAA,EAChB;AAEA,QAAM,YAAY,MAAM,kBAAkB,GAAG;AAC7C,SAAO;AAAA,IACL;AAAA,IACA,qBACE,UAAU,WAAW,oBAAoB,UAAU,oBAAoB,CAAC;AAAA,EAC5E;AACF;AAEA,eAAe,6BAA6B,KAA0D;AACpG,QAAM,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA,wBAIG,wBAAwB;AAAA;AAG9C,MAAI,KAAK,WAAW,EAAG,QAAO;AAE9B,QAAM,gBAAgB,KAAK,KAAK,CAAC,EAAE,WAAW,MAAM,eAAe,SAAS;AAC5E,MAAI,cAAe,QAAO,cAAc;AAExC,QAAM,eAAe,KAAK,KAAK,CAAC,EAAE,WAAW,MAAM,eAAe,QAAQ;AAC1E,MAAI,aAAc,QAAO,aAAa;AAEtC,SAAO,KAAK,CAAC,GAAG,cAAc;AAChC;AAEA,eAAsB,kBAAkB,KAAsC;AAC5E,QAAM,MAAM,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC;AAEpC,MAAI;AACF,UAAM,sBAAsB,MAAM,mBAAmB;AACrD,UAAM,mBAAmB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAM/B,UAAM,aAAa,iBAAiB,CAAC,GAAG,SAAS;AAEjD,UAAM,uBAAuB,MAAM,6BAA6B,GAAG;AACnE,QAAI,CAAC,sBAAsB;AACzB,UAAI,aAAa,GAAG;AAClB,eAAO;AAAA,UACL,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,mBAAmB,CAAC;AAAA,UACpB,mBAAmB;AAAA,UACnB,QAAQ;AAAA,QACV;AAAA,MACF;AAEA,aAAO;AAAA,QACL,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA,mBAAmB,CAAC;AAAA,QACpB,mBAAmB;AAAA,QACnB,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,UAAM,oBAAoB,MAAM,sBAAsB,KAAK,sBAAsB,mBAAmB;AACpG,UAAM,oBAAoB,oBAAoB,OAAO,CAAC,SAAS,CAAC,kBAAkB,SAAS,IAAI,CAAC;AAChG,QAAI,kBAAkB,WAAW,GAAG;AAClC,aAAO;AAAA,QACL,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,IACV;AAAA,EACF,UAAE;AACA,UAAM,IAAI,IAAI;AAAA,EAChB;AACF;AAEA,eAAsB,uBAAuB,KAA4B;AACvE,QAAM,eAAe,MAAM,kBAAkB,GAAG;AAChD,MAAI,aAAa,WAAW,WAAY;AAExC,QAAM,MAAM,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC;AAEpC,MAAI;AACF,UAAM,KAAK,UAAU,GAAG;AACxB,UAAM,UAAU,IAAI,EAAE,kBAAkB,kBAAkB,CAAC;AAAA,EAC7D,UAAE;AACA,UAAM,IAAI,IAAI;AAAA,EAChB;AAEA,MAAI,QAAQ,MAAM,kBAAkB,GAAG;AACvC,MAAI,MAAM,WAAW,WAAY;AAEjC,QAAM,SAAS,MAAM,iCAAiC,GAAG;AACzD,MAAI,OAAO,mBAAmB,SAAS,GAAG;AACxC,YAAQ,MAAM,kBAAkB,GAAG;AACnC,QAAI,MAAM,WAAW,WAAY;AAAA,EACnC;AAEA,MAAI,MAAM,WAAW,qBAAqB,MAAM,WAAW,sBAAsB;AAC/E,UAAM,IAAI,MAAM,wFAAwF;AAAA,EAC1G;AAEA,QAAM,+BAA+B,KAAK,MAAM,iBAAiB;AAEjE,QAAM,aAAa,MAAM,kBAAkB,GAAG;AAC9C,MAAI,WAAW,WAAW,YAAY;AACpC,UAAM,IAAI;AAAA,MACR,uCAAuC,WAAW,kBAAkB,KAAK,IAAI,CAAC;AAAA,IAChF;AAAA,EACF;AACF;AAOA,eAAsB,uBAAuB,KAAgD;AAC3F,QAAM,MAAM,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC;AAEpC,MAAI;AACF,UAAM,uBAAuB,MAAM,6BAA6B,GAAG;AAEnE,UAAM,mBAAmB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAO/B,UAAM,aAAa,iBAAiB,CAAC,GAAG,SAAS;AAEjD,QAAI,sBAAsB;AACxB,aAAO,EAAE,UAAU,OAAO,QAAQ,oBAAoB,WAAW;AAAA,IACnE;AAEA,QAAI,aAAa,GAAG;AAClB,aAAO,EAAE,UAAU,OAAO,QAAQ,kCAAkC,WAAW;AAAA,IACjF;AAEA,UAAM,KAAK,UAAU,GAAG;AACxB,UAAM,mBAAmB,IAAI,IAAI,gBAAgB,YAAY,GAAG,EAAE;AAClE,UAAM,UAAU,IAAI,EAAE,iBAAiB,CAAC;AAExC,WAAO,EAAE,UAAU,MAAM,QAAQ,qBAAqB,YAAY,EAAE;AAAA,EACtE,UAAE;AACA,UAAM,IAAI,IAAI;AAAA,EAChB;AACF;AAEA,eAAsB,uBACpB,KACA,cAC+B;AAC/B,MAAI,CAAC,2BAA2B,KAAK,YAAY,GAAG;AAClD,UAAM,IAAI,MAAM,yBAAyB,YAAY,EAAE;AAAA,EACzD;AAEA,QAAM,MAAM,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC;AACpC,MAAI;AACF,UAAM,WAAW,MAAM;AAAA,yDAC8B,YAAY;AAAA;AAEjE,QAAI,SAAS,SAAS,EAAG,QAAO;AAEhC,UAAM,IAAI,OAAO,oBAAoB,YAAY,GAAG;AACpD,WAAO;AAAA,EACT,UAAE;AACA,UAAM,IAAI,IAAI;AAAA,EAChB;AACF;AA7tBA,IAOM,mBACA,0BACA;AATN;AAAA;AAAA;AAKA,IAAAC;AAEA,IAAM,oBAAoB,IAAI,IAAI,gBAAgB,YAAY,GAAG,EAAE;AACnE,IAAM,2BAA2B;AACjC,IAAM,0BAA0B,IAAI,IAAI,mCAAmC,YAAY,GAAG,EAAE;AAAA;AAAA;;;ACT5F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAC,YAAA;AAAA;AAAA;AAAA;AAYA,IAAAC;AAAA;AAAA;;;ACZA,SAAS,cAAAC,aAAY,eAAAC,oBAAmB;AACxC,YAAYC,QAAO;AACnB,OAAO,QAAQ;AACf,SAAS,KAAK,IAAI,IAAI,cAAc;AAIpC,SAAS,UAAU,OAAe;AAChC,SAAOF,YAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AACxD;AAEA,SAAS,oBAAoB;AAC3B,SAAO,iBAAiBC,aAAY,EAAE,EAAE,SAAS,KAAK,CAAC;AACzD;AAEA,SAAS,aAAa,YAAqB;AACzC,QAAM,SAAS,WAAW,UAAU;AACpC,MAAI,QAAQ,IAAI,aAAc,QAAO,QAAQ,IAAI;AACjD,MAAI,QAAQ,SAAS,SAAS,cAAc,OAAO,SAAS,kBAAkB;AAC5E,WAAO,OAAO,SAAS;AAAA,EACzB;AACA,MAAI,QAAQ,SAAS,SAAS,qBAAqB;AACjD,UAAM,OAAO,OAAO,SAAS,wBAAwB;AACrD,WAAO,4CAA4C,IAAI;AAAA,EACzD;AACA,SAAO;AACT;AAEA,SAAS,eAAe,YAAqB,iBAA0B;AACrE,MAAI,gBAAiB,QAAO,gBAAgB,QAAQ,QAAQ,EAAE;AAC9D,QAAM,SAAS,WAAW,UAAU;AACpC,MAAI,QAAQ,KAAK,gBAAgB,cAAc,OAAO,KAAK,eAAe;AACxE,WAAO,OAAO,KAAK,cAAc,QAAQ,QAAQ,EAAE;AAAA,EACrD;AACA,QAAM,OAAO,QAAQ,OAAO,QAAQ;AACpC,QAAM,OAAO,QAAQ,OAAO,QAAQ;AACpC,QAAM,aAAa,SAAS,YAAY,cAAc;AACtD,SAAO,UAAU,UAAU,IAAI,IAAI;AACrC;AAEA,eAAsB,mBAAmB,MAKtC;AACD,QAAM,aAAa,kBAAkB,KAAK,MAAM;AAChD,QAAM,SAAS,WAAW,UAAU;AACpC,MAAI,CAAC,QAAQ;AACX,IAAE,OAAI,MAAM,sBAAsB,UAAU,SAAS,GAAG,KAAK,mBAAmB,CAAC,SAAS;AAC1F;AAAA,EACF;AAEA,MAAI,OAAO,OAAO,mBAAmB,iBAAiB;AACpD,IAAE,OAAI,KAAK,iGAAiG;AAC5G;AAAA,EACF;AAEA,QAAM,QAAQ,aAAa,UAAU;AACrC,MAAI,CAAC,OAAO;AACV,IAAE,OAAI;AAAA,MACJ;AAAA,IACF;AACA;AAAA,EACF;AAEA,QAAM,KAAK,SAAS,KAAK;AACzB,MAAI;AACF,UAAM,qBAAqB,MAAM,GAC9B,OAAO,EACP,KAAK,iBAAiB,EACtB,MAAM,GAAG,kBAAkB,MAAM,gBAAgB,CAAC,EAClD,KAAK,CAAC,SAAS,KAAK,MAAM;AAE7B,QAAI,qBAAqB,KAAK,CAAC,KAAK,OAAO;AACzC,MAAE,OAAI,KAAK,qFAAqF;AAChG;AAAA,IACF;AAEA,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM,GACH,OAAO,OAAO,EACd,IAAI,EAAE,WAAW,KAAK,WAAW,IAAI,CAAC,EACtC;AAAA,MACC;AAAA,QACE,GAAG,QAAQ,YAAY,eAAe;AAAA,QACtC,OAAO,QAAQ,SAAS;AAAA,QACxB,OAAO,QAAQ,UAAU;AAAA,QACzB,GAAG,QAAQ,WAAW,GAAG;AAAA,MAC3B;AAAA,IACF;AAEF,UAAM,QAAQ,kBAAkB;AAChC,UAAM,eAAe,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,gBAAgB,EAAE,CAAC;AAC3E,UAAM,UAAU,MAAM,GACnB,OAAO,OAAO,EACd,OAAO;AAAA,MACN,YAAY;AAAA,MACZ,WAAW,UAAU,KAAK;AAAA,MAC1B,kBAAkB;AAAA,MAClB,WAAW,IAAI,KAAK,KAAK,IAAI,IAAI,eAAe,KAAK,KAAK,GAAI;AAAA,MAC9D,iBAAiB;AAAA,IACnB,CAAC,EACA,UAAU,EACV,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;AAEzB,UAAM,UAAU,eAAe,YAAY,KAAK,OAAO;AACvD,UAAM,YAAY,GAAG,OAAO,WAAW,KAAK;AAC5C,IAAE,OAAI,QAAQ,+BAA+B;AAC7C,IAAE,OAAI,QAAQ,eAAe,GAAG,KAAK,SAAS,CAAC,EAAE;AACjD,IAAE,OAAI,QAAQ,YAAY,GAAG,IAAI,QAAQ,UAAU,YAAY,CAAC,CAAC,EAAE;AAAA,EACrE,SAAS,KAAK;AACZ,IAAE,OAAI,MAAM,sCAAsC,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC,EAAE;AACpG,IAAE,OAAI,KAAK,oFAAoF;AAAA,EACjG;AACF;AAnHA;AAAA;AAAA;AAIA,IAAAE;AACA;AAAA;AAAA;;;ACLA,OAAOC,SAAQ;AAaR,SAAS,0BAAgC;AAC9C,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA,GAAG,cAAc,IAAI,CAAC,SAASA,IAAG,KAAK,IAAI,CAAC;AAAA,IAC5CA,IAAG,KAAK,8UAA2D;AAAA,IACnEA,IAAG,KAAKA,IAAG,MAAM,KAAK,OAAO,EAAE,CAAC;AAAA,IAChC;AAAA,EACF;AAEA,UAAQ,IAAI,MAAM,KAAK,IAAI,CAAC;AAC9B;AAvBA,IAEM,eASA;AAXN;AAAA;AAAA;AAEA,IAAM,gBAAgB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,IAAM,UAAU;AAAA;AAAA;;;ACHT,SAAS,oBAAoB,YAAkC;AACpE,MAAI,0BAA0B,UAAU,GAAG;AACzC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,UAAU,uBAAuB,UAAU;AACjD,QAAM,aAAa,8BAA8B,OAAO;AAExD,MAAI,YAAY;AACd,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,4CAA4C,OAAO;AAAA,MAC5D,YAAY,sBAAsB,OAAO;AAAA,IAC3C;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS,2DAA2D,OAAO;AAAA,IAC3E,WAAW;AAAA,IACX,QAAQ,MAAM;AACZ,2BAAqB,UAAU;AAAA,IACjC;AAAA,IACA,YAAY,+BAA+B,OAAO;AAAA,EACpD;AACF;AAvCA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGO,SAAS,YAAY,YAAkC;AAC5D,QAAM,WAAW,kBAAkB,UAAU;AAE7C,MAAI,CAAC,aAAa,UAAU,GAAG;AAC7B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,4BAA4B,QAAQ;AAAA,MAC7C,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF;AAEA,MAAI;AACF,eAAW,UAAU;AACrB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,mBAAmB,QAAQ;AAAA,IACtC;AAAA,EACF,SAAS,KAAK;AACZ,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,mBAAmB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,MAC5E,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF;AACF;AAhCA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGA,SAAS,eAAe,MAAc;AACpC,QAAM,aAAa,KAAK,KAAK,EAAE,YAAY;AAC3C,SAAO,eAAe,eAAe,eAAe,eAAe,eAAe;AACpF;AAEO,SAAS,oBAAoB,QAAsC;AACxE,QAAM,OAAO,OAAO,OAAO;AAC3B,QAAM,WAAW,OAAO,OAAO;AAC/B,QAAMC,QAAO,OAAO;AAEpB,MAAI,SAAS,iBAAiB;AAC5B,QAAI,CAAC,eAAe,OAAO,OAAO,IAAI,GAAG;AACvC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,uDAAuD,OAAO,OAAO,IAAI;AAAA,QAClF,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,SACJ,QAAQ,IAAI,oBAAoB,KAAK,KACrC,QAAQ,IAAI,4BAA4B,KAAK;AAC/C,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF;AAEA,MAAIA,MAAK,gBAAgB,cAAc,CAACA,MAAK,eAAe;AAC1D,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF;AAEA,MAAI,aAAa,UAAU;AACzB,QAAIA,MAAK,gBAAgB,cAAc,CAACA,MAAK,eAAe;AAC1D,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,IACF;AACA,QAAI;AACF,YAAM,MAAM,IAAI,IAAIA,MAAK,aAAa;AACtC,UAAI,IAAI,aAAa,UAAU;AAC7B,eAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,WAAW;AAAA,UACX,YAAY;AAAA,QACd;AAAA,MACF;AAAA,IACF,QAAQ;AACN,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS,QAAQ,IAAI,IAAI,QAAQ,uBAAuBA,MAAK,WAAW;AAAA,EAC1E;AACF;AA1FA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAC,sBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,OAAOC,SAAQ;AAKf,eAAsB,cAAc,QAAyB,YAA2C;AACtG,MAAI,OAAO,SAAS,SAAS,YAAY;AACvC,QAAI,CAAC,OAAO,SAAS,kBAAkB;AACrC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,IACF;AAEA,QAAI;AACF,YAAM,EAAE,UAAAC,UAAS,IAAI,MAAM;AAC3B,YAAM,KAAKA,UAAS,OAAO,SAAS,gBAAgB;AACpD,YAAM,GAAG,QAAQ,UAAU;AAC3B,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,IACF,SAAS,KAAK;AACZ,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,iCAAiC,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,QAC1F,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,SAAS,qBAAqB;AAChD,UAAM,UAAU,uBAAuB,OAAO,SAAS,yBAAyB,UAAU;AAC1F,UAAM,eAAe;AACrB,QAAI,CAACD,IAAG,WAAW,OAAO,GAAG;AAC3B,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,sDAAsD,YAAY;AAAA,QAC3E,WAAW;AAAA,QACX,QAAQ,MAAM;AACZ,UAAAA,IAAG,UAAU,cAAc,EAAE,WAAW,KAAK,CAAC;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,qCAAqC,OAAO,UAAU,OAAO,SAAS,oBAAoB;AAAA,IACrG;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS,0BAA0B,OAAO,OAAO,SAAS,IAAI,CAAC;AAAA,IAC/D,WAAW;AAAA,IACX,YAAY;AAAA,EACd;AACF;AAlEA;AAAA;AAAA;AAGA,IAAAE;AAAA;AAAA;;;ACAA,eAAsB,SAAS,QAA+C;AAC5E,MAAI,CAAC,OAAO,KAAK;AACf,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF;AAEA,MAAI,CAAC,OAAO,IAAI,QAAQ;AACtB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,GAAG,OAAO,IAAI,QAAQ;AAAA,MAC/B,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF;AAEA,MAAI;AACF,QAAI,OAAO,IAAI,aAAa,UAAU;AACpC,YAAM,MAAM,MAAM,MAAM,yCAAyC;AAAA,QAC/D,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,aAAa,OAAO,IAAI;AAAA,UACxB,qBAAqB;AAAA,UACrB,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU;AAAA,UACnB,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,QAC5C,CAAC;AAAA,MACH,CAAC;AACD,UAAI,IAAI,MAAM,IAAI,WAAW,KAAK;AAChC,eAAO,EAAE,MAAM,gBAAgB,QAAQ,QAAQ,SAAS,0BAA0B;AAAA,MACpF;AACA,UAAI,IAAI,WAAW,KAAK;AACtB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,WAAW;AAAA,UACX,YAAY;AAAA,QACd;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,8BAA8B,IAAI,MAAM;AAAA,MACnD;AAAA,IACF,OAAO;AACL,YAAM,MAAM,MAAM,MAAM,oCAAoC;AAAA,QAC1D,SAAS,EAAE,eAAe,UAAU,OAAO,IAAI,MAAM,GAAG;AAAA,MAC1D,CAAC;AACD,UAAI,IAAI,IAAI;AACV,eAAO,EAAE,MAAM,gBAAgB,QAAQ,QAAQ,SAAS,0BAA0B;AAAA,MACpF;AACA,UAAI,IAAI,WAAW,KAAK;AACtB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,WAAW;AAAA,UACX,YAAY;AAAA,QACd;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,8BAA8B,IAAI,MAAM;AAAA,MACnD;AAAA,IACF;AAAA,EACF,QAAQ;AACN,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,IACX;AAAA,EACF;AACF;AArFA;AAAA;AAAA;AAAA;AAAA;;;ACAA,OAAOC,SAAQ;AAKR,SAAS,SAAS,QAAyB,YAAkC;AAClF,QAAM,SAAS,uBAAuB,OAAO,QAAQ,QAAQ,UAAU;AACvE,QAAM,cAAc;AAEpB,MAAI,CAACA,IAAG,WAAW,MAAM,GAAG;AAC1B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,iCAAiC,WAAW;AAAA,MACrD,WAAW;AAAA,MACX,QAAQ,MAAM;AACZ,QAAAA,IAAG,UAAU,aAAa,EAAE,WAAW,KAAK,CAAC;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AAEA,MAAI;AACF,IAAAA,IAAG,WAAW,aAAaA,IAAG,UAAU,IAAI;AAC5C,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,8BAA8B,WAAW;AAAA,IACpD;AAAA,EACF,QAAQ;AACN,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,kCAAkC,MAAM;AAAA,MACjD,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF;AACF;AArCA;AAAA;AAAA;AAGA,IAAAC;AAAA;AAAA;;;ACHA,OAAO,SAAS;AAET,SAAS,UAAU,MAA+D;AACvF,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAM,SAAS,IAAI,aAAa;AAChC,WAAO,KAAK,SAAS,CAAC,QAA+B;AACnD,UAAI,IAAI,SAAS,cAAc;AAC7B,gBAAQ,EAAE,WAAW,OAAO,OAAO,QAAQ,IAAI,qBAAqB,CAAC;AAAA,MACvE,OAAO;AACL,gBAAQ,EAAE,WAAW,OAAO,OAAO,IAAI,QAAQ,CAAC;AAAA,MAClD;AAAA,IACF,CAAC;AACD,WAAO,KAAK,aAAa,MAAM;AAC7B,aAAO,MAAM,MAAM,QAAQ,EAAE,WAAW,KAAK,CAAC,CAAC;AAAA,IACjD,CAAC;AACD,WAAO,OAAO,MAAM,WAAW;AAAA,EACjC,CAAC;AACH;AAjBA;AAAA;AAAA;AAAA;AAAA;;;ACIA,eAAsB,UAAU,QAA+C;AAC7E,QAAM,OAAO,OAAO,OAAO;AAC3B,QAAM,SAAS,MAAM,UAAU,IAAI;AAEnC,MAAI,OAAO,WAAW;AACpB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,QAAQ,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS,OAAO,SAAS,QAAQ,IAAI;AAAA,IACrC,WAAW;AAAA,IACX,YAAY,2BAA2B,IAAI,mBAAmB,IAAI;AAAA,EACpE;AACF;AAvBA;AAAA;AAAA;AACA;AAAA;AAAA;;;ACDA,SAAS,eAAAC,oBAAmB;AAC5B,OAAOC,SAAQ;AACf,OAAOC,WAAU;AAKjB,SAAS,gBAAgB,KAA4B;AACnD,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,CAAC,QAAS,QAAO;AAErB,MAAI,oBAAoB,KAAK,OAAO,GAAG;AACrC,WAAO,OAAO,KAAK,SAAS,KAAK;AAAA,EACnC;AAEA,MAAI;AACF,UAAM,UAAU,OAAO,KAAK,SAAS,QAAQ;AAC7C,QAAI,QAAQ,WAAW,GAAI,QAAO;AAAA,EACpC,QAAQ;AAAA,EAER;AAEA,MAAI,OAAO,WAAW,SAAS,MAAM,MAAM,IAAI;AAC7C,WAAO,OAAO,KAAK,SAAS,MAAM;AAAA,EACpC;AACA,SAAO;AACT;AAEA,SAAS,mBACP,MACA,QACa;AACb,QAAM,oCACJ,OAAO,SAAS,SAAS,cAAc,OAAO,QAAQ,eAAe;AACvE,MAAI,CAAC,kCAAmC,QAAO;AAE/C,MAAI,KAAK,WAAW,OAAQ,QAAO;AACnC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,SAAS,GAAG,KAAK,OAAO;AAAA,IACxB,YAAY,KAAK,aACb,GAAG,KAAK,UAAU,2CAClB;AAAA,EACN;AACF;AAEO,SAAS,aAAa,QAAyB,YAAkC;AACtF,QAAM,WAAW,OAAO,QAAQ;AAChC,MAAI,aAAa,mBAAmB;AAClC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,GAAG,QAAQ;AAAA,MACpB,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF;AAEA,QAAM,eAAe,QAAQ,IAAI;AACjC,MAAI,gBAAgB,aAAa,KAAK,EAAE,SAAS,GAAG;AAClD,QAAI,CAAC,gBAAgB,YAAY,GAAG;AAClC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SACE;AAAA,QACF,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,kBAAkB,QAAQ,IAAI;AACpC,QAAM,iBACJ,mBAAmB,gBAAgB,KAAK,EAAE,SAAS,IAC/C,gBAAgB,KAAK,IACrB,OAAO,QAAQ,eAAe;AACpC,QAAM,cAAc,uBAAuB,gBAAgB,UAAU;AAErE,MAAI,CAACD,IAAG,WAAW,WAAW,GAAG;AAC/B,WAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,wCAAwC,WAAW;AAAA,QAC5D,WAAW;AAAA,QACX,QAAQ,MAAM;AACZ,UAAAA,IAAG,UAAUC,MAAK,QAAQ,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAC3D,UAAAD,IAAG,cAAc,aAAaD,aAAY,EAAE,EAAE,SAAS,QAAQ,GAAG;AAAA,YAChE,UAAU;AAAA,YACV,MAAM;AAAA,UACR,CAAC;AACD,cAAI;AACF,YAAAC,IAAG,UAAU,aAAa,GAAK;AAAA,UACjC,QAAQ;AAAA,UAER;AAAA,QACF;AAAA,QACA,YAAY;AAAA,MACd;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI;AACJ,MAAI;AACF,UAAMA,IAAG,aAAa,aAAa,MAAM;AAAA,EAC3C,SAAS,KAAK;AACZ,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,oCAAoC,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,MAC7F,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF;AAEA,MAAI,CAAC,gBAAgB,GAAG,GAAG;AACzB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,2BAA2B,WAAW;AAAA,MAC/C,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,qDAAqD,WAAW;AAAA,IAC3E;AAAA,IACA;AAAA,EACF;AACF;AAjJA;AAAA;AAAA;AAKA,IAAAE;AAAA;AAAA;;;ACLA,OAAOC,SAAQ;AAKR,SAAS,aAAa,QAAyB,YAAkC;AACtF,MAAI,OAAO,QAAQ,aAAa,cAAc;AAC5C,UAAM,UAAU,uBAAuB,OAAO,QAAQ,UAAU,SAAS,UAAU;AACnF,QAAI,CAACA,IAAG,WAAW,OAAO,GAAG;AAC3B,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,2CAA2C,OAAO;AAAA,QAC3D,WAAW;AAAA,QACX,QAAQ,MAAM;AACZ,UAAAA,IAAG,UAAU,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,QAC3C;AAAA,QACA,YAAY;AAAA,MACd;AAAA,IACF;AAEA,QAAI;AACF,MAAAA,IAAG,WAAW,SAASA,IAAG,UAAU,IAAI;AACxC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,mCAAmC,OAAO;AAAA,MACrD;AAAA,IACF,QAAQ;AACN,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,4CAA4C,OAAO;AAAA,QAC5D,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,OAAO,QAAQ,GAAG,OAAO,KAAK;AAC7C,QAAM,SAAS,OAAO,QAAQ,GAAG,OAAO,KAAK;AAC7C,MAAI,CAAC,UAAU,CAAC,QAAQ;AACtB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS,iCAAiC,MAAM,YAAY,MAAM;AAAA,IAClE,WAAW;AAAA,IACX,YAAY;AAAA,EACd;AACF;AA1DA;AAAA;AAAA;AAGA,IAAAC;AAAA;AAAA;;;ACHA;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACjBA,YAAYC,QAAO;AACnB,OAAOC,SAAQ;AAuBf,eAAsB,OAAO,MAImC;AAC9D,0BAAwB;AACxB,EAAE,SAAMA,IAAG,OAAOA,IAAG,MAAM,oBAAoB,CAAC,CAAC;AAEjD,QAAM,aAAa,kBAAkB,KAAK,MAAM;AAChD,QAAM,UAAyB,CAAC;AAGhC,QAAM,YAAY,YAAY,KAAK,MAAM;AACzC,UAAQ,KAAK,SAAS;AACtB,cAAY,SAAS;AAErB,MAAI,UAAU,WAAW,QAAQ;AAC/B,WAAO,aAAa,OAAO;AAAA,EAC7B;AAEA,MAAI;AACJ,MAAI;AACF,aAAS,WAAW,KAAK,MAAM;AAAA,EACjC,SAAS,KAAK;AACZ,UAAM,aAA0B;AAAA,MAC9B,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,0BAA0B,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,MACnF,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AACA,YAAQ,KAAK,UAAU;AACvB,gBAAY,UAAU;AACtB,WAAO,aAAa,OAAO;AAAA,EAC7B;AAGA,QAAM,uBAAuB,oBAAoB,MAAM;AACvD,UAAQ,KAAK,oBAAoB;AACjC,cAAY,oBAAoB;AAGhC,QAAM,YAAY,oBAAoB,KAAK,MAAM;AACjD,UAAQ,KAAK,SAAS;AACtB,cAAY,SAAS;AACrB,QAAM,YAAY,WAAW,IAAI;AAGjC,QAAM,gBAAgB,aAAa,QAAQ,UAAU;AACrD,UAAQ,KAAK,aAAa;AAC1B,cAAY,aAAa;AACzB,QAAM,YAAY,eAAe,IAAI;AAGrC,QAAM,gBAAgB,aAAa,QAAQ,UAAU;AACrD,UAAQ,KAAK,aAAa;AAC1B,cAAY,aAAa;AACzB,QAAM,YAAY,eAAe,IAAI;AAGrC,QAAM,WAAW,MAAM,cAAc,QAAQ,UAAU;AACvD,UAAQ,KAAK,QAAQ;AACrB,cAAY,QAAQ;AACpB,QAAM,YAAY,UAAU,IAAI;AAGhC,QAAM,YAAY,MAAM,SAAS,MAAM;AACvC,UAAQ,KAAK,SAAS;AACtB,cAAY,SAAS;AAGrB,QAAM,YAAY,SAAS,QAAQ,UAAU;AAC7C,UAAQ,KAAK,SAAS;AACtB,cAAY,SAAS;AACrB,QAAM,YAAY,WAAW,IAAI;AAGjC,QAAM,aAAa,MAAM,UAAU,MAAM;AACzC,UAAQ,KAAK,UAAU;AACvB,cAAY,UAAU;AAGtB,SAAO,aAAa,OAAO;AAC7B;AAEA,SAAS,YAAY,QAA2B;AAC9C,QAAM,OAAO,YAAY,OAAO,MAAM;AACtC,EAAE,OAAI,QAAQ,GAAG,IAAI,IAAIA,IAAG,KAAK,OAAO,IAAI,CAAC,KAAK,OAAO,OAAO,EAAE;AAClE,MAAI,OAAO,WAAW,UAAU,OAAO,YAAY;AACjD,IAAE,OAAI,QAAQ,KAAKA,IAAG,IAAI,OAAO,UAAU,CAAC,EAAE;AAAA,EAChD;AACF;AAEA,eAAe,YACb,QACA,MACe;AACf,MAAI,OAAO,WAAW,UAAU,CAAC,OAAO,aAAa,CAAC,OAAO,OAAQ;AACrE,MAAI,CAAC,KAAK,OAAQ;AAElB,MAAI,eAAe,KAAK;AACxB,MAAI,CAAC,cAAc;AACjB,UAAM,SAAS,MAAQ,WAAQ;AAAA,MAC7B,SAAS,WAAW,OAAO,IAAI;AAAA,MAC/B,cAAc;AAAA,IAChB,CAAC;AACD,QAAM,YAAS,MAAM,EAAG;AACxB,mBAAe;AAAA,EACjB;AAEA,MAAI,cAAc;AAChB,QAAI;AACF,YAAM,OAAO,OAAO;AACpB,MAAE,OAAI,QAAQ,aAAa,OAAO,IAAI,EAAE;AAAA,IAC1C,SAAS,KAAK;AACZ,MAAE,OAAI,MAAM,kBAAkB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC,EAAE;AAAA,IAClF;AAAA,EACF;AACF;AAEA,SAAS,aAAa,SAA4E;AAChG,QAAM,SAAS,QAAQ,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM,EAAE;AAC1D,QAAM,SAAS,QAAQ,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM,EAAE;AAC1D,QAAM,SAAS,QAAQ,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM,EAAE;AAE1D,QAAM,QAAkB,CAAC;AACzB,QAAM,KAAKA,IAAG,MAAM,GAAG,MAAM,SAAS,CAAC;AACvC,MAAI,OAAQ,OAAM,KAAKA,IAAG,OAAO,GAAG,MAAM,WAAW,CAAC;AACtD,MAAI,OAAQ,OAAM,KAAKA,IAAG,IAAI,GAAG,MAAM,SAAS,CAAC;AAEjD,EAAE,QAAK,MAAM,KAAK,IAAI,GAAG,SAAS;AAElC,MAAI,SAAS,GAAG;AACd,IAAE,SAAMA,IAAG,IAAI,6DAA6D,CAAC;AAAA,EAC/E,WAAW,SAAS,GAAG;AACrB,IAAE,SAAMA,IAAG,OAAO,gDAAgD,CAAC;AAAA,EACrE,OAAO;AACL,IAAE,SAAMA,IAAG,MAAM,oBAAoB,CAAC;AAAA,EACxC;AAEA,SAAO,EAAE,QAAQ,QAAQ,OAAO;AAClC;AArKA,IAkBM;AAlBN;AAAA;AAAA;AAGA;AACA;AAYA;AAEA,IAAM,cAAc;AAAA,MAClB,MAAMA,IAAG,MAAM,QAAG;AAAA,MAClB,MAAMA,IAAG,OAAO,GAAG;AAAA,MACnB,MAAMA,IAAG,IAAI,QAAG;AAAA,IAClB;AAAA;AAAA;;;ACtBA;AAAA;AAAA;AAAA;AAAA,OAAOC,SAAQ;AACf,OAAOC,WAAU;AACjB,SAAS,eAAe,qBAAqB;AAC7C,YAAYC,QAAO;AACnB,OAAOC,SAAQ;AAiBf,eAAsB,WAAW,MAAiC;AAChE,QAAM,aAAa,2BAA2B,KAAK,QAAQ;AAC3D,UAAQ,IAAI,wBAAwB;AAEpC,QAAM,UAAU,wBAAwB;AACxC,EAAAH,IAAG,UAAU,SAAS,EAAE,WAAW,KAAK,CAAC;AAEzC,QAAM,QAAQ,2BAA2B,UAAU;AACnD,EAAAA,IAAG,UAAU,MAAM,cAAc,EAAE,WAAW,KAAK,CAAC;AAEpD,QAAM,aAAa,kBAAkB,KAAK,MAAM;AAChD,UAAQ,IAAI,mBAAmB;AAE/B,EAAE,SAAMG,IAAG,OAAOA,IAAG,MAAM,mBAAmB,CAAC,CAAC;AAChD,EAAE,OAAI,QAAQA,IAAG,IAAI,SAAS,MAAM,OAAO,EAAE,CAAC;AAC9C,EAAE,OAAI,QAAQA,IAAG,IAAI,aAAa,MAAM,UAAU,EAAE,CAAC;AACrD,EAAE,OAAI,QAAQA,IAAG,IAAI,WAAW,UAAU,EAAE,CAAC;AAE7C,MAAI,CAAC,aAAa,UAAU,GAAG;AAC7B,QAAI,CAAC,QAAQ,MAAM,SAAS,CAAC,QAAQ,OAAO,OAAO;AACjD,MAAE,OAAI,MAAM,kDAAkD;AAC9D,MAAE,OAAI,QAAQ,OAAOA,IAAG,KAAK,qBAAqB,CAAC,qBAAqBA,IAAG,KAAK,iBAAiB,CAAC,GAAG;AACrG,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,IAAE,OAAI,KAAK,yCAAyC;AACpD,UAAM,QAAQ,EAAE,QAAQ,YAAY,cAAc,KAAK,CAAC;AAAA,EAC1D;AAEA,EAAE,OAAI,KAAK,0BAA0B;AACrC,QAAM,UAAU,MAAM,OAAO;AAAA,IAC3B,QAAQ;AAAA,IACR,QAAQ,KAAK,UAAU;AAAA,IACvB,KAAK,KAAK,OAAO;AAAA,EACnB,CAAC;AAED,MAAI,QAAQ,SAAS,GAAG;AACtB,IAAE,OAAI,MAAM,oDAAoD;AAChE,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,EAAE,OAAI,KAAK,8BAA8B;AACzC,QAAM,kBAAkB;AAC1B;AAEA,SAAS,YAAY,KAAsB;AACzC,MAAI,eAAe,OAAO;AACxB,QAAI,IAAI,WAAW,IAAI,QAAQ,KAAK,EAAE,SAAS,EAAG,QAAO,IAAI;AAC7D,WAAO,IAAI;AAAA,EACb;AACA,MAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,MAAI;AACF,WAAO,KAAK,UAAU,GAAG;AAAA,EAC3B,QAAQ;AACN,WAAO,OAAO,GAAG;AAAA,EACnB;AACF;AASA,SAAS,2BAA2B,YAA0B;AAC5D,MAAI,QAAQ,IAAI,gCAAgC,OAAW;AAC3D,QAAM,aAAa,WAAW,WAAW,MAAM,GAAG;AAClD,MAAI,WAAW,SAAS,sBAAsB,KAAK,WAAW,SAAS,kCAAkC,GAAG;AAC1G,YAAQ,IAAI,8BAA8B;AAAA,EAC5C;AACF;AAEA,eAAe,oBAAmC;AAEhD,QAAM,cAAcF,MAAK,QAAQA,MAAK,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,UAAU;AACzF,QAAM,WAAWA,MAAK,QAAQ,aAAa,qBAAqB;AAChE,MAAID,IAAG,WAAW,QAAQ,GAAG;AAC3B,+BAA2B,QAAQ;AACnC,UAAM,OAAO,cAAc,QAAQ,EAAE;AACrC;AAAA,EACF;AAGA,MAAI;AACF,UAAM,OAAO,qBAAqB;AAAA,EACpC,SAAS,KAAK;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,SACY,QAAQ;AAAA,EACf,YAAY,GAAG,CAAC;AAAA,IACvB;AAAA,EACF;AACF;AAlHA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAAA;;;ACRA,YAAYI,SAAO;AACnB,OAAOC,SAAQ;AA6Bf,SAAS,qBAAgH;AACvH,QAAM,aAAa,2BAA2B;AAC9C,SAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,yBAAyB,kCAAkC,UAAU;AAAA,MACrE,sBAAsB;AAAA,IACxB;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,QAAQ,sBAAsB,UAAU;AAAA,IAC1C;AAAA,IACA,QAAQ;AAAA,MACN,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN,kBAAkB,CAAC;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,MACJ,aAAa;AAAA,IACf;AAAA,IACA,SAAS,qBAAqB;AAAA,IAC9B,SAAS,qBAAqB;AAAA,EAChC;AACF;AAEA,eAAsB,QAAQ,MAAqC;AACjE,0BAAwB;AACxB,EAAE,UAAMA,IAAG,OAAOA,IAAG,MAAM,uBAAuB,CAAC,CAAC;AACpD,QAAM,aAAa,kBAAkB,KAAK,MAAM;AAChD,QAAM,WAAW,2BAA2B,2BAA2B,CAAC;AACxE,EAAE,QAAI;AAAA,IACJA,IAAG;AAAA,MACD,eAAe,SAAS,OAAO,gBAAgB,SAAS,UAAU,cAAc,UAAU;AAAA,IAC5F;AAAA,EACF;AAEA,MAAI,aAAa,KAAK,MAAM,GAAG;AAC7B,IAAE,QAAI,QAAQA,IAAG,IAAI,GAAG,UAAU,0BAA0B,CAAC;AAE7D,QAAI;AACF,iBAAW,KAAK,MAAM;AAAA,IACxB,SAAS,KAAK;AACZ,MAAE,QAAI;AAAA,QACJA,IAAG;AAAA,UACD;AAAA,EAAyD,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,QAC3G;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,YAAuB;AAC3B,MAAI,KAAK,KAAK;AACZ,IAAE,QAAI,QAAQA,IAAG,IAAI,6CAA6C,CAAC;AAAA,EACrE,OAAO;AACL,UAAM,kBAAkB,MAAQ,WAAO;AAAA,MACrC,SAAS;AAAA,MACT,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AACD,QAAM,aAAS,eAAe,GAAG;AAC/B,MAAE,WAAO,kBAAkB;AAC3B;AAAA,IACF;AACA,gBAAY;AAAA,EACd;AAEA,MAAI;AACJ,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAAC;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,mBAAmB;AAEvB,MAAI,cAAc,YAAY;AAC5B,IAAE,QAAI,KAAKD,IAAG,KAAK,UAAU,CAAC;AAC9B,eAAW,MAAM,eAAe;AAEhC,QAAI,SAAS,SAAS,cAAc,SAAS,kBAAkB;AAC7D,YAAM,IAAM,YAAQ;AACpB,QAAE,MAAM,gCAAgC;AACxC,UAAI;AACF,cAAM,EAAE,UAAAE,UAAS,IAAI,MAAM;AAC3B,cAAM,KAAKA,UAAS,SAAS,gBAAgB;AAC7C,cAAM,GAAG,QAAQ,UAAU;AAC3B,UAAE,KAAK,gCAAgC;AAAA,MACzC,QAAQ;AACN,UAAE,KAAKF,IAAG,OAAO,uFAAkF,CAAC;AAAA,MACtG;AAAA,IACF;AAEA,IAAE,QAAI,KAAKA,IAAG,KAAK,cAAc,CAAC;AAClC,UAAM,MAAM,UAAU;AAEtB,QAAI,KAAK,QAAQ;AACf,YAAM,IAAM,YAAQ;AACpB,QAAE,MAAM,uBAAuB;AAC/B,UAAI;AACF,YAAI,IAAI,aAAa,UAAU;AAC7B,gBAAM,MAAM,MAAM,MAAM,yCAAyC;AAAA,YAC/D,QAAQ;AAAA,YACR,SAAS;AAAA,cACP,aAAa,IAAI;AAAA,cACjB,qBAAqB;AAAA,cACrB,gBAAgB;AAAA,YAClB;AAAA,YACA,MAAM,KAAK,UAAU;AAAA,cACnB,OAAO;AAAA,cACP,YAAY;AAAA,cACZ,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,YAC5C,CAAC;AAAA,UACH,CAAC;AACD,cAAI,IAAI,MAAM,IAAI,WAAW,KAAK;AAChC,cAAE,KAAK,kBAAkB;AAAA,UAC3B,WAAW,IAAI,WAAW,KAAK;AAC7B,cAAE,KAAKA,IAAG,OAAO,wDAAmD,CAAC;AAAA,UACvE,OAAO;AACL,cAAE,KAAKA,IAAG,OAAO,qDAAgD,CAAC;AAAA,UACpE;AAAA,QACF,OAAO;AACL,gBAAM,MAAM,MAAM,MAAM,oCAAoC;AAAA,YAC1D,SAAS,EAAE,eAAe,UAAU,IAAI,MAAM,GAAG;AAAA,UACnD,CAAC;AACD,cAAI,IAAI,IAAI;AACV,cAAE,KAAK,kBAAkB;AAAA,UAC3B,WAAW,IAAI,WAAW,KAAK;AAC7B,cAAE,KAAKA,IAAG,OAAO,wDAAmD,CAAC;AAAA,UACvE,OAAO;AACL,cAAE,KAAKA,IAAG,OAAO,qDAAgD,CAAC;AAAA,UACpE;AAAA,QACF;AAAA,MACF,QAAQ;AACN,UAAE,KAAKA,IAAG,OAAO,8CAAyC,CAAC;AAAA,MAC7D;AAAA,IACF;AAEA,IAAE,QAAI,KAAKA,IAAG,KAAK,SAAS,CAAC;AAC7B,cAAU,MAAM,cAAc;AAE9B,IAAE,QAAI,KAAKA,IAAG,KAAK,QAAQ,CAAC;AAC5B,KAAC,EAAE,QAAQ,MAAAC,MAAK,IAAI,MAAM,aAAa;AAEvC,IAAE,QAAI,KAAKD,IAAG,KAAK,SAAS,CAAC;AAC7B,cAAU,MAAM,cAAc,qBAAqB,CAAC;AAEpD,IAAE,QAAI,KAAKA,IAAG,KAAK,SAAS,CAAC;AAC7B,cAAU,qBAAqB;AAC/B,IAAE,QAAI;AAAA,MACJA,IAAG;AAAA,QACD,4BAA4B,QAAQ,QAAQ,gBAAgB,QAAQ,UAAU,aAAa,QAAQ,eAAe,WAAW;AAAA,MAC/H;AAAA,IACF;AAAA,EACF,OAAO;AACL,IAAE,QAAI,KAAKA,IAAG,KAAK,YAAY,CAAC;AAChC,IAAE,QAAI;AAAA,MACJA,IAAG,IAAI,sGAAsG;AAAA,IAC/G;AAAA,EACF;AAEA,QAAM,YAAY,qBAAqB,UAAU;AACjD,QAAM,cAAc,uBAAuB,UAAU;AACrD,MAAI,UAAU,SAAS;AACrB,IAAE,QAAI,QAAQ,WAAWA,IAAG,KAAK,4BAA4B,CAAC,OAAOA,IAAG,IAAI,WAAW,CAAC,EAAE;AAAA,EAC5F,WAAW,QAAQ,IAAI,4BAA4B,KAAK,GAAG;AACzD,IAAE,QAAI,KAAK,kBAAkBA,IAAG,KAAK,4BAA4B,CAAC,mBAAmB;AAAA,EACvF,OAAO;AACL,IAAE,QAAI,KAAK,kBAAkBA,IAAG,KAAK,4BAA4B,CAAC,OAAOA,IAAG,IAAI,WAAW,CAAC,EAAE;AAAA,EAChG;AAEA,QAAM,SAA0B;AAAA,IAC9B,OAAO;AAAA,MACL,SAAS;AAAA,MACT,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,QAAQ;AAAA,IACV;AAAA,IACA,GAAI,OAAO,EAAE,IAAI;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAAC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,YAAY,0BAA0B,QAAQ,UAAU;AAC9D,MAAI,UAAU,WAAW,WAAW;AAClC,IAAE,QAAI,QAAQ,qCAAqCD,IAAG,IAAI,UAAU,IAAI,CAAC,EAAE;AAAA,EAC7E,WAAW,UAAU,WAAW,YAAY;AAC1C,IAAE,QAAI,QAAQA,IAAG,IAAI,4CAA4C,UAAU,IAAI,EAAE,CAAC;AAAA,EACpF;AAEA,cAAY,QAAQ,KAAK,MAAM;AAE/B,EAAE;AAAA,IACA;AAAA,MACE,aAAa,SAAS,IAAI;AAAA,MAC1B,MAAM,QAAQ,IAAI,QAAQ,KAAK;AAAA,MAC/B,YAAY,QAAQ,IAAI,OAAO,QAAQ,MAAM;AAAA,MAC7C,WAAW,OAAO,cAAc,IAAI,OAAO,QAAQ,MAAM,OAAO,IAAI,IAAI,OAAO,IAAI;AAAA,MACnF,kBAAkB,OAAO,iBAAiB,SAAS,IAAI,OAAO,iBAAiB,KAAK,IAAI,IAAI,iBAAiB;AAAA,MAC7G,kBAAkBC,MAAK,WAAW,GAAGA,MAAK,gBAAgB,KAAKA,MAAK,aAAa,MAAM,EAAE;AAAA,MACzF,YAAY,QAAQ,QAAQ;AAAA,MAC5B,YAAY,QAAQ,QAAQ,iBAAiB,QAAQ,aAAa,OAAO,KAAK;AAAA,MAC9E;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,IACX;AAAA,EACF;AAEA,EAAE;AAAA,IACA;AAAA,MACE,QAAQD,IAAG,KAAK,iBAAiB,CAAC;AAAA,MAClC,sBAAsBA,IAAG,KAAK,uBAAuB,CAAC;AAAA,MACtD,mBAAmBA,IAAG,KAAK,oBAAoB,CAAC;AAAA,IAClD,EAAE,KAAK,IAAI;AAAA,IACX;AAAA,EACF;AAEA,MAAI,OAAO,mBAAmB,iBAAiB;AAC7C,IAAE,QAAI,KAAK,iCAAiC;AAC5C,UAAM,mBAAmB,EAAE,QAAQ,WAAW,CAAC;AAAA,EACjD;AAEA,MAAI,eAAe,KAAK,QAAQ,QAAQ,KAAK,QAAQ;AACrD,MAAI,CAAC,gBAAgB,CAAC,KAAK,gBAAgB,QAAQ,MAAM,SAAS,QAAQ,OAAO,OAAO;AACtF,UAAM,SAAS,MAAQ,YAAQ;AAAA,MAC7B,SAAS;AAAA,MACT,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAG,aAAS,MAAM,GAAG;AACvB,qBAAe;AAAA,IACjB;AAAA,EACF;AAEA,MAAI,gBAAgB,CAAC,KAAK,cAAc;AACtC,YAAQ,IAAI,2BAA2B;AACvC,UAAM,EAAE,YAAAG,YAAW,IAAI,MAAM;AAC7B,UAAMA,YAAW,EAAE,QAAQ,YAAY,QAAQ,MAAM,KAAK,KAAK,CAAC;AAChE;AAAA,EACF;AAEA,EAAE,UAAM,iBAAiB;AAC3B;AA/RA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AAAA;AAAA;;;AClBA;AACA;AAFA,SAAS,eAAe;;;ACGxB;AACA;AAKA;AATA,YAAYC,SAAO;AACnB,OAAOC,SAAQ;AAwBf,IAAM,gCAAgC;AACtC,IAAM,2BAA2B;AACjC,IAAM,6BAA6B;AACnC,IAAM,0CAA0C;AAChD,IAAM,2BAA2B;AACjC,IAAM,2BAA2B;AACjC,SAAS,4BAAoC;AAC3C,SAAO,iCAAiC,2BAA2B,CAAC;AACtE;AACA,SAASC,yBAAgC;AACvC,SAAO,yBAAyB,2BAA2B,CAAC;AAC9D;AAEA,eAAsB,WAAW,MAA0C;AACzE,EAAE,UAAMD,IAAG,OAAOA,IAAG,MAAM,iBAAiB,CAAC,CAAC;AAE9C,QAAM,aAAa,kBAAkB,KAAK,MAAM;AAChD,MAAI,SAAiC;AACrC,MAAI,kBAAiC;AAErC,MAAI,aAAa,KAAK,MAAM,GAAG;AAC7B,IAAE,QAAI,QAAQA,IAAG,IAAI,gBAAgB,UAAU,EAAE,CAAC;AAClD,QAAI;AACF,eAAS,WAAW,KAAK,MAAM;AAAA,IACjC,SAAS,KAAK;AACZ,wBAAkB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AACjE,MAAE,QAAI,QAAQA,IAAG,OAAO,2BAA2B,eAAe,EAAE,CAAC;AAAA,IACvE;AAAA,EACF,OAAO;AACL,IAAE,QAAI,QAAQA,IAAG,IAAI,wBAAwB,UAAU,EAAE,CAAC;AAAA,EAC5D;AAEA,QAAM,OAAO,yBAAyB,QAAQ,UAAU;AACxD,QAAM,kBAAkB,KAAK,OAAO,CAAC,QAAQ,IAAI,YAAY,IAAI,WAAW,SAAS;AACrF,QAAM,aAAa,KAAK,KAAK,CAAC,GAAG,MAAM,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,QAAQ,KAAK,EAAE,IAAI,cAAc,EAAE,GAAG,CAAC;AAE5G,QAAM,eAAe,WAAW,OAAO,CAAC,QAAQ,IAAI,QAAQ;AAC5D,QAAM,eAAe,WAAW,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ;AAE7D,QAAM,gBAAgB,CAAC,OAAe,YAAyB;AAC7D,QAAI,QAAQ,WAAW,EAAG;AAE1B,IAAE,QAAI,QAAQA,IAAG,KAAK,KAAK,CAAC;AAC5B,eAAW,SAAS,SAAS;AAC3B,YAAM,SAAS,MAAM,WAAW,YAAYA,IAAG,IAAI,SAAS,IAAI,MAAM,WAAW,YAAYA,IAAG,OAAO,SAAS,IAAIA,IAAG,MAAM,KAAK;AAClI,YAAM,aAAa;AAAA,QACjB,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,EAAE,MAAM,MAAM;AACd,MAAE,QAAI;AAAA,QACJ,GAAGA,IAAG,KAAK,MAAM,GAAG,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,IAAIA,IAAG,IAAI,IAAI,UAAU,KAAK,MAAM,IAAI,EAAE,CAAC,GAAG,MAAM,WAAW,YAAY,KAAK,IAAIA,IAAG,IAAI,IAAI,CAAC,IAAIA,IAAG,MAAM,gBAAgB,MAAM,KAAK,CAAC,CAAC,EAAE;AAAA,MACvL;AAAA,IACF;AAAA,EACF;AAEA,gBAAc,kCAAkC,YAAY;AAC5D,gBAAc,kCAAkC,YAAY;AAE5D,QAAM,aAAa,KAAK,IAAI,CAAC,QAAS,IAAI,WAAW,YAAY,EAAE,GAAG,KAAK,OAAO,mBAAmB,IAAI,GAAI;AAC7G,QAAM,aAAa,YAAY,UAAU;AACzC,QAAM,cAAc,WAAW,IAAI,CAAC,QAAQ,UAAU,IAAI,GAAG,IAAI,gBAAgB,IAAI,KAAK,CAAC,EAAE,EAAE,KAAK,IAAI;AAExG,MAAI,iBAAiB;AACnB,IAAE,QAAI,MAAM,kCAAkC,eAAe,EAAE;AAAA,EACjE;AAEA,EAAE;AAAA,IACA,eAAe;AAAA,IACf;AAAA,EACF;AAEA,MAAI,gBAAgB,SAAS,GAAG;AAC9B,IAAE,QAAI;AAAA,MACJA,IAAG;AAAA,QACD,4BAA4B,gBAAgB,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE,KAAK,IAAI,CAAC;AAAA,MAC9E;AAAA,IACF;AAAA,EACF,OAAO;AACL,IAAE,QAAI,QAAQA,IAAG,MAAM,gDAAgD,CAAC;AAAA,EAC1E;AACA,EAAE,UAAM,MAAM;AAChB;AAEA,SAAS,yBAAyB,QAAgC,YAAiC;AACjG,QAAM,kBAAkB,uBAAuB,UAAU;AACzD,QAAM,SAAS,0BAA0B,UAAU;AACnD,QAAM,UAAU,SAAS,OAAO,8BAA8B,eAAe;AAC7E,QAAM,YAAY,SAAS,QAAQ,UAAU,SAAS;AAEtD,QAAM,QAAQ,QAAQ,IAAI,gBAAgB,QAAQ,UAAU,oBAAoB;AAChF,QAAM,eAAe,QAAQ,UAAU,QAAQ;AAC/C,QAAM,cAAyB,QAAQ,IAAI,eAAe,QAAQ,QAAQ,UAAU,mBAAmB,WAAW;AAElH,QAAM,oBAAoB,QAAQ,IAAI,mCAAmC;AACzE,QAAM,mBAAmB,QAAQ,IAAI,+BAA+B;AACpE,QAAM,kBACJ,QAAQ,IAAI,8BACZ,QAAQ,SAAS,YACjB;AACF,QAAM,oBACJ,QAAQ,IAAI,iCACZ,OAAO,QAAQ,SAAS,cAAc,KAAK;AAC7C,QAAM,qBACJ,QAAQ,IAAI,qCACZ,QAAQ,SAAS,gBAAgB,eACjC,0BAA0B;AAC5B,QAAM,kBACJ,QAAQ,IAAI,8BACZ,QAAQ,SAAS,YACjB;AACF,QAAM,kBACJ,QAAQ,IAAI,+BACZ,QAAQ,SAAS,WAAW,WAC5BC,uBAAsB;AACxB,QAAM,kBACJ,QAAQ,IAAI,+BACZ,QAAQ,SAAS,IAAI,UACrB;AACF,QAAM,kBACJ,QAAQ,IAAI,+BACZ,QAAQ,SAAS,IAAI,UACrB;AACF,QAAM,oBACJ,QAAQ,IAAI,iCACZ,QAAQ,SAAS,IAAI,YACrB;AACF,QAAM,kBACJ,QAAQ,IAAI,+BACZ,QAAQ,SAAS,IAAI,UACrB;AACF,QAAM,0BACJ,QAAQ,IAAI,yCACZ,OAAO,QAAQ,SAAS,IAAI,kBAAkB,KAAK;AAErD,QAAM,OAAoB;AAAA,IACxB;AAAA,MACE,KAAK;AAAA,MACL,OAAO,UAAU,WAAW;AAAA,MAC5B,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MACE,cAAc,YACV,wFACA,cAAc,QACZ,+BACA,UAAU,eAAe;AAAA,IACnC;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MACE,iBAAiB,aACb,4CACA;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OACE,QAAQ,IAAI,SACX,QAAQ,QAAQ,SAAS,SAAY,OAAO,OAAO,OAAO,IAAI,IAAI;AAAA,MACrE,QAAQ,QAAQ,IAAI,OAAO,QAAQ,QAAQ,QAAQ,SAAS,SAAY,WAAW;AAAA,MACnF,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO,QAAQ,IAAI,mCAAmC;AAAA,MACtD,QAAQ,QAAQ,IAAI,kCAAkC,QAAQ;AAAA,MAC9D,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO,QAAQ,IAAI,8BAA8B;AAAA,MACjD,QAAQ,QAAQ,IAAI,6BAA6B,QAAQ;AAAA,MACzD,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO,QAAQ,IAAI,gCAAgC;AAAA,MACnD,QAAQ,QAAQ,IAAI,+BAA+B,QAAQ;AAAA,MAC3D,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,kCAAkC,QAAQ;AAAA,MAC9D,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,8BAA8B,QAAQ;AAAA,MAC1D,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,6BAChB,QACA,QAAQ,SAAS,WACf,WACA;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,gCAChB,QACA,QAAQ,SAAS,eAAe,SAC9B,WACA;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,oCAChB,QACA,QAAQ,SAAS,gBAAgB,cAC/B,WACA;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,6BAChB,QACA,QAAQ,SAAS,WACf,WACA;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,8BAChB,QACA,QAAQ,SAAS,WAAW,UAC1B,WACA;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,8BAChB,QACA,QAAQ,SAAS,IAAI,SACnB,WACA;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,8BAChB,QACA,QAAQ,SAAS,IAAI,SACnB,WACA;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,gCAChB,QACA,QAAQ,SAAS,IAAI,WACnB,WACA;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,8BAChB,QACA,QAAQ,SAAS,IAAI,SACnB,WACA;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ,IAAI,wCAChB,QACA,QAAQ,SAAS,IAAI,mBAAmB,SACtC,WACA;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,oBAAoB,kBAAkB;AAC5C,MAAI,QAAQ,IAAI,oBAAoB,eAAe,mBAAmB;AACpE,SAAK,KAAK;AAAA,MACR,KAAK;AAAA,MACL,OAAO,QAAQ,IAAI,oBAAoB;AAAA,MACvC,QAAQ,QAAQ,IAAI,mBAAmB,QAAQ;AAAA,MAC/C,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,SAAS,YAAY,MAAgC;AACnD,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,SAAsB,CAAC;AAC7B,aAAW,OAAO,MAAM;AACtB,QAAI,KAAK,IAAI,IAAI,GAAG,EAAG;AACvB,SAAK,IAAI,IAAI,GAAG;AAChB,WAAO,KAAK,GAAG;AAAA,EACjB;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,OAAuB;AAC9C,MAAI,UAAU,GAAI,QAAO;AACzB,SAAO,IAAI,MAAM,WAAW,KAAK,OAAO,CAAC;AAC3C;;;AC/WA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AAhBA,YAAYC,SAAO;AACnB,OAAOC,SAAQ;AAmBf,IAAM,iBAA0C;AAAA,EAC9C,KAAK;AAAA,EACL,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AACX;AAEA,SAAS,gBAAiC;AACxC,QAAM,aAAa,2BAA2B;AAC9C,SAAO;AAAA,IACL,OAAO;AAAA,MACL,SAAS;AAAA,MACT,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,QAAQ;AAAA,IACV;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,yBAAyB,kCAAkC,UAAU;AAAA,MACrE,sBAAsB;AAAA,IACxB;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,QAAQ,sBAAsB,UAAU;AAAA,IAC1C;AAAA,IACA,QAAQ;AAAA,MACN,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN,kBAAkB,CAAC;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,MACJ,aAAa;AAAA,IACf;AAAA,IACA,SAAS,qBAAqB;AAAA,IAC9B,SAAS,qBAAqB;AAAA,EAChC;AACF;AAEA,eAAsB,UAAU,MAGd;AAChB,0BAAwB;AACxB,EAAE,UAAMA,IAAG,OAAOA,IAAG,MAAM,uBAAuB,CAAC,CAAC;AACpD,QAAM,aAAa,kBAAkB,KAAK,MAAM;AAEhD,MAAI,CAAC,aAAa,KAAK,MAAM,GAAG;AAC9B,IAAE,QAAI,MAAM,wDAAwD;AACpE,IAAE,UAAM,EAAE;AACV;AAAA,EACF;AAEA,MAAI;AACJ,MAAI;AACF,aAAS,WAAW,KAAK,MAAM,KAAK,cAAc;AAAA,EACpD,SAAS,KAAK;AACZ,IAAE,QAAI;AAAA,MACJA,IAAG;AAAA,QACD;AAAA,EAA2E,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,MAC7H;AAAA,IACF;AACA,aAAS,cAAc;AAAA,EACzB;AAEA,MAAI,UAA+B,KAAK;AAExC,MAAI,WAAW,CAAC,eAAe,OAAO,GAAG;AACvC,IAAE,QAAI,MAAM,oBAAoB,OAAO,kBAAkB,OAAO,KAAK,cAAc,EAAE,KAAK,IAAI,CAAC,EAAE;AACjG,IAAE,UAAM,EAAE;AACV;AAAA,EACF;AAGA,MAAI,eAAe;AACnB,SAAO,cAAc;AACnB,QAAI,CAAC,SAAS;AACZ,YAAM,SAAS,MAAQ,WAAO;AAAA,QAC5B,SAAS;AAAA,QACT,SAAS,OAAO,QAAQ,cAAc,EAAE,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO;AAAA,UAC/D;AAAA,UACA;AAAA,QACF,EAAE;AAAA,MACJ,CAAC;AAED,UAAM,aAAS,MAAM,GAAG;AACtB,QAAE,WAAO,0BAA0B;AACnC;AAAA,MACF;AAEA,gBAAU;AAAA,IACZ;AAEA,IAAE,QAAI,KAAKA,IAAG,KAAK,eAAe,OAAO,CAAC,CAAC;AAE3C,YAAQ,SAAS;AAAA,MACf,KAAK;AACH,eAAO,WAAW,MAAM,eAAe;AACvC;AAAA,MACF,KAAK,OAAO;AACV,cAAM,MAAM,MAAM,UAAU;AAC5B,YAAI,KAAK;AACP,iBAAO,MAAM;AAAA,QACf,OAAO;AACL,iBAAO,OAAO;AAAA,QAChB;AACA;AAAA,MACF;AAAA,MACA,KAAK;AACH,eAAO,UAAU,MAAM,cAAc;AACrC;AAAA,MACF,KAAK;AACH;AACE,gBAAM,EAAE,QAAQ,MAAAC,MAAK,IAAI,MAAM,aAAa;AAAA,YAC1C,eAAe,OAAO;AAAA,YACtB,aAAa,OAAO;AAAA,UACtB,CAAC;AACD,iBAAO,SAAS;AAChB,iBAAO,OAAOA;AAAA,QAChB;AACA;AAAA,MACF,KAAK;AACH,eAAO,UAAU,MAAM,cAAc,OAAO,OAAO;AACnD;AAAA,MACF,KAAK;AACH,eAAO,UAAU,MAAM,cAAc,OAAO,OAAO;AACnD;AACE,gBAAM,YAAY,0BAA0B,QAAQ,UAAU;AAC9D,cAAI,UAAU,WAAW,WAAW;AAClC,YAAE,QAAI,QAAQ,qCAAqCD,IAAG,IAAI,UAAU,IAAI,CAAC,EAAE;AAAA,UAC7E,WAAW,UAAU,WAAW,YAAY;AAC1C,YAAE,QAAI,QAAQA,IAAG,IAAI,4CAA4C,UAAU,IAAI,EAAE,CAAC;AAAA,UACpF,WAAW,UAAU,WAAW,oBAAoB;AAClD,YAAE,QAAI,QAAQA,IAAG,IAAI,2DAA2D,CAAC;AAAA,UACnF,OAAO;AACL,YAAE,QAAI,QAAQA,IAAG,IAAI,gFAAgF,CAAC;AAAA,UACxG;AAAA,QACF;AACA;AAAA,IACJ;AAEA,WAAO,MAAM,aAAY,oBAAI,KAAK,GAAE,YAAY;AAChD,WAAO,MAAM,SAAS;AAEtB,gBAAY,QAAQ,KAAK,MAAM;AAC/B,IAAE,QAAI,QAAQ,GAAG,eAAe,OAAO,CAAC,yBAAyB;AAGjE,QAAI,KAAK,SAAS;AAChB,qBAAe;AAAA,IACjB,OAAO;AACL,YAAM,UAAU,MAAQ,YAAQ;AAAA,QAC9B,SAAS;AAAA,QACT,cAAc;AAAA,MAChB,CAAC;AAED,UAAM,aAAS,OAAO,KAAK,CAAC,SAAS;AACnC,uBAAe;AAAA,MACjB,OAAO;AACL,kBAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,EAAE,UAAM,sBAAsB;AAChC;;;AC1LA;AACA;AAHA,YAAYE,SAAO;AACnB,OAAOC,SAAQ;AAIf,eAAsB,mBAAmB,MAAc,MAA0C;AAC/F,QAAM,aAAa,kBAAkB,KAAK,MAAM;AAChD,QAAM,SAAS,WAAW,KAAK,MAAM;AAErC,MAAI,CAAC,QAAQ;AACX,IAAE,QAAI,MAAM,sBAAsB,UAAU,SAASA,IAAG,KAAK,mBAAmB,CAAC,SAAS;AAC1F;AAAA,EACF;AAEA,QAAM,aAAa,uBAAuB,IAAI;AAC9C,QAAM,UAAU,IAAI,KAAK,OAAO,OAAO,oBAAoB,CAAC,GAAG,IAAI,CAAC,UAAU,MAAM,KAAK,EAAE,YAAY,CAAC,EAAE,OAAO,OAAO,CAAC;AACzH,QAAM,UAAU,QAAQ,IAAI,UAAU;AACtC,UAAQ,IAAI,UAAU;AAEtB,SAAO,OAAO,mBAAmB,MAAM,KAAK,OAAO,EAAE,KAAK;AAC1D,SAAO,MAAM,aAAY,oBAAI,KAAK,GAAE,YAAY;AAChD,SAAO,MAAM,SAAS;AACtB,cAAY,QAAQ,KAAK,MAAM;AAE/B,MAAI,SAAS;AACX,IAAE,QAAI,KAAK,YAAYA,IAAG,KAAK,UAAU,CAAC,sBAAsB;AAAA,EAClE,OAAO;AACL,IAAE,QAAI,QAAQ,2BAA2BA,IAAG,KAAK,UAAU,CAAC,EAAE;AAAA,EAChE;AAEA,MAAI,EAAE,OAAO,OAAO,mBAAmB,mBAAmB,OAAO,OAAO,aAAa,YAAY;AAC/F,IAAE,QAAI;AAAA,MACJA,IAAG,IAAI,0EAA0E;AAAA,IACnF;AAAA,EACF;AACF;;;ACnCA,SAAS,cAAc,aAAa;AACpC,OAAOC,UAAQ;;;ACDf,OAAOC,SAAQ;AAEf,SAAS,YAAY,OAAwB;AAC3C,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,EAAG,QAAO;AAChF,QAAM,MAAM;AACZ,QAAM,UACH,OAAO,IAAI,YAAY,YAAY,IAAI,WACvC,OAAO,IAAI,UAAU,YAAY,IAAI,SACrC,OAAO,IAAI,SAAS,YAAY,IAAI,QACrC;AACF,MAAI,QAAS,QAAO;AACpB,MAAI;AACF,WAAO,KAAK,UAAU,GAAG;AAAA,EAC3B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,SAAS,uBAAuB,KAAa,OAAsB;AACxE,QAAM,OAAO,IAAI,KAAK;AACtB,MAAI,CAAC,KAAM;AAEX,MAAI,SAAyC;AAC7C,MAAI;AACF,aAAS,KAAK,MAAM,IAAI;AAAA,EAC1B,QAAQ;AACN,YAAQ,IAAI,IAAI;AAChB;AAAA,EACF;AAEA,QAAM,OAAO,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO;AAE7D,MAAI,SAAS,YAAY,OAAO,YAAY,QAAQ;AAClD,UAAM,QAAQ,OAAO,OAAO,UAAU,WAAW,OAAO,QAAQ;AAChE,UAAM,YAAY,OAAO,OAAO,eAAe,WAAW,OAAO,aAAa;AAC9E,YAAQ,IAAIA,IAAG,KAAK,8BAA8B,KAAK,GAAG,YAAY,cAAc,SAAS,KAAK,EAAE,GAAG,CAAC;AACxG;AAAA,EACF;AAEA,MAAI,SAAS,aAAa;AACxB,UAAM,UACJ,OAAO,OAAO,YAAY,YAAY,OAAO,YAAY,QAAQ,CAAC,MAAM,QAAQ,OAAO,OAAO,IACzF,OAAO,UACR,CAAC;AACP,UAAM,UAAU,MAAM,QAAQ,QAAQ,OAAO,IAAI,QAAQ,UAAU,CAAC;AACpE,eAAW,YAAY,SAAS;AAC9B,UAAI,OAAO,aAAa,YAAY,aAAa,QAAQ,MAAM,QAAQ,QAAQ,EAAG;AAClF,YAAM,QAAQ;AACd,YAAM,YAAY,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAChE,UAAI,cAAc,QAAQ;AACxB,cAAMC,SAAO,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAC3D,YAAIA,OAAM,SAAQ,IAAID,IAAG,MAAM,cAAcC,MAAI,EAAE,CAAC;AAAA,MACtD,WAAW,cAAc,YAAY;AACnC,cAAM,OAAO,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAC3D,gBAAQ,IAAID,IAAG,OAAO,cAAc,IAAI,EAAE,CAAC;AAC3C,YAAI,MAAM,UAAU,QAAW;AAC7B,kBAAQ,IAAIA,IAAG,KAAK,KAAK,UAAU,MAAM,OAAO,MAAM,CAAC,CAAC,CAAC;AAAA,QAC3D;AAAA,MACF;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,SAAS,UAAU;AACrB,UAAM,QACJ,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU,QAAQ,CAAC,MAAM,QAAQ,OAAO,KAAK,IACnF,OAAO,QACR,CAAC;AACP,UAAM,QAAQ,OAAO,MAAM,gBAAgB,CAAC;AAC5C,UAAM,SAAS,OAAO,MAAM,iBAAiB,CAAC;AAC9C,UAAM,SAAS,OAAO,MAAM,2BAA2B,CAAC;AACxD,UAAM,OAAO,OAAO,OAAO,kBAAkB,CAAC;AAC9C,UAAM,UAAU,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU;AACtE,UAAM,UAAU,OAAO,aAAa;AACpC,UAAM,aAAa,OAAO,OAAO,WAAW,WAAW,OAAO,SAAS;AACvE,QAAI,YAAY;AACd,cAAQ,IAAIA,IAAG,MAAM,SAAS,CAAC;AAC/B,cAAQ,IAAI,UAAU;AAAA,IACxB;AACA,UAAM,SAAS,MAAM,QAAQ,OAAO,MAAM,IAAI,OAAO,OAAO,IAAI,WAAW,EAAE,OAAO,OAAO,IAAI,CAAC;AAChG,QAAI,QAAQ,WAAW,OAAO,KAAK,WAAW,OAAO,SAAS,GAAG;AAC/D,cAAQ,IAAIA,IAAG,IAAI,0BAA0B,WAAW,SAAS,aAAa,UAAU,SAAS,OAAO,EAAE,CAAC;AAC3G,UAAI,OAAO,SAAS,GAAG;AACrB,gBAAQ,IAAIA,IAAG,IAAI,kBAAkB,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC;AAAA,MAC5D;AAAA,IACF;AACA,YAAQ;AAAA,MACNA,IAAG;AAAA,QACD,cAAc,OAAO,SAAS,KAAK,IAAI,QAAQ,CAAC,QAAQ,OAAO,SAAS,MAAM,IAAI,SAAS,CAAC,WAAW,OAAO,SAAS,MAAM,IAAI,SAAS,CAAC,UAAU,OAAO,SAAS,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,UAAU;AAAA,MAC3M;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,OAAO;AACT,YAAQ,IAAIA,IAAG,KAAK,IAAI,CAAC;AAAA,EAC3B;AACF;;;AClGA,OAAOE,UAAQ;AAEf,SAAS,SAAS,OAAgD;AAChE,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,EAAG,QAAO;AAChF,SAAO;AACT;AAEA,SAAS,SAAS,OAAgB,WAAW,IAAY;AACvD,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AAEA,SAAS,SAAS,OAAgB,WAAW,GAAW;AACtD,SAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,QAAQ;AACvE;AAEA,SAAS,UAAU,OAAwB;AACzC,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,MAAM,SAAS,KAAK;AAC1B,MAAI,CAAC,IAAK,QAAO;AACjB,QAAM,MACH,OAAO,IAAI,YAAY,YAAY,IAAI,WACvC,OAAO,IAAI,UAAU,YAAY,IAAI,SACrC,OAAO,IAAI,SAAS,YAAY,IAAI,QACrC;AACF,MAAI,IAAK,QAAO;AAChB,MAAI;AACF,WAAO,KAAK,UAAU,GAAG;AAAA,EAC3B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,iBAAiB,MAAwC;AAChE,QAAM,WAAW,SAAS,KAAK,IAAI;AACnC,MAAI,aAAa,qBAAqB;AACpC,UAAM,UAAU,SAAS,KAAK,OAAO;AACrC,YAAQ,IAAIA,KAAG,OAAO,8BAA8B,CAAC;AACrD,QAAI,QAAS,SAAQ,IAAIA,KAAG,KAAK,OAAO,CAAC;AACzC,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,YAAY;AAC3B,UAAM,OAAO,SAAS,KAAK,MAAM,SAAS;AAC1C,YAAQ,IAAIA,KAAG,OAAO,cAAc,IAAI,EAAE,CAAC;AAC3C,QAAI,KAAK,UAAU,QAAW;AAC5B,UAAI;AACF,gBAAQ,IAAIA,KAAG,KAAK,KAAK,UAAU,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC;AAAA,MAC1D,QAAQ;AACN,gBAAQ,IAAIA,KAAG,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC;AAAA,MACzC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,mBAAmB,MAAwC;AAClE,QAAM,WAAW,SAAS,KAAK,IAAI;AAEnC,MAAI,aAAa,iBAAiB;AAChC,UAAMC,SAAO,SAAS,KAAK,IAAI;AAC/B,QAAIA,OAAM,SAAQ,IAAID,KAAG,MAAM,cAAcC,MAAI,EAAE,CAAC;AACpD,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,aAAa;AAC5B,UAAMA,SAAO,SAAS,KAAK,IAAI;AAC/B,QAAIA,OAAM,SAAQ,IAAID,KAAG,KAAK,aAAaC,MAAI,EAAE,CAAC;AAClD,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,YAAY;AAC3B,UAAM,OAAO,SAAS,KAAK,MAAM,SAAS;AAC1C,YAAQ,IAAID,KAAG,OAAO,cAAc,IAAI,EAAE,CAAC;AAC3C,QAAI,KAAK,UAAU,QAAW;AAC5B,UAAI;AACF,gBAAQ,IAAIA,KAAG,KAAK,KAAK,UAAU,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC;AAAA,MAC1D,QAAQ;AACN,gBAAQ,IAAIA,KAAG,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC;AAAA,MACzC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,qBAAqB;AACpC,UAAM,UAAU,SAAS,KAAK,OAAO;AACrC,UAAM,SAAS,SAAS,KAAK,MAAM;AACnC,UAAM,WAAW,OAAO,KAAK,cAAc,YAAY,OAAO,SAAS,KAAK,SAAS,IAAI,KAAK,YAAY;AAC1G,UAAM,SAAS,SAAS,KAAK,iBAAiB,EAAE,QAAQ,QAAQ,EAAE;AAClE,UAAM,UACH,aAAa,QAAQ,aAAa,KACnC,WAAW,YACX,WAAW,aACX,WAAW,WACX,WAAW;AAEb,UAAM,eAAe;AAAA,MACnB;AAAA,MACA,UAAU,YAAY,OAAO,MAAM;AAAA,MACnC,SAAS,UAAU,MAAM,KAAK;AAAA,MAC9B,aAAa,OAAO,aAAa,QAAQ,KAAK;AAAA,IAChD,EAAE,OAAO,OAAO;AAChB,YAAQ,KAAK,UAAUA,KAAG,MAAMA,KAAG,MAAM,aAAa,KAAK,GAAG,CAAC,CAAC;AAChE,QAAI,OAAQ,SAAQ,KAAK,UAAUA,KAAG,MAAMA,KAAG,MAAM,MAAM,CAAC;AAC5D,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,eAAe;AAC9B,UAAM,UAAU,MAAM,QAAQ,KAAK,OAAO,IAAI,KAAK,UAAU,CAAC;AAC9D,UAAM,UAAU,QACb,IAAI,CAAC,cAAc,SAAS,SAAS,CAAC,EACtC,OAAO,CAAC,WAA8C,QAAQ,MAAM,CAAC,EACrE,IAAI,CAAC,WAAW;AACf,YAAM,OAAO,SAAS,OAAO,MAAM,QAAQ;AAC3C,YAAME,SAAO,SAAS,OAAO,MAAM,SAAS;AAC5C,aAAO,GAAG,IAAI,IAAIA,MAAI;AAAA,IACxB,CAAC;AACH,UAAM,UAAU,QAAQ,SAAS,IAAI,QAAQ,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI;AACtE,UAAM,OAAO,QAAQ,SAAS,IAAI,MAAM,QAAQ,SAAS,CAAC,WAAW;AACrE,YAAQ,IAAIF,KAAG,KAAK,gBAAgB,OAAO,GAAG,IAAI,EAAE,CAAC;AACrD,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,SAAS;AACxB,UAAM,UAAU,UAAU,KAAK,WAAW,KAAK,SAAS,IAAI;AAC5D,QAAI,QAAS,SAAQ,IAAIA,KAAG,IAAI,UAAU,OAAO,EAAE,CAAC;AACpD,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,eAAe;AAC9B,UAAM,UAAU,KAAK,aAAa,QAAQ,SAAS,KAAK,MAAM,MAAM;AACpE,UAAMC,SAAO,SAAS,KAAK,OAAO,KAAK,SAAS,KAAK,MAAM,KAAK,SAAS,KAAK,MAAM;AACpF,YAAQ,KAAK,UAAUD,KAAG,MAAMA,KAAG,MAAM,cAAc,UAAU,aAAa,EAAE,EAAE,CAAC;AACnF,QAAIC,OAAM,SAAQ,KAAK,UAAUD,KAAG,MAAMA,KAAG,MAAMC,MAAI,CAAC;AACxD,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,sBAAsB,KAAa,QAAuB;AACxE,QAAM,OAAO,IAAI,KAAK;AACtB,MAAI,CAAC,KAAM;AAEX,MAAI,SAAyC;AAC7C,MAAI;AACF,aAAS,KAAK,MAAM,IAAI;AAAA,EAC1B,QAAQ;AACN,YAAQ,IAAI,IAAI;AAChB;AAAA,EACF;AAEA,QAAM,OAAO,SAAS,OAAO,IAAI;AAEjC,MAAI,SAAS,kBAAkB;AAC7B,UAAM,WAAW,SAAS,OAAO,SAAS;AAC1C,UAAM,QAAQ,SAAS,OAAO,KAAK;AACnC,UAAM,UAAU,CAAC,WAAW,YAAY,QAAQ,KAAK,IAAI,QAAQ,UAAU,KAAK,KAAK,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAClH,YAAQ,IAAID,KAAG,KAAK,uBAAuB,UAAU,KAAK,OAAO,MAAM,EAAE,EAAE,CAAC;AAC5E;AAAA,EACF;AAEA,MAAI,SAAS,gBAAgB;AAC3B,YAAQ,IAAIA,KAAG,KAAK,cAAc,CAAC;AACnC;AAAA,EACF;AAEA,MAAI,SAAS,kBAAkB,SAAS,kBAAkB;AACxD,UAAM,OAAO,SAAS,OAAO,IAAI;AACjC,QAAI,MAAM;AACR,YAAM,UACJ,SAAS,iBACL,iBAAiB,IAAI,IACrB,mBAAmB,IAAI;AAC7B,UAAI,CAAC,SAAS;AACZ,cAAM,WAAW,SAAS,KAAK,MAAM,SAAS;AAC9C,cAAM,KAAK,SAAS,KAAK,EAAE;AAC3B,cAAM,SAAS,SAAS,KAAK,MAAM;AACnC,cAAM,OAAO,CAAC,KAAK,MAAM,EAAE,KAAK,IAAI,SAAS,UAAU,MAAM,KAAK,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAC9F,gBAAQ,IAAIA,KAAG,KAAK,GAAG,IAAI,KAAK,QAAQ,GAAG,OAAO,KAAK,IAAI,MAAM,EAAE,EAAE,CAAC;AAAA,MACxE;AAAA,IACF,OAAO;AACL,cAAQ,IAAIA,KAAG,KAAK,IAAI,CAAC;AAAA,IAC3B;AACA;AAAA,EACF;AAEA,MAAI,SAAS,kBAAkB;AAC7B,UAAM,QAAQ,SAAS,OAAO,KAAK;AACnC,UAAM,QAAQ,SAAS,OAAO,YAAY;AAC1C,UAAM,SAAS,SAAS,OAAO,aAAa;AAC5C,UAAM,SAAS,SAAS,OAAO,qBAAqB,SAAS,OAAO,uBAAuB,CAAC;AAC5F,UAAM,OAAO,SAAS,OAAO,cAAc;AAC3C,UAAM,UAAU,OAAO,aAAa;AACpC,UAAM,UAAU,SAAS,OAAO,OAAO;AACvC,UAAM,SAAS,MAAM,QAAQ,OAAO,MAAM,IAAI,OAAO,OAAO,IAAI,SAAS,EAAE,OAAO,OAAO,IAAI,CAAC;AAE9F,YAAQ;AAAA,MACNA,KAAG,KAAK,cAAc,KAAK,QAAQ,MAAM,WAAW,MAAM,UAAU,KAAK,QAAQ,CAAC,CAAC,EAAE;AAAA,IACvF;AACA,QAAI,WAAW,WAAW,OAAO,SAAS,GAAG;AAC3C,cAAQ;AAAA,QACNA,KAAG,IAAI,mBAAmB,WAAW,SAAS,aAAa,UAAU,SAAS,OAAO,EAAE;AAAA,MACzF;AACA,UAAI,OAAO,SAAS,EAAG,SAAQ,IAAIA,KAAG,IAAI,WAAW,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC;AAAA,IAC5E;AACA;AAAA,EACF;AAEA,MAAI,SAAS,eAAe;AAC1B,UAAM,QAAQ,SAAS,OAAO,KAAK;AACnC,UAAM,QAAQ,SAAS,OAAO,YAAY;AAC1C,UAAM,SAAS,SAAS,OAAO,aAAa;AAC5C,UAAM,SAAS,SAAS,OAAO,qBAAqB,SAAS,OAAO,uBAAuB,CAAC;AAC5F,UAAM,UAAU,UAAU,OAAO,SAAS,OAAO,OAAO;AACxD,YAAQ,IAAIA,KAAG,IAAI,cAAc,UAAU,KAAK,OAAO,KAAK,EAAE,EAAE,CAAC;AACjE,YAAQ,IAAIA,KAAG,KAAK,cAAc,KAAK,QAAQ,MAAM,WAAW,MAAM,EAAE,CAAC;AACzE;AAAA,EACF;AAEA,MAAI,SAAS,SAAS;AACpB,UAAM,UAAU,UAAU,OAAO,WAAW,OAAO,SAAS,MAAM;AAClE,QAAI,QAAS,SAAQ,IAAIA,KAAG,IAAI,UAAU,OAAO,EAAE,CAAC;AACpD;AAAA,EACF;AAEA,UAAQ,IAAI,IAAI;AAClB;;;ACpOA,OAAOG,UAAQ;AAER,SAAS,yBAAyB,KAAa,OAAsB;AAC1E,QAAM,OAAO,IAAI,KAAK;AACtB,MAAI,CAAC,KAAM;AAEX,MAAI,CAAC,OAAO;AACV,YAAQ,IAAI,IAAI;AAChB;AAAA,EACF;AAEA,MAAI,KAAK,WAAW,YAAY,GAAG;AACjC,YAAQ,IAAIA,KAAG,KAAK,IAAI,CAAC;AACzB;AAAA,EACF;AAEA,UAAQ,IAAIA,KAAG,KAAK,IAAI,CAAC;AAC3B;;;ACjBO,SAAS,wBAAwB,KAAa,QAAuB;AAC1E,QAAM,OAAO,IAAI,KAAK;AACtB,MAAI,KAAM,SAAQ,IAAI,IAAI;AAC5B;;;ACAO,IAAM,oBAAsC;AAAA,EACjD,MAAM;AAAA,EACN,mBAAmB;AACrB;;;ACNO,SAAS,qBAAqB,KAAa,QAAuB;AACvE,QAAM,OAAO,IAAI,KAAK;AACtB,MAAI,KAAM,SAAQ,IAAI,IAAI;AAC5B;;;ACAO,IAAM,iBAAmC;AAAA,EAC9C,MAAM;AAAA,EACN,mBAAmB;AACrB;;;ACCA,IAAM,wBAA0C;AAAA,EAC9C,MAAM;AAAA,EACN,mBAAmB;AACrB;AAEA,IAAM,uBAAyC;AAAA,EAC7C,MAAM;AAAA,EACN,mBAAmB;AACrB;AAEA,IAAM,qBAAuC;AAAA,EAC3C,MAAM;AAAA,EACN,mBAAmB;AACrB;AAEA,IAAM,iBAAiB,IAAI;AAAA,EACzB,CAAC,uBAAuB,sBAAsB,oBAAoB,mBAAmB,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7H;AAEO,SAAS,cAAc,MAAgC;AAC5D,SAAO,eAAe,IAAI,IAAI,KAAK;AACrC;;;AC1BA;AAFA,OAAOC,UAAQ;;;ACEf;AAFA,OAAOC,UAAQ;AACf,OAAOC,WAAU;AAGjB,IAAM,2BAA2B;AACjC,IAAM,kBAAkB;AAcxB,SAAS,6BAA6B,UAAiC;AACrE,QAAM,mBAAmBA,MAAK,QAAQ,QAAQ;AAC9C,MAAI,aAAa;AAEjB,SAAO,MAAM;AACX,UAAM,YAAYA,MAAK,QAAQ,YAAY,cAAc,wBAAwB;AACjF,QAAID,KAAG,WAAW,SAAS,GAAG;AAC5B,aAAO;AAAA,IACT;AAEA,UAAM,UAAUC,MAAK,QAAQ,YAAY,IAAI;AAC7C,QAAI,YAAY,WAAY;AAC5B,iBAAa;AAAA,EACf;AAEA,SAAO;AACT;AAEO,SAAS,mBAAmB,cAA+B;AAChE,MAAI,aAAc,QAAOA,MAAK,QAAQ,YAAY;AAClD,MAAI,QAAQ,IAAI,kBAAmB,QAAOA,MAAK,QAAQ,QAAQ,IAAI,iBAAiB;AACpF,SAAO,6BAA6B,QAAQ,IAAI,CAAC,KAAK,0BAA0B;AAClF;AAEO,SAAS,uBAAsC;AACpD,SAAO;AAAA,IACL,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,UAAU;AAAA,MACR,CAAC,eAAe,GAAG,CAAC;AAAA,IACtB;AAAA,EACF;AACF;AAEA,SAASC,WAAU,UAA2B;AAC5C,MAAI;AACF,WAAO,KAAK,MAAMF,KAAG,aAAa,UAAU,OAAO,CAAC;AAAA,EACtD,SAAS,KAAK;AACZ,UAAM,IAAI,MAAM,2BAA2B,QAAQ,KAAK,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC,EAAE;AAAA,EAC5G;AACF;AAEA,SAAS,oBAAoB,OAAoC;AAC/D,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS,IAAI,MAAM,KAAK,IAAI;AAC/E;AAEA,SAAS,iBAAiB,OAAsC;AAC9D,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,EAAG,QAAO,CAAC;AACjF,QAAM,UAAU;AAEhB,SAAO;AAAA,IACL,SAAS,oBAAoB,QAAQ,OAAO;AAAA,IAC5C,WAAW,oBAAoB,QAAQ,SAAS;AAAA,IAChD,kBAAkB,oBAAoB,QAAQ,gBAAgB;AAAA,EAChE;AACF;AAEA,SAAS,iBAAiB,KAA6B;AACrD,MAAI,OAAO,QAAQ,YAAY,QAAQ,QAAQ,MAAM,QAAQ,GAAG,GAAG;AACjE,WAAO,qBAAqB;AAAA,EAC9B;AAEA,QAAM,SAAS;AACf,QAAM,UAAU,OAAO,YAAY,IAAI,IAAI;AAC3C,QAAM,iBAAiB,oBAAoB,OAAO,cAAc,KAAK;AAErE,QAAM,cAAc,OAAO;AAC3B,QAAM,WAAiD,CAAC;AAExD,MAAI,OAAO,gBAAgB,YAAY,gBAAgB,QAAQ,CAAC,MAAM,QAAQ,WAAW,GAAG;AAC1F,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,WAAsC,GAAG;AACpF,UAAI,CAAC,KAAK,KAAK,EAAG;AAClB,eAAS,IAAI,IAAI,iBAAiB,OAAO;AAAA,IAC3C;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,cAAc,GAAG;AAC7B,aAAS,cAAc,IAAI,CAAC;AAAA,EAC9B;AAEA,MAAI,OAAO,KAAK,QAAQ,EAAE,WAAW,GAAG;AACtC,aAAS,eAAe,IAAI,CAAC;AAAA,EAC/B;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,YAAY,aAAqC;AAC/D,QAAM,WAAW,mBAAmB,WAAW;AAC/C,MAAI,CAACA,KAAG,WAAW,QAAQ,GAAG;AAC5B,WAAO,qBAAqB;AAAA,EAC9B;AAEA,QAAM,MAAME,WAAU,QAAQ;AAC9B,SAAO,iBAAiB,GAAG;AAC7B;AAEO,SAAS,aAAa,SAAwB,aAA4B;AAC/E,QAAM,WAAW,mBAAmB,WAAW;AAC/C,QAAM,MAAMD,MAAK,QAAQ,QAAQ;AACjC,EAAAD,KAAG,UAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAErC,QAAM,aAAa,iBAAiB,OAAO;AAC3C,EAAAA,KAAG,cAAc,UAAU,GAAG,KAAK,UAAU,YAAY,MAAM,CAAC,CAAC;AAAA,GAAM,EAAE,MAAM,IAAM,CAAC;AACxF;AAEO,SAAS,cACd,aACA,OACA,aACe;AACf,QAAM,UAAU,YAAY,WAAW;AACvC,QAAM,WAAW,QAAQ,SAAS,WAAW,KAAK,CAAC;AACnD,QAAM,SAA+B;AAAA,IACnC,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,MAAI,MAAM,YAAY,UAAa,MAAM,QAAQ,KAAK,EAAE,WAAW,GAAG;AACpE,WAAO,OAAO;AAAA,EAChB;AACA,MAAI,MAAM,cAAc,UAAa,MAAM,UAAU,KAAK,EAAE,WAAW,GAAG;AACxE,WAAO,OAAO;AAAA,EAChB;AACA,MAAI,MAAM,qBAAqB,UAAa,MAAM,iBAAiB,KAAK,EAAE,WAAW,GAAG;AACtF,WAAO,OAAO;AAAA,EAChB;AAEA,UAAQ,SAAS,WAAW,IAAI;AAChC,UAAQ,iBAAiB,QAAQ,kBAAkB;AACnD,eAAa,SAAS,WAAW;AACjC,SAAO;AACT;AAEO,SAAS,kBAAkB,aAAqB,aAAqC;AAC1F,QAAM,UAAU,YAAY,WAAW;AACvC,MAAI,CAAC,QAAQ,SAAS,WAAW,GAAG;AAClC,YAAQ,SAAS,WAAW,IAAI,CAAC;AAAA,EACnC;AACA,UAAQ,iBAAiB;AACzB,eAAa,SAAS,WAAW;AACjC,SAAO;AACT;AAEO,SAAS,eACd,SACA,aACiD;AACjD,QAAM,OAAO,aAAa,KAAK,KAAK,QAAQ,kBAAkB;AAC9D,QAAM,UAAU,QAAQ,SAAS,IAAI,KAAK,CAAC;AAC3C,SAAO,EAAE,MAAM,QAAQ;AACzB;;;AC9KA,SAAS,OAAAG,YAAW;AAEb,IAAM,kBAAN,cAA8B,MAAM;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,QAAgB,SAAiB,SAAmB,MAAgB;AAC9E,UAAM,OAAO;AACb,SAAK,SAAS;AACd,SAAK,UAAU;AACf,SAAK,OAAO;AAAA,EACd;AACF;AAYO,IAAM,qBAAN,MAAyB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,MAAwB;AAClC,SAAK,UAAU,KAAK,QAAQ,QAAQ,QAAQ,EAAE;AAC9C,SAAK,SAAS,KAAK,QAAQ,KAAK,KAAK;AACrC,SAAK,QAAQ,KAAK,OAAO,KAAK,KAAK;AAAA,EACrC;AAAA,EAEA,IAAOC,QAAc,MAA0C;AAC7D,WAAO,KAAK,QAAWA,QAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;AAAA,EACtD;AAAA,EAEA,KAAQA,QAAc,MAAgB,MAA0C;AAC9E,WAAO,KAAK,QAAWA,QAAM;AAAA,MAC3B,QAAQ;AAAA,MACR,MAAM,SAAS,SAAY,SAAY,KAAK,UAAU,IAAI;AAAA,IAC5D,GAAG,IAAI;AAAA,EACT;AAAA,EAEA,MAASA,QAAc,MAAgB,MAA0C;AAC/E,WAAO,KAAK,QAAWA,QAAM;AAAA,MAC3B,QAAQ;AAAA,MACR,MAAM,SAAS,SAAY,SAAY,KAAK,UAAU,IAAI;AAAA,IAC5D,GAAG,IAAI;AAAA,EACT;AAAA,EAEA,OAAUA,QAAc,MAA0C;AAChE,WAAO,KAAK,QAAWA,QAAM,EAAE,QAAQ,SAAS,GAAG,IAAI;AAAA,EACzD;AAAA,EAEA,MAAc,QAAWA,QAAc,MAAmB,MAA0C;AAClG,UAAM,MAAM,SAAS,KAAK,SAASA,MAAI;AAEvC,UAAM,UAAkC;AAAA,MACtC,QAAQ;AAAA,MACR,GAAG,eAAe,KAAK,OAAO;AAAA,IAChC;AAEA,QAAI,KAAK,SAAS,QAAW;AAC3B,cAAQ,cAAc,IAAI,QAAQ,cAAc,KAAK;AAAA,IACvD;AAEA,QAAI,KAAK,QAAQ;AACf,cAAQ,gBAAgB,UAAU,KAAK,MAAM;AAAA,IAC/C;AAEA,QAAI,KAAK,OAAO;AACd,cAAQ,oBAAoB,IAAI,KAAK;AAAA,IACvC;AAEA,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AAED,QAAI,MAAM,kBAAkB,SAAS,WAAW,KAAK;AACnD,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,MAAM,WAAW,QAAQ;AAAA,IACjC;AAEA,QAAI,SAAS,WAAW,KAAK;AAC3B,aAAO;AAAA,IACT;AAEA,UAAMC,SAAO,MAAM,SAAS,KAAK;AACjC,QAAI,CAACA,OAAK,KAAK,GAAG;AAChB,aAAO;AAAA,IACT;AAEA,WAAO,cAAcA,MAAI;AAAA,EAC3B;AACF;AAEA,SAAS,SAAS,SAAiBD,QAAsB;AACvD,QAAM,iBAAiBA,OAAK,WAAW,GAAG,IAAIA,SAAO,IAAIA,MAAI;AAC7D,QAAM,MAAM,IAAID,KAAI,OAAO;AAC3B,MAAI,WAAW,GAAG,IAAI,SAAS,QAAQ,QAAQ,EAAE,CAAC,GAAG,cAAc;AACnE,SAAO,IAAI,SAAS;AACtB;AAEA,SAAS,cAAcE,QAAuB;AAC5C,MAAI;AACF,WAAO,KAAK,MAAMA,MAAI;AAAA,EACxB,QAAQ;AACN,WAAOA;AAAA,EACT;AACF;AAEA,eAAe,WAAW,UAA8C;AACtE,QAAMA,SAAO,MAAM,SAAS,KAAK;AACjC,QAAM,SAAS,cAAcA,MAAI;AAEjC,MAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,CAAC,MAAM,QAAQ,MAAM,GAAG;AAC3E,UAAM,OAAO;AACb,UAAM,UACH,OAAO,KAAK,UAAU,YAAY,KAAK,MAAM,KAAK,KAClD,OAAO,KAAK,YAAY,YAAY,KAAK,QAAQ,KAAK,KACvD,8BAA8B,SAAS,MAAM;AAE/C,WAAO,IAAI,gBAAgB,SAAS,QAAQ,SAAS,KAAK,SAAS,MAAM;AAAA,EAC3E;AAEA,SAAO,IAAI,gBAAgB,SAAS,QAAQ,8BAA8B,SAAS,MAAM,IAAI,QAAW,MAAM;AAChH;AAEA,SAAS,eAAe,SAA0D;AAChF,MAAI,CAAC,QAAS,QAAO,CAAC;AACtB,MAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,WAAO,OAAO,YAAY,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;AAAA,EAC/E;AACA,MAAI,mBAAmB,SAAS;AAC9B,WAAO,OAAO,YAAY,QAAQ,QAAQ,CAAC;AAAA,EAC7C;AACA,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC;AAAA,EACpE;AACF;;;AF1HO,SAAS,uBAAuB,SAAkB,MAA8C;AACrG,UACG,OAAO,uBAAuB,+BAA+B,EAC7D,OAAO,yBAAyB,kEAAkE,EAClG,OAAO,oBAAoB,0BAA0B,EACrD,OAAO,oBAAoB,0BAA0B,EACrD,OAAO,oBAAoB,gCAAgC,EAC3D,OAAO,qBAAqB,4CAA4C,EACxE,OAAO,UAAU,iBAAiB;AAErC,MAAI,MAAM,gBAAgB;AACxB,YAAQ,OAAO,yBAAyB,wCAAwC;AAAA,EAClF;AAEA,SAAO;AACT;AAEO,SAAS,sBACd,SACA,MACuB;AACvB,QAAM,UAAU,YAAY,QAAQ,OAAO;AAC3C,QAAM,EAAE,MAAM,aAAa,QAAQ,IAAI,eAAe,SAAS,QAAQ,OAAO;AAE9E,QAAM,UACJ,QAAQ,SAAS,KAAK,KACtB,QAAQ,IAAI,mBAAmB,KAAK,KACpC,QAAQ,WACR,uBAAuB,QAAQ,MAAM;AAEvC,QAAM,SACJ,QAAQ,QAAQ,KAAK,KACrB,QAAQ,IAAI,mBAAmB,KAAK,KACpC,sBAAsB,OAAO;AAE/B,QAAM,YACJ,QAAQ,WAAW,KAAK,KACxB,QAAQ,IAAI,sBAAsB,KAAK,KACvC,QAAQ;AAEV,MAAI,MAAM,kBAAkB,CAAC,WAAW;AACtC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,MAAM,IAAI,mBAAmB,EAAE,SAAS,OAAO,CAAC;AACtD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,QAAQ,QAAQ,IAAI;AAAA,EAC5B;AACF;AAEO,SAAS,YAAY,MAAe,OAA2C,CAAC,GAAS;AAC9F,MAAI,KAAK,MAAM;AACb,YAAQ,IAAI,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC;AACzC;AAAA,EACF;AAEA,MAAI,KAAK,OAAO;AACd,YAAQ,IAAIC,KAAG,KAAK,KAAK,KAAK,CAAC;AAAA,EACjC;AAEA,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,QAAI,KAAK,WAAW,GAAG;AACrB,cAAQ,IAAIA,KAAG,IAAI,SAAS,CAAC;AAC7B;AAAA,IACF;AACA,eAAW,QAAQ,MAAM;AACvB,UAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,gBAAQ,IAAI,mBAAmB,IAA+B,CAAC;AAAA,MACjE,OAAO;AACL,gBAAQ,IAAI,OAAO,IAAI,CAAC;AAAA,MAC1B;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,YAAQ,IAAI,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC;AACzC;AAAA,EACF;AAEA,MAAI,SAAS,UAAa,SAAS,MAAM;AACvC,YAAQ,IAAIA,KAAG,IAAI,QAAQ,CAAC;AAC5B;AAAA,EACF;AAEA,UAAQ,IAAI,OAAO,IAAI,CAAC;AAC1B;AAEO,SAAS,mBAAmB,QAAyC;AAC1E,QAAM,WAAW,CAAC,cAAc,MAAM,QAAQ,UAAU,YAAY,SAAS,QAAQ;AACrF,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,QAAkB,CAAC;AAEzB,aAAW,OAAO,UAAU;AAC1B,QAAI,EAAE,OAAO,QAAS;AACtB,UAAM,KAAK,GAAG,GAAG,IAAI,YAAY,OAAO,GAAG,CAAC,CAAC,EAAE;AAC/C,SAAK,IAAI,GAAG;AAAA,EACd;AAEA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,QAAI,KAAK,IAAI,GAAG,EAAG;AACnB,QAAI,OAAO,UAAU,SAAU;AAC/B,UAAM,KAAK,GAAG,GAAG,IAAI,YAAY,KAAK,CAAC,EAAE;AAAA,EAC3C;AAEA,SAAO,MAAM,KAAK,GAAG;AACvB;AAEA,SAAS,YAAY,OAAwB;AAC3C,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,UAAU,MAAM,QAAQ,QAAQ,GAAG,EAAE,KAAK;AAChD,WAAO,QAAQ,SAAS,KAAK,GAAG,QAAQ,MAAM,GAAG,EAAE,CAAC,QAAQ;AAAA,EAC9D;AACA,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AAC3D,WAAO,OAAO,KAAK;AAAA,EACrB;AACA,SAAO;AACT;AAEA,SAAS,uBAAuB,YAA6B;AAC3D,QAAM,UAAU,QAAQ,IAAI,uBAAuB,KAAK,KAAK;AAC7D,MAAI,OAAO,OAAO,QAAQ,IAAI,yBAAyB,EAAE;AAEzD,MAAI,CAAC,OAAO,SAAS,IAAI,KAAK,QAAQ,GAAG;AACvC,QAAI;AACF,YAAM,SAAS,WAAW,UAAU;AACpC,aAAO,OAAO,QAAQ,QAAQ,QAAQ,IAAI;AAAA,IAC5C,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,CAAC,OAAO,SAAS,IAAI,KAAK,QAAQ,GAAG;AACvC,WAAO;AAAA,EACT;AAEA,SAAO,UAAU,OAAO,IAAI,IAAI;AAClC;AAEA,SAAS,sBAAsB,SAAmD;AAChF,MAAI,CAAC,QAAQ,iBAAkB,QAAO;AACtC,SAAO,QAAQ,IAAI,QAAQ,gBAAgB,GAAG,KAAK,KAAK;AAC1D;AAEO,SAAS,mBAAmB,OAAuB;AACxD,MAAI,iBAAiB,iBAAiB;AACpC,UAAM,eAAe,MAAM,YAAY,SAAY,YAAY,KAAK,UAAU,MAAM,OAAO,CAAC,KAAK;AACjG,YAAQ,MAAMA,KAAG,IAAI,aAAa,MAAM,MAAM,KAAK,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;AAClF,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,UAAQ,MAAMA,KAAG,IAAI,OAAO,CAAC;AAC7B,UAAQ,KAAK,CAAC;AAChB;;;ATpLA,IAAM,oBAAoB,CAAC,SAAS,cAAc,aAAa,YAAY;AAC3E,IAAM,qBAAqB,CAAC,UAAU,QAAQ,YAAY,QAAQ;AAClE,IAAM,oBAAoB,oBAAI,IAAwB,CAAC,aAAa,UAAU,aAAa,WAAW,CAAC;AACvG,IAAM,mBAAmB;AAuBzB,SAASC,UAAS,OAAgD;AAChE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,IACrE,QACD;AACN;AAEA,SAASC,aAAY,OAAwB;AAC3C,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,MAAMD,UAAS,KAAK;AAC1B,MAAI,CAAC,IAAK,QAAO;AACjB,QAAM,UACH,OAAO,IAAI,YAAY,YAAY,IAAI,WACvC,OAAO,IAAI,UAAU,YAAY,IAAI,SACrC,OAAO,IAAI,SAAS,YAAY,IAAI,QACrC;AACF,MAAI,QAAS,QAAO;AACpB,MAAI;AACF,WAAO,KAAK,UAAU,GAAG;AAAA,EAC3B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAIA,eAAsB,aAAa,MAA0C;AAC3E,QAAM,QAAQ,QAAQ,KAAK,KAAK;AAChC,QAAM,gBAAgB,OAAO,SAAS,KAAK,WAAW,EAAE;AACxD,QAAM,YAAY,OAAO,SAAS,aAAa,IAAI,gBAAgB;AACnE,QAAM,SAAS,kBAAkB,SAAS,KAAK,MAAyB,IACnE,KAAK,SACN;AACJ,QAAM,gBAAgB,mBAAmB,SAAS,KAAK,OAA2B,IAC7E,KAAK,UACN;AAEJ,QAAM,MAAM,sBAAsB;AAAA,IAChC,QAAQ,KAAK;AAAA,IACb,SAAS,KAAK;AAAA,IACd,SAAS,KAAK;AAAA,IACd,SAAS,KAAK;AAAA,IACd,QAAQ,KAAK;AAAA,IACb,MAAM,KAAK;AAAA,EACb,CAAC;AACD,QAAM,MAAM,IAAI;AAEhB,QAAM,QAAQ,MAAM,IAAI,IAAW,eAAe,KAAK,OAAO,EAAE;AAChE,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,IAAI;AACpD,YAAQ,MAAME,KAAG,IAAI,oBAAoB,KAAK,OAAO,EAAE,CAAC;AACxD;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,IAAI;AAAA,IAC1B,eAAe,KAAK,OAAO;AAAA,IAC3B;AAAA,MACE;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,WAAW;AACd,YAAQ,MAAMA,KAAG,IAAI,4BAA4B,CAAC;AAClD;AAAA,EACF;AACA,MAAK,UAAkC,WAAW,WAAW;AAC3D,YAAQ,IAAIA,KAAG,OAAO,kCAAkC,CAAC;AACzD;AAAA,EACF;AAEA,QAAM,MAAM;AACZ,UAAQ,IAAIA,KAAG,KAAK,yBAAyB,IAAI,EAAE,cAAc,MAAM,IAAI,KAAK,MAAM,EAAE,GAAG,CAAC;AAE5F,QAAM,QAAQ,IAAI;AAClB,MAAI,cAA6B;AACjC,MAAI,eAAe;AACnB,MAAI,YAAY;AAChB,MAAI,mBAAmB;AAEvB,QAAM,gBAAgB,CAAC,QAAwC,UAAkB;AAC/E,QAAI,WAAW,SAAU,SAAQ,OAAO,MAAMA,KAAG,MAAM,WAAW,IAAI,KAAK;AAAA,aAClE,WAAW,SAAU,SAAQ,OAAO,MAAMA,KAAG,IAAI,WAAW,IAAI,KAAK;AAAA,QACzE,SAAQ,OAAO,MAAMA,KAAG,OAAO,WAAW,IAAI,KAAK;AAAA,EAC1D;AAEA,QAAM,qBAAqB,CAAC,YAAqC;AAC/D,UAAMC,eAAc,OAAO,QAAQ,gBAAgB,WAAW,QAAQ,cAAc;AACpF,UAAM,UAAU,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU;AACxE,UAAM,MAAM,OAAO,QAAQ,QAAQ,WAAW,QAAQ,MAAM;AAC5D,UAAM,OACJ,MAAM,QAAQ,QAAQ,WAAW,KAChC,QAAQ,YAA0B,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ,IAChE,QAAQ,cACT,CAAC;AACP,UAAM,MACJ,OAAO,QAAQ,QAAQ,YAAY,QAAQ,QAAQ,QAAQ,CAAC,MAAM,QAAQ,QAAQ,GAAG,IAChF,QAAQ,MACT;AACN,UAAM,SAAS,OAAO,QAAQ,WAAW,WAAW,QAAQ,SAAS;AACrE,UAAM,UACJ,OAAO,QAAQ,YAAY,YAAY,QAAQ,YAAY,QAAQ,CAAC,MAAM,QAAQ,QAAQ,OAAO,IAC5F,QAAQ,UACT;AAEN,YAAQ,IAAID,KAAG,KAAK,YAAYC,YAAW,EAAE,CAAC;AAC9C,QAAI,IAAK,SAAQ,IAAID,KAAG,KAAK,gBAAgB,GAAG,EAAE,CAAC;AACnD,QAAI,SAAS;AACX,YAAM,WAAW,KAAK,SAAS,IAAI,GAAG,OAAO,IAAI,KAAK,KAAK,GAAG,CAAC,KAAK;AACpE,cAAQ,IAAIA,KAAG,KAAK,YAAY,QAAQ,EAAE,CAAC;AAAA,IAC7C;AACA,QAAI,KAAK;AACP,cAAQ,IAAIA,KAAG,KAAK,MAAM,CAAC;AAC3B,cAAQ,IAAIA,KAAG,KAAK,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC;AAAA,IACnD;AACA,QAAI,SAAS;AACX,cAAQ,IAAIA,KAAG,KAAK,UAAU,CAAC;AAC/B,cAAQ,IAAIA,KAAG,KAAK,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC,CAAC;AAAA,IACvD;AACA,QAAI,QAAQ;AACV,cAAQ,IAAIA,KAAG,KAAK,SAAS,CAAC;AAC9B,cAAQ,IAAI,MAAM;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,cAA2B,MAAM,eAAe;AACtD,QAAM,aAAa,cAAc,WAAW;AAE5C,QAAM,oBAAoB,CAAC,QAAwC,UAAkB;AACnF,QAAI,OAAO;AACT,oBAAc,QAAQ,KAAK;AAC3B;AAAA,IACF;AAEA,QAAI,WAAW,UAAU;AACvB,oBAAc,QAAQ,KAAK;AAC3B;AAAA,IACF;AAEA,UAAM,WAAW,mBAAmB;AACpC,UAAM,QAAQ,SAAS,MAAM,OAAO;AACpC,uBAAmB,MAAM,IAAI,KAAK;AAClC,eAAW,QAAQ,OAAO;AACxB,iBAAW,kBAAkB,MAAM,KAAK;AAAA,IAC1C;AAAA,EACF;AAEA,QAAM,cAAc,CAAC,UAAmC;AACtD,UAAM,UAAU,iBAAiB,MAAM,OAAO;AAC9C,QAAI,MAAM,UAAU,MAAO;AAC3B,UAAM,YAAY,OAAO,MAAM,cAAc,WACzC,MAAM,YACN,OAAO,MAAM,SAAS,WACtB,MAAM,OACN;AAEJ,QAAI,cAAc,wBAAwB;AACxC,YAAM,SAAS,OAAO,QAAQ,WAAW,WAAW,QAAQ,SAAS;AACrE,UAAI,QAAQ;AACV,gBAAQ,IAAIA,KAAG,KAAK,YAAY,MAAM,EAAE,CAAC;AAAA,MAC3C;AAAA,IACF,WAAW,cAAc,kBAAkB;AACzC,yBAAmB,OAAO;AAAA,IAC5B,WAAW,cAAc,qBAAqB;AAC5C,YAAM,SAAS,OAAO,QAAQ,WAAW,WAAW,QAAQ,SAAS;AACrE,YAAM,QAAQ,OAAO,QAAQ,UAAU,WAAW,QAAQ,QAAQ;AAClE,UAAI,CAAC,MAAO;AACZ,UAAI,WAAW,YAAY,WAAW,YAAY,WAAW,UAAU;AACrE,0BAAkB,QAAQ,KAAK;AAAA,MACjC;AAAA,IACF,WAAW,OAAO,MAAM,YAAY,UAAU;AAC5C,cAAQ,IAAIA,KAAG,KAAK,WAAW,aAAa,qBAAqB,KAAK,MAAM,OAAO,EAAE,CAAC;AAAA,IACxF;AAEA,mBAAe,KAAK,IAAI,cAAc,MAAM,OAAO,CAAC;AAAA,EACtD;AAEA,gBAAc;AACd,MAAI,cAA6B;AACjC,MAAI,aAA4B;AAChC,MAAI,WAAgC;AAEpC,QAAM,WAAW,YAAY,IAAI,KAAK,IAAI,IAAI,YAAY;AAC1D,MAAI,CAAC,aAAa;AAChB,YAAQ,MAAMA,KAAG,IAAI,oCAAoC,CAAC;AAC1D;AAAA,EACF;AAEA,SAAO,MAAM;AACT,UAAM,SAAS,MAAM,IAAI;AAAA,MACvB,uBAAuB,WAAW,oBAAoB,YAAY;AAAA,IACpE;AACF,eAAW,SAAS,MAAM,QAAQ,MAAM,IAAK,SAAuC,CAAC,GAAG;AACtF,kBAAY,KAAK;AAAA,IACnB;AAEE,UAAM,UAAW,MAAM,IAAI;AAAA,MACzB,kBAAkB,MAAM,SAAS,2BAA2B,MAAM,EAAE;AAAA,IACtE,KAAM,CAAC;AACP,UAAM,aAAa,QAAQ,KAAK,CAAC,MAAM,KAAK,EAAE,OAAO,WAAW,KAAK;AAEvE,QAAI,CAAC,YAAY;AACf,cAAQ,MAAMA,KAAG,IAAI,2BAA2B,CAAC;AACjD;AAAA,IACF;AAEA,UAAM,gBAAgB,WAAW;AACjC,QAAI,kBAAkB,eAAe,eAAe;AAClD,oBAAc;AACd,cAAQ,IAAIA,KAAG,KAAK,WAAW,aAAa,EAAE,CAAC;AAAA,IACjD;AAEA,QAAI,iBAAiB,kBAAkB,IAAI,aAAa,GAAG;AACzD,oBAAc,WAAW;AACzB,mBAAa,WAAW;AACxB,iBAAW;AACX;AAAA,IACF;AAEA,QAAI,YAAY,KAAK,IAAI,KAAK,UAAU;AACtC,mBAAa,uBAAuB,SAAS;AAC7C,oBAAc;AACd,cAAQ,MAAMA,KAAG,OAAO,UAAU,CAAC;AACnC;AAAA,IACF;AAEA,UAAM,YAAY,MAAM,IAAI;AAAA,MAC1B,uBAAuB,WAAW,eAAe,SAAS;AAAA,MAC1D,EAAE,gBAAgB,KAAK;AAAA,IACzB;AACA,QAAI,aAAa,UAAU,SAAS;AAClC,iBAAW,SAAS,UAAU,QAAQ,MAAM,OAAO,GAAG;AACpD,YAAI,CAAC,MAAO;AACZ,cAAM,SAAS,iBAAiB,KAAK;AACrC,YAAI,CAAC,OAAQ;AACb,0BAAkB,OAAO,QAAQ,OAAO,KAAK;AAAA,MAC/C;AACA,UAAI,OAAO,UAAU,eAAe,UAAU;AAC5C,oBAAY,UAAU;AAAA,MACxB,WAAW,UAAU,SAAS;AAC5B,qBAAa,OAAO,WAAW,UAAU,SAAS,MAAM;AAAA,MAC1D;AAAA,IACF;AAEA,UAAM,MAAM,gBAAgB;AAAA,EAC9B;AAEA,MAAI,aAAa;AACf,QAAI,CAAC,SAAS,iBAAiB,KAAK,GAAG;AACrC,iBAAW,kBAAkB,kBAAkB,KAAK;AACpD,yBAAmB;AAAA,IACrB;AACA,UAAM,QAAQ,OAAO,WAAW,0BAA0B,WAAW;AACrE,QAAI,gBAAgB,aAAa;AAC/B,cAAQ,IAAIA,KAAG,MAAM,KAAK,CAAC;AAC3B;AAAA,IACF;AAEA,YAAQ,IAAIA,KAAG,IAAI,KAAK,CAAC;AACzB,QAAI,YAAY;AACd,cAAQ,IAAIA,KAAG,IAAI,UAAU,UAAU,EAAE,CAAC;AAAA,IAC5C;AACA,QAAI,UAAU;AACZ,YAAM,YAAYF,UAAS,SAAS,UAAU;AAC9C,UAAI,WAAW;AACb,cAAM,UAAU,OAAO,UAAU,YAAY,WAAW,UAAU,UAAU;AAC5E,cAAM,UAAU,UAAU,aAAa;AACvC,cAAM,SAAS,MAAM,QAAQ,UAAU,MAAM,IAAI,UAAU,OAAO,IAAIC,YAAW,EAAE,OAAO,OAAO,IAAI,CAAC;AACtG,cAAM,aAAa,OAAO,UAAU,WAAW,WAAW,UAAU,OAAO,KAAK,IAAI;AACpF,YAAI,WAAW,WAAW,OAAO,SAAS,KAAK,YAAY;AACzD,kBAAQ,IAAIC,KAAG,IAAI,wBAAwB,CAAC;AAC5C,cAAI,QAAS,SAAQ,IAAIA,KAAG,IAAI,cAAc,OAAO,EAAE,CAAC;AACxD,cAAI,QAAS,SAAQ,IAAIA,KAAG,IAAI,kBAAkB,CAAC;AACnD,cAAI,OAAO,SAAS,EAAG,SAAQ,IAAIA,KAAG,IAAI,aAAa,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC;AAC5E,cAAI,WAAY,SAAQ,IAAIA,KAAG,IAAI,aAAa,UAAU,EAAE,CAAC;AAAA,QAC/D;AAAA,MACF;AAEA,YAAM,gBAAgB,OAAO,SAAS,kBAAkB,WAAW,SAAS,cAAc,KAAK,IAAI;AACnG,YAAM,gBAAgB,OAAO,SAAS,kBAAkB,WAAW,SAAS,cAAc,KAAK,IAAI;AACnG,UAAI,eAAe;AACjB,gBAAQ,IAAIA,KAAG,IAAI,iBAAiB,CAAC;AACrC,gBAAQ,IAAI,aAAa;AAAA,MAC3B;AACA,UAAI,kBAAkB,SAAS,CAAC,gBAAgB;AAC9C,gBAAQ,IAAIA,KAAG,KAAK,iBAAiB,CAAC;AACtC,gBAAQ,IAAI,aAAa;AAAA,MAC3B;AAAA,IACF;AACA,YAAQ,WAAW;AAAA,EACrB,OAAO;AACL,YAAQ,WAAW;AACnB,YAAQ,IAAIA,KAAG,KAAK,gDAAgD,CAAC;AAAA,EACvE;AACF;AAEA,SAAS,iBAAiB,SAA2C;AACnE,SAAO,OAAO,YAAY,YAAY,YAAY,OAAQ,UAAsC,CAAC;AACnG;AAEA,SAAS,iBAAiB,MAAgF;AACxG,MAAI;AACF,UAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,UAAM,SACJ,OAAO,WAAW,YAAY,OAAO,WAAW,YAAY,OAAO,WAAW,WAC1E,OAAO,SACP;AACN,UAAM,QAAQ,OAAO,OAAO,UAAU,WAAW,OAAO,QAAQ;AAEhE,QAAI,CAAC,MAAO,QAAO;AACnB,WAAO,EAAE,QAAQ,MAAM;AAAA,EACzB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;AJhVA;AACA;;;AgBPA,OAAOE,UAAQ;AAwBR,SAAS,wBAAwBC,UAAwB;AAC9D,QAAM,UAAUA,SAAQ,QAAQ,SAAS,EAAE,YAAY,oCAAoC;AAE3F,UACG,QAAQ,MAAM,EACd,YAAY,yCAAyC,EACrD,OAAO,yBAAyB,kEAAkE,EAClG,OAAO,oBAAoB,0BAA0B,EACrD,OAAO,oBAAoB,oBAAoB,EAC/C,OAAO,UAAU,iBAAiB,EAClC,OAAO,CAAC,SAAyB;AAChC,UAAM,cAAc,mBAAmB,KAAK,OAAO;AACnD,UAAM,QAAQ,YAAY,KAAK,OAAO;AACtC,UAAM,WAAW,eAAe,OAAO,KAAK,OAAO;AACnD,UAAM,UAAU;AAAA,MACd;AAAA,MACA,gBAAgB,MAAM;AAAA,MACtB,aAAa,SAAS;AAAA,MACtB,SAAS,SAAS;AAAA,MAClB,UAAU,MAAM;AAAA,IAClB;AACA,gBAAY,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC;AAAA,EAC1C,CAAC;AAEH,UACG,QAAQ,MAAM,EACd,YAAY,iCAAiC,EAC7C,OAAO,yBAAyB,kEAAkE,EAClG,OAAO,oBAAoB,0BAA0B,EACrD,OAAO,UAAU,iBAAiB,EAClC,OAAO,CAAC,SAAyB;AAChC,UAAM,QAAQ,YAAY,KAAK,OAAO;AACtC,UAAM,OAAO,OAAO,QAAQ,MAAM,QAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,OAAO,OAAO;AAAA,MACpE;AAAA,MACA,SAAS,SAAS,MAAM;AAAA,MACxB,SAAS,QAAQ,WAAW;AAAA,MAC5B,WAAW,QAAQ,aAAa;AAAA,MAChC,kBAAkB,QAAQ,oBAAoB;AAAA,IAChD,EAAE;AACF,gBAAY,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC;AAAA,EACvC,CAAC;AAEH,UACG,QAAQ,KAAK,EACb,YAAY,4BAA4B,EACxC,SAAS,aAAa,cAAc,EACpC,OAAO,yBAAyB,kEAAkE,EAClG,OAAO,oBAAoB,0BAA0B,EACrD,OAAO,CAAC,SAAiB,SAAyB;AACjD,sBAAkB,SAAS,KAAK,OAAO;AACvC,YAAQ,IAAIC,KAAG,MAAM,0BAA0B,OAAO,IAAI,CAAC;AAAA,EAC7D,CAAC;AAEH,UACG,QAAQ,KAAK,EACb,YAAY,yBAAyB,EACrC,OAAO,yBAAyB,kEAAkE,EAClG,OAAO,oBAAoB,0BAA0B,EACrD,OAAO,oBAAoB,yCAAyC,EACpE,OAAO,oBAAoB,sBAAsB,EACjD,OAAO,qBAAqB,oBAAoB,EAChD,OAAO,iCAAiC,0CAA0C,EAClF,OAAO,SAAS,4BAA4B,EAC5C,OAAO,UAAU,iBAAiB,EAClC,OAAO,CAAC,SAA4B;AACnC,UAAM,WAAW,YAAY,KAAK,OAAO;AACzC,UAAM,gBAAgB,KAAK,SAAS,KAAK,KAAK,SAAS,kBAAkB;AAEzE;AAAA,MACE;AAAA,MACA;AAAA,QACE,SAAS,KAAK;AAAA,QACd,WAAW,KAAK;AAAA,QAChB,kBAAkB,KAAK;AAAA,MACzB;AAAA,MACA,KAAK;AAAA,IACP;AAEA,QAAI,KAAK,KAAK;AACZ,wBAAkB,eAAe,KAAK,OAAO;AAAA,IAC/C;AAEA,UAAM,UAAU,YAAY,KAAK,OAAO;AACxC,UAAM,WAAW,eAAe,SAAS,aAAa;AACtD,UAAM,UAAU;AAAA,MACd,aAAa,mBAAmB,KAAK,OAAO;AAAA,MAC5C,gBAAgB,QAAQ;AAAA,MACxB,aAAa,SAAS;AAAA,MACtB,SAAS,SAAS;AAAA,IACpB;AAEA,QAAI,CAAC,KAAK,MAAM;AACd,cAAQ,IAAIA,KAAG,MAAM,oBAAoB,aAAa,IAAI,CAAC;AAC3D,UAAI,KAAK,KAAK;AACZ,gBAAQ,IAAIA,KAAG,MAAM,QAAQ,aAAa,sBAAsB,CAAC;AAAA,MACnE;AAAA,IACF;AACA,gBAAY,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC;AAAA,EAC1C,CAAC;AACL;;;AC3HA,SAAS,OAAO,YAAAC,WAAU,MAAM,iBAAiB;AACjD,OAAOC,WAAU;AA8CjB,SAASC,YAAW,OAAwB;AAC1C,SAAO,6EAA6E,KAAK,KAAK;AAChG;AAEA,SAAS,kBAAkB,OAAuB;AAChD,SAAO,MAAM,KAAK;AACpB;AAEA,SAAS,aAAa,OAAsD;AAC1E,MAAI,CAAC,SAAS,CAAC,MAAM,KAAK,EAAG,QAAO,EAAE,SAAS,MAAM,QAAQ,KAAK;AAClE,QAAM,SAAS,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,YAAY,CAAC,EAAE,OAAO,OAAO;AACvF,QAAM,UAAU;AAAA,IACd,SAAS,OAAO,SAAS,SAAS;AAAA,IAClC,QAAQ,OAAO,SAAS,QAAQ;AAAA,EAClC;AACA,MAAI,CAAC,QAAQ,WAAW,CAAC,QAAQ,QAAQ;AACvC,UAAM,IAAI,MAAM,6DAA6D;AAAA,EAC/E;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAA6C;AAChE,MAAI,CAAC,SAAS,CAAC,MAAM,KAAK,EAAG,QAAO;AACpC,QAAM,aAAa,MAAM,KAAK,EAAE,YAAY;AAC5C,MAAI,eAAe,MAAO,QAAO;AACjC,QAAM,SAAS,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE,OAAO,OAAO;AACzE,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,SAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC;AACnC;AAEA,SAAS,UAAU,OAAwB;AACzC,SAAO,gBAAgB,KAAK,MAAM,KAAK,CAAC;AAC1C;AAEA,SAAS,YAAY,OAAwB;AAC3C,SAAO,6BAA6B,KAAK,MAAM,KAAK,CAAC;AACvD;AAEA,eAAe,4BAA4B,WAGxC;AACD,QAAM,WAAWC,MAAK,QAAQ,SAAS;AACvC,QAAM,eAAe,MAAM,KAAK,QAAQ;AACxC,QAAM,eAAe,aAAa,YAAY,IAC1CA,MAAK,KAAK,UAAU,yBAAyB,IAC7C;AACJ,QAAM,kBAAkBA,MAAK,QAAQ,YAAY;AACjD,QAAM,cAAc,MAAMC,UAAS,cAAc,MAAM;AACvD,QAAM,WAAW,KAAK,MAAM,WAAW;AACvC,QAAM,QAAgC,CAAC;AAEvC,MAAI,SAAS,SAAS,MAAM;AAC1B,UAAM,cAAc,SAAS,QAAQ,KAAK,QAAQ,OAAO,GAAG;AAC5D,UAAM,WAAW,IAAI,MAAMA,UAASD,MAAK,KAAK,iBAAiB,WAAW,GAAG,MAAM;AAAA,EACrF;AACA,aAAW,SAAS,SAAS,UAAU,CAAC,GAAG;AACzC,UAAM,YAAY,MAAM,KAAK,QAAQ,OAAO,GAAG;AAC/C,UAAM,SAAS,IAAI,MAAMC,UAASD,MAAK,KAAK,iBAAiB,SAAS,GAAG,MAAM;AAAA,EACjF;AAEA,SAAO,EAAE,UAAU,MAAM;AAC3B;AAEA,eAAe,oBAAoB,QAAgB,UAAyD;AAC1G,QAAM,OAAOA,MAAK,QAAQ,MAAM;AAChC,QAAM,MAAM,MAAM,EAAE,WAAW,KAAK,CAAC;AACrC,QAAM,eAAeA,MAAK,KAAK,MAAM,yBAAyB;AAC9D,QAAM,UAAU,cAAc,KAAK,UAAU,SAAS,UAAU,MAAM,CAAC,GAAG,MAAM;AAChF,aAAW,CAAC,cAAc,OAAO,KAAK,OAAO,QAAQ,SAAS,KAAK,GAAG;AACpE,UAAM,aAAa,aAAa,QAAQ,OAAO,GAAG;AAClD,UAAM,WAAWA,MAAK,KAAK,MAAM,UAAU;AAC3C,UAAM,MAAMA,MAAK,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AACvD,UAAM,UAAU,UAAU,SAAS,MAAM;AAAA,EAC3C;AACF;AAEA,SAAS,cAAc,SAAkB,UAA2B;AAClE,SAAO,QAAQ,YAAY,YAAY,MAAM,SAAS,YAAY;AACpE;AAEO,SAAS,0BACdE,YACA,aACA,KAAgC,QACvB;AACT,QAAM,WAAW,kBAAkB,WAAW;AAC9C,MAAI,CAAC,UAAU;AACb,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AAEA,QAAM,UAAUA,WAAU,KAAK,CAAC,YAAY,QAAQ,OAAO,QAAQ;AACnE,QAAM,cAAcA,WAAU,KAAK,CAAC,YAAY,cAAc,SAAS,QAAQ,CAAC;AAEhF,MAAI,OAAO,MAAM;AACf,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,2BAA2B,QAAQ,IAAI;AAAA,IACzD;AACA,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU;AACnB,QAAI,CAAC,aAAa;AAChB,YAAM,IAAI,MAAM,yCAAyC,QAAQ,IAAI;AAAA,IACvE;AACA,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,eAAe,QAAQ,OAAO,YAAY,IAAI;AAC3D,UAAM,IAAI;AAAA,MACR,aAAa,QAAQ;AAAA,IACvB;AAAA,EACF;AAEA,MAAI,QAAS,QAAO;AACpB,MAAI,YAAa,QAAO;AAExB,QAAM,IAAI;AAAA,IACR,kCAAkC,QAAQ;AAAA,EAC5C;AACF;AAEO,SAAS,yBAAyB,SAAkB,MAAkC;AAC3F,MAAI,CAAC,KAAK,KAAK;AACb,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AAEA,QAAMC,WAAU,KAAK,SAAS,KAAK;AACnC,MAAI,CAACA,UAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAeA,aAAY,QAAQ;AACzC,QAAM,mBAAmBA,SAAQ,YAAY,MAAM,QAAQ,YAAY,YAAY;AACnF,MAAI,CAAC,gBAAgB,CAAC,kBAAkB;AACtC,UAAM,IAAI;AAAA,MACR,iBAAiBA,QAAO,iDAAiD,QAAQ,EAAE,gBAAgB,QAAQ,WAAW;AAAA,IACxH;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,MAAkC;AAC3D,MAAI,CAAC,KAAK,KAAK;AACb,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AACA,MAAI,CAAC,KAAK,SAAS,KAAK,GAAG;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,wBAAwBC,UAAwB;AAC9D,QAAM,UAAUA,SAAQ,QAAQ,SAAS,EAAE,YAAY,oBAAoB;AAE3E;AAAA,IACE,QACG,QAAQ,MAAM,EACd,YAAY,gBAAgB,EAC5B,OAAO,OAAO,SAAgC;AAC7C,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,OAAQ,MAAM,IAAI,IAAI,IAAe,gBAAgB,KAAM,CAAC;AAClE,YAAI,IAAI,MAAM;AACZ,sBAAY,MAAM,EAAE,MAAM,KAAK,CAAC;AAChC;AAAA,QACF;AAEA,YAAI,KAAK,WAAW,GAAG;AACrB,sBAAY,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;AAC/B;AAAA,QACF;AAEA,cAAM,YAAY,KAAK,IAAI,CAAC,SAAS;AAAA,UACnC,IAAI,IAAI;AAAA,UACR,MAAM,IAAI;AAAA,UACV,QAAQ,IAAI;AAAA,UACZ,oBAAoB,IAAI;AAAA,UACxB,mBAAmB,IAAI;AAAA,UACvB,kCAAkC,IAAI;AAAA,QACxC,EAAE;AACF,mBAAW,OAAO,WAAW;AAC3B,kBAAQ,IAAI,mBAAmB,GAAG,CAAC;AAAA,QACrC;AAAA,MACF,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,QACG,QAAQ,KAAK,EACb,YAAY,iBAAiB,EAC7B,SAAS,eAAe,YAAY,EACpC,OAAO,OAAO,WAAmB,SAAgC;AAChE,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,MAAM,MAAM,IAAI,IAAI,IAAa,kBAAkB,SAAS,EAAE;AACpE,oBAAY,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACrC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,QACG,QAAQ,QAAQ,EAChB,YAAY,0DAA0D,EACtE,SAAS,eAAe,YAAY,EACpC,eAAe,gBAAgB,kBAAkB,EACjD,OAAO,sBAAsB,+CAA+C,gBAAgB,EAC5F,OAAO,OAAO,WAAmB,SAA+B;AAC/D,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,UAAU,aAAa,KAAK,OAAO;AACzC,cAAM,WAAW,MAAM,IAAI,IAAI;AAAA,UAC7B,kBAAkB,SAAS;AAAA,UAC3B,EAAE,QAAQ;AAAA,QACZ;AACA,YAAI,CAAC,UAAU;AACb,gBAAM,IAAI,MAAM,iCAAiC;AAAA,QACnD;AACA,cAAM,oBAAoB,KAAK,KAAM,QAAQ;AAC7C;AAAA,UACE;AAAA,YACE,IAAI;AAAA,YACJ,KAAKJ,MAAK,QAAQ,KAAK,GAAI;AAAA,YAC3B,cAAc,OAAO,KAAK,SAAS,KAAK,EAAE,SAAS;AAAA,YACnD,cAAc,SAAS,SAAS;AAAA,UAClC;AAAA,UACA,EAAE,MAAM,IAAI,KAAK;AAAA,QACnB;AACA,YAAI,CAAC,IAAI,QAAQ,SAAS,SAAS,SAAS,GAAG;AAC7C,qBAAW,WAAW,SAAS,UAAU;AACvC,oBAAQ,IAAI,WAAW,OAAO,EAAE;AAAA,UAClC;AAAA,QACF;AAAA,MACF,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,QACG,QAAQ,QAAQ,EAChB,YAAY,mEAAmE,EAC/E,eAAe,sBAAsB,oBAAoB,EACzD,OAAO,sBAAsB,+CAA+C,gBAAgB,EAC5F,OAAO,mBAAmB,6BAA6B,EACvD,OAAO,yBAAyB,4BAA4B,EAC5D,OAAO,6BAA6B,gCAAgC,EACpE,OAAO,mBAAmB,iDAAiD,KAAK,EAChF,OAAO,sBAAsB,+CAA+C,QAAQ,EACpF,OAAO,aAAa,qCAAqC,KAAK,EAC9D,OAAO,OAAO,SAA+B;AAC5C,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,QAAQ,KAAK,QAAQ,IAAI,KAAK;AACpC,YAAI,CAAC,MAAM;AACT,gBAAM,IAAI,MAAM,oBAAoB;AAAA,QACtC;AAEA,cAAM,UAAU,aAAa,KAAK,OAAO;AACzC,cAAMK,UAAS,YAAY,KAAK,MAAM;AACtC,cAAM,aAAa,KAAK,aAAa,UAAU,YAAY;AAC3D,YAAI,CAAC,CAAC,UAAU,QAAQ,SAAS,EAAE,SAAS,SAAS,GAAG;AACtD,gBAAM,IAAI,MAAM,uDAAuD;AAAA,QACzE;AAEA,cAAM,iBAAiB,KAAK,WAAW,KAAK,aAAa,IAAI,YAAY,aAAa;AACtF,cAAM,SAAS,eAAe,YAAY;AAC1C,YAAI,CAAC,CAAC,OAAO,UAAU,EAAE,SAAS,MAAM,GAAG;AACzC,gBAAM,IAAI,MAAM,6CAA6C;AAAA,QAC/D;AAEA,cAAM,0BAA0B,KAAK,WAAW,KAAK,KAAK,IAAI;AAC9D,cAAM,gBACJ,WAAW,aACP;AAAA,UACE,MAAM;AAAA,UACN,WAAW;AAAA,QACb,IACA;AAAA,UACE,MAAM;AAAA,UACN,gBAAgB,KAAK,gBAAgB,KAAK,KAAK;AAAA,QACjD;AAEN,YAAI,cAAc,SAAS,sBAAsB,CAAC,cAAc,WAAW;AACzE,gBAAM,IAAI,MAAM,+EAA+E;AAAA,QACjG;AAEA,YAAI;AAKJ,YAAI,UAAU,IAAI,GAAG;AACnB,0BAAgB,YAAY,IAAI,IAC5B,EAAE,MAAM,UAAU,KAAK,KAAK,IAC5B,EAAE,MAAM,OAAO,KAAK,KAAK;AAAA,QAC/B,OAAO;AACL,gBAAM,SAAS,MAAM,4BAA4B,IAAI;AACrD,0BAAgB;AAAA,YACd,MAAM;AAAA,YACN,UAAU,OAAO;AAAA,YACjB,OAAO,OAAO;AAAA,UAChB;AAAA,QACF;AAEA,cAAM,UAAU;AAAA,UACd,QAAQ;AAAA,UACR;AAAA,UACA,QAAQ;AAAA,UACR,QAAAA;AAAA,UACA,mBAAmB;AAAA,QACrB;AAEA,YAAI,KAAK,QAAQ;AACf,gBAAM,UAAU,MAAM,IAAI,IAAI;AAAA,YAC5B;AAAA,YACA;AAAA,UACF;AACA,sBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AACvC;AAAA,QACF;AAEA,cAAM,WAAW,MAAM,IAAI,IAAI,KAAqC,yBAAyB,OAAO;AACpG,oBAAY,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MAC1C,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,QACG,QAAQ,QAAQ,EAChB,YAAY,0DAA0D,EACtE,SAAS,cAAc,8CAA8C,EACrE;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,IACF,EACC,OAAO,SAAS,sDAAsD,KAAK,EAC3E;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,OAAO,OAAO,UAAkB,SAA+B;AAC9D,UAAI;AACF,cAAM,MAAM,KAAK,MAAM,QAAQ,KAAK,EAAE,YAAY;AAClD,YAAI,CAAC,CAAC,QAAQ,MAAM,QAAQ,EAAE,SAAS,EAAE,GAAG;AAC1C,gBAAM,IAAI,MAAM,sBAAsB,KAAK,EAAE,uCAAuC;AAAA,QACtF;AAEA,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,qBAAqB,kBAAkB,QAAQ;AACrD,0BAAkB,IAAI;AAEtB,YAAI,SAAyB;AAC7B,cAAM,oBAAoB,OAAO,QAAS,OAAO,UAAUN,YAAW,kBAAkB;AACxF,YAAI,mBAAmB;AACrB,gBAAM,OAAO,MAAM,IAAI,IAAI,IAAa,kBAAkB,kBAAkB,IAAI,EAAE,gBAAgB,KAAK,CAAC;AACxG,cAAI,MAAM;AACR,qBAAS;AAAA,UACX,WAAW,OAAO,MAAM;AACtB,kBAAM,IAAI,MAAM,2BAA2B,kBAAkB,IAAI;AAAA,UACnE;AAAA,QACF;AAEA,YAAI,CAAC,UAAU,IAAI,WAAW;AAC5B,gBAAM,SAAS,MAAM,IAAI,IAAI,IAAa,kBAAkB,IAAI,SAAS,IAAI,EAAE,gBAAgB,KAAK,CAAC;AACrG,cAAI,QAAQ;AACV,gBAAI;AACF,uBAAS,0BAA0B,CAAC,MAAM,GAAG,oBAAoB,EAAE;AAAA,YACrE,QAAQ;AAAA,YAER;AAAA,UACF;AAAA,QACF;AAEA,YAAI,CAAC,QAAQ;AACX,cAAI;AACF,kBAAMG,aAAa,MAAM,IAAI,IAAI,IAAe,gBAAgB,KAAM,CAAC;AACvE,qBAAS,0BAA0BA,YAAW,oBAAoB,EAAE;AAAA,UACtE,SAAS,OAAO;AACd,gBAAI,iBAAiB,mBAAmB,MAAM,WAAW,OAAO,MAAM,QAAQ,SAAS,uBAAuB,GAAG;AAC/G,oBAAM,IAAI;AAAA,gBACR;AAAA,cACF;AAAA,YACF;AACA,kBAAM;AAAA,UACR;AAAA,QACF;AAEA,YAAI,CAAC,QAAQ;AACX,gBAAM,IAAI,MAAM,kCAAkC,kBAAkB,IAAI;AAAA,QAC1E;AAEA,iCAAyB,QAAQ,IAAI;AAErC,cAAM,IAAI,IAAI,OAAqB,kBAAkB,OAAO,EAAE,EAAE;AAEhE;AAAA,UACE;AAAA,YACE,IAAI;AAAA,YACJ,kBAAkB,OAAO;AAAA,YACzB,oBAAoB,OAAO;AAAA,YAC3B,sBAAsB,OAAO;AAAA,UAC/B;AAAA,UACA,EAAE,MAAM,IAAI,KAAK;AAAA,QACnB;AAAA,MACF,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AACF;;;ACtdA;AA8DO,SAAS,sBAAsBI,UAAwB;AAC5D,QAAM,QAAQA,SAAQ,QAAQ,OAAO,EAAE,YAAY,kBAAkB;AAErE;AAAA,IACE,MACG,QAAQ,MAAM,EACd,YAAY,2BAA2B,EACvC,OAAO,yBAAyB,YAAY,EAC5C,OAAO,kBAAkB,0BAA0B,EACnD,OAAO,4BAA4B,6BAA6B,EAChE,OAAO,qBAAqB,sBAAsB,EAClD,OAAO,kBAAkB,kDAAkD,EAC3E,OAAO,OAAO,SAA2B;AACxC,UAAI;AACF,cAAM,MAAM,sBAAsB,MAAM,EAAE,gBAAgB,KAAK,CAAC;AAChE,cAAM,SAAS,IAAI,gBAAgB;AACnC,YAAI,KAAK,OAAQ,QAAO,IAAI,UAAU,KAAK,MAAM;AACjD,YAAI,KAAK,gBAAiB,QAAO,IAAI,mBAAmB,KAAK,eAAe;AAC5E,YAAI,KAAK,UAAW,QAAO,IAAI,aAAa,KAAK,SAAS;AAE1D,cAAM,QAAQ,OAAO,SAAS;AAC9B,cAAMC,SAAO,kBAAkB,IAAI,SAAS,UAAU,QAAQ,IAAI,KAAK,KAAK,EAAE;AAC9E,cAAM,OAAQ,MAAM,IAAI,IAAI,IAAaA,MAAI,KAAM,CAAC;AAEpD,cAAM,WAAW,gBAAgB,MAAM,KAAK,KAAK;AACjD,YAAI,IAAI,MAAM;AACZ,sBAAY,UAAU,EAAE,MAAM,KAAK,CAAC;AACpC;AAAA,QACF;AAEA,YAAI,SAAS,WAAW,GAAG;AACzB,sBAAY,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;AAC/B;AAAA,QACF;AAEA,mBAAW,QAAQ,UAAU;AAC3B,kBAAQ;AAAA,YACN,mBAAmB;AAAA,cACjB,YAAY,KAAK;AAAA,cACjB,IAAI,KAAK;AAAA,cACT,QAAQ,KAAK;AAAA,cACb,UAAU,KAAK;AAAA,cACf,iBAAiB,KAAK;AAAA,cACtB,OAAO,KAAK;AAAA,cACZ,WAAW,KAAK;AAAA,YAClB,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,IACH,EAAE,gBAAgB,MAAM;AAAA,EAC1B;AAEA;AAAA,IACE,MACG,QAAQ,KAAK,EACb,YAAY,iDAAiD,EAC7D,SAAS,oBAAoB,wBAAwB,EACrD,OAAO,OAAO,gBAAwB,SAA4B;AACjE,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,MAAM,MAAM,IAAI,IAAI,IAAW,eAAe,cAAc,EAAE;AACpE,oBAAY,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACrC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,MACG,QAAQ,QAAQ,EAChB,YAAY,iBAAiB,EAC7B,eAAe,yBAAyB,YAAY,EACpD,eAAe,mBAAmB,aAAa,EAC/C,OAAO,wBAAwB,mBAAmB,EAClD,OAAO,qBAAqB,cAAc,EAC1C,OAAO,yBAAyB,gBAAgB,EAChD,OAAO,4BAA4B,mBAAmB,EACtD,OAAO,qBAAqB,YAAY,EACxC,OAAO,kBAAkB,SAAS,EAClC,OAAO,oBAAoB,iBAAiB,EAC5C,OAAO,uBAAuB,uBAAuB,EACrD,OAAO,yBAAyB,cAAc,EAC9C,OAAO,OAAO,SAA6B;AAC1C,UAAI;AACF,cAAM,MAAM,sBAAsB,MAAM,EAAE,gBAAgB,KAAK,CAAC;AAChE,cAAM,UAAU,kBAAkB,MAAM;AAAA,UACtC,OAAO,KAAK;AAAA,UACZ,aAAa,KAAK;AAAA,UAClB,QAAQ,KAAK;AAAA,UACb,UAAU,KAAK;AAAA,UACf,iBAAiB,KAAK;AAAA,UACtB,WAAW,KAAK;AAAA,UAChB,QAAQ,KAAK;AAAA,UACb,UAAU,KAAK;AAAA,UACf,cAAc,iBAAiB,KAAK,YAAY;AAAA,UAChD,aAAa,KAAK;AAAA,QACpB,CAAC;AAED,cAAM,UAAU,MAAM,IAAI,IAAI,KAAY,kBAAkB,IAAI,SAAS,WAAW,OAAO;AAC3F,oBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,IACH,EAAE,gBAAgB,MAAM;AAAA,EAC1B;AAEA;AAAA,IACE,MACG,QAAQ,QAAQ,EAChB,YAAY,iBAAiB,EAC7B,SAAS,aAAa,UAAU,EAChC,OAAO,mBAAmB,aAAa,EACvC,OAAO,wBAAwB,mBAAmB,EAClD,OAAO,qBAAqB,cAAc,EAC1C,OAAO,yBAAyB,gBAAgB,EAChD,OAAO,4BAA4B,mBAAmB,EACtD,OAAO,qBAAqB,YAAY,EACxC,OAAO,kBAAkB,SAAS,EAClC,OAAO,oBAAoB,iBAAiB,EAC5C,OAAO,uBAAuB,uBAAuB,EACrD,OAAO,yBAAyB,cAAc,EAC9C,OAAO,oBAAoB,qCAAqC,EAChE,OAAO,8BAA8B,0CAA0C,EAC/E,OAAO,OAAO,SAAiB,SAA6B;AAC3D,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,UAAU,kBAAkB,MAAM;AAAA,UACtC,OAAO,KAAK;AAAA,UACZ,aAAa,KAAK;AAAA,UAClB,QAAQ,KAAK;AAAA,UACb,UAAU,KAAK;AAAA,UACf,iBAAiB,KAAK;AAAA,UACtB,WAAW,KAAK;AAAA,UAChB,QAAQ,KAAK;AAAA,UACb,UAAU,KAAK;AAAA,UACf,cAAc,iBAAiB,KAAK,YAAY;AAAA,UAChD,aAAa,KAAK;AAAA,UAClB,SAAS,KAAK;AAAA,UACd,UAAU,cAAc,KAAK,QAAQ;AAAA,QACvC,CAAC;AAED,cAAM,UAAU,MAAM,IAAI,IAAI,MAAiD,eAAe,OAAO,IAAI,OAAO;AAChH,oBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,MACG,QAAQ,SAAS,EACjB,YAAY,sBAAsB,EAClC,SAAS,aAAa,UAAU,EAChC,eAAe,iBAAiB,cAAc,EAC9C,OAAO,YAAY,mCAAmC,EACtD,OAAO,OAAO,SAAiB,SAA8B;AAC5D,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,UAAU,sBAAsB,MAAM;AAAA,UAC1C,MAAM,KAAK;AAAA,UACX,QAAQ,KAAK;AAAA,QACf,CAAC;AACD,cAAM,UAAU,MAAM,IAAI,IAAI,KAAmB,eAAe,OAAO,aAAa,OAAO;AAC3F,oBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,MACG,QAAQ,UAAU,EAClB,YAAY,6BAA6B,EACzC,SAAS,aAAa,UAAU,EAChC,eAAe,mBAAmB,UAAU,EAC5C;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,IACF,EACC,OAAO,OAAO,SAAiB,SAA+B;AAC7D,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,UAAU,oBAAoB,MAAM;AAAA,UACxC,SAAS,KAAK;AAAA,UACd,kBAAkB,SAAS,KAAK,gBAAgB;AAAA,QAClD,CAAC;AACD,cAAM,UAAU,MAAM,IAAI,IAAI,KAAY,eAAe,OAAO,aAAa,OAAO;AACpF,oBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,MACG,QAAQ,SAAS,EACjB,YAAY,+CAA+C,EAC3D,SAAS,aAAa,UAAU,EAChC,OAAO,OAAO,SAAiB,SAA4B;AAC1D,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,UAAU,MAAM,IAAI,IAAI,KAAY,eAAe,OAAO,YAAY,CAAC,CAAC;AAC9E,oBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AACF;AAEA,SAAS,SAAS,OAAqC;AACrD,MAAI,CAAC,MAAO,QAAO,CAAC;AACpB,SAAO,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO;AAC7D;AAEA,SAAS,iBAAiB,OAA+C;AACvE,MAAI,UAAU,OAAW,QAAO;AAChC,QAAM,SAAS,OAAO,SAAS,OAAO,EAAE;AACxC,MAAI,CAAC,OAAO,SAAS,MAAM,GAAG;AAC5B,UAAM,IAAI,MAAM,0BAA0B,KAAK,EAAE;AAAA,EACnD;AACA,SAAO;AACT;AAEA,SAAS,cAAc,OAAsD;AAC3E,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,MAAM,KAAK,EAAE,YAAY,MAAM,OAAQ,QAAO;AAClD,SAAO;AACT;AAEA,SAAS,gBAAgB,MAAe,OAAoC;AAC1E,MAAI,CAAC,OAAO,KAAK,EAAG,QAAO;AAC3B,QAAM,SAAS,MAAM,KAAK,EAAE,YAAY;AACxC,SAAO,KAAK,OAAO,CAAC,QAAQ;AAC1B,UAAMC,SAAO,CAAC,IAAI,YAAY,IAAI,OAAO,IAAI,WAAW,EACrD,OAAO,CAAC,SAAyB,QAAQ,IAAI,CAAC,EAC9C,KAAK,IAAI,EACT,YAAY;AACf,WAAOA,OAAK,SAAS,MAAM;AAAA,EAC7B,CAAC;AACH;;;ACzSO,SAAS,sBAAsBC,UAAwB;AAC5D,QAAM,QAAQA,SAAQ,QAAQ,OAAO,EAAE,YAAY,kBAAkB;AAErE;AAAA,IACE,MACG,QAAQ,MAAM,EACd,YAAY,2BAA2B,EACvC,eAAe,yBAAyB,YAAY,EACpD,OAAO,OAAO,SAA2B;AACxC,UAAI;AACF,cAAM,MAAM,sBAAsB,MAAM,EAAE,gBAAgB,KAAK,CAAC;AAChE,cAAM,OAAQ,MAAM,IAAI,IAAI,IAAa,kBAAkB,IAAI,SAAS,SAAS,KAAM,CAAC;AAExF,YAAI,IAAI,MAAM;AACZ,sBAAY,MAAM,EAAE,MAAM,KAAK,CAAC;AAChC;AAAA,QACF;AAEA,YAAI,KAAK,WAAW,GAAG;AACrB,sBAAY,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;AAC/B;AAAA,QACF;AAEA,mBAAW,OAAO,MAAM;AACtB,kBAAQ;AAAA,YACN,mBAAmB;AAAA,cACjB,IAAI,IAAI;AAAA,cACR,MAAM,IAAI;AAAA,cACV,MAAM,IAAI;AAAA,cACV,QAAQ,IAAI;AAAA,cACZ,WAAW,IAAI;AAAA,cACf,oBAAoB,IAAI;AAAA,cACxB,mBAAmB,IAAI;AAAA,YACzB,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,IACH,EAAE,gBAAgB,MAAM;AAAA,EAC1B;AAEA;AAAA,IACE,MACG,QAAQ,KAAK,EACb,YAAY,eAAe,EAC3B,SAAS,aAAa,UAAU,EAChC,OAAO,OAAO,SAAiB,SAA4B;AAC1D,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,MAAM,MAAM,IAAI,IAAI,IAAW,eAAe,OAAO,EAAE;AAC7D,oBAAY,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACrC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AACF;;;ACxEA;AA2CO,SAAS,yBAAyBC,UAAwB;AAC/D,QAAM,WAAWA,SAAQ,QAAQ,UAAU,EAAE,YAAY,qBAAqB;AAE9E;AAAA,IACE,SACG,QAAQ,MAAM,EACd,YAAY,8BAA8B,EAC1C,eAAe,yBAAyB,YAAY,EACpD,OAAO,qBAAqB,eAAe,EAC3C,OAAO,OAAO,SAA8B;AAC3C,UAAI;AACF,cAAM,MAAM,sBAAsB,MAAM,EAAE,gBAAgB,KAAK,CAAC;AAChE,cAAM,SAAS,IAAI,gBAAgB;AACnC,YAAI,KAAK,OAAQ,QAAO,IAAI,UAAU,KAAK,MAAM;AACjD,cAAM,QAAQ,OAAO,SAAS;AAC9B,cAAM,OACH,MAAM,IAAI,IAAI;AAAA,UACb,kBAAkB,IAAI,SAAS,aAAa,QAAQ,IAAI,KAAK,KAAK,EAAE;AAAA,QACtE,KAAM,CAAC;AAET,YAAI,IAAI,MAAM;AACZ,sBAAY,MAAM,EAAE,MAAM,KAAK,CAAC;AAChC;AAAA,QACF;AAEA,YAAI,KAAK,WAAW,GAAG;AACrB,sBAAY,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;AAC/B;AAAA,QACF;AAEA,mBAAW,OAAO,MAAM;AACtB,kBAAQ;AAAA,YACN,mBAAmB;AAAA,cACjB,IAAI,IAAI;AAAA,cACR,MAAM,IAAI;AAAA,cACV,QAAQ,IAAI;AAAA,cACZ,oBAAoB,IAAI;AAAA,cACxB,mBAAmB,IAAI;AAAA,YACzB,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,IACH,EAAE,gBAAgB,MAAM;AAAA,EAC1B;AAEA;AAAA,IACE,SACG,QAAQ,KAAK,EACb,YAAY,kBAAkB,EAC9B,SAAS,gBAAgB,aAAa,EACtC,OAAO,OAAO,YAAoB,SAA4B;AAC7D,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,MAAM,MAAM,IAAI,IAAI,IAAc,kBAAkB,UAAU,EAAE;AACtE,oBAAY,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACrC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,SACG,QAAQ,QAAQ,EAChB,YAAY,4BAA4B,EACxC,eAAe,yBAAyB,YAAY,EACpD,eAAe,iBAAiB,iDAAiD,EACjF,eAAe,oBAAoB,iCAAiC,EACpE,OAAO,gCAAgC,qBAAqB,EAC5D,OAAO,qBAAqB,kCAAkC,EAC9D,OAAO,OAAO,SAAgC;AAC7C,UAAI;AACF,cAAM,MAAM,sBAAsB,MAAM,EAAE,gBAAgB,KAAK,CAAC;AAChE,cAAM,cAAc,gBAAgB,KAAK,SAAS,SAAS;AAC3D,cAAM,UAAU,qBAAqB,MAAM;AAAA,UACzC,MAAM,KAAK;AAAA,UACX,SAAS;AAAA,UACT,oBAAoB,KAAK;AAAA,UACzB,UAAUC,UAAS,KAAK,QAAQ;AAAA,QAClC,CAAC;AACD,cAAM,UAAU,MAAM,IAAI,IAAI,KAAe,kBAAkB,IAAI,SAAS,cAAc,OAAO;AACjG,oBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,IACH,EAAE,gBAAgB,MAAM;AAAA,EAC1B;AAEA;AAAA,IACE,SACG,QAAQ,SAAS,EACjB,YAAY,6BAA6B,EACzC,SAAS,gBAAgB,aAAa,EACtC,OAAO,0BAA0B,eAAe,EAChD,OAAO,6BAA6B,wBAAwB,EAC5D,OAAO,OAAO,YAAoB,SAAkC;AACnE,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,UAAU,sBAAsB,MAAM;AAAA,UAC1C,cAAc,KAAK;AAAA,UACnB,iBAAiB,KAAK;AAAA,QACxB,CAAC;AACD,cAAM,UAAU,MAAM,IAAI,IAAI,KAAe,kBAAkB,UAAU,YAAY,OAAO;AAC5F,oBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,SACG,QAAQ,QAAQ,EAChB,YAAY,4BAA4B,EACxC,SAAS,gBAAgB,aAAa,EACtC,OAAO,0BAA0B,eAAe,EAChD,OAAO,6BAA6B,wBAAwB,EAC5D,OAAO,OAAO,YAAoB,SAAkC;AACnE,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,UAAU,sBAAsB,MAAM;AAAA,UAC1C,cAAc,KAAK;AAAA,UACnB,iBAAiB,KAAK;AAAA,QACxB,CAAC;AACD,cAAM,UAAU,MAAM,IAAI,IAAI,KAAe,kBAAkB,UAAU,WAAW,OAAO;AAC3F,oBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,SACG,QAAQ,kBAAkB,EAC1B,YAAY,kCAAkC,EAC9C,SAAS,gBAAgB,aAAa,EACtC,OAAO,0BAA0B,eAAe,EAChD,OAAO,6BAA6B,wBAAwB,EAC5D,OAAO,OAAO,YAAoB,SAAkC;AACnE,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,UAAU,8BAA8B,MAAM;AAAA,UAClD,cAAc,KAAK;AAAA,UACnB,iBAAiB,KAAK;AAAA,QACxB,CAAC;AACD,cAAM,UAAU,MAAM,IAAI,IAAI,KAAe,kBAAkB,UAAU,qBAAqB,OAAO;AACrG,oBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,SACG,QAAQ,UAAU,EAClB,YAAY,oDAAoD,EAChE,SAAS,gBAAgB,aAAa,EACtC,OAAO,oBAAoB,qBAAqB,EAChD,OAAO,OAAO,YAAoB,SAAkC;AACnE,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,UAAU,uBAAuB,MAAM;AAAA,UAC3C,SAAS,KAAK,UAAU,gBAAgB,KAAK,SAAS,SAAS,IAAI;AAAA,QACrE,CAAC;AACD,cAAM,UAAU,MAAM,IAAI,IAAI,KAAe,kBAAkB,UAAU,aAAa,OAAO;AAC7F,oBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AAEA;AAAA,IACE,SACG,QAAQ,SAAS,EACjB,YAAY,4BAA4B,EACxC,SAAS,gBAAgB,aAAa,EACtC,eAAe,iBAAiB,cAAc,EAC9C,OAAO,OAAO,YAAoB,SAAiC;AAClE,UAAI;AACF,cAAM,MAAM,sBAAsB,IAAI;AACtC,cAAM,UAAU,MAAM,IAAI,IAAI,KAAsB,kBAAkB,UAAU,aAAa;AAAA,UAC3F,MAAM,KAAK;AAAA,QACb,CAAC;AACD,oBAAY,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACL;AACF;AAEA,SAASA,UAAS,OAAiD;AACjE,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,OAAO,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO;AACjE,SAAO,KAAK,SAAS,IAAI,OAAO;AAClC;AAEA,SAAS,gBAAgB,OAAe,MAAuC;AAC7E,MAAI;AACF,UAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,QAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,MAAM,QAAQ,MAAM,GAAG;AAC1E,YAAM,IAAI,MAAM,GAAG,IAAI,wBAAwB;AAAA,IACjD;AACA,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,UAAM,IAAI,MAAM,WAAW,IAAI,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC,EAAE;AAAA,EAC7F;AACF;;;AChPO,SAAS,yBAAyBC,UAAwB;AAC/D,QAAM,WAAWA,SAAQ,QAAQ,UAAU,EAAE,YAAY,yBAAyB;AAElF;AAAA,IACE,SACG,QAAQ,MAAM,EACd,YAAY,mCAAmC,EAC/C,eAAe,yBAAyB,YAAY,EACpD,OAAO,mBAAmB,oBAAoB,EAC9C,OAAO,wBAAwB,uBAAuB,EACtD,OAAO,oBAAoB,qBAAqB,EAChD,OAAO,OAAO,SAA8B;AAC3C,UAAI;AACF,cAAM,MAAM,sBAAsB,MAAM,EAAE,gBAAgB,KAAK,CAAC;AAChE,cAAM,SAAS,IAAI,gBAAgB;AACnC,YAAI,KAAK,QAAS,QAAO,IAAI,WAAW,KAAK,OAAO;AACpD,YAAI,KAAK,WAAY,QAAO,IAAI,cAAc,KAAK,UAAU;AAC7D,YAAI,KAAK,SAAU,QAAO,IAAI,YAAY,KAAK,QAAQ;AAEvD,cAAM,QAAQ,OAAO,SAAS;AAC9B,cAAMC,SAAO,kBAAkB,IAAI,SAAS,YAAY,QAAQ,IAAI,KAAK,KAAK,EAAE;AAChF,cAAM,OAAQ,MAAM,IAAI,IAAI,IAAqBA,MAAI,KAAM,CAAC;AAE5D,YAAI,IAAI,MAAM;AACZ,sBAAY,MAAM,EAAE,MAAM,KAAK,CAAC;AAChC;AAAA,QACF;AAEA,YAAI,KAAK,WAAW,GAAG;AACrB,sBAAY,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;AAC/B;AAAA,QACF;AAEA,mBAAW,OAAO,MAAM;AACtB,kBAAQ;AAAA,YACN,mBAAmB;AAAA,cACjB,IAAI,IAAI;AAAA,cACR,QAAQ,IAAI;AAAA,cACZ,WAAW,IAAI;AAAA,cACf,SAAS,IAAI;AAAA,cACb,YAAY,IAAI;AAAA,cAChB,UAAU,IAAI;AAAA,cACd,WAAW,OAAO,IAAI,SAAS;AAAA,YACjC,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,IACH,EAAE,gBAAgB,MAAM;AAAA,EAC1B;AACF;;;ACxDO,SAAS,0BAA0BC,UAAwB;AAChE,QAAM,YAAYA,SAAQ,QAAQ,WAAW,EAAE,YAAY,8BAA8B;AAEzF;AAAA,IACE,UACG,QAAQ,KAAK,EACb,YAAY,qCAAqC,EACjD,eAAe,yBAAyB,YAAY,EACpD,OAAO,OAAO,SAA8B;AAC3C,UAAI;AACF,cAAM,MAAM,sBAAsB,MAAM,EAAE,gBAAgB,KAAK,CAAC;AAChE,cAAM,MAAM,MAAM,IAAI,IAAI,IAAsB,kBAAkB,IAAI,SAAS,YAAY;AAC3F,oBAAY,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,MACrC,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,IACH,EAAE,gBAAgB,MAAM;AAAA,EAC1B;AACF;;;AChCA;AADA,OAAOC,YAAU;AAoBV,SAAS,qBACd,SACA,UAAiC,CAAC,GACnB;AACf,QAAM,aAAa,QAAQ,SAAS,KAAK;AACzC,MAAI,CAAC,WAAY,QAAO;AAExB,QAAM,kBAAkBA,OAAK,QAAQ,iBAAiB,UAAU,CAAC;AACjE,UAAQ,IAAI,iBAAiB;AAE7B,MAAI,QAAQ,iBAAiB;AAC3B,UAAM,oBAAoB,QAAQ,QAAQ,QAAQ,KAAK,CAAC,KAAK,QAAQ,QAAQ,IAAI,kBAAkB,KAAK,CAAC;AACzG,QAAI,CAAC,mBAAmB;AACtB,YAAM,aAAa,2BAA2B,QAAQ,QAAQ;AAC9D,cAAQ,IAAI,wBAAwB;AACpC,cAAQ,IAAI,mBAAmB,yBAAyB,UAAU;AAAA,IACpE;AAAA,EACF;AAEA,MAAI,QAAQ,kBAAkB;AAC5B,UAAM,qBAAqB,QAAQ,QAAQ,SAAS,KAAK,CAAC,KAAK,QAAQ,QAAQ,IAAI,mBAAmB,KAAK,CAAC;AAC5G,QAAI,CAAC,oBAAoB;AACvB,cAAQ,IAAI,oBAAoB,0BAA0B;AAAA,IAC5D;AAAA,EACF;AAEA,SAAO;AACT;;;AvB7BA,IAAM,UAAU,IAAI,QAAQ;AAC5B,IAAM,uBACJ;AAEF,QACG,KAAK,aAAa,EAClB,YAAY,mEAA8D,EAC1E,QAAQ,OAAO;AAElB,QAAQ,KAAK,aAAa,CAAC,cAAc,kBAAkB;AACzD,QAAM,UAAU,cAAc,gBAAgB;AAC9C,QAAM,cAAc,IAAI,IAAI,cAAc,QAAQ,IAAI,CAAC,WAAW,OAAO,cAAc,CAAC,CAAC;AACzF,uBAAqB,SAAS;AAAA,IAC5B,iBAAiB,YAAY,IAAI,QAAQ;AAAA,IACzC,kBAAkB,YAAY,IAAI,SAAS;AAAA,EAC7C,CAAC;AACH,CAAC;AAED,QACG,QAAQ,SAAS,EACjB,YAAY,oCAAoC,EAChD,OAAO,uBAAuB,qBAAqB,EACnD,OAAO,yBAAyB,oBAAoB,EACpD,OAAO,aAAa,oDAAoD,KAAK,EAC7E,OAAO,SAAS,mDAAmD,KAAK,EACxE,OAAO,OAAO;AAEjB,QACG,QAAQ,QAAQ,EAChB,YAAY,+CAA+C,EAC3D,OAAO,uBAAuB,qBAAqB,EACnD,OAAO,yBAAyB,oBAAoB,EACpD,OAAO,YAAY,wCAAwC,EAC3D,MAAM,OAAO,EACb,OAAO,aAAa,kCAAkC,EACtD,OAAO,OAAO,SAAS;AACtB,QAAM,OAAO,IAAI;AACnB,CAAC;AAEH,QACG,QAAQ,KAAK,EACb,YAAY,4CAA4C,EACxD,OAAO,uBAAuB,qBAAqB,EACnD,OAAO,yBAAyB,oBAAoB,EACpD,OAAO,UAAU;AAEpB,QACG,QAAQ,WAAW,EACnB,YAAY,+BAA+B,EAC3C,OAAO,uBAAuB,qBAAqB,EACnD,OAAO,yBAAyB,oBAAoB,EACpD,OAAO,2BAA2B,yEAAyE,EAC3G,OAAO,SAAS;AAEnB,QACG,QAAQ,kBAAkB,EAC1B,YAAY,wDAAwD,EACpE,SAAS,UAAU,mDAAmD,EACtE,OAAO,uBAAuB,qBAAqB,EACnD,OAAO,yBAAyB,oBAAoB,EACpD,OAAO,kBAAkB;AAE5B,QACG,QAAQ,KAAK,EACb,YAAY,4DAA4D,EACxE,OAAO,uBAAuB,qBAAqB,EACnD,OAAO,yBAAyB,oBAAoB,EACpD,OAAO,uBAAuB,sCAAsC,EACpE,OAAO,YAAY,2CAA2C,IAAI,EAClE,OAAO,eAAe,yCAAyC,EAC/D,OAAO,UAAU;AAEpB,IAAM,YAAY,QAAQ,QAAQ,WAAW,EAAE,YAAY,qBAAqB;AAEhF,UACG,QAAQ,KAAK,EACb,YAAY,8CAA8C,EAC1D,eAAe,4BAA4B,oBAAoB,EAC/D,OAAO,uBAAuB,qBAAqB,EACnD,OAAO,yBAAyB,oBAAoB,EACpD,OAAO,oBAAoB,0BAA0B,EACrD,OAAO,oBAAoB,0BAA0B,EACrD,OAAO,oBAAoB,uCAAuC,EAClE,OAAO,qBAAqB,4CAA4C,EACxE;AAAA,EACC;AAAA,EACA;AAAA,EACA;AACF,EACC,OAAO,uBAAuB,sDAAsD,QAAQ,EAC5F,OAAO,qBAAqB,qCAAqC,GAAG,EACpE,OAAO,UAAU,kCAAkC,EACnD,OAAO,WAAW,4CAA4C,EAC9D,OAAO,YAAY;AAEtB,wBAAwB,OAAO;AAC/B,wBAAwB,OAAO;AAC/B,sBAAsB,OAAO;AAC7B,sBAAsB,OAAO;AAC7B,yBAAyB,OAAO;AAChC,yBAAyB,OAAO;AAChC,0BAA0B,OAAO;AAEjC,IAAM,OAAO,QAAQ,QAAQ,MAAM,EAAE,YAAY,wCAAwC;AAEzF,KACG,QAAQ,eAAe,EACvB,YAAY,iEAAiE,EAC7E,OAAO,uBAAuB,qBAAqB,EACnD,OAAO,yBAAyB,oBAAoB,EACpD,OAAO,WAAW,kDAAkD,KAAK,EACzE,OAAO,2BAA2B,qCAAqC,CAAC,UAAU,OAAO,KAAK,CAAC,EAC/F,OAAO,oBAAoB,2CAA2C,EACtE,OAAO,kBAAkB;AAE5B,QAAQ,WAAW,EAAE,MAAM,CAAC,QAAQ;AAClC,UAAQ,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAC9D,UAAQ,KAAK,CAAC;AAChB,CAAC;",
4
+ "sourcesContent": ["export const COMPANY_STATUSES = [\"active\", \"paused\", \"archived\"] as const;\nexport type CompanyStatus = (typeof COMPANY_STATUSES)[number];\n\nexport const DEPLOYMENT_MODES = [\"local_trusted\", \"authenticated\"] as const;\nexport type DeploymentMode = (typeof DEPLOYMENT_MODES)[number];\n\nexport const DEPLOYMENT_EXPOSURES = [\"private\", \"public\"] as const;\nexport type DeploymentExposure = (typeof DEPLOYMENT_EXPOSURES)[number];\n\nexport const AUTH_BASE_URL_MODES = [\"auto\", \"explicit\"] as const;\nexport type AuthBaseUrlMode = (typeof AUTH_BASE_URL_MODES)[number];\n\nexport const AGENT_STATUSES = [\n \"active\",\n \"paused\",\n \"idle\",\n \"running\",\n \"error\",\n \"pending_approval\",\n \"terminated\",\n] as const;\nexport type AgentStatus = (typeof AGENT_STATUSES)[number];\n\nexport const AGENT_ADAPTER_TYPES = [\"process\", \"http\", \"claude_local\", \"codex_local\", \"openclaw\"] as const;\nexport type AgentAdapterType = (typeof AGENT_ADAPTER_TYPES)[number];\n\nexport const AGENT_ROLES = [\n \"ceo\",\n \"cto\",\n \"cmo\",\n \"cfo\",\n \"engineer\",\n \"designer\",\n \"pm\",\n \"qa\",\n \"devops\",\n \"researcher\",\n \"general\",\n] as const;\nexport type AgentRole = (typeof AGENT_ROLES)[number];\n\nexport const AGENT_ICON_NAMES = [\n \"bot\",\n \"cpu\",\n \"brain\",\n \"zap\",\n \"rocket\",\n \"code\",\n \"terminal\",\n \"shield\",\n \"eye\",\n \"search\",\n \"wrench\",\n \"hammer\",\n \"lightbulb\",\n \"sparkles\",\n \"star\",\n \"heart\",\n \"flame\",\n \"bug\",\n \"cog\",\n \"database\",\n \"globe\",\n \"lock\",\n \"mail\",\n \"message-square\",\n \"file-code\",\n \"git-branch\",\n \"package\",\n \"puzzle\",\n \"target\",\n \"wand\",\n \"atom\",\n \"circuit-board\",\n \"radar\",\n \"swords\",\n \"telescope\",\n \"microscope\",\n \"crown\",\n \"gem\",\n \"hexagon\",\n \"pentagon\",\n \"fingerprint\",\n] as const;\nexport type AgentIconName = (typeof AGENT_ICON_NAMES)[number];\n\nexport const ISSUE_STATUSES = [\n \"backlog\",\n \"todo\",\n \"in_progress\",\n \"in_review\",\n \"done\",\n \"blocked\",\n \"cancelled\",\n] as const;\nexport type IssueStatus = (typeof ISSUE_STATUSES)[number];\n\nexport const ISSUE_PRIORITIES = [\"critical\", \"high\", \"medium\", \"low\"] as const;\nexport type IssuePriority = (typeof ISSUE_PRIORITIES)[number];\n\nexport const GOAL_LEVELS = [\"company\", \"team\", \"agent\", \"task\"] as const;\nexport type GoalLevel = (typeof GOAL_LEVELS)[number];\n\nexport const GOAL_STATUSES = [\"planned\", \"active\", \"achieved\", \"cancelled\"] as const;\nexport type GoalStatus = (typeof GOAL_STATUSES)[number];\n\nexport const PROJECT_STATUSES = [\n \"backlog\",\n \"planned\",\n \"in_progress\",\n \"completed\",\n \"cancelled\",\n] as const;\nexport type ProjectStatus = (typeof PROJECT_STATUSES)[number];\n\nexport const PROJECT_COLORS = [\n \"#6366f1\", // indigo\n \"#8b5cf6\", // violet\n \"#ec4899\", // pink\n \"#ef4444\", // red\n \"#f97316\", // orange\n \"#eab308\", // yellow\n \"#22c55e\", // green\n \"#14b8a6\", // teal\n \"#06b6d4\", // cyan\n \"#3b82f6\", // blue\n] as const;\n\nexport const APPROVAL_TYPES = [\"hire_agent\", \"approve_ceo_strategy\"] as const;\nexport type ApprovalType = (typeof APPROVAL_TYPES)[number];\n\nexport const APPROVAL_STATUSES = [\n \"pending\",\n \"revision_requested\",\n \"approved\",\n \"rejected\",\n \"cancelled\",\n] as const;\nexport type ApprovalStatus = (typeof APPROVAL_STATUSES)[number];\n\nexport const SECRET_PROVIDERS = [\n \"local_encrypted\",\n \"aws_secrets_manager\",\n \"gcp_secret_manager\",\n \"vault\",\n] as const;\nexport type SecretProvider = (typeof SECRET_PROVIDERS)[number];\n\nexport const STORAGE_PROVIDERS = [\"local_disk\", \"s3\"] as const;\nexport type StorageProvider = (typeof STORAGE_PROVIDERS)[number];\n\nexport const HEARTBEAT_INVOCATION_SOURCES = [\n \"timer\",\n \"assignment\",\n \"on_demand\",\n \"automation\",\n] as const;\nexport type HeartbeatInvocationSource = (typeof HEARTBEAT_INVOCATION_SOURCES)[number];\n\nexport const WAKEUP_TRIGGER_DETAILS = [\"manual\", \"ping\", \"callback\", \"system\"] as const;\nexport type WakeupTriggerDetail = (typeof WAKEUP_TRIGGER_DETAILS)[number];\n\nexport const WAKEUP_REQUEST_STATUSES = [\n \"queued\",\n \"deferred_issue_execution\",\n \"claimed\",\n \"coalesced\",\n \"skipped\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n] as const;\nexport type WakeupRequestStatus = (typeof WAKEUP_REQUEST_STATUSES)[number];\n\nexport const HEARTBEAT_RUN_STATUSES = [\n \"queued\",\n \"running\",\n \"succeeded\",\n \"failed\",\n \"cancelled\",\n \"timed_out\",\n] as const;\nexport type HeartbeatRunStatus = (typeof HEARTBEAT_RUN_STATUSES)[number];\n\nexport const LIVE_EVENT_TYPES = [\n \"heartbeat.run.queued\",\n \"heartbeat.run.status\",\n \"heartbeat.run.event\",\n \"heartbeat.run.log\",\n \"agent.status\",\n \"activity.logged\",\n] as const;\nexport type LiveEventType = (typeof LIVE_EVENT_TYPES)[number];\n\nexport const PRINCIPAL_TYPES = [\"user\", \"agent\"] as const;\nexport type PrincipalType = (typeof PRINCIPAL_TYPES)[number];\n\nexport const MEMBERSHIP_STATUSES = [\"pending\", \"active\", \"suspended\"] as const;\nexport type MembershipStatus = (typeof MEMBERSHIP_STATUSES)[number];\n\nexport const INSTANCE_USER_ROLES = [\"instance_admin\"] as const;\nexport type InstanceUserRole = (typeof INSTANCE_USER_ROLES)[number];\n\nexport const INVITE_TYPES = [\"company_join\", \"bootstrap_ceo\"] as const;\nexport type InviteType = (typeof INVITE_TYPES)[number];\n\nexport const INVITE_JOIN_TYPES = [\"human\", \"agent\", \"both\"] as const;\nexport type InviteJoinType = (typeof INVITE_JOIN_TYPES)[number];\n\nexport const JOIN_REQUEST_TYPES = [\"human\", \"agent\"] as const;\nexport type JoinRequestType = (typeof JOIN_REQUEST_TYPES)[number];\n\nexport const JOIN_REQUEST_STATUSES = [\"pending_approval\", \"approved\", \"rejected\"] as const;\nexport type JoinRequestStatus = (typeof JOIN_REQUEST_STATUSES)[number];\n\nexport const PERMISSION_KEYS = [\n \"agents:create\",\n \"users:invite\",\n \"users:manage_permissions\",\n \"tasks:assign\",\n \"tasks:assign_scope\",\n \"joins:approve\",\n] as const;\nexport type PermissionKey = (typeof PERMISSION_KEYS)[number];\n", "import { z } from \"zod\";\nimport { COMPANY_STATUSES } from \"../constants.js\";\n\nexport const createCompanySchema = z.object({\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n budgetMonthlyCents: z.number().int().nonnegative().optional().default(0),\n});\n\nexport type CreateCompany = z.infer<typeof createCompanySchema>;\n\nexport const updateCompanySchema = createCompanySchema\n .partial()\n .extend({\n status: z.enum(COMPANY_STATUSES).optional(),\n spentMonthlyCents: z.number().int().nonnegative().optional(),\n requireBoardApprovalForNewAgents: z.boolean().optional(),\n brandColor: z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional(),\n });\n\nexport type UpdateCompany = z.infer<typeof updateCompanySchema>;\n", "import { z } from \"zod\";\n\nexport const portabilityIncludeSchema = z\n .object({\n company: z.boolean().optional(),\n agents: z.boolean().optional(),\n })\n .partial();\n\nexport const portabilitySecretRequirementSchema = z.object({\n key: z.string().min(1),\n description: z.string().nullable(),\n agentSlug: z.string().min(1).nullable(),\n providerHint: z.string().nullable(),\n});\n\nexport const portabilityCompanyManifestEntrySchema = z.object({\n path: z.string().min(1),\n name: z.string().min(1),\n description: z.string().nullable(),\n brandColor: z.string().nullable(),\n requireBoardApprovalForNewAgents: z.boolean(),\n});\n\nexport const portabilityAgentManifestEntrySchema = z.object({\n slug: z.string().min(1),\n name: z.string().min(1),\n path: z.string().min(1),\n role: z.string().min(1),\n title: z.string().nullable(),\n icon: z.string().nullable(),\n capabilities: z.string().nullable(),\n reportsToSlug: z.string().min(1).nullable(),\n adapterType: z.string().min(1),\n adapterConfig: z.record(z.unknown()),\n runtimeConfig: z.record(z.unknown()),\n permissions: z.record(z.unknown()),\n budgetMonthlyCents: z.number().int().nonnegative(),\n metadata: z.record(z.unknown()).nullable(),\n});\n\nexport const portabilityManifestSchema = z.object({\n schemaVersion: z.number().int().positive(),\n generatedAt: z.string().datetime(),\n source: z\n .object({\n companyId: z.string().uuid(),\n companyName: z.string().min(1),\n })\n .nullable(),\n includes: z.object({\n company: z.boolean(),\n agents: z.boolean(),\n }),\n company: portabilityCompanyManifestEntrySchema.nullable(),\n agents: z.array(portabilityAgentManifestEntrySchema),\n requiredSecrets: z.array(portabilitySecretRequirementSchema).default([]),\n});\n\nexport const portabilitySourceSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"inline\"),\n manifest: portabilityManifestSchema,\n files: z.record(z.string()),\n }),\n z.object({\n type: z.literal(\"url\"),\n url: z.string().url(),\n }),\n z.object({\n type: z.literal(\"github\"),\n url: z.string().url(),\n }),\n]);\n\nexport const portabilityTargetSchema = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"new_company\"),\n newCompanyName: z.string().min(1).optional().nullable(),\n }),\n z.object({\n mode: z.literal(\"existing_company\"),\n companyId: z.string().uuid(),\n }),\n]);\n\nexport const portabilityAgentSelectionSchema = z.union([\n z.literal(\"all\"),\n z.array(z.string().min(1)),\n]);\n\nexport const portabilityCollisionStrategySchema = z.enum([\"rename\", \"skip\", \"replace\"]);\n\nexport const companyPortabilityExportSchema = z.object({\n include: portabilityIncludeSchema.optional(),\n});\n\nexport type CompanyPortabilityExport = z.infer<typeof companyPortabilityExportSchema>;\n\nexport const companyPortabilityPreviewSchema = z.object({\n source: portabilitySourceSchema,\n include: portabilityIncludeSchema.optional(),\n target: portabilityTargetSchema,\n agents: portabilityAgentSelectionSchema.optional(),\n collisionStrategy: portabilityCollisionStrategySchema.optional(),\n});\n\nexport type CompanyPortabilityPreview = z.infer<typeof companyPortabilityPreviewSchema>;\n\nexport const companyPortabilityImportSchema = companyPortabilityPreviewSchema;\n\nexport type CompanyPortabilityImport = z.infer<typeof companyPortabilityImportSchema>;\n", "import { z } from \"zod\";\nimport { SECRET_PROVIDERS } from \"../constants.js\";\n\nexport const envBindingPlainSchema = z.object({\n type: z.literal(\"plain\"),\n value: z.string(),\n});\n\nexport const envBindingSecretRefSchema = z.object({\n type: z.literal(\"secret_ref\"),\n secretId: z.string().uuid(),\n version: z.union([z.literal(\"latest\"), z.number().int().positive()]).optional(),\n});\n\n// Backward-compatible union that accepts legacy inline values.\nexport const envBindingSchema = z.union([\n z.string(),\n envBindingPlainSchema,\n envBindingSecretRefSchema,\n]);\n\nexport const envConfigSchema = z.record(envBindingSchema);\n\nexport const createSecretSchema = z.object({\n name: z.string().min(1),\n provider: z.enum(SECRET_PROVIDERS).optional(),\n value: z.string().min(1),\n description: z.string().optional().nullable(),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type CreateSecret = z.infer<typeof createSecretSchema>;\n\nexport const rotateSecretSchema = z.object({\n value: z.string().min(1),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type RotateSecret = z.infer<typeof rotateSecretSchema>;\n\nexport const updateSecretSchema = z.object({\n name: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type UpdateSecret = z.infer<typeof updateSecretSchema>;\n", "import { z } from \"zod\";\nimport {\n AGENT_ADAPTER_TYPES,\n AGENT_ICON_NAMES,\n AGENT_ROLES,\n AGENT_STATUSES,\n} from \"../constants.js\";\nimport { envConfigSchema } from \"./secret.js\";\n\nexport const agentPermissionsSchema = z.object({\n canCreateAgents: z.boolean().optional().default(false),\n});\n\nconst adapterConfigSchema = z.record(z.unknown()).superRefine((value, ctx) => {\n const envValue = value.env;\n if (envValue === undefined) return;\n const parsed = envConfigSchema.safeParse(envValue);\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"adapterConfig.env must be a map of valid env bindings\",\n path: [\"env\"],\n });\n }\n});\n\nexport const createAgentSchema = z.object({\n name: z.string().min(1),\n role: z.enum(AGENT_ROLES).optional().default(\"general\"),\n title: z.string().optional().nullable(),\n icon: z.enum(AGENT_ICON_NAMES).optional().nullable(),\n reportsTo: z.string().uuid().optional().nullable(),\n capabilities: z.string().optional().nullable(),\n adapterType: z.enum(AGENT_ADAPTER_TYPES).optional().default(\"process\"),\n adapterConfig: adapterConfigSchema.optional().default({}),\n runtimeConfig: z.record(z.unknown()).optional().default({}),\n budgetMonthlyCents: z.number().int().nonnegative().optional().default(0),\n permissions: agentPermissionsSchema.optional(),\n metadata: z.record(z.unknown()).optional().nullable(),\n});\n\nexport type CreateAgent = z.infer<typeof createAgentSchema>;\n\nexport const createAgentHireSchema = createAgentSchema.extend({\n sourceIssueId: z.string().uuid().optional().nullable(),\n sourceIssueIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateAgentHire = z.infer<typeof createAgentHireSchema>;\n\nexport const updateAgentSchema = createAgentSchema\n .omit({ permissions: true })\n .partial()\n .extend({\n permissions: z.never().optional(),\n status: z.enum(AGENT_STATUSES).optional(),\n spentMonthlyCents: z.number().int().nonnegative().optional(),\n });\n\nexport type UpdateAgent = z.infer<typeof updateAgentSchema>;\n\nexport const updateAgentInstructionsPathSchema = z.object({\n path: z.string().trim().min(1).nullable(),\n adapterConfigKey: z.string().trim().min(1).optional(),\n});\n\nexport type UpdateAgentInstructionsPath = z.infer<typeof updateAgentInstructionsPathSchema>;\n\nexport const createAgentKeySchema = z.object({\n name: z.string().min(1).default(\"default\"),\n});\n\nexport type CreateAgentKey = z.infer<typeof createAgentKeySchema>;\n\nexport const wakeAgentSchema = z.object({\n source: z.enum([\"timer\", \"assignment\", \"on_demand\", \"automation\"]).optional().default(\"on_demand\"),\n triggerDetail: z.enum([\"manual\", \"ping\", \"callback\", \"system\"]).optional(),\n reason: z.string().optional().nullable(),\n payload: z.record(z.unknown()).optional().nullable(),\n idempotencyKey: z.string().optional().nullable(),\n});\n\nexport type WakeAgent = z.infer<typeof wakeAgentSchema>;\n\nexport const resetAgentSessionSchema = z.object({\n taskKey: z.string().min(1).optional().nullable(),\n});\n\nexport type ResetAgentSession = z.infer<typeof resetAgentSessionSchema>;\n\nexport const testAdapterEnvironmentSchema = z.object({\n adapterConfig: adapterConfigSchema.optional().default({}),\n});\n\nexport type TestAdapterEnvironment = z.infer<typeof testAdapterEnvironmentSchema>;\n\nexport const updateAgentPermissionsSchema = z.object({\n canCreateAgents: z.boolean(),\n});\n\nexport type UpdateAgentPermissions = z.infer<typeof updateAgentPermissionsSchema>;\n", "import { z } from \"zod\";\nimport { PROJECT_STATUSES } from \"../constants.js\";\n\nconst projectWorkspaceFields = {\n name: z.string().min(1).optional(),\n cwd: z.string().min(1).optional().nullable(),\n repoUrl: z.string().url().optional().nullable(),\n repoRef: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n};\n\nexport const createProjectWorkspaceSchema = z.object({\n ...projectWorkspaceFields,\n isPrimary: z.boolean().optional().default(false),\n}).superRefine((value, ctx) => {\n const hasCwd = typeof value.cwd === \"string\" && value.cwd.trim().length > 0;\n const hasRepo = typeof value.repoUrl === \"string\" && value.repoUrl.trim().length > 0;\n if (!hasCwd && !hasRepo) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Workspace requires at least one of cwd or repoUrl.\",\n path: [\"cwd\"],\n });\n }\n});\n\nexport type CreateProjectWorkspace = z.infer<typeof createProjectWorkspaceSchema>;\n\nexport const updateProjectWorkspaceSchema = z.object({\n ...projectWorkspaceFields,\n isPrimary: z.boolean().optional(),\n}).partial();\n\nexport type UpdateProjectWorkspace = z.infer<typeof updateProjectWorkspaceSchema>;\n\nconst projectFields = {\n /** @deprecated Use goalIds instead */\n goalId: z.string().uuid().optional().nullable(),\n goalIds: z.array(z.string().uuid()).optional(),\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n status: z.enum(PROJECT_STATUSES).optional().default(\"backlog\"),\n leadAgentId: z.string().uuid().optional().nullable(),\n targetDate: z.string().optional().nullable(),\n color: z.string().optional().nullable(),\n archivedAt: z.string().datetime().optional().nullable(),\n};\n\nexport const createProjectSchema = z.object({\n ...projectFields,\n workspace: createProjectWorkspaceSchema.optional(),\n});\n\nexport type CreateProject = z.infer<typeof createProjectSchema>;\n\nexport const updateProjectSchema = z.object(projectFields).partial();\n\nexport type UpdateProject = z.infer<typeof updateProjectSchema>;\n", "import { z } from \"zod\";\nimport { ISSUE_PRIORITIES, ISSUE_STATUSES } from \"../constants.js\";\n\nexport const issueAssigneeAdapterOverridesSchema = z\n .object({\n adapterConfig: z.record(z.unknown()).optional(),\n useProjectWorkspace: z.boolean().optional(),\n })\n .strict();\n\nexport const createIssueSchema = z.object({\n projectId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n parentId: z.string().uuid().optional().nullable(),\n title: z.string().min(1),\n description: z.string().optional().nullable(),\n status: z.enum(ISSUE_STATUSES).optional().default(\"backlog\"),\n priority: z.enum(ISSUE_PRIORITIES).optional().default(\"medium\"),\n assigneeAgentId: z.string().uuid().optional().nullable(),\n assigneeUserId: z.string().optional().nullable(),\n requestDepth: z.number().int().nonnegative().optional().default(0),\n billingCode: z.string().optional().nullable(),\n assigneeAdapterOverrides: issueAssigneeAdapterOverridesSchema.optional().nullable(),\n labelIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateIssue = z.infer<typeof createIssueSchema>;\n\nexport const createIssueLabelSchema = z.object({\n name: z.string().trim().min(1).max(48),\n color: z.string().regex(/^#(?:[0-9a-fA-F]{6})$/, \"Color must be a 6-digit hex value\"),\n});\n\nexport type CreateIssueLabel = z.infer<typeof createIssueLabelSchema>;\n\nexport const updateIssueSchema = createIssueSchema.partial().extend({\n comment: z.string().min(1).optional(),\n hiddenAt: z.string().datetime().nullable().optional(),\n});\n\nexport type UpdateIssue = z.infer<typeof updateIssueSchema>;\n\nexport const checkoutIssueSchema = z.object({\n agentId: z.string().uuid(),\n expectedStatuses: z.array(z.enum(ISSUE_STATUSES)).nonempty(),\n});\n\nexport type CheckoutIssue = z.infer<typeof checkoutIssueSchema>;\n\nexport const addIssueCommentSchema = z.object({\n body: z.string().min(1),\n reopen: z.boolean().optional(),\n interrupt: z.boolean().optional(),\n});\n\nexport type AddIssueComment = z.infer<typeof addIssueCommentSchema>;\n\nexport const linkIssueApprovalSchema = z.object({\n approvalId: z.string().uuid(),\n});\n\nexport type LinkIssueApproval = z.infer<typeof linkIssueApprovalSchema>;\n\nexport const createIssueAttachmentMetadataSchema = z.object({\n issueCommentId: z.string().uuid().optional().nullable(),\n});\n\nexport type CreateIssueAttachmentMetadata = z.infer<typeof createIssueAttachmentMetadataSchema>;\n", "import { z } from \"zod\";\nimport { GOAL_LEVELS, GOAL_STATUSES } from \"../constants.js\";\n\nexport const createGoalSchema = z.object({\n title: z.string().min(1),\n description: z.string().optional().nullable(),\n level: z.enum(GOAL_LEVELS).optional().default(\"task\"),\n status: z.enum(GOAL_STATUSES).optional().default(\"planned\"),\n parentId: z.string().uuid().optional().nullable(),\n ownerAgentId: z.string().uuid().optional().nullable(),\n});\n\nexport type CreateGoal = z.infer<typeof createGoalSchema>;\n\nexport const updateGoalSchema = createGoalSchema.partial();\n\nexport type UpdateGoal = z.infer<typeof updateGoalSchema>;\n", "import { z } from \"zod\";\nimport { APPROVAL_TYPES } from \"../constants.js\";\n\nexport const createApprovalSchema = z.object({\n type: z.enum(APPROVAL_TYPES),\n requestedByAgentId: z.string().uuid().optional().nullable(),\n payload: z.record(z.unknown()),\n issueIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateApproval = z.infer<typeof createApprovalSchema>;\n\nexport const resolveApprovalSchema = z.object({\n decisionNote: z.string().optional().nullable(),\n decidedByUserId: z.string().optional().default(\"board\"),\n});\n\nexport type ResolveApproval = z.infer<typeof resolveApprovalSchema>;\n\nexport const requestApprovalRevisionSchema = z.object({\n decisionNote: z.string().optional().nullable(),\n decidedByUserId: z.string().optional().default(\"board\"),\n});\n\nexport type RequestApprovalRevision = z.infer<typeof requestApprovalRevisionSchema>;\n\nexport const resubmitApprovalSchema = z.object({\n payload: z.record(z.unknown()).optional(),\n});\n\nexport type ResubmitApproval = z.infer<typeof resubmitApprovalSchema>;\n\nexport const addApprovalCommentSchema = z.object({\n body: z.string().min(1),\n});\n\nexport type AddApprovalComment = z.infer<typeof addApprovalCommentSchema>;\n", "import { z } from \"zod\";\n\nexport const createCostEventSchema = z.object({\n agentId: z.string().uuid(),\n issueId: z.string().uuid().optional().nullable(),\n projectId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n billingCode: z.string().optional().nullable(),\n provider: z.string().min(1),\n model: z.string().min(1),\n inputTokens: z.number().int().nonnegative().optional().default(0),\n outputTokens: z.number().int().nonnegative().optional().default(0),\n costCents: z.number().int().nonnegative(),\n occurredAt: z.string().datetime(),\n});\n\nexport type CreateCostEvent = z.infer<typeof createCostEventSchema>;\n\nexport const updateBudgetSchema = z.object({\n budgetMonthlyCents: z.number().int().nonnegative(),\n});\n\nexport type UpdateBudget = z.infer<typeof updateBudgetSchema>;\n", "import { z } from \"zod\";\n\nexport const createAssetImageMetadataSchema = z.object({\n namespace: z\n .string()\n .trim()\n .min(1)\n .max(120)\n .regex(/^[a-zA-Z0-9/_-]+$/)\n .optional(),\n});\n\nexport type CreateAssetImageMetadata = z.infer<typeof createAssetImageMetadataSchema>;\n\n", "import { z } from \"zod\";\nimport {\n AGENT_ADAPTER_TYPES,\n INVITE_JOIN_TYPES,\n JOIN_REQUEST_STATUSES,\n JOIN_REQUEST_TYPES,\n PERMISSION_KEYS,\n} from \"../constants.js\";\n\nexport const createCompanyInviteSchema = z.object({\n allowedJoinTypes: z.enum(INVITE_JOIN_TYPES).default(\"both\"),\n expiresInHours: z.number().int().min(1).max(24 * 30).optional().default(72),\n defaultsPayload: z.record(z.string(), z.unknown()).optional().nullable(),\n});\n\nexport type CreateCompanyInvite = z.infer<typeof createCompanyInviteSchema>;\n\nexport const acceptInviteSchema = z.object({\n requestType: z.enum(JOIN_REQUEST_TYPES),\n agentName: z.string().min(1).max(120).optional(),\n adapterType: z.enum(AGENT_ADAPTER_TYPES).optional(),\n capabilities: z.string().max(4000).optional().nullable(),\n agentDefaultsPayload: z.record(z.string(), z.unknown()).optional().nullable(),\n});\n\nexport type AcceptInvite = z.infer<typeof acceptInviteSchema>;\n\nexport const listJoinRequestsQuerySchema = z.object({\n status: z.enum(JOIN_REQUEST_STATUSES).optional(),\n requestType: z.enum(JOIN_REQUEST_TYPES).optional(),\n});\n\nexport type ListJoinRequestsQuery = z.infer<typeof listJoinRequestsQuerySchema>;\n\nexport const claimJoinRequestApiKeySchema = z.object({\n claimSecret: z.string().min(16).max(256),\n});\n\nexport type ClaimJoinRequestApiKey = z.infer<typeof claimJoinRequestApiKeySchema>;\n\nexport const updateMemberPermissionsSchema = z.object({\n grants: z.array(\n z.object({\n permissionKey: z.enum(PERMISSION_KEYS),\n scope: z.record(z.string(), z.unknown()).optional().nullable(),\n }),\n ),\n});\n\nexport type UpdateMemberPermissions = z.infer<typeof updateMemberPermissionsSchema>;\n\nexport const updateUserCompanyAccessSchema = z.object({\n companyIds: z.array(z.string().uuid()).default([]),\n});\n\nexport type UpdateUserCompanyAccess = z.infer<typeof updateUserCompanyAccessSchema>;\n", "export {\n createCompanySchema,\n updateCompanySchema,\n type CreateCompany,\n type UpdateCompany,\n} from \"./company.js\";\nexport {\n portabilityIncludeSchema,\n portabilitySecretRequirementSchema,\n portabilityCompanyManifestEntrySchema,\n portabilityAgentManifestEntrySchema,\n portabilityManifestSchema,\n portabilitySourceSchema,\n portabilityTargetSchema,\n portabilityAgentSelectionSchema,\n portabilityCollisionStrategySchema,\n companyPortabilityExportSchema,\n companyPortabilityPreviewSchema,\n companyPortabilityImportSchema,\n type CompanyPortabilityExport,\n type CompanyPortabilityPreview,\n type CompanyPortabilityImport,\n} from \"./company-portability.js\";\n\nexport {\n createAgentSchema,\n createAgentHireSchema,\n updateAgentSchema,\n updateAgentInstructionsPathSchema,\n createAgentKeySchema,\n wakeAgentSchema,\n resetAgentSessionSchema,\n testAdapterEnvironmentSchema,\n agentPermissionsSchema,\n updateAgentPermissionsSchema,\n type CreateAgent,\n type CreateAgentHire,\n type UpdateAgent,\n type UpdateAgentInstructionsPath,\n type CreateAgentKey,\n type WakeAgent,\n type ResetAgentSession,\n type TestAdapterEnvironment,\n type UpdateAgentPermissions,\n} from \"./agent.js\";\n\nexport {\n createProjectSchema,\n updateProjectSchema,\n createProjectWorkspaceSchema,\n updateProjectWorkspaceSchema,\n type CreateProject,\n type UpdateProject,\n type CreateProjectWorkspace,\n type UpdateProjectWorkspace,\n} from \"./project.js\";\n\nexport {\n createIssueSchema,\n createIssueLabelSchema,\n updateIssueSchema,\n checkoutIssueSchema,\n addIssueCommentSchema,\n linkIssueApprovalSchema,\n createIssueAttachmentMetadataSchema,\n type CreateIssue,\n type CreateIssueLabel,\n type UpdateIssue,\n type CheckoutIssue,\n type AddIssueComment,\n type LinkIssueApproval,\n type CreateIssueAttachmentMetadata,\n} from \"./issue.js\";\n\nexport {\n createGoalSchema,\n updateGoalSchema,\n type CreateGoal,\n type UpdateGoal,\n} from \"./goal.js\";\n\nexport {\n createApprovalSchema,\n resolveApprovalSchema,\n requestApprovalRevisionSchema,\n resubmitApprovalSchema,\n addApprovalCommentSchema,\n type CreateApproval,\n type ResolveApproval,\n type RequestApprovalRevision,\n type ResubmitApproval,\n type AddApprovalComment,\n} from \"./approval.js\";\n\nexport {\n envBindingPlainSchema,\n envBindingSecretRefSchema,\n envBindingSchema,\n envConfigSchema,\n createSecretSchema,\n rotateSecretSchema,\n updateSecretSchema,\n type CreateSecret,\n type RotateSecret,\n type UpdateSecret,\n} from \"./secret.js\";\n\nexport {\n createCostEventSchema,\n updateBudgetSchema,\n type CreateCostEvent,\n type UpdateBudget,\n} from \"./cost.js\";\n\nexport {\n createAssetImageMetadataSchema,\n type CreateAssetImageMetadata,\n} from \"./asset.js\";\n\nexport {\n createCompanyInviteSchema,\n acceptInviteSchema,\n listJoinRequestsQuerySchema,\n claimJoinRequestApiKeySchema,\n updateMemberPermissionsSchema,\n updateUserCompanyAccessSchema,\n type CreateCompanyInvite,\n type AcceptInvite,\n type ListJoinRequestsQuery,\n type ClaimJoinRequestApiKey,\n type UpdateMemberPermissions,\n type UpdateUserCompanyAccess,\n} from \"./access.js\";\n", "export const API_PREFIX = \"/api\";\n\nexport const API = {\n health: `${API_PREFIX}/health`,\n companies: `${API_PREFIX}/companies`,\n agents: `${API_PREFIX}/agents`,\n projects: `${API_PREFIX}/projects`,\n issues: `${API_PREFIX}/issues`,\n goals: `${API_PREFIX}/goals`,\n approvals: `${API_PREFIX}/approvals`,\n secrets: `${API_PREFIX}/secrets`,\n costs: `${API_PREFIX}/costs`,\n activity: `${API_PREFIX}/activity`,\n dashboard: `${API_PREFIX}/dashboard`,\n sidebarBadges: `${API_PREFIX}/sidebar-badges`,\n invites: `${API_PREFIX}/invites`,\n joinRequests: `${API_PREFIX}/join-requests`,\n members: `${API_PREFIX}/members`,\n admin: `${API_PREFIX}/admin`,\n} as const;\n", "const AGENT_URL_KEY_DELIM_RE = /[^a-z0-9]+/g;\nconst AGENT_URL_KEY_TRIM_RE = /^-+|-+$/g;\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nexport function isUuidLike(value: string | null | undefined): boolean {\n if (typeof value !== \"string\") return false;\n return UUID_RE.test(value.trim());\n}\n\nexport function normalizeAgentUrlKey(value: string | null | undefined): string | null {\n if (typeof value !== \"string\") return null;\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(AGENT_URL_KEY_DELIM_RE, \"-\")\n .replace(AGENT_URL_KEY_TRIM_RE, \"\");\n return normalized.length > 0 ? normalized : null;\n}\n\nexport function deriveAgentUrlKey(name: string | null | undefined, fallback?: string | null): string {\n return normalizeAgentUrlKey(name) ?? normalizeAgentUrlKey(fallback) ?? \"agent\";\n}\n", "const PROJECT_URL_KEY_DELIM_RE = /[^a-z0-9]+/g;\nconst PROJECT_URL_KEY_TRIM_RE = /^-+|-+$/g;\n\nexport function normalizeProjectUrlKey(value: string | null | undefined): string | null {\n if (typeof value !== \"string\") return null;\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(PROJECT_URL_KEY_DELIM_RE, \"-\")\n .replace(PROJECT_URL_KEY_TRIM_RE, \"\");\n return normalized.length > 0 ? normalized : null;\n}\n\nexport function deriveProjectUrlKey(name: string | null | undefined, fallback?: string | null): string {\n return normalizeProjectUrlKey(name) ?? normalizeProjectUrlKey(fallback) ?? \"project\";\n}\n", "export const PROJECT_MENTION_SCHEME = \"project://\";\n\nconst HEX_COLOR_RE = /^[0-9a-f]{6}$/i;\nconst HEX_COLOR_SHORT_RE = /^[0-9a-f]{3}$/i;\nconst HEX_COLOR_WITH_HASH_RE = /^#[0-9a-f]{6}$/i;\nconst HEX_COLOR_SHORT_WITH_HASH_RE = /^#[0-9a-f]{3}$/i;\nconst PROJECT_MENTION_LINK_RE = /\\[[^\\]]*]\\((project:\\/\\/[^)\\s]+)\\)/gi;\n\nexport interface ParsedProjectMention {\n projectId: string;\n color: string | null;\n}\n\nfunction normalizeHexColor(input: string | null | undefined): string | null {\n if (!input) return null;\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n if (HEX_COLOR_WITH_HASH_RE.test(trimmed)) {\n return trimmed.toLowerCase();\n }\n if (HEX_COLOR_RE.test(trimmed)) {\n return `#${trimmed.toLowerCase()}`;\n }\n if (HEX_COLOR_SHORT_WITH_HASH_RE.test(trimmed)) {\n const raw = trimmed.slice(1).toLowerCase();\n return `#${raw[0]}${raw[0]}${raw[1]}${raw[1]}${raw[2]}${raw[2]}`;\n }\n if (HEX_COLOR_SHORT_RE.test(trimmed)) {\n const raw = trimmed.toLowerCase();\n return `#${raw[0]}${raw[0]}${raw[1]}${raw[1]}${raw[2]}${raw[2]}`;\n }\n return null;\n}\n\nexport function buildProjectMentionHref(projectId: string, color?: string | null): string {\n const trimmedProjectId = projectId.trim();\n const normalizedColor = normalizeHexColor(color ?? null);\n if (!normalizedColor) {\n return `${PROJECT_MENTION_SCHEME}${trimmedProjectId}`;\n }\n return `${PROJECT_MENTION_SCHEME}${trimmedProjectId}?c=${encodeURIComponent(normalizedColor.slice(1))}`;\n}\n\nexport function parseProjectMentionHref(href: string): ParsedProjectMention | null {\n if (!href.startsWith(PROJECT_MENTION_SCHEME)) return null;\n\n let url: URL;\n try {\n url = new URL(href);\n } catch {\n return null;\n }\n\n if (url.protocol !== \"project:\") return null;\n\n const projectId = `${url.hostname}${url.pathname}`.replace(/^\\/+/, \"\").trim();\n if (!projectId) return null;\n\n const color = normalizeHexColor(url.searchParams.get(\"c\") ?? url.searchParams.get(\"color\"));\n\n return {\n projectId,\n color,\n };\n}\n\nexport function extractProjectMentionIds(markdown: string): string[] {\n if (!markdown) return [];\n const ids = new Set<string>();\n const re = new RegExp(PROJECT_MENTION_LINK_RE);\n let match: RegExpExecArray | null;\n while ((match = re.exec(markdown)) !== null) {\n const parsed = parseProjectMentionHref(match[1]);\n if (parsed) ids.add(parsed.projectId);\n }\n return [...ids];\n}\n", "import { z } from \"zod\";\nimport {\n AUTH_BASE_URL_MODES,\n DEPLOYMENT_EXPOSURES,\n DEPLOYMENT_MODES,\n SECRET_PROVIDERS,\n STORAGE_PROVIDERS,\n} from \"./constants.js\";\n\nexport const configMetaSchema = z.object({\n version: z.literal(1),\n updatedAt: z.string(),\n source: z.enum([\"onboard\", \"configure\", \"doctor\"]),\n});\n\nexport const llmConfigSchema = z.object({\n provider: z.enum([\"claude\", \"openai\"]),\n apiKey: z.string().optional(),\n});\n\nexport const databaseConfigSchema = z.object({\n mode: z.enum([\"embedded-postgres\", \"postgres\"]).default(\"embedded-postgres\"),\n connectionString: z.string().optional(),\n embeddedPostgresDataDir: z.string().default(\"~/.paperclip/instances/default/db\"),\n embeddedPostgresPort: z.number().int().min(1).max(65535).default(54329),\n});\n\nexport const loggingConfigSchema = z.object({\n mode: z.enum([\"file\", \"cloud\"]),\n logDir: z.string().default(\"~/.paperclip/instances/default/logs\"),\n});\n\nexport const serverConfigSchema = z.object({\n deploymentMode: z.enum(DEPLOYMENT_MODES).default(\"local_trusted\"),\n exposure: z.enum(DEPLOYMENT_EXPOSURES).default(\"private\"),\n host: z.string().default(\"127.0.0.1\"),\n port: z.number().int().min(1).max(65535).default(3100),\n allowedHostnames: z.array(z.string().min(1)).default([]),\n serveUi: z.boolean().default(true),\n});\n\nexport const authConfigSchema = z.object({\n baseUrlMode: z.enum(AUTH_BASE_URL_MODES).default(\"auto\"),\n publicBaseUrl: z.string().url().optional(),\n});\n\nexport const storageLocalDiskConfigSchema = z.object({\n baseDir: z.string().default(\"~/.paperclip/instances/default/data/storage\"),\n});\n\nexport const storageS3ConfigSchema = z.object({\n bucket: z.string().min(1).default(\"paperclip\"),\n region: z.string().min(1).default(\"us-east-1\"),\n endpoint: z.string().optional(),\n prefix: z.string().default(\"\"),\n forcePathStyle: z.boolean().default(false),\n});\n\nexport const storageConfigSchema = z.object({\n provider: z.enum(STORAGE_PROVIDERS).default(\"local_disk\"),\n localDisk: storageLocalDiskConfigSchema.default({\n baseDir: \"~/.paperclip/instances/default/data/storage\",\n }),\n s3: storageS3ConfigSchema.default({\n bucket: \"paperclip\",\n region: \"us-east-1\",\n prefix: \"\",\n forcePathStyle: false,\n }),\n});\n\nexport const secretsLocalEncryptedConfigSchema = z.object({\n keyFilePath: z.string().default(\"~/.paperclip/instances/default/secrets/master.key\"),\n});\n\nexport const secretsConfigSchema = z.object({\n provider: z.enum(SECRET_PROVIDERS).default(\"local_encrypted\"),\n strictMode: z.boolean().default(false),\n localEncrypted: secretsLocalEncryptedConfigSchema.default({\n keyFilePath: \"~/.paperclip/instances/default/secrets/master.key\",\n }),\n});\n\nexport const paperclipConfigSchema = z\n .object({\n $meta: configMetaSchema,\n llm: llmConfigSchema.optional(),\n database: databaseConfigSchema,\n logging: loggingConfigSchema,\n server: serverConfigSchema,\n auth: authConfigSchema.default({\n baseUrlMode: \"auto\",\n }),\n storage: storageConfigSchema.default({\n provider: \"local_disk\",\n localDisk: {\n baseDir: \"~/.paperclip/instances/default/data/storage\",\n },\n s3: {\n bucket: \"paperclip\",\n region: \"us-east-1\",\n prefix: \"\",\n forcePathStyle: false,\n },\n }),\n secrets: secretsConfigSchema.default({\n provider: \"local_encrypted\",\n strictMode: false,\n localEncrypted: {\n keyFilePath: \"~/.paperclip/instances/default/secrets/master.key\",\n },\n }),\n })\n .superRefine((value, ctx) => {\n if (value.server.deploymentMode === \"local_trusted\") {\n if (value.server.exposure !== \"private\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"server.exposure must be private when deploymentMode is local_trusted\",\n path: [\"server\", \"exposure\"],\n });\n }\n return;\n }\n\n if (value.auth.baseUrlMode === \"explicit\" && !value.auth.publicBaseUrl) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.publicBaseUrl is required when auth.baseUrlMode is explicit\",\n path: [\"auth\", \"publicBaseUrl\"],\n });\n }\n\n if (value.server.exposure === \"public\" && value.auth.baseUrlMode !== \"explicit\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.baseUrlMode must be explicit when deploymentMode=authenticated and exposure=public\",\n path: [\"auth\", \"baseUrlMode\"],\n });\n }\n\n if (value.server.exposure === \"public\" && !value.auth.publicBaseUrl) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.publicBaseUrl is required when deploymentMode=authenticated and exposure=public\",\n path: [\"auth\", \"publicBaseUrl\"],\n });\n }\n });\n\nexport type PaperclipConfig = z.infer<typeof paperclipConfigSchema>;\nexport type LlmConfig = z.infer<typeof llmConfigSchema>;\nexport type DatabaseConfig = z.infer<typeof databaseConfigSchema>;\nexport type LoggingConfig = z.infer<typeof loggingConfigSchema>;\nexport type ServerConfig = z.infer<typeof serverConfigSchema>;\nexport type StorageConfig = z.infer<typeof storageConfigSchema>;\nexport type StorageLocalDiskConfig = z.infer<typeof storageLocalDiskConfigSchema>;\nexport type StorageS3Config = z.infer<typeof storageS3ConfigSchema>;\nexport type SecretsConfig = z.infer<typeof secretsConfigSchema>;\nexport type SecretsLocalEncryptedConfig = z.infer<typeof secretsLocalEncryptedConfigSchema>;\nexport type AuthConfig = z.infer<typeof authConfigSchema>;\nexport type ConfigMeta = z.infer<typeof configMetaSchema>;\n", "export {\n COMPANY_STATUSES,\n DEPLOYMENT_MODES,\n DEPLOYMENT_EXPOSURES,\n AUTH_BASE_URL_MODES,\n AGENT_STATUSES,\n AGENT_ADAPTER_TYPES,\n AGENT_ROLES,\n AGENT_ICON_NAMES,\n ISSUE_STATUSES,\n ISSUE_PRIORITIES,\n GOAL_LEVELS,\n GOAL_STATUSES,\n PROJECT_STATUSES,\n PROJECT_COLORS,\n APPROVAL_TYPES,\n APPROVAL_STATUSES,\n SECRET_PROVIDERS,\n STORAGE_PROVIDERS,\n HEARTBEAT_INVOCATION_SOURCES,\n HEARTBEAT_RUN_STATUSES,\n WAKEUP_TRIGGER_DETAILS,\n WAKEUP_REQUEST_STATUSES,\n LIVE_EVENT_TYPES,\n PRINCIPAL_TYPES,\n MEMBERSHIP_STATUSES,\n INSTANCE_USER_ROLES,\n INVITE_TYPES,\n INVITE_JOIN_TYPES,\n JOIN_REQUEST_TYPES,\n JOIN_REQUEST_STATUSES,\n PERMISSION_KEYS,\n type CompanyStatus,\n type DeploymentMode,\n type DeploymentExposure,\n type AuthBaseUrlMode,\n type AgentStatus,\n type AgentAdapterType,\n type AgentRole,\n type AgentIconName,\n type IssueStatus,\n type IssuePriority,\n type GoalLevel,\n type GoalStatus,\n type ProjectStatus,\n type ApprovalType,\n type ApprovalStatus,\n type SecretProvider,\n type StorageProvider,\n type HeartbeatInvocationSource,\n type HeartbeatRunStatus,\n type WakeupTriggerDetail,\n type WakeupRequestStatus,\n type LiveEventType,\n type PrincipalType,\n type MembershipStatus,\n type InstanceUserRole,\n type InviteType,\n type InviteJoinType,\n type JoinRequestType,\n type JoinRequestStatus,\n type PermissionKey,\n} from \"./constants.js\";\n\nexport type {\n Company,\n Agent,\n AgentPermissions,\n AgentKeyCreated,\n AgentConfigRevision,\n AdapterEnvironmentCheckLevel,\n AdapterEnvironmentTestStatus,\n AdapterEnvironmentCheck,\n AdapterEnvironmentTestResult,\n AssetImage,\n Project,\n ProjectGoalRef,\n ProjectWorkspace,\n Issue,\n IssueAssigneeAdapterOverrides,\n IssueComment,\n IssueAttachment,\n IssueLabel,\n Goal,\n Approval,\n ApprovalComment,\n CostEvent,\n CostSummary,\n CostByAgent,\n HeartbeatRun,\n HeartbeatRunEvent,\n AgentRuntimeState,\n AgentTaskSession,\n AgentWakeupRequest,\n LiveEvent,\n DashboardSummary,\n ActivityEvent,\n SidebarBadges,\n CompanyMembership,\n PrincipalPermissionGrant,\n Invite,\n JoinRequest,\n InstanceUserRoleGrant,\n CompanyPortabilityInclude,\n CompanyPortabilitySecretRequirement,\n CompanyPortabilityCompanyManifestEntry,\n CompanyPortabilityAgentManifestEntry,\n CompanyPortabilityManifest,\n CompanyPortabilityExportResult,\n CompanyPortabilitySource,\n CompanyPortabilityImportTarget,\n CompanyPortabilityAgentSelection,\n CompanyPortabilityCollisionStrategy,\n CompanyPortabilityPreviewRequest,\n CompanyPortabilityPreviewAgentPlan,\n CompanyPortabilityPreviewResult,\n CompanyPortabilityImportRequest,\n CompanyPortabilityImportResult,\n CompanyPortabilityExportRequest,\n EnvBinding,\n AgentEnvConfig,\n CompanySecret,\n SecretProviderDescriptor,\n} from \"./types/index.js\";\n\nexport {\n createCompanySchema,\n updateCompanySchema,\n type CreateCompany,\n type UpdateCompany,\n createAgentSchema,\n createAgentHireSchema,\n updateAgentSchema,\n updateAgentInstructionsPathSchema,\n createAgentKeySchema,\n wakeAgentSchema,\n resetAgentSessionSchema,\n testAdapterEnvironmentSchema,\n agentPermissionsSchema,\n updateAgentPermissionsSchema,\n type CreateAgent,\n type CreateAgentHire,\n type UpdateAgent,\n type UpdateAgentInstructionsPath,\n type CreateAgentKey,\n type WakeAgent,\n type ResetAgentSession,\n type TestAdapterEnvironment,\n type UpdateAgentPermissions,\n createProjectSchema,\n updateProjectSchema,\n createProjectWorkspaceSchema,\n updateProjectWorkspaceSchema,\n type CreateProject,\n type UpdateProject,\n type CreateProjectWorkspace,\n type UpdateProjectWorkspace,\n createIssueSchema,\n createIssueLabelSchema,\n updateIssueSchema,\n checkoutIssueSchema,\n addIssueCommentSchema,\n linkIssueApprovalSchema,\n createIssueAttachmentMetadataSchema,\n type CreateIssue,\n type CreateIssueLabel,\n type UpdateIssue,\n type CheckoutIssue,\n type AddIssueComment,\n type LinkIssueApproval,\n type CreateIssueAttachmentMetadata,\n createGoalSchema,\n updateGoalSchema,\n type CreateGoal,\n type UpdateGoal,\n createApprovalSchema,\n resolveApprovalSchema,\n requestApprovalRevisionSchema,\n resubmitApprovalSchema,\n addApprovalCommentSchema,\n type CreateApproval,\n type ResolveApproval,\n type RequestApprovalRevision,\n type ResubmitApproval,\n type AddApprovalComment,\n envBindingPlainSchema,\n envBindingSecretRefSchema,\n envBindingSchema,\n envConfigSchema,\n createSecretSchema,\n rotateSecretSchema,\n updateSecretSchema,\n type CreateSecret,\n type RotateSecret,\n type UpdateSecret,\n createCostEventSchema,\n updateBudgetSchema,\n createAssetImageMetadataSchema,\n createCompanyInviteSchema,\n acceptInviteSchema,\n listJoinRequestsQuerySchema,\n claimJoinRequestApiKeySchema,\n updateMemberPermissionsSchema,\n updateUserCompanyAccessSchema,\n type CreateCostEvent,\n type UpdateBudget,\n type CreateAssetImageMetadata,\n type CreateCompanyInvite,\n type AcceptInvite,\n type ListJoinRequestsQuery,\n type ClaimJoinRequestApiKey,\n type UpdateMemberPermissions,\n type UpdateUserCompanyAccess,\n portabilityIncludeSchema,\n portabilitySecretRequirementSchema,\n portabilityCompanyManifestEntrySchema,\n portabilityAgentManifestEntrySchema,\n portabilityManifestSchema,\n portabilitySourceSchema,\n portabilityTargetSchema,\n portabilityAgentSelectionSchema,\n portabilityCollisionStrategySchema,\n companyPortabilityExportSchema,\n companyPortabilityPreviewSchema,\n companyPortabilityImportSchema,\n type CompanyPortabilityExport,\n type CompanyPortabilityPreview,\n type CompanyPortabilityImport,\n} from \"./validators/index.js\";\n\nexport { API_PREFIX, API } from \"./api.js\";\nexport { normalizeAgentUrlKey, deriveAgentUrlKey, isUuidLike } from \"./agent-url-key.js\";\nexport { deriveProjectUrlKey, normalizeProjectUrlKey } from \"./project-url-key.js\";\nexport {\n PROJECT_MENTION_SCHEME,\n buildProjectMentionHref,\n parseProjectMentionHref,\n extractProjectMentionIds,\n type ParsedProjectMention,\n} from \"./project-mentions.js\";\n\nexport {\n paperclipConfigSchema,\n configMetaSchema,\n llmConfigSchema,\n databaseConfigSchema,\n loggingConfigSchema,\n serverConfigSchema,\n authConfigSchema,\n secretsConfigSchema,\n storageConfigSchema,\n storageLocalDiskConfigSchema,\n storageS3ConfigSchema,\n secretsLocalEncryptedConfigSchema,\n type PaperclipConfig,\n type LlmConfig,\n type DatabaseConfig,\n type LoggingConfig,\n type ServerConfig,\n type AuthConfig,\n type StorageConfig,\n type StorageLocalDiskConfig,\n type StorageS3Config,\n type SecretsConfig,\n type SecretsLocalEncryptedConfig,\n type ConfigMeta,\n} from \"./config-schema.js\";\n", "export {\n paperclipConfigSchema,\n configMetaSchema,\n llmConfigSchema,\n databaseConfigSchema,\n loggingConfigSchema,\n serverConfigSchema,\n authConfigSchema,\n storageConfigSchema,\n storageLocalDiskConfigSchema,\n storageS3ConfigSchema,\n secretsConfigSchema,\n secretsLocalEncryptedConfigSchema,\n type PaperclipConfig,\n type LlmConfig,\n type DatabaseConfig,\n type LoggingConfig,\n type ServerConfig,\n type AuthConfig,\n type StorageConfig,\n type StorageLocalDiskConfig,\n type StorageS3Config,\n type SecretsConfig,\n type SecretsLocalEncryptedConfig,\n type ConfigMeta,\n} from \"@paperclipai/shared\";\n", "import os from \"node:os\";\nimport path from \"node:path\";\n\nconst DEFAULT_INSTANCE_ID = \"default\";\nconst INSTANCE_ID_RE = /^[a-zA-Z0-9_-]+$/;\n\nexport function resolvePaperclipHomeDir(): string {\n const envHome = process.env.PAPERCLIP_HOME?.trim();\n if (envHome) return path.resolve(expandHomePrefix(envHome));\n return path.resolve(os.homedir(), \".paperclip\");\n}\n\nexport function resolvePaperclipInstanceId(override?: string): string {\n const raw = override?.trim() || process.env.PAPERCLIP_INSTANCE_ID?.trim() || DEFAULT_INSTANCE_ID;\n if (!INSTANCE_ID_RE.test(raw)) {\n throw new Error(\n `Invalid instance id '${raw}'. Allowed characters: letters, numbers, '_' and '-'.`,\n );\n }\n return raw;\n}\n\nexport function resolvePaperclipInstanceRoot(instanceId?: string): string {\n const id = resolvePaperclipInstanceId(instanceId);\n return path.resolve(resolvePaperclipHomeDir(), \"instances\", id);\n}\n\nexport function resolveDefaultConfigPath(instanceId?: string): string {\n return path.resolve(resolvePaperclipInstanceRoot(instanceId), \"config.json\");\n}\n\nexport function resolveDefaultContextPath(): string {\n return path.resolve(resolvePaperclipHomeDir(), \"context.json\");\n}\n\nexport function resolveDefaultEmbeddedPostgresDir(instanceId?: string): string {\n return path.resolve(resolvePaperclipInstanceRoot(instanceId), \"db\");\n}\n\nexport function resolveDefaultLogsDir(instanceId?: string): string {\n return path.resolve(resolvePaperclipInstanceRoot(instanceId), \"logs\");\n}\n\nexport function resolveDefaultSecretsKeyFilePath(instanceId?: string): string {\n return path.resolve(resolvePaperclipInstanceRoot(instanceId), \"secrets\", \"master.key\");\n}\n\nexport function resolveDefaultStorageDir(instanceId?: string): string {\n return path.resolve(resolvePaperclipInstanceRoot(instanceId), \"data\", \"storage\");\n}\n\nexport function expandHomePrefix(value: string): string {\n if (value === \"~\") return os.homedir();\n if (value.startsWith(\"~/\")) return path.resolve(os.homedir(), value.slice(2));\n return value;\n}\n\nexport function describeLocalInstancePaths(instanceId?: string) {\n const resolvedInstanceId = resolvePaperclipInstanceId(instanceId);\n const instanceRoot = resolvePaperclipInstanceRoot(resolvedInstanceId);\n return {\n homeDir: resolvePaperclipHomeDir(),\n instanceId: resolvedInstanceId,\n instanceRoot,\n configPath: resolveDefaultConfigPath(resolvedInstanceId),\n embeddedPostgresDataDir: resolveDefaultEmbeddedPostgresDir(resolvedInstanceId),\n logDir: resolveDefaultLogsDir(resolvedInstanceId),\n secretsKeyFilePath: resolveDefaultSecretsKeyFilePath(resolvedInstanceId),\n storageDir: resolveDefaultStorageDir(resolvedInstanceId),\n };\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { paperclipConfigSchema, type PaperclipConfig } from \"./schema.js\";\nimport {\n resolveDefaultConfigPath,\n resolvePaperclipInstanceId,\n} from \"./home.js\";\n\nconst DEFAULT_CONFIG_BASENAME = \"config.json\";\n\nfunction findConfigFileFromAncestors(startDir: string): string | null {\n const absoluteStartDir = path.resolve(startDir);\n let currentDir = absoluteStartDir;\n\n while (true) {\n const candidate = path.resolve(currentDir, \".paperclip\", DEFAULT_CONFIG_BASENAME);\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n\n const nextDir = path.resolve(currentDir, \"..\");\n if (nextDir === currentDir) break;\n currentDir = nextDir;\n }\n\n return null;\n}\n\nexport function resolveConfigPath(overridePath?: string): string {\n if (overridePath) return path.resolve(overridePath);\n if (process.env.PAPERCLIP_CONFIG) return path.resolve(process.env.PAPERCLIP_CONFIG);\n return findConfigFileFromAncestors(process.cwd()) ?? resolveDefaultConfigPath(resolvePaperclipInstanceId());\n}\n\nfunction parseJson(filePath: string): unknown {\n try {\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch (err) {\n throw new Error(`Failed to parse JSON at ${filePath}: ${err instanceof Error ? err.message : String(err)}`);\n }\n}\n\nfunction migrateLegacyConfig(raw: unknown): unknown {\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) return raw;\n const config = { ...(raw as Record<string, unknown>) };\n const databaseRaw = config.database;\n if (typeof databaseRaw !== \"object\" || databaseRaw === null || Array.isArray(databaseRaw)) {\n return config;\n }\n\n const database = { ...(databaseRaw as Record<string, unknown>) };\n if (database.mode === \"pglite\") {\n database.mode = \"embedded-postgres\";\n\n if (typeof database.embeddedPostgresDataDir !== \"string\" && typeof database.pgliteDataDir === \"string\") {\n database.embeddedPostgresDataDir = database.pgliteDataDir;\n }\n if (\n typeof database.embeddedPostgresPort !== \"number\" &&\n typeof database.pglitePort === \"number\" &&\n Number.isFinite(database.pglitePort)\n ) {\n database.embeddedPostgresPort = database.pglitePort;\n }\n }\n\n config.database = database;\n return config;\n}\n\nfunction formatValidationError(err: unknown): string {\n const issues = (err as { issues?: Array<{ path?: unknown; message?: unknown }> })?.issues;\n if (Array.isArray(issues) && issues.length > 0) {\n return issues\n .map((issue) => {\n const pathParts = Array.isArray(issue.path) ? issue.path.map(String) : [];\n const issuePath = pathParts.length > 0 ? pathParts.join(\".\") : \"config\";\n const message = typeof issue.message === \"string\" ? issue.message : \"Invalid value\";\n return `${issuePath}: ${message}`;\n })\n .join(\"; \");\n }\n return err instanceof Error ? err.message : String(err);\n}\n\nexport function readConfig(configPath?: string): PaperclipConfig | null {\n const filePath = resolveConfigPath(configPath);\n if (!fs.existsSync(filePath)) return null;\n const raw = parseJson(filePath);\n const migrated = migrateLegacyConfig(raw);\n const parsed = paperclipConfigSchema.safeParse(migrated);\n if (!parsed.success) {\n throw new Error(`Invalid config at ${filePath}: ${formatValidationError(parsed.error)}`);\n }\n return parsed.data;\n}\n\nexport function writeConfig(\n config: PaperclipConfig,\n configPath?: string,\n): void {\n const filePath = resolveConfigPath(configPath);\n const dir = path.dirname(filePath);\n fs.mkdirSync(dir, { recursive: true });\n\n // Backup existing config before overwriting\n if (fs.existsSync(filePath)) {\n const backupPath = filePath + \".backup\";\n fs.copyFileSync(filePath, backupPath);\n fs.chmodSync(backupPath, 0o600);\n }\n\n fs.writeFileSync(filePath, JSON.stringify(config, null, 2) + \"\\n\", {\n mode: 0o600,\n });\n}\n\nexport function configExists(configPath?: string): boolean {\n return fs.existsSync(resolveConfigPath(configPath));\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { randomBytes } from \"node:crypto\";\nimport { config as loadDotenv, parse as parseEnvFileContents } from \"dotenv\";\nimport { resolveConfigPath } from \"./store.js\";\n\nconst JWT_SECRET_ENV_KEY = \"PAPERCLIP_AGENT_JWT_SECRET\";\nfunction resolveEnvFilePath(configPath?: string) {\n return path.resolve(path.dirname(resolveConfigPath(configPath)), \".env\");\n}\nconst loadedEnvFiles = new Set<string>();\n\nfunction isNonEmpty(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction parseEnvFile(contents: string) {\n try {\n return parseEnvFileContents(contents);\n } catch {\n return {};\n }\n}\n\nfunction renderEnvFile(entries: Record<string, string>) {\n const lines = [\n \"# Paperclip environment variables\",\n \"# Generated by `paperclipai onboard`\",\n ...Object.entries(entries).map(([key, value]) => `${key}=${value}`),\n \"\",\n ];\n return lines.join(\"\\n\");\n}\n\nexport function resolveAgentJwtEnvFile(configPath?: string): string {\n return resolveEnvFilePath(configPath);\n}\n\nexport function loadAgentJwtEnvFile(filePath = resolveEnvFilePath()): void {\n if (loadedEnvFiles.has(filePath)) return;\n\n if (!fs.existsSync(filePath)) return;\n loadedEnvFiles.add(filePath);\n loadDotenv({ path: filePath, override: false, quiet: true });\n}\n\nexport function readAgentJwtSecretFromEnv(configPath?: string): string | null {\n loadAgentJwtEnvFile(resolveEnvFilePath(configPath));\n const raw = process.env[JWT_SECRET_ENV_KEY];\n return isNonEmpty(raw) ? raw!.trim() : null;\n}\n\nexport function readAgentJwtSecretFromEnvFile(filePath = resolveEnvFilePath()): string | null {\n if (!fs.existsSync(filePath)) return null;\n\n const raw = fs.readFileSync(filePath, \"utf-8\");\n const values = parseEnvFile(raw);\n const value = values[JWT_SECRET_ENV_KEY];\n return isNonEmpty(value) ? value!.trim() : null;\n}\n\nexport function ensureAgentJwtSecret(configPath?: string): { secret: string; created: boolean } {\n const existingEnv = readAgentJwtSecretFromEnv(configPath);\n if (existingEnv) {\n return { secret: existingEnv, created: false };\n }\n\n const envFilePath = resolveEnvFilePath(configPath);\n const existingFile = readAgentJwtSecretFromEnvFile(envFilePath);\n const secret = existingFile ?? randomBytes(32).toString(\"hex\");\n const created = !existingFile;\n\n if (!existingFile) {\n writeAgentJwtEnv(secret, envFilePath);\n }\n\n return { secret, created };\n}\n\nexport function writeAgentJwtEnv(secret: string, filePath = resolveEnvFilePath()): void {\n const dir = path.dirname(filePath);\n fs.mkdirSync(dir, { recursive: true });\n\n const current = fs.existsSync(filePath) ? parseEnvFile(fs.readFileSync(filePath, \"utf-8\")) : {};\n current[JWT_SECRET_ENV_KEY] = secret;\n\n fs.writeFileSync(filePath, renderEnvFile(current), {\n mode: 0o600,\n });\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { expandHomePrefix } from \"../config/home.js\";\n\nfunction unique(items: string[]): string[] {\n return Array.from(new Set(items));\n}\n\nexport function resolveRuntimeLikePath(value: string, configPath?: string): string {\n const expanded = expandHomePrefix(value);\n if (path.isAbsolute(expanded)) return path.resolve(expanded);\n\n const cwd = process.cwd();\n const configDir = configPath ? path.dirname(configPath) : null;\n const workspaceRoot = configDir ? path.resolve(configDir, \"..\") : cwd;\n\n const candidates = unique([\n ...(configDir ? [path.resolve(configDir, expanded)] : []),\n path.resolve(workspaceRoot, \"server\", expanded),\n path.resolve(workspaceRoot, expanded),\n path.resolve(cwd, expanded),\n ]);\n\n return candidates.find((candidate) => fs.existsSync(candidate)) ?? candidates[0];\n}\n", "import { randomBytes } from \"node:crypto\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { PaperclipConfig } from \"./schema.js\";\nimport { resolveRuntimeLikePath } from \"../utils/path-resolver.js\";\n\nexport type EnsureSecretsKeyResult =\n | { status: \"created\"; path: string }\n | { status: \"existing\"; path: string }\n | { status: \"skipped_env\"; path: null }\n | { status: \"skipped_provider\"; path: null };\n\nexport function ensureLocalSecretsKeyFile(\n config: Pick<PaperclipConfig, \"secrets\">,\n configPath?: string,\n): EnsureSecretsKeyResult {\n if (config.secrets.provider !== \"local_encrypted\") {\n return { status: \"skipped_provider\", path: null };\n }\n\n const envMasterKey = process.env.PAPERCLIP_SECRETS_MASTER_KEY;\n if (envMasterKey && envMasterKey.trim().length > 0) {\n return { status: \"skipped_env\", path: null };\n }\n\n const keyFileOverride = process.env.PAPERCLIP_SECRETS_MASTER_KEY_FILE;\n const configuredPath =\n keyFileOverride && keyFileOverride.trim().length > 0\n ? keyFileOverride.trim()\n : config.secrets.localEncrypted.keyFilePath;\n const keyFilePath = resolveRuntimeLikePath(configuredPath, configPath);\n\n if (fs.existsSync(keyFilePath)) {\n return { status: \"existing\", path: keyFilePath };\n }\n\n fs.mkdirSync(path.dirname(keyFilePath), { recursive: true });\n fs.writeFileSync(keyFilePath, randomBytes(32).toString(\"base64\"), {\n encoding: \"utf8\",\n mode: 0o600,\n });\n try {\n fs.chmodSync(keyFilePath, 0o600);\n } catch {\n // best effort\n }\n return { status: \"created\", path: keyFilePath };\n}\n", "import * as p from \"@clack/prompts\";\nimport type { DatabaseConfig } from \"../config/schema.js\";\nimport { resolveDefaultEmbeddedPostgresDir, resolvePaperclipInstanceId } from \"../config/home.js\";\n\nexport async function promptDatabase(): Promise<DatabaseConfig> {\n const defaultEmbeddedDir = resolveDefaultEmbeddedPostgresDir(resolvePaperclipInstanceId());\n\n const mode = await p.select({\n message: \"Database mode\",\n options: [\n { value: \"embedded-postgres\" as const, label: \"Embedded PostgreSQL (managed locally)\", hint: \"recommended\" },\n { value: \"postgres\" as const, label: \"PostgreSQL (external server)\" },\n ],\n });\n\n if (p.isCancel(mode)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n if (mode === \"postgres\") {\n const connectionString = await p.text({\n message: \"PostgreSQL connection string\",\n placeholder: \"postgres://user:pass@localhost:5432/paperclip\",\n validate: (val) => {\n if (!val) return \"Connection string is required for PostgreSQL mode\";\n if (!val.startsWith(\"postgres\")) return \"Must be a postgres:// or postgresql:// URL\";\n },\n });\n\n if (p.isCancel(connectionString)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return {\n mode: \"postgres\",\n connectionString,\n embeddedPostgresDataDir: defaultEmbeddedDir,\n embeddedPostgresPort: 54329,\n };\n }\n\n const embeddedPostgresDataDir = await p.text({\n message: \"Embedded PostgreSQL data directory\",\n defaultValue: defaultEmbeddedDir,\n placeholder: defaultEmbeddedDir,\n });\n\n if (p.isCancel(embeddedPostgresDataDir)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const embeddedPostgresPort = await p.text({\n message: \"Embedded PostgreSQL port\",\n defaultValue: \"54329\",\n placeholder: \"54329\",\n validate: (val) => {\n const n = Number(val);\n if (!Number.isInteger(n) || n < 1 || n > 65535) return \"Port must be an integer between 1 and 65535\";\n },\n });\n\n if (p.isCancel(embeddedPostgresPort)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return {\n mode: \"embedded-postgres\",\n embeddedPostgresDataDir: embeddedPostgresDataDir || defaultEmbeddedDir,\n embeddedPostgresPort: Number(embeddedPostgresPort || \"54329\"),\n };\n}\n", "import * as p from \"@clack/prompts\";\nimport type { LlmConfig } from \"../config/schema.js\";\n\nexport async function promptLlm(): Promise<LlmConfig | undefined> {\n const configureLlm = await p.confirm({\n message: \"Configure an LLM provider now?\",\n initialValue: false,\n });\n\n if (p.isCancel(configureLlm)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n if (!configureLlm) return undefined;\n\n const provider = await p.select({\n message: \"LLM provider\",\n options: [\n { value: \"claude\" as const, label: \"Claude (Anthropic)\" },\n { value: \"openai\" as const, label: \"OpenAI\" },\n ],\n });\n\n if (p.isCancel(provider)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const apiKey = await p.password({\n message: `${provider === \"claude\" ? \"Anthropic\" : \"OpenAI\"} API key`,\n validate: (val) => {\n if (!val) return \"API key is required\";\n },\n });\n\n if (p.isCancel(apiKey)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return { provider, apiKey };\n}\n", "import * as p from \"@clack/prompts\";\nimport type { LoggingConfig } from \"../config/schema.js\";\nimport { resolveDefaultLogsDir, resolvePaperclipInstanceId } from \"../config/home.js\";\n\nexport async function promptLogging(): Promise<LoggingConfig> {\n const defaultLogDir = resolveDefaultLogsDir(resolvePaperclipInstanceId());\n const mode = await p.select({\n message: \"Logging mode\",\n options: [\n { value: \"file\" as const, label: \"File-based logging\", hint: \"recommended\" },\n { value: \"cloud\" as const, label: \"Cloud logging\", hint: \"coming soon\" },\n ],\n });\n\n if (p.isCancel(mode)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n if (mode === \"file\") {\n const logDir = await p.text({\n message: \"Log directory\",\n defaultValue: defaultLogDir,\n placeholder: defaultLogDir,\n });\n\n if (p.isCancel(logDir)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return { mode: \"file\", logDir: logDir || defaultLogDir };\n }\n\n p.note(\"Cloud logging is coming soon. Using file-based logging for now.\");\n return { mode: \"file\", logDir: defaultLogDir };\n}\n", "import * as p from \"@clack/prompts\";\nimport type { SecretProvider } from \"@paperclipai/shared\";\nimport type { SecretsConfig } from \"../config/schema.js\";\nimport { resolveDefaultSecretsKeyFilePath, resolvePaperclipInstanceId } from \"../config/home.js\";\n\nfunction defaultKeyFilePath(): string {\n return resolveDefaultSecretsKeyFilePath(resolvePaperclipInstanceId());\n}\n\nexport function defaultSecretsConfig(): SecretsConfig {\n const keyFilePath = defaultKeyFilePath();\n return {\n provider: \"local_encrypted\",\n strictMode: false,\n localEncrypted: {\n keyFilePath,\n },\n };\n}\n\nexport async function promptSecrets(current?: SecretsConfig): Promise<SecretsConfig> {\n const base = current ?? defaultSecretsConfig();\n\n const provider = await p.select({\n message: \"Secrets provider\",\n options: [\n {\n value: \"local_encrypted\" as const,\n label: \"Local encrypted (recommended)\",\n hint: \"best for single-developer installs\",\n },\n {\n value: \"aws_secrets_manager\" as const,\n label: \"AWS Secrets Manager\",\n hint: \"requires external adapter integration\",\n },\n {\n value: \"gcp_secret_manager\" as const,\n label: \"GCP Secret Manager\",\n hint: \"requires external adapter integration\",\n },\n {\n value: \"vault\" as const,\n label: \"HashiCorp Vault\",\n hint: \"requires external adapter integration\",\n },\n ],\n initialValue: base.provider,\n });\n\n if (p.isCancel(provider)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const strictMode = await p.confirm({\n message: \"Require secret refs for sensitive env vars?\",\n initialValue: base.strictMode,\n });\n\n if (p.isCancel(strictMode)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const fallbackDefault = defaultKeyFilePath();\n let keyFilePath = base.localEncrypted.keyFilePath || fallbackDefault;\n if (provider === \"local_encrypted\") {\n const keyPath = await p.text({\n message: \"Local encrypted key file path\",\n defaultValue: keyFilePath,\n placeholder: fallbackDefault,\n validate: (value) => {\n if (!value || value.trim().length === 0) return \"Key file path is required\";\n },\n });\n\n if (p.isCancel(keyPath)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n keyFilePath = keyPath.trim();\n }\n\n if (provider !== \"local_encrypted\") {\n p.note(\n `${provider} is not fully wired in this build yet. Keep local_encrypted unless you are actively implementing that adapter.`,\n \"Heads up\",\n );\n }\n\n return {\n provider: provider as SecretProvider,\n strictMode,\n localEncrypted: {\n keyFilePath,\n },\n };\n}\n", "import * as p from \"@clack/prompts\";\nimport type { StorageConfig } from \"../config/schema.js\";\nimport { resolveDefaultStorageDir, resolvePaperclipInstanceId } from \"../config/home.js\";\n\nfunction defaultStorageBaseDir(): string {\n return resolveDefaultStorageDir(resolvePaperclipInstanceId());\n}\n\nexport function defaultStorageConfig(): StorageConfig {\n return {\n provider: \"local_disk\",\n localDisk: {\n baseDir: defaultStorageBaseDir(),\n },\n s3: {\n bucket: \"paperclip\",\n region: \"us-east-1\",\n endpoint: undefined,\n prefix: \"\",\n forcePathStyle: false,\n },\n };\n}\n\nexport async function promptStorage(current?: StorageConfig): Promise<StorageConfig> {\n const base = current ?? defaultStorageConfig();\n\n const provider = await p.select({\n message: \"Storage provider\",\n options: [\n {\n value: \"local_disk\" as const,\n label: \"Local disk (recommended)\",\n hint: \"best for single-user local deployments\",\n },\n {\n value: \"s3\" as const,\n label: \"S3 compatible\",\n hint: \"for cloud/object storage backends\",\n },\n ],\n initialValue: base.provider,\n });\n\n if (p.isCancel(provider)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n if (provider === \"local_disk\") {\n const baseDir = await p.text({\n message: \"Local storage base directory\",\n defaultValue: base.localDisk.baseDir || defaultStorageBaseDir(),\n placeholder: defaultStorageBaseDir(),\n validate: (value) => {\n if (!value || value.trim().length === 0) return \"Storage base directory is required\";\n },\n });\n\n if (p.isCancel(baseDir)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return {\n provider: \"local_disk\",\n localDisk: {\n baseDir: baseDir.trim(),\n },\n s3: base.s3,\n };\n }\n\n const bucket = await p.text({\n message: \"S3 bucket\",\n defaultValue: base.s3.bucket || \"paperclip\",\n placeholder: \"paperclip\",\n validate: (value) => {\n if (!value || value.trim().length === 0) return \"Bucket is required\";\n },\n });\n\n if (p.isCancel(bucket)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const region = await p.text({\n message: \"S3 region\",\n defaultValue: base.s3.region || \"us-east-1\",\n placeholder: \"us-east-1\",\n validate: (value) => {\n if (!value || value.trim().length === 0) return \"Region is required\";\n },\n });\n\n if (p.isCancel(region)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const endpoint = await p.text({\n message: \"S3 endpoint (optional for compatible backends)\",\n defaultValue: base.s3.endpoint ?? \"\",\n placeholder: \"https://s3.amazonaws.com\",\n });\n\n if (p.isCancel(endpoint)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const prefix = await p.text({\n message: \"Object key prefix (optional)\",\n defaultValue: base.s3.prefix ?? \"\",\n placeholder: \"paperclip/\",\n });\n\n if (p.isCancel(prefix)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const forcePathStyle = await p.confirm({\n message: \"Use S3 path-style URLs?\",\n initialValue: base.s3.forcePathStyle ?? false,\n });\n\n if (p.isCancel(forcePathStyle)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n return {\n provider: \"s3\",\n localDisk: base.localDisk,\n s3: {\n bucket: bucket.trim(),\n region: region.trim(),\n endpoint: endpoint.trim() || undefined,\n prefix: prefix.trim(),\n forcePathStyle,\n },\n };\n}\n\n", "export function normalizeHostnameInput(raw: string): string {\n const input = raw.trim();\n if (!input) {\n throw new Error(\"Hostname is required\");\n }\n\n try {\n const url = input.includes(\"://\") ? new URL(input) : new URL(`http://${input}`);\n const hostname = url.hostname.trim().toLowerCase();\n if (!hostname) throw new Error(\"Hostname is required\");\n return hostname;\n } catch {\n throw new Error(`Invalid hostname: ${raw}`);\n }\n}\n\nexport function parseHostnameCsv(raw: string): string[] {\n if (!raw.trim()) return [];\n const unique = new Set<string>();\n for (const part of raw.split(\",\")) {\n const hostname = normalizeHostnameInput(part);\n unique.add(hostname);\n }\n return Array.from(unique);\n}\n\n", "import * as p from \"@clack/prompts\";\nimport type { AuthConfig, ServerConfig } from \"../config/schema.js\";\nimport { parseHostnameCsv } from \"../config/hostnames.js\";\n\nexport async function promptServer(opts?: {\n currentServer?: Partial<ServerConfig>;\n currentAuth?: Partial<AuthConfig>;\n}): Promise<{ server: ServerConfig; auth: AuthConfig }> {\n const currentServer = opts?.currentServer;\n const currentAuth = opts?.currentAuth;\n\n const deploymentModeSelection = await p.select({\n message: \"Deployment mode\",\n options: [\n {\n value: \"local_trusted\",\n label: \"Local trusted\",\n hint: \"Easiest for local setup (no login, localhost-only)\",\n },\n {\n value: \"authenticated\",\n label: \"Authenticated\",\n hint: \"Login required; use for private network or public hosting\",\n },\n ],\n initialValue: currentServer?.deploymentMode ?? \"local_trusted\",\n });\n\n if (p.isCancel(deploymentModeSelection)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n const deploymentMode = deploymentModeSelection as ServerConfig[\"deploymentMode\"];\n\n let exposure: ServerConfig[\"exposure\"] = \"private\";\n if (deploymentMode === \"authenticated\") {\n const exposureSelection = await p.select({\n message: \"Exposure profile\",\n options: [\n {\n value: \"private\",\n label: \"Private network\",\n hint: \"Private access (for example Tailscale), lower setup friction\",\n },\n {\n value: \"public\",\n label: \"Public internet\",\n hint: \"Internet-facing deployment with stricter requirements\",\n },\n ],\n initialValue: currentServer?.exposure ?? \"private\",\n });\n if (p.isCancel(exposureSelection)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n exposure = exposureSelection as ServerConfig[\"exposure\"];\n }\n\n const hostDefault = deploymentMode === \"local_trusted\" ? \"127.0.0.1\" : \"0.0.0.0\";\n const hostStr = await p.text({\n message: \"Bind host\",\n defaultValue: currentServer?.host ?? hostDefault,\n placeholder: hostDefault,\n validate: (val) => {\n if (!val.trim()) return \"Host is required\";\n },\n });\n\n if (p.isCancel(hostStr)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n const portStr = await p.text({\n message: \"Server port\",\n defaultValue: String(currentServer?.port ?? 3100),\n placeholder: \"3100\",\n validate: (val) => {\n const n = Number(val);\n if (isNaN(n) || n < 1 || n > 65535 || !Number.isInteger(n)) {\n return \"Must be an integer between 1 and 65535\";\n }\n },\n });\n\n if (p.isCancel(portStr)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n let allowedHostnames: string[] = [];\n if (deploymentMode === \"authenticated\" && exposure === \"private\") {\n const allowedHostnamesInput = await p.text({\n message: \"Allowed hostnames (comma-separated, optional)\",\n defaultValue: (currentServer?.allowedHostnames ?? []).join(\", \"),\n placeholder: \"dotta-macbook-pro, your-host.tailnet.ts.net\",\n validate: (val) => {\n try {\n parseHostnameCsv(val);\n return;\n } catch (err) {\n return err instanceof Error ? err.message : \"Invalid hostname list\";\n }\n },\n });\n\n if (p.isCancel(allowedHostnamesInput)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n allowedHostnames = parseHostnameCsv(allowedHostnamesInput);\n }\n\n const port = Number(portStr) || 3100;\n let auth: AuthConfig = { baseUrlMode: \"auto\" };\n if (deploymentMode === \"authenticated\" && exposure === \"public\") {\n const urlInput = await p.text({\n message: \"Public base URL\",\n defaultValue: currentAuth?.publicBaseUrl ?? \"\",\n placeholder: \"https://paperclip.example.com\",\n validate: (val) => {\n const candidate = val.trim();\n if (!candidate) return \"Public base URL is required for public exposure\";\n try {\n const url = new URL(candidate);\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return \"URL must start with http:// or https://\";\n }\n return;\n } catch {\n return \"Enter a valid URL\";\n }\n },\n });\n if (p.isCancel(urlInput)) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n auth = {\n baseUrlMode: \"explicit\",\n publicBaseUrl: urlInput.trim().replace(/\\/+$/, \"\"),\n };\n } else if (currentAuth?.baseUrlMode === \"explicit\" && currentAuth.publicBaseUrl) {\n auth = {\n baseUrlMode: \"explicit\",\n publicBaseUrl: currentAuth.publicBaseUrl,\n };\n }\n\n return {\n server: { deploymentMode, exposure, host: hostStr.trim(), port, allowedHostnames, serveUi: true },\n auth,\n };\n}\n\n", "import { pgTable, uuid, text, integer, timestamp, boolean, uniqueIndex } from \"drizzle-orm/pg-core\";\n\nexport const companies = pgTable(\n \"companies\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n status: text(\"status\").notNull().default(\"active\"),\n issuePrefix: text(\"issue_prefix\").notNull().default(\"PAP\"),\n issueCounter: integer(\"issue_counter\").notNull().default(0),\n budgetMonthlyCents: integer(\"budget_monthly_cents\").notNull().default(0),\n spentMonthlyCents: integer(\"spent_monthly_cents\").notNull().default(0),\n requireBoardApprovalForNewAgents: boolean(\"require_board_approval_for_new_agents\")\n .notNull()\n .default(true),\n brandColor: text(\"brand_color\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n issuePrefixUniqueIdx: uniqueIndex(\"companies_issue_prefix_idx\").on(table.issuePrefix),\n }),\n);\n", "import { pgTable, text, timestamp, boolean } from \"drizzle-orm/pg-core\";\n\nexport const authUsers = pgTable(\"user\", {\n id: text(\"id\").primaryKey(),\n name: text(\"name\").notNull(),\n email: text(\"email\").notNull(),\n emailVerified: boolean(\"email_verified\").notNull().default(false),\n image: text(\"image\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n});\n\nexport const authSessions = pgTable(\"session\", {\n id: text(\"id\").primaryKey(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n token: text(\"token\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n ipAddress: text(\"ip_address\"),\n userAgent: text(\"user_agent\"),\n userId: text(\"user_id\").notNull().references(() => authUsers.id, { onDelete: \"cascade\" }),\n});\n\nexport const authAccounts = pgTable(\"account\", {\n id: text(\"id\").primaryKey(),\n accountId: text(\"account_id\").notNull(),\n providerId: text(\"provider_id\").notNull(),\n userId: text(\"user_id\").notNull().references(() => authUsers.id, { onDelete: \"cascade\" }),\n accessToken: text(\"access_token\"),\n refreshToken: text(\"refresh_token\"),\n idToken: text(\"id_token\"),\n accessTokenExpiresAt: timestamp(\"access_token_expires_at\", { withTimezone: true }),\n refreshTokenExpiresAt: timestamp(\"refresh_token_expires_at\", { withTimezone: true }),\n scope: text(\"scope\"),\n password: text(\"password\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n});\n\nexport const authVerifications = pgTable(\"verification\", {\n id: text(\"id\").primaryKey(),\n identifier: text(\"identifier\").notNull(),\n value: text(\"value\").notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }),\n});\n", "import { pgTable, uuid, text, timestamp, uniqueIndex, index } from \"drizzle-orm/pg-core\";\n\nexport const instanceUserRoles = pgTable(\n \"instance_user_roles\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\").notNull(),\n role: text(\"role\").notNull().default(\"instance_admin\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n userRoleUniqueIdx: uniqueIndex(\"instance_user_roles_user_role_unique_idx\").on(table.userId, table.role),\n roleIdx: index(\"instance_user_roles_role_idx\").on(table.role),\n }),\n);\n", "import {\n type AnyPgColumn,\n pgTable,\n uuid,\n text,\n integer,\n timestamp,\n jsonb,\n index,\n} from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\n\nexport const agents = pgTable(\n \"agents\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n name: text(\"name\").notNull(),\n role: text(\"role\").notNull().default(\"general\"),\n title: text(\"title\"),\n icon: text(\"icon\"),\n status: text(\"status\").notNull().default(\"idle\"),\n reportsTo: uuid(\"reports_to\").references((): AnyPgColumn => agents.id),\n capabilities: text(\"capabilities\"),\n adapterType: text(\"adapter_type\").notNull().default(\"process\"),\n adapterConfig: jsonb(\"adapter_config\").$type<Record<string, unknown>>().notNull().default({}),\n runtimeConfig: jsonb(\"runtime_config\").$type<Record<string, unknown>>().notNull().default({}),\n budgetMonthlyCents: integer(\"budget_monthly_cents\").notNull().default(0),\n spentMonthlyCents: integer(\"spent_monthly_cents\").notNull().default(0),\n permissions: jsonb(\"permissions\").$type<Record<string, unknown>>().notNull().default({}),\n lastHeartbeatAt: timestamp(\"last_heartbeat_at\", { withTimezone: true }),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyStatusIdx: index(\"agents_company_status_idx\").on(table.companyId, table.status),\n companyReportsToIdx: index(\"agents_company_reports_to_idx\").on(table.companyId, table.reportsTo),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, uniqueIndex, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\n\nexport const companyMemberships = pgTable(\n \"company_memberships\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n principalType: text(\"principal_type\").notNull(),\n principalId: text(\"principal_id\").notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n membershipRole: text(\"membership_role\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyPrincipalUniqueIdx: uniqueIndex(\"company_memberships_company_principal_unique_idx\").on(\n table.companyId,\n table.principalType,\n table.principalId,\n ),\n principalStatusIdx: index(\"company_memberships_principal_status_idx\").on(\n table.principalType,\n table.principalId,\n table.status,\n ),\n companyStatusIdx: index(\"company_memberships_company_status_idx\").on(table.companyId, table.status),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, uniqueIndex, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\n\nexport const principalPermissionGrants = pgTable(\n \"principal_permission_grants\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n principalType: text(\"principal_type\").notNull(),\n principalId: text(\"principal_id\").notNull(),\n permissionKey: text(\"permission_key\").notNull(),\n scope: jsonb(\"scope\").$type<Record<string, unknown> | null>(),\n grantedByUserId: text(\"granted_by_user_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n uniqueGrantIdx: uniqueIndex(\"principal_permission_grants_unique_idx\").on(\n table.companyId,\n table.principalType,\n table.principalId,\n table.permissionKey,\n ),\n companyPermissionIdx: index(\"principal_permission_grants_company_permission_idx\").on(\n table.companyId,\n table.permissionKey,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\n\nexport const invites = pgTable(\n \"invites\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").references(() => companies.id),\n inviteType: text(\"invite_type\").notNull().default(\"company_join\"),\n tokenHash: text(\"token_hash\").notNull(),\n allowedJoinTypes: text(\"allowed_join_types\").notNull().default(\"both\"),\n defaultsPayload: jsonb(\"defaults_payload\").$type<Record<string, unknown> | null>(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n invitedByUserId: text(\"invited_by_user_id\"),\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n acceptedAt: timestamp(\"accepted_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n tokenHashUniqueIdx: uniqueIndex(\"invites_token_hash_unique_idx\").on(table.tokenHash),\n companyInviteStateIdx: index(\"invites_company_invite_state_idx\").on(\n table.companyId,\n table.inviteType,\n table.revokedAt,\n table.expiresAt,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { invites } from \"./invites.js\";\nimport { agents } from \"./agents.js\";\n\nexport const joinRequests = pgTable(\n \"join_requests\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n inviteId: uuid(\"invite_id\").notNull().references(() => invites.id),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n requestType: text(\"request_type\").notNull(),\n status: text(\"status\").notNull().default(\"pending_approval\"),\n requestIp: text(\"request_ip\").notNull(),\n requestingUserId: text(\"requesting_user_id\"),\n requestEmailSnapshot: text(\"request_email_snapshot\"),\n agentName: text(\"agent_name\"),\n adapterType: text(\"adapter_type\"),\n capabilities: text(\"capabilities\"),\n agentDefaultsPayload: jsonb(\"agent_defaults_payload\").$type<Record<string, unknown> | null>(),\n claimSecretHash: text(\"claim_secret_hash\"),\n claimSecretExpiresAt: timestamp(\"claim_secret_expires_at\", { withTimezone: true }),\n claimSecretConsumedAt: timestamp(\"claim_secret_consumed_at\", { withTimezone: true }),\n createdAgentId: uuid(\"created_agent_id\").references(() => agents.id),\n approvedByUserId: text(\"approved_by_user_id\"),\n approvedAt: timestamp(\"approved_at\", { withTimezone: true }),\n rejectedByUserId: text(\"rejected_by_user_id\"),\n rejectedAt: timestamp(\"rejected_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n inviteUniqueIdx: uniqueIndex(\"join_requests_invite_unique_idx\").on(table.inviteId),\n companyStatusTypeCreatedIdx: index(\"join_requests_company_status_type_created_idx\").on(\n table.companyId,\n table.status,\n table.requestType,\n table.createdAt,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\n\nexport const agentConfigRevisions = pgTable(\n \"agent_config_revisions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id, { onDelete: \"cascade\" }),\n createdByAgentId: uuid(\"created_by_agent_id\").references(() => agents.id, { onDelete: \"set null\" }),\n createdByUserId: text(\"created_by_user_id\"),\n source: text(\"source\").notNull().default(\"patch\"),\n rolledBackFromRevisionId: uuid(\"rolled_back_from_revision_id\"),\n changedKeys: jsonb(\"changed_keys\").$type<string[]>().notNull().default([]),\n beforeConfig: jsonb(\"before_config\").$type<Record<string, unknown>>().notNull(),\n afterConfig: jsonb(\"after_config\").$type<Record<string, unknown>>().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyAgentCreatedIdx: index(\"agent_config_revisions_company_agent_created_idx\").on(\n table.companyId,\n table.agentId,\n table.createdAt,\n ),\n agentCreatedIdx: index(\"agent_config_revisions_agent_created_idx\").on(table.agentId, table.createdAt),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, index } from \"drizzle-orm/pg-core\";\nimport { agents } from \"./agents.js\";\nimport { companies } from \"./companies.js\";\n\nexport const agentApiKeys = pgTable(\n \"agent_api_keys\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n name: text(\"name\").notNull(),\n keyHash: text(\"key_hash\").notNull(),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }),\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n keyHashIdx: index(\"agent_api_keys_key_hash_idx\").on(table.keyHash),\n companyAgentIdx: index(\"agent_api_keys_company_agent_idx\").on(table.companyId, table.agentId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, bigint, index } from \"drizzle-orm/pg-core\";\nimport { agents } from \"./agents.js\";\nimport { companies } from \"./companies.js\";\n\nexport const agentRuntimeState = pgTable(\n \"agent_runtime_state\",\n {\n agentId: uuid(\"agent_id\").primaryKey().references(() => agents.id),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n adapterType: text(\"adapter_type\").notNull(),\n sessionId: text(\"session_id\"),\n stateJson: jsonb(\"state_json\").$type<Record<string, unknown>>().notNull().default({}),\n lastRunId: uuid(\"last_run_id\"),\n lastRunStatus: text(\"last_run_status\"),\n totalInputTokens: bigint(\"total_input_tokens\", { mode: \"number\" }).notNull().default(0),\n totalOutputTokens: bigint(\"total_output_tokens\", { mode: \"number\" }).notNull().default(0),\n totalCachedInputTokens: bigint(\"total_cached_input_tokens\", { mode: \"number\" }).notNull().default(0),\n totalCostCents: bigint(\"total_cost_cents\", { mode: \"number\" }).notNull().default(0),\n lastError: text(\"last_error\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyAgentIdx: index(\"agent_runtime_state_company_agent_idx\").on(table.companyId, table.agentId),\n companyUpdatedIdx: index(\"agent_runtime_state_company_updated_idx\").on(table.companyId, table.updatedAt),\n }),\n);\n\n", "import { pgTable, uuid, text, timestamp, jsonb, integer, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\n\nexport const agentWakeupRequests = pgTable(\n \"agent_wakeup_requests\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n source: text(\"source\").notNull(),\n triggerDetail: text(\"trigger_detail\"),\n reason: text(\"reason\"),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>(),\n status: text(\"status\").notNull().default(\"queued\"),\n coalescedCount: integer(\"coalesced_count\").notNull().default(0),\n requestedByActorType: text(\"requested_by_actor_type\"),\n requestedByActorId: text(\"requested_by_actor_id\"),\n idempotencyKey: text(\"idempotency_key\"),\n runId: uuid(\"run_id\"),\n requestedAt: timestamp(\"requested_at\", { withTimezone: true }).notNull().defaultNow(),\n claimedAt: timestamp(\"claimed_at\", { withTimezone: true }),\n finishedAt: timestamp(\"finished_at\", { withTimezone: true }),\n error: text(\"error\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyAgentStatusIdx: index(\"agent_wakeup_requests_company_agent_status_idx\").on(\n table.companyId,\n table.agentId,\n table.status,\n ),\n companyRequestedIdx: index(\"agent_wakeup_requests_company_requested_idx\").on(\n table.companyId,\n table.requestedAt,\n ),\n agentRequestedIdx: index(\"agent_wakeup_requests_agent_requested_idx\").on(table.agentId, table.requestedAt),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index, integer, bigint, boolean } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\nimport { agentWakeupRequests } from \"./agent_wakeup_requests.js\";\n\nexport const heartbeatRuns = pgTable(\n \"heartbeat_runs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n invocationSource: text(\"invocation_source\").notNull().default(\"on_demand\"),\n triggerDetail: text(\"trigger_detail\"),\n status: text(\"status\").notNull().default(\"queued\"),\n startedAt: timestamp(\"started_at\", { withTimezone: true }),\n finishedAt: timestamp(\"finished_at\", { withTimezone: true }),\n error: text(\"error\"),\n wakeupRequestId: uuid(\"wakeup_request_id\").references(() => agentWakeupRequests.id),\n exitCode: integer(\"exit_code\"),\n signal: text(\"signal\"),\n usageJson: jsonb(\"usage_json\").$type<Record<string, unknown>>(),\n resultJson: jsonb(\"result_json\").$type<Record<string, unknown>>(),\n sessionIdBefore: text(\"session_id_before\"),\n sessionIdAfter: text(\"session_id_after\"),\n logStore: text(\"log_store\"),\n logRef: text(\"log_ref\"),\n logBytes: bigint(\"log_bytes\", { mode: \"number\" }),\n logSha256: text(\"log_sha256\"),\n logCompressed: boolean(\"log_compressed\").notNull().default(false),\n stdoutExcerpt: text(\"stdout_excerpt\"),\n stderrExcerpt: text(\"stderr_excerpt\"),\n errorCode: text(\"error_code\"),\n externalRunId: text(\"external_run_id\"),\n contextSnapshot: jsonb(\"context_snapshot\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyAgentStartedIdx: index(\"heartbeat_runs_company_agent_started_idx\").on(\n table.companyId,\n table.agentId,\n table.startedAt,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\nimport { heartbeatRuns } from \"./heartbeat_runs.js\";\n\nexport const agentTaskSessions = pgTable(\n \"agent_task_sessions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n adapterType: text(\"adapter_type\").notNull(),\n taskKey: text(\"task_key\").notNull(),\n sessionParamsJson: jsonb(\"session_params_json\").$type<Record<string, unknown>>(),\n sessionDisplayId: text(\"session_display_id\"),\n lastRunId: uuid(\"last_run_id\").references(() => heartbeatRuns.id),\n lastError: text(\"last_error\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyAgentTaskUniqueIdx: uniqueIndex(\"agent_task_sessions_company_agent_adapter_task_uniq\").on(\n table.companyId,\n table.agentId,\n table.adapterType,\n table.taskKey,\n ),\n companyAgentUpdatedIdx: index(\"agent_task_sessions_company_agent_updated_idx\").on(\n table.companyId,\n table.agentId,\n table.updatedAt,\n ),\n companyTaskUpdatedIdx: index(\"agent_task_sessions_company_task_updated_idx\").on(\n table.companyId,\n table.taskKey,\n table.updatedAt,\n ),\n }),\n);\n", "import {\n type AnyPgColumn,\n pgTable,\n uuid,\n text,\n timestamp,\n index,\n} from \"drizzle-orm/pg-core\";\nimport { agents } from \"./agents.js\";\nimport { companies } from \"./companies.js\";\n\nexport const goals = pgTable(\n \"goals\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n title: text(\"title\").notNull(),\n description: text(\"description\"),\n level: text(\"level\").notNull().default(\"task\"),\n status: text(\"status\").notNull().default(\"planned\"),\n parentId: uuid(\"parent_id\").references((): AnyPgColumn => goals.id),\n ownerAgentId: uuid(\"owner_agent_id\").references(() => agents.id),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIdx: index(\"goals_company_idx\").on(table.companyId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, date, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { goals } from \"./goals.js\";\nimport { agents } from \"./agents.js\";\n\nexport const projects = pgTable(\n \"projects\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n goalId: uuid(\"goal_id\").references(() => goals.id),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n status: text(\"status\").notNull().default(\"backlog\"),\n leadAgentId: uuid(\"lead_agent_id\").references(() => agents.id),\n targetDate: date(\"target_date\"),\n color: text(\"color\"),\n archivedAt: timestamp(\"archived_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIdx: index(\"projects_company_idx\").on(table.companyId),\n }),\n);\n", "import {\n boolean,\n index,\n jsonb,\n pgTable,\n text,\n timestamp,\n uuid,\n} from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { projects } from \"./projects.js\";\n\nexport const projectWorkspaces = pgTable(\n \"project_workspaces\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n projectId: uuid(\"project_id\").notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n cwd: text(\"cwd\"),\n repoUrl: text(\"repo_url\"),\n repoRef: text(\"repo_ref\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>(),\n isPrimary: boolean(\"is_primary\").notNull().default(false),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyProjectIdx: index(\"project_workspaces_company_project_idx\").on(table.companyId, table.projectId),\n projectPrimaryIdx: index(\"project_workspaces_project_primary_idx\").on(table.projectId, table.isPrimary),\n }),\n);\n", "import { pgTable, uuid, timestamp, index, primaryKey } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { projects } from \"./projects.js\";\nimport { goals } from \"./goals.js\";\n\nexport const projectGoals = pgTable(\n \"project_goals\",\n {\n projectId: uuid(\"project_id\").notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n goalId: uuid(\"goal_id\").notNull().references(() => goals.id, { onDelete: \"cascade\" }),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({ columns: [table.projectId, table.goalId] }),\n projectIdx: index(\"project_goals_project_idx\").on(table.projectId),\n goalIdx: index(\"project_goals_goal_idx\").on(table.goalId),\n companyIdx: index(\"project_goals_company_idx\").on(table.companyId),\n }),\n);\n", "import {\n type AnyPgColumn,\n pgTable,\n uuid,\n text,\n timestamp,\n integer,\n jsonb,\n index,\n uniqueIndex,\n} from \"drizzle-orm/pg-core\";\nimport { agents } from \"./agents.js\";\nimport { projects } from \"./projects.js\";\nimport { goals } from \"./goals.js\";\nimport { companies } from \"./companies.js\";\nimport { heartbeatRuns } from \"./heartbeat_runs.js\";\n\nexport const issues = pgTable(\n \"issues\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n projectId: uuid(\"project_id\").references(() => projects.id),\n goalId: uuid(\"goal_id\").references(() => goals.id),\n parentId: uuid(\"parent_id\").references((): AnyPgColumn => issues.id),\n title: text(\"title\").notNull(),\n description: text(\"description\"),\n status: text(\"status\").notNull().default(\"backlog\"),\n priority: text(\"priority\").notNull().default(\"medium\"),\n assigneeAgentId: uuid(\"assignee_agent_id\").references(() => agents.id),\n assigneeUserId: text(\"assignee_user_id\"),\n checkoutRunId: uuid(\"checkout_run_id\").references(() => heartbeatRuns.id, { onDelete: \"set null\" }),\n executionRunId: uuid(\"execution_run_id\").references(() => heartbeatRuns.id, { onDelete: \"set null\" }),\n executionAgentNameKey: text(\"execution_agent_name_key\"),\n executionLockedAt: timestamp(\"execution_locked_at\", { withTimezone: true }),\n createdByAgentId: uuid(\"created_by_agent_id\").references(() => agents.id),\n createdByUserId: text(\"created_by_user_id\"),\n issueNumber: integer(\"issue_number\"),\n identifier: text(\"identifier\"),\n requestDepth: integer(\"request_depth\").notNull().default(0),\n billingCode: text(\"billing_code\"),\n assigneeAdapterOverrides: jsonb(\"assignee_adapter_overrides\").$type<Record<string, unknown>>(),\n startedAt: timestamp(\"started_at\", { withTimezone: true }),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n cancelledAt: timestamp(\"cancelled_at\", { withTimezone: true }),\n hiddenAt: timestamp(\"hidden_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyStatusIdx: index(\"issues_company_status_idx\").on(table.companyId, table.status),\n assigneeStatusIdx: index(\"issues_company_assignee_status_idx\").on(\n table.companyId,\n table.assigneeAgentId,\n table.status,\n ),\n assigneeUserStatusIdx: index(\"issues_company_assignee_user_status_idx\").on(\n table.companyId,\n table.assigneeUserId,\n table.status,\n ),\n parentIdx: index(\"issues_company_parent_idx\").on(table.companyId, table.parentId),\n projectIdx: index(\"issues_company_project_idx\").on(table.companyId, table.projectId),\n identifierIdx: uniqueIndex(\"issues_identifier_idx\").on(table.identifier),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\n\nexport const labels = pgTable(\n \"labels\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n color: text(\"color\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIdx: index(\"labels_company_idx\").on(table.companyId),\n companyNameIdx: uniqueIndex(\"labels_company_name_idx\").on(table.companyId, table.name),\n }),\n);\n", "import { pgTable, uuid, timestamp, index, primaryKey } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { issues } from \"./issues.js\";\nimport { labels } from \"./labels.js\";\n\nexport const issueLabels = pgTable(\n \"issue_labels\",\n {\n issueId: uuid(\"issue_id\").notNull().references(() => issues.id, { onDelete: \"cascade\" }),\n labelId: uuid(\"label_id\").notNull().references(() => labels.id, { onDelete: \"cascade\" }),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id, { onDelete: \"cascade\" }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({ columns: [table.issueId, table.labelId], name: \"issue_labels_pk\" }),\n issueIdx: index(\"issue_labels_issue_idx\").on(table.issueId),\n labelIdx: index(\"issue_labels_label_idx\").on(table.labelId),\n companyIdx: index(\"issue_labels_company_idx\").on(table.companyId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\n\nexport const approvals = pgTable(\n \"approvals\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n type: text(\"type\").notNull(),\n requestedByAgentId: uuid(\"requested_by_agent_id\").references(() => agents.id),\n requestedByUserId: text(\"requested_by_user_id\"),\n status: text(\"status\").notNull().default(\"pending\"),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>().notNull(),\n decisionNote: text(\"decision_note\"),\n decidedByUserId: text(\"decided_by_user_id\"),\n decidedAt: timestamp(\"decided_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyStatusTypeIdx: index(\"approvals_company_status_type_idx\").on(\n table.companyId,\n table.status,\n table.type,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, index, primaryKey } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { issues } from \"./issues.js\";\nimport { approvals } from \"./approvals.js\";\nimport { agents } from \"./agents.js\";\n\nexport const issueApprovals = pgTable(\n \"issue_approvals\",\n {\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n issueId: uuid(\"issue_id\").notNull().references(() => issues.id, { onDelete: \"cascade\" }),\n approvalId: uuid(\"approval_id\").notNull().references(() => approvals.id, { onDelete: \"cascade\" }),\n linkedByAgentId: uuid(\"linked_by_agent_id\").references(() => agents.id, { onDelete: \"set null\" }),\n linkedByUserId: text(\"linked_by_user_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({ columns: [table.issueId, table.approvalId], name: \"issue_approvals_pk\" }),\n issueIdx: index(\"issue_approvals_issue_idx\").on(table.issueId),\n approvalIdx: index(\"issue_approvals_approval_idx\").on(table.approvalId),\n companyIdx: index(\"issue_approvals_company_idx\").on(table.companyId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { issues } from \"./issues.js\";\nimport { agents } from \"./agents.js\";\n\nexport const issueComments = pgTable(\n \"issue_comments\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n issueId: uuid(\"issue_id\").notNull().references(() => issues.id),\n authorAgentId: uuid(\"author_agent_id\").references(() => agents.id),\n authorUserId: text(\"author_user_id\"),\n body: text(\"body\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n issueIdx: index(\"issue_comments_issue_idx\").on(table.issueId),\n companyIdx: index(\"issue_comments_company_idx\").on(table.companyId),\n }),\n);\n", "import { pgTable, uuid, text, integer, timestamp, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\n\nexport const assets = pgTable(\n \"assets\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n provider: text(\"provider\").notNull(),\n objectKey: text(\"object_key\").notNull(),\n contentType: text(\"content_type\").notNull(),\n byteSize: integer(\"byte_size\").notNull(),\n sha256: text(\"sha256\").notNull(),\n originalFilename: text(\"original_filename\"),\n createdByAgentId: uuid(\"created_by_agent_id\").references(() => agents.id),\n createdByUserId: text(\"created_by_user_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyCreatedIdx: index(\"assets_company_created_idx\").on(table.companyId, table.createdAt),\n companyProviderIdx: index(\"assets_company_provider_idx\").on(table.companyId, table.provider),\n companyObjectKeyUq: uniqueIndex(\"assets_company_object_key_uq\").on(table.companyId, table.objectKey),\n }),\n);\n", "import { pgTable, uuid, timestamp, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { issues } from \"./issues.js\";\nimport { assets } from \"./assets.js\";\nimport { issueComments } from \"./issue_comments.js\";\n\nexport const issueAttachments = pgTable(\n \"issue_attachments\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n issueId: uuid(\"issue_id\").notNull().references(() => issues.id, { onDelete: \"cascade\" }),\n assetId: uuid(\"asset_id\").notNull().references(() => assets.id, { onDelete: \"cascade\" }),\n issueCommentId: uuid(\"issue_comment_id\").references(() => issueComments.id, { onDelete: \"set null\" }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIssueIdx: index(\"issue_attachments_company_issue_idx\").on(table.companyId, table.issueId),\n issueCommentIdx: index(\"issue_attachments_issue_comment_idx\").on(table.issueCommentId),\n assetUq: uniqueIndex(\"issue_attachments_asset_uq\").on(table.assetId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, integer, jsonb, index, bigserial } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\nimport { heartbeatRuns } from \"./heartbeat_runs.js\";\n\nexport const heartbeatRunEvents = pgTable(\n \"heartbeat_run_events\",\n {\n id: bigserial(\"id\", { mode: \"number\" }).primaryKey(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n runId: uuid(\"run_id\").notNull().references(() => heartbeatRuns.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n seq: integer(\"seq\").notNull(),\n eventType: text(\"event_type\").notNull(),\n stream: text(\"stream\"),\n level: text(\"level\"),\n color: text(\"color\"),\n message: text(\"message\"),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n runSeqIdx: index(\"heartbeat_run_events_run_seq_idx\").on(table.runId, table.seq),\n companyRunIdx: index(\"heartbeat_run_events_company_run_idx\").on(table.companyId, table.runId),\n companyCreatedIdx: index(\"heartbeat_run_events_company_created_idx\").on(table.companyId, table.createdAt),\n }),\n);\n\n", "import { pgTable, uuid, text, timestamp, integer, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\nimport { issues } from \"./issues.js\";\nimport { projects } from \"./projects.js\";\nimport { goals } from \"./goals.js\";\n\nexport const costEvents = pgTable(\n \"cost_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n agentId: uuid(\"agent_id\").notNull().references(() => agents.id),\n issueId: uuid(\"issue_id\").references(() => issues.id),\n projectId: uuid(\"project_id\").references(() => projects.id),\n goalId: uuid(\"goal_id\").references(() => goals.id),\n billingCode: text(\"billing_code\"),\n provider: text(\"provider\").notNull(),\n model: text(\"model\").notNull(),\n inputTokens: integer(\"input_tokens\").notNull().default(0),\n outputTokens: integer(\"output_tokens\").notNull().default(0),\n costCents: integer(\"cost_cents\").notNull(),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyOccurredIdx: index(\"cost_events_company_occurred_idx\").on(table.companyId, table.occurredAt),\n companyAgentOccurredIdx: index(\"cost_events_company_agent_occurred_idx\").on(\n table.companyId,\n table.agentId,\n table.occurredAt,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { approvals } from \"./approvals.js\";\nimport { agents } from \"./agents.js\";\n\nexport const approvalComments = pgTable(\n \"approval_comments\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n approvalId: uuid(\"approval_id\").notNull().references(() => approvals.id),\n authorAgentId: uuid(\"author_agent_id\").references(() => agents.id),\n authorUserId: text(\"author_user_id\"),\n body: text(\"body\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIdx: index(\"approval_comments_company_idx\").on(table.companyId),\n approvalIdx: index(\"approval_comments_approval_idx\").on(table.approvalId),\n approvalCreatedIdx: index(\"approval_comments_approval_created_idx\").on(\n table.approvalId,\n table.createdAt,\n ),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, jsonb, index } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\nimport { heartbeatRuns } from \"./heartbeat_runs.js\";\n\nexport const activityLog = pgTable(\n \"activity_log\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n actorType: text(\"actor_type\").notNull().default(\"system\"),\n actorId: text(\"actor_id\").notNull(),\n action: text(\"action\").notNull(),\n entityType: text(\"entity_type\").notNull(),\n entityId: text(\"entity_id\").notNull(),\n agentId: uuid(\"agent_id\").references(() => agents.id),\n runId: uuid(\"run_id\").references(() => heartbeatRuns.id),\n details: jsonb(\"details\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyCreatedIdx: index(\"activity_log_company_created_idx\").on(table.companyId, table.createdAt),\n runIdIdx: index(\"activity_log_run_id_idx\").on(table.runId),\n entityIdx: index(\"activity_log_entity_type_id_idx\").on(table.entityType, table.entityId),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, integer, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { companies } from \"./companies.js\";\nimport { agents } from \"./agents.js\";\n\nexport const companySecrets = pgTable(\n \"company_secrets\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n companyId: uuid(\"company_id\").notNull().references(() => companies.id),\n name: text(\"name\").notNull(),\n provider: text(\"provider\").notNull().default(\"local_encrypted\"),\n externalRef: text(\"external_ref\"),\n latestVersion: integer(\"latest_version\").notNull().default(1),\n description: text(\"description\"),\n createdByAgentId: uuid(\"created_by_agent_id\").references(() => agents.id, { onDelete: \"set null\" }),\n createdByUserId: text(\"created_by_user_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n companyIdx: index(\"company_secrets_company_idx\").on(table.companyId),\n companyProviderIdx: index(\"company_secrets_company_provider_idx\").on(table.companyId, table.provider),\n companyNameUq: uniqueIndex(\"company_secrets_company_name_uq\").on(table.companyId, table.name),\n }),\n);\n", "import { pgTable, uuid, text, timestamp, integer, jsonb, index, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { agents } from \"./agents.js\";\nimport { companySecrets } from \"./company_secrets.js\";\n\nexport const companySecretVersions = pgTable(\n \"company_secret_versions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n secretId: uuid(\"secret_id\").notNull().references(() => companySecrets.id, { onDelete: \"cascade\" }),\n version: integer(\"version\").notNull(),\n material: jsonb(\"material\").$type<Record<string, unknown>>().notNull(),\n valueSha256: text(\"value_sha256\").notNull(),\n createdByAgentId: uuid(\"created_by_agent_id\").references(() => agents.id, { onDelete: \"set null\" }),\n createdByUserId: text(\"created_by_user_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n },\n (table) => ({\n secretIdx: index(\"company_secret_versions_secret_idx\").on(table.secretId, table.createdAt),\n valueHashIdx: index(\"company_secret_versions_value_sha256_idx\").on(table.valueSha256),\n secretVersionUq: uniqueIndex(\"company_secret_versions_secret_version_uq\").on(table.secretId, table.version),\n }),\n);\n", "export { companies } from \"./companies.js\";\nexport { authUsers, authSessions, authAccounts, authVerifications } from \"./auth.js\";\nexport { instanceUserRoles } from \"./instance_user_roles.js\";\nexport { agents } from \"./agents.js\";\nexport { companyMemberships } from \"./company_memberships.js\";\nexport { principalPermissionGrants } from \"./principal_permission_grants.js\";\nexport { invites } from \"./invites.js\";\nexport { joinRequests } from \"./join_requests.js\";\nexport { agentConfigRevisions } from \"./agent_config_revisions.js\";\nexport { agentApiKeys } from \"./agent_api_keys.js\";\nexport { agentRuntimeState } from \"./agent_runtime_state.js\";\nexport { agentTaskSessions } from \"./agent_task_sessions.js\";\nexport { agentWakeupRequests } from \"./agent_wakeup_requests.js\";\nexport { projects } from \"./projects.js\";\nexport { projectWorkspaces } from \"./project_workspaces.js\";\nexport { projectGoals } from \"./project_goals.js\";\nexport { goals } from \"./goals.js\";\nexport { issues } from \"./issues.js\";\nexport { labels } from \"./labels.js\";\nexport { issueLabels } from \"./issue_labels.js\";\nexport { issueApprovals } from \"./issue_approvals.js\";\nexport { issueComments } from \"./issue_comments.js\";\nexport { assets } from \"./assets.js\";\nexport { issueAttachments } from \"./issue_attachments.js\";\nexport { heartbeatRuns } from \"./heartbeat_runs.js\";\nexport { heartbeatRunEvents } from \"./heartbeat_run_events.js\";\nexport { costEvents } from \"./cost_events.js\";\nexport { approvals } from \"./approvals.js\";\nexport { approvalComments } from \"./approval_comments.js\";\nexport { activityLog } from \"./activity_log.js\";\nexport { companySecrets } from \"./company_secrets.js\";\nexport { companySecretVersions } from \"./company_secret_versions.js\";\n", "import { createHash } from \"node:crypto\";\nimport { drizzle as drizzlePg } from \"drizzle-orm/postgres-js\";\nimport { migrate as migratePg } from \"drizzle-orm/postgres-js/migrator\";\nimport { readFile, readdir } from \"node:fs/promises\";\nimport postgres from \"postgres\";\nimport * as schema from \"./schema/index.js\";\n\nconst MIGRATIONS_FOLDER = new URL(\"./migrations\", import.meta.url).pathname;\nconst DRIZZLE_MIGRATIONS_TABLE = \"__drizzle_migrations\";\nconst MIGRATIONS_JOURNAL_JSON = new URL(\"./migrations/meta/_journal.json\", import.meta.url).pathname;\n\nfunction isSafeIdentifier(value: string): boolean {\n return /^[A-Za-z_][A-Za-z0-9_]*$/.test(value);\n}\n\nfunction quoteIdentifier(value: string): string {\n if (!isSafeIdentifier(value)) throw new Error(`Unsafe SQL identifier: ${value}`);\n return `\"${value.replaceAll(\"\\\"\", \"\\\"\\\"\")}\"`;\n}\n\nfunction quoteLiteral(value: string): string {\n return `'${value.replaceAll(\"'\", \"''\")}'`;\n}\n\nfunction splitMigrationStatements(content: string): string[] {\n return content\n .split(\"--> statement-breakpoint\")\n .map((statement) => statement.trim())\n .filter((statement) => statement.length > 0);\n}\n\nexport type MigrationState =\n | { status: \"upToDate\"; tableCount: number; availableMigrations: string[]; appliedMigrations: string[] }\n | {\n status: \"needsMigrations\";\n tableCount: number;\n availableMigrations: string[];\n appliedMigrations: string[];\n pendingMigrations: string[];\n reason: \"no-migration-journal-empty-db\" | \"no-migration-journal-non-empty-db\" | \"pending-migrations\";\n };\n\nexport function createDb(url: string) {\n const sql = postgres(url);\n return drizzlePg(sql, { schema });\n}\n\nasync function listMigrationFiles(): Promise<string[]> {\n const entries = await readdir(MIGRATIONS_FOLDER, { withFileTypes: true });\n return entries\n .filter((entry) => entry.isFile() && entry.name.endsWith(\".sql\"))\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n}\n\ntype MigrationJournalFile = {\n entries?: Array<{ idx?: number; tag?: string; when?: number }>;\n};\n\ntype JournalMigrationEntry = {\n fileName: string;\n folderMillis: number;\n order: number;\n};\n\nasync function listJournalMigrationEntries(): Promise<JournalMigrationEntry[]> {\n try {\n const raw = await readFile(MIGRATIONS_JOURNAL_JSON, \"utf8\");\n const parsed = JSON.parse(raw) as MigrationJournalFile;\n if (!Array.isArray(parsed.entries)) return [];\n return parsed.entries\n .map((entry, entryIndex) => {\n if (typeof entry?.tag !== \"string\") return null;\n if (typeof entry?.when !== \"number\" || !Number.isFinite(entry.when)) return null;\n const order = Number.isInteger(entry.idx) ? Number(entry.idx) : entryIndex;\n return { fileName: `${entry.tag}.sql`, folderMillis: entry.when, order };\n })\n .filter((entry): entry is JournalMigrationEntry => entry !== null);\n } catch {\n return [];\n }\n}\n\nasync function listJournalMigrationFiles(): Promise<string[]> {\n const entries = await listJournalMigrationEntries();\n return entries.map((entry) => entry.fileName);\n}\n\nasync function readMigrationFileContent(migrationFile: string): Promise<string> {\n return readFile(new URL(`./migrations/${migrationFile}`, import.meta.url), \"utf8\");\n}\n\nasync function orderMigrationsByJournal(migrationFiles: string[]): Promise<string[]> {\n const journalEntries = await listJournalMigrationEntries();\n const orderByFileName = new Map(journalEntries.map((entry) => [entry.fileName, entry.order]));\n return [...migrationFiles].sort((left, right) => {\n const leftOrder = orderByFileName.get(left);\n const rightOrder = orderByFileName.get(right);\n if (leftOrder === undefined && rightOrder === undefined) return left.localeCompare(right);\n if (leftOrder === undefined) return 1;\n if (rightOrder === undefined) return -1;\n if (leftOrder === rightOrder) return left.localeCompare(right);\n return leftOrder - rightOrder;\n });\n}\n\ntype SqlExecutor = Pick<ReturnType<typeof postgres>, \"unsafe\">;\n\nasync function runInTransaction(sql: SqlExecutor, action: () => Promise<void>): Promise<void> {\n await sql.unsafe(\"BEGIN\");\n try {\n await action();\n await sql.unsafe(\"COMMIT\");\n } catch (error) {\n try {\n await sql.unsafe(\"ROLLBACK\");\n } catch {\n // Ignore rollback failures and surface the original error.\n }\n throw error;\n }\n}\n\nasync function latestMigrationCreatedAt(\n sql: SqlExecutor,\n qualifiedTable: string,\n): Promise<number | null> {\n const rows = await sql.unsafe<{ created_at: string | number | null }[]>(\n `SELECT created_at FROM ${qualifiedTable} ORDER BY created_at DESC NULLS LAST LIMIT 1`,\n );\n const value = Number(rows[0]?.created_at ?? Number.NaN);\n return Number.isFinite(value) ? value : null;\n}\n\nfunction normalizeFolderMillis(value: number | null | undefined): number {\n if (typeof value === \"number\" && Number.isFinite(value) && value >= 0) {\n return Math.trunc(value);\n }\n return Date.now();\n}\n\nasync function ensureMigrationJournalTable(\n sql: ReturnType<typeof postgres>,\n): Promise<{ migrationTableSchema: string; columnNames: Set<string> }> {\n let migrationTableSchema = await discoverMigrationTableSchema(sql);\n if (!migrationTableSchema) {\n const drizzleSchema = quoteIdentifier(\"drizzle\");\n const migrationTable = quoteIdentifier(DRIZZLE_MIGRATIONS_TABLE);\n await sql.unsafe(`CREATE SCHEMA IF NOT EXISTS ${drizzleSchema}`);\n await sql.unsafe(\n `CREATE TABLE IF NOT EXISTS ${drizzleSchema}.${migrationTable} (id SERIAL PRIMARY KEY, hash text NOT NULL, created_at bigint)`,\n );\n migrationTableSchema = (await discoverMigrationTableSchema(sql)) ?? \"drizzle\";\n }\n\n const columnNames = await getMigrationTableColumnNames(sql, migrationTableSchema);\n return { migrationTableSchema, columnNames };\n}\n\nasync function migrationHistoryEntryExists(\n sql: SqlExecutor,\n qualifiedTable: string,\n columnNames: Set<string>,\n migrationFile: string,\n hash: string,\n): Promise<boolean> {\n const predicates: string[] = [];\n if (columnNames.has(\"hash\")) predicates.push(`hash = ${quoteLiteral(hash)}`);\n if (columnNames.has(\"name\")) predicates.push(`name = ${quoteLiteral(migrationFile)}`);\n if (predicates.length === 0) return false;\n\n const rows = await sql.unsafe<{ one: number }[]>(\n `SELECT 1 AS one FROM ${qualifiedTable} WHERE ${predicates.join(\" OR \")} LIMIT 1`,\n );\n return rows.length > 0;\n}\n\nasync function recordMigrationHistoryEntry(\n sql: SqlExecutor,\n qualifiedTable: string,\n columnNames: Set<string>,\n migrationFile: string,\n hash: string,\n folderMillis: number,\n): Promise<void> {\n const insertColumns: string[] = [];\n const insertValues: string[] = [];\n\n if (columnNames.has(\"hash\")) {\n insertColumns.push(quoteIdentifier(\"hash\"));\n insertValues.push(quoteLiteral(hash));\n }\n if (columnNames.has(\"name\")) {\n insertColumns.push(quoteIdentifier(\"name\"));\n insertValues.push(quoteLiteral(migrationFile));\n }\n if (columnNames.has(\"created_at\")) {\n const latestCreatedAt = await latestMigrationCreatedAt(sql, qualifiedTable);\n const createdAt = latestCreatedAt === null\n ? normalizeFolderMillis(folderMillis)\n : Math.max(latestCreatedAt + 1, normalizeFolderMillis(folderMillis));\n insertColumns.push(quoteIdentifier(\"created_at\"));\n insertValues.push(quoteLiteral(String(createdAt)));\n }\n\n if (insertColumns.length === 0) return;\n\n await sql.unsafe(\n `INSERT INTO ${qualifiedTable} (${insertColumns.join(\", \")}) VALUES (${insertValues.join(\", \")})`,\n );\n}\n\nasync function applyPendingMigrationsManually(\n url: string,\n pendingMigrations: string[],\n): Promise<void> {\n if (pendingMigrations.length === 0) return;\n\n const orderedPendingMigrations = await orderMigrationsByJournal(pendingMigrations);\n const journalEntries = await listJournalMigrationEntries();\n const folderMillisByFileName = new Map(\n journalEntries.map((entry) => [entry.fileName, normalizeFolderMillis(entry.folderMillis)]),\n );\n\n const sql = postgres(url, { max: 1 });\n try {\n const { migrationTableSchema, columnNames } = await ensureMigrationJournalTable(sql);\n const qualifiedTable = `${quoteIdentifier(migrationTableSchema)}.${quoteIdentifier(DRIZZLE_MIGRATIONS_TABLE)}`;\n\n for (const migrationFile of orderedPendingMigrations) {\n const migrationContent = await readMigrationFileContent(migrationFile);\n const hash = createHash(\"sha256\").update(migrationContent).digest(\"hex\");\n const existingEntry = await migrationHistoryEntryExists(\n sql,\n qualifiedTable,\n columnNames,\n migrationFile,\n hash,\n );\n if (existingEntry) continue;\n\n await runInTransaction(sql, async () => {\n for (const statement of splitMigrationStatements(migrationContent)) {\n await sql.unsafe(statement);\n }\n\n await recordMigrationHistoryEntry(\n sql,\n qualifiedTable,\n columnNames,\n migrationFile,\n hash,\n folderMillisByFileName.get(migrationFile) ?? Date.now(),\n );\n });\n }\n } finally {\n await sql.end();\n }\n}\n\nasync function mapHashesToMigrationFiles(migrationFiles: string[]): Promise<Map<string, string>> {\n const mapped = new Map<string, string>();\n\n await Promise.all(\n migrationFiles.map(async (migrationFile) => {\n const content = await readMigrationFileContent(migrationFile);\n const hash = createHash(\"sha256\").update(content).digest(\"hex\");\n mapped.set(hash, migrationFile);\n }),\n );\n\n return mapped;\n}\n\nasync function getMigrationTableColumnNames(\n sql: ReturnType<typeof postgres>,\n migrationTableSchema: string,\n): Promise<Set<string>> {\n const columns = await sql.unsafe<{ column_name: string }[]>(\n `\n SELECT column_name\n FROM information_schema.columns\n WHERE table_schema = ${quoteLiteral(migrationTableSchema)}\n AND table_name = ${quoteLiteral(DRIZZLE_MIGRATIONS_TABLE)}\n `,\n );\n return new Set(columns.map((column) => column.column_name));\n}\n\nasync function tableExists(\n sql: ReturnType<typeof postgres>,\n tableName: string,\n): Promise<boolean> {\n const rows = await sql<{ exists: boolean }[]>`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_schema = 'public'\n AND table_name = ${tableName}\n ) AS exists\n `;\n return rows[0]?.exists ?? false;\n}\n\nasync function columnExists(\n sql: ReturnType<typeof postgres>,\n tableName: string,\n columnName: string,\n): Promise<boolean> {\n const rows = await sql<{ exists: boolean }[]>`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = ${tableName}\n AND column_name = ${columnName}\n ) AS exists\n `;\n return rows[0]?.exists ?? false;\n}\n\nasync function indexExists(\n sql: ReturnType<typeof postgres>,\n indexName: string,\n): Promise<boolean> {\n const rows = await sql<{ exists: boolean }[]>`\n SELECT EXISTS (\n SELECT 1\n FROM pg_class c\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE n.nspname = 'public'\n AND c.relkind = 'i'\n AND c.relname = ${indexName}\n ) AS exists\n `;\n return rows[0]?.exists ?? false;\n}\n\nasync function constraintExists(\n sql: ReturnType<typeof postgres>,\n constraintName: string,\n): Promise<boolean> {\n const rows = await sql<{ exists: boolean }[]>`\n SELECT EXISTS (\n SELECT 1\n FROM pg_constraint c\n JOIN pg_namespace n ON n.oid = c.connamespace\n WHERE n.nspname = 'public'\n AND c.conname = ${constraintName}\n ) AS exists\n `;\n return rows[0]?.exists ?? false;\n}\n\nasync function migrationStatementAlreadyApplied(\n sql: ReturnType<typeof postgres>,\n statement: string,\n): Promise<boolean> {\n const normalized = statement.replace(/\\s+/g, \" \").trim();\n\n const createTableMatch = normalized.match(/^CREATE TABLE(?: IF NOT EXISTS)? \"([^\"]+)\"/i);\n if (createTableMatch) {\n return tableExists(sql, createTableMatch[1]);\n }\n\n const addColumnMatch = normalized.match(\n /^ALTER TABLE \"([^\"]+)\" ADD COLUMN(?: IF NOT EXISTS)? \"([^\"]+)\"/i,\n );\n if (addColumnMatch) {\n return columnExists(sql, addColumnMatch[1], addColumnMatch[2]);\n }\n\n const createIndexMatch = normalized.match(/^CREATE (?:UNIQUE )?INDEX(?: IF NOT EXISTS)? \"([^\"]+)\"/i);\n if (createIndexMatch) {\n return indexExists(sql, createIndexMatch[1]);\n }\n\n const addConstraintMatch = normalized.match(/^ALTER TABLE \"([^\"]+)\" ADD CONSTRAINT \"([^\"]+)\"/i);\n if (addConstraintMatch) {\n return constraintExists(sql, addConstraintMatch[2]);\n }\n\n // If we cannot reason about a statement safely, require manual migration.\n return false;\n}\n\nasync function migrationContentAlreadyApplied(\n sql: ReturnType<typeof postgres>,\n migrationContent: string,\n): Promise<boolean> {\n const statements = splitMigrationStatements(migrationContent);\n if (statements.length === 0) return false;\n\n for (const statement of statements) {\n const applied = await migrationStatementAlreadyApplied(sql, statement);\n if (!applied) return false;\n }\n\n return true;\n}\n\nasync function loadAppliedMigrations(\n sql: ReturnType<typeof postgres>,\n migrationTableSchema: string,\n availableMigrations: string[],\n): Promise<string[]> {\n const quotedSchema = quoteIdentifier(migrationTableSchema);\n const qualifiedTable = `${quotedSchema}.${quoteIdentifier(DRIZZLE_MIGRATIONS_TABLE)}`;\n const columnNames = await getMigrationTableColumnNames(sql, migrationTableSchema);\n\n if (columnNames.has(\"name\")) {\n const rows = await sql.unsafe<{ name: string }[]>(`SELECT name FROM ${qualifiedTable} ORDER BY id`);\n return rows.map((row) => row.name).filter((name): name is string => Boolean(name));\n }\n\n if (columnNames.has(\"hash\")) {\n const rows = await sql.unsafe<{ hash: string }[]>(`SELECT hash FROM ${qualifiedTable} ORDER BY id`);\n const hashesToMigrationFiles = await mapHashesToMigrationFiles(availableMigrations);\n const appliedFromHashes = rows\n .map((row) => hashesToMigrationFiles.get(row.hash))\n .filter((name): name is string => Boolean(name));\n\n if (appliedFromHashes.length > 0) {\n // Best-effort: when all hashes resolve, this is authoritative.\n if (appliedFromHashes.length === rows.length) return appliedFromHashes;\n\n // Partial hash resolution can happen when files have changed; return what we can trust.\n return appliedFromHashes;\n }\n\n // Fallback only when hashes are unavailable/unresolved.\n if (columnNames.has(\"created_at\")) {\n const journalEntries = await listJournalMigrationEntries();\n if (journalEntries.length > 0) {\n const lastDbRows = await sql.unsafe<{ created_at: string | number | null }[]>(\n `SELECT created_at FROM ${qualifiedTable} ORDER BY created_at DESC LIMIT 1`,\n );\n const lastCreatedAt = Number(lastDbRows[0]?.created_at ?? -1);\n if (Number.isFinite(lastCreatedAt) && lastCreatedAt >= 0) {\n return journalEntries\n .filter((entry) => availableMigrations.includes(entry.fileName))\n .filter((entry) => entry.folderMillis <= lastCreatedAt)\n .map((entry) => entry.fileName)\n .slice(0, rows.length);\n }\n }\n }\n }\n\n const rows = await sql.unsafe<{ id: number }[]>(`SELECT id FROM ${qualifiedTable} ORDER BY id`);\n const journalMigrationFiles = await listJournalMigrationFiles();\n const appliedFromIds = rows\n .map((row) => journalMigrationFiles[row.id - 1])\n .filter((name): name is string => Boolean(name));\n if (appliedFromIds.length > 0) return appliedFromIds;\n\n return availableMigrations.slice(0, Math.max(0, rows.length));\n}\n\nexport type MigrationHistoryReconcileResult = {\n repairedMigrations: string[];\n remainingMigrations: string[];\n};\n\nexport async function reconcilePendingMigrationHistory(\n url: string,\n): Promise<MigrationHistoryReconcileResult> {\n const state = await inspectMigrations(url);\n if (state.status !== \"needsMigrations\" || state.reason !== \"pending-migrations\") {\n return { repairedMigrations: [], remainingMigrations: [] };\n }\n\n const sql = postgres(url, { max: 1 });\n const repairedMigrations: string[] = [];\n\n try {\n const journalEntries = await listJournalMigrationEntries();\n const folderMillisByFile = new Map(journalEntries.map((entry) => [entry.fileName, entry.folderMillis]));\n const migrationTableSchema = await discoverMigrationTableSchema(sql);\n if (!migrationTableSchema) {\n return { repairedMigrations, remainingMigrations: state.pendingMigrations };\n }\n\n const columnNames = await getMigrationTableColumnNames(sql, migrationTableSchema);\n const qualifiedTable = `${quoteIdentifier(migrationTableSchema)}.${quoteIdentifier(DRIZZLE_MIGRATIONS_TABLE)}`;\n\n for (const migrationFile of state.pendingMigrations) {\n const migrationContent = await readMigrationFileContent(migrationFile);\n const alreadyApplied = await migrationContentAlreadyApplied(sql, migrationContent);\n if (!alreadyApplied) break;\n\n const hash = createHash(\"sha256\").update(migrationContent).digest(\"hex\");\n const folderMillis = folderMillisByFile.get(migrationFile) ?? Date.now();\n const existingByHash = columnNames.has(\"hash\")\n ? await sql.unsafe<{ created_at: string | number | null }[]>(\n `SELECT created_at FROM ${qualifiedTable} WHERE hash = ${quoteLiteral(hash)} ORDER BY created_at DESC LIMIT 1`,\n )\n : [];\n const existingByName = columnNames.has(\"name\")\n ? await sql.unsafe<{ created_at: string | number | null }[]>(\n `SELECT created_at FROM ${qualifiedTable} WHERE name = ${quoteLiteral(migrationFile)} ORDER BY created_at DESC LIMIT 1`,\n )\n : [];\n if (existingByHash.length > 0 || existingByName.length > 0) {\n if (columnNames.has(\"created_at\")) {\n const existingHashCreatedAt = Number(existingByHash[0]?.created_at ?? -1);\n if (existingByHash.length > 0 && Number.isFinite(existingHashCreatedAt) && existingHashCreatedAt < folderMillis) {\n await sql.unsafe(\n `UPDATE ${qualifiedTable} SET created_at = ${quoteLiteral(String(folderMillis))} WHERE hash = ${quoteLiteral(hash)} AND created_at < ${quoteLiteral(String(folderMillis))}`,\n );\n }\n\n const existingNameCreatedAt = Number(existingByName[0]?.created_at ?? -1);\n if (existingByName.length > 0 && Number.isFinite(existingNameCreatedAt) && existingNameCreatedAt < folderMillis) {\n await sql.unsafe(\n `UPDATE ${qualifiedTable} SET created_at = ${quoteLiteral(String(folderMillis))} WHERE name = ${quoteLiteral(migrationFile)} AND created_at < ${quoteLiteral(String(folderMillis))}`,\n );\n }\n }\n\n repairedMigrations.push(migrationFile);\n continue;\n }\n\n const insertColumns: string[] = [];\n const insertValues: string[] = [];\n\n if (columnNames.has(\"hash\")) {\n insertColumns.push(quoteIdentifier(\"hash\"));\n insertValues.push(quoteLiteral(hash));\n }\n if (columnNames.has(\"name\")) {\n insertColumns.push(quoteIdentifier(\"name\"));\n insertValues.push(quoteLiteral(migrationFile));\n }\n if (columnNames.has(\"created_at\")) {\n insertColumns.push(quoteIdentifier(\"created_at\"));\n insertValues.push(quoteLiteral(String(folderMillis)));\n }\n\n if (insertColumns.length === 0) break;\n\n await sql.unsafe(\n `INSERT INTO ${qualifiedTable} (${insertColumns.join(\", \")}) VALUES (${insertValues.join(\", \")})`,\n );\n repairedMigrations.push(migrationFile);\n }\n } finally {\n await sql.end();\n }\n\n const refreshed = await inspectMigrations(url);\n return {\n repairedMigrations,\n remainingMigrations:\n refreshed.status === \"needsMigrations\" ? refreshed.pendingMigrations : [],\n };\n}\n\nasync function discoverMigrationTableSchema(sql: ReturnType<typeof postgres>): Promise<string | null> {\n const rows = await sql<{ schemaName: string }[]>`\n SELECT n.nspname AS \"schemaName\"\n FROM pg_class c\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE c.relname = ${DRIZZLE_MIGRATIONS_TABLE} AND c.relkind = 'r'\n `;\n\n if (rows.length === 0) return null;\n\n const drizzleSchema = rows.find(({ schemaName }) => schemaName === \"drizzle\");\n if (drizzleSchema) return drizzleSchema.schemaName;\n\n const publicSchema = rows.find(({ schemaName }) => schemaName === \"public\");\n if (publicSchema) return publicSchema.schemaName;\n\n return rows[0]?.schemaName ?? null;\n}\n\nexport async function inspectMigrations(url: string): Promise<MigrationState> {\n const sql = postgres(url, { max: 1 });\n\n try {\n const availableMigrations = await listMigrationFiles();\n const tableCountResult = await sql<{ count: number }[]>`\n select count(*)::int as count\n from information_schema.tables\n where table_schema = 'public'\n and table_type = 'BASE TABLE'\n `;\n const tableCount = tableCountResult[0]?.count ?? 0;\n\n const migrationTableSchema = await discoverMigrationTableSchema(sql);\n if (!migrationTableSchema) {\n if (tableCount > 0) {\n return {\n status: \"needsMigrations\",\n tableCount,\n availableMigrations,\n appliedMigrations: [],\n pendingMigrations: availableMigrations,\n reason: \"no-migration-journal-non-empty-db\",\n };\n }\n\n return {\n status: \"needsMigrations\",\n tableCount,\n availableMigrations,\n appliedMigrations: [],\n pendingMigrations: availableMigrations,\n reason: \"no-migration-journal-empty-db\",\n };\n }\n\n const appliedMigrations = await loadAppliedMigrations(sql, migrationTableSchema, availableMigrations);\n const pendingMigrations = availableMigrations.filter((name) => !appliedMigrations.includes(name));\n if (pendingMigrations.length === 0) {\n return {\n status: \"upToDate\",\n tableCount,\n availableMigrations,\n appliedMigrations,\n };\n }\n\n return {\n status: \"needsMigrations\",\n tableCount,\n availableMigrations,\n appliedMigrations,\n pendingMigrations,\n reason: \"pending-migrations\",\n };\n } finally {\n await sql.end();\n }\n}\n\nexport async function applyPendingMigrations(url: string): Promise<void> {\n const initialState = await inspectMigrations(url);\n if (initialState.status === \"upToDate\") return;\n\n const sql = postgres(url, { max: 1 });\n\n try {\n const db = drizzlePg(sql);\n await migratePg(db, { migrationsFolder: MIGRATIONS_FOLDER });\n } finally {\n await sql.end();\n }\n\n let state = await inspectMigrations(url);\n if (state.status === \"upToDate\") return;\n\n const repair = await reconcilePendingMigrationHistory(url);\n if (repair.repairedMigrations.length > 0) {\n state = await inspectMigrations(url);\n if (state.status === \"upToDate\") return;\n }\n\n if (state.status !== \"needsMigrations\" || state.reason !== \"pending-migrations\") {\n throw new Error(\"Migrations are still pending after attempted apply; run inspectMigrations for details.\");\n }\n\n await applyPendingMigrationsManually(url, state.pendingMigrations);\n\n const finalState = await inspectMigrations(url);\n if (finalState.status !== \"upToDate\") {\n throw new Error(\n `Failed to apply pending migrations: ${finalState.pendingMigrations.join(\", \")}`,\n );\n }\n}\n\nexport type MigrationBootstrapResult =\n | { migrated: true; reason: \"migrated-empty-db\"; tableCount: 0 }\n | { migrated: false; reason: \"already-migrated\"; tableCount: number }\n | { migrated: false; reason: \"not-empty-no-migration-journal\"; tableCount: number };\n\nexport async function migratePostgresIfEmpty(url: string): Promise<MigrationBootstrapResult> {\n const sql = postgres(url, { max: 1 });\n\n try {\n const migrationTableSchema = await discoverMigrationTableSchema(sql);\n\n const tableCountResult = await sql<{ count: number }[]>`\n select count(*)::int as count\n from information_schema.tables\n where table_schema = 'public'\n and table_type = 'BASE TABLE'\n `;\n\n const tableCount = tableCountResult[0]?.count ?? 0;\n\n if (migrationTableSchema) {\n return { migrated: false, reason: \"already-migrated\", tableCount };\n }\n\n if (tableCount > 0) {\n return { migrated: false, reason: \"not-empty-no-migration-journal\", tableCount };\n }\n\n const db = drizzlePg(sql);\n const migrationsFolder = new URL(\"./migrations\", import.meta.url).pathname;\n await migratePg(db, { migrationsFolder });\n\n return { migrated: true, reason: \"migrated-empty-db\", tableCount: 0 };\n } finally {\n await sql.end();\n }\n}\n\nexport async function ensurePostgresDatabase(\n url: string,\n databaseName: string,\n): Promise<\"created\" | \"exists\"> {\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(databaseName)) {\n throw new Error(`Unsafe database name: ${databaseName}`);\n }\n\n const sql = postgres(url, { max: 1 });\n try {\n const existing = await sql<{ one: number }[]>`\n select 1 as one from pg_database where datname = ${databaseName} limit 1\n `;\n if (existing.length > 0) return \"exists\";\n\n await sql.unsafe(`create database \"${databaseName}\"`);\n return \"created\";\n } finally {\n await sql.end();\n }\n}\n\nexport type Db = ReturnType<typeof createDb>;\n", "export {\n createDb,\n ensurePostgresDatabase,\n inspectMigrations,\n applyPendingMigrations,\n reconcilePendingMigrationHistory,\n type MigrationState,\n type MigrationHistoryReconcileResult,\n migratePostgresIfEmpty,\n type MigrationBootstrapResult,\n type Db,\n} from \"./client.js\";\nexport * from \"./schema/index.js\";\n", "import { createHash, randomBytes } from \"node:crypto\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { and, eq, gt, isNull } from \"drizzle-orm\";\nimport { createDb, instanceUserRoles, invites } from \"@paperclipai/db\";\nimport { readConfig, resolveConfigPath } from \"../config/store.js\";\n\nfunction hashToken(token: string) {\n return createHash(\"sha256\").update(token).digest(\"hex\");\n}\n\nfunction createInviteToken() {\n return `pcp_bootstrap_${randomBytes(24).toString(\"hex\")}`;\n}\n\nfunction resolveDbUrl(configPath?: string) {\n const config = readConfig(configPath);\n if (process.env.DATABASE_URL) return process.env.DATABASE_URL;\n if (config?.database.mode === \"postgres\" && config.database.connectionString) {\n return config.database.connectionString;\n }\n if (config?.database.mode === \"embedded-postgres\") {\n const port = config.database.embeddedPostgresPort ?? 54329;\n return `postgres://paperclip:paperclip@127.0.0.1:${port}/paperclip`;\n }\n return null;\n}\n\nfunction resolveBaseUrl(configPath?: string, explicitBaseUrl?: string) {\n if (explicitBaseUrl) return explicitBaseUrl.replace(/\\/+$/, \"\");\n const config = readConfig(configPath);\n if (config?.auth.baseUrlMode === \"explicit\" && config.auth.publicBaseUrl) {\n return config.auth.publicBaseUrl.replace(/\\/+$/, \"\");\n }\n const host = config?.server.host ?? \"localhost\";\n const port = config?.server.port ?? 3100;\n const publicHost = host === \"0.0.0.0\" ? \"localhost\" : host;\n return `http://${publicHost}:${port}`;\n}\n\nexport async function bootstrapCeoInvite(opts: {\n config?: string;\n force?: boolean;\n expiresHours?: number;\n baseUrl?: string;\n}) {\n const configPath = resolveConfigPath(opts.config);\n const config = readConfig(configPath);\n if (!config) {\n p.log.error(`No config found at ${configPath}. Run ${pc.cyan(\"paperclip onboard\")} first.`);\n return;\n }\n\n if (config.server.deploymentMode !== \"authenticated\") {\n p.log.info(\"Deployment mode is local_trusted. Bootstrap CEO invite is only required for authenticated mode.\");\n return;\n }\n\n const dbUrl = resolveDbUrl(configPath);\n if (!dbUrl) {\n p.log.error(\n \"Could not resolve database connection for bootstrap.\",\n );\n return;\n }\n\n const db = createDb(dbUrl);\n try {\n const existingAdminCount = await db\n .select()\n .from(instanceUserRoles)\n .where(eq(instanceUserRoles.role, \"instance_admin\"))\n .then((rows) => rows.length);\n\n if (existingAdminCount > 0 && !opts.force) {\n p.log.info(\"Instance already has an admin user. Use --force to generate a new bootstrap invite.\");\n return;\n }\n\n const now = new Date();\n await db\n .update(invites)\n .set({ revokedAt: now, updatedAt: now })\n .where(\n and(\n eq(invites.inviteType, \"bootstrap_ceo\"),\n isNull(invites.revokedAt),\n isNull(invites.acceptedAt),\n gt(invites.expiresAt, now),\n ),\n );\n\n const token = createInviteToken();\n const expiresHours = Math.max(1, Math.min(24 * 30, opts.expiresHours ?? 72));\n const created = await db\n .insert(invites)\n .values({\n inviteType: \"bootstrap_ceo\",\n tokenHash: hashToken(token),\n allowedJoinTypes: \"human\",\n expiresAt: new Date(Date.now() + expiresHours * 60 * 60 * 1000),\n invitedByUserId: \"system\",\n })\n .returning()\n .then((rows) => rows[0]);\n\n const baseUrl = resolveBaseUrl(configPath, opts.baseUrl);\n const inviteUrl = `${baseUrl}/invite/${token}`;\n p.log.success(\"Created bootstrap CEO invite.\");\n p.log.message(`Invite URL: ${pc.cyan(inviteUrl)}`);\n p.log.message(`Expires: ${pc.dim(created.expiresAt.toISOString())}`);\n } catch (err) {\n p.log.error(`Could not create bootstrap invite: ${err instanceof Error ? err.message : String(err)}`);\n p.log.info(\"If using embedded-postgres, start the Paperclip server and run this command again.\");\n }\n}\n", "import pc from \"picocolors\";\n\nconst PAPERCLIP_ART = [\n \"\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \",\n \"\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\",\n \"\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\",\n \"\u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u255D \",\n \"\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \",\n \"\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u255D \",\n] as const;\n\nconst TAGLINE = \"Open-source orchestration for zero-human companies\";\n\nexport function printPaperclipCliBanner(): void {\n const lines = [\n \"\",\n ...PAPERCLIP_ART.map((line) => pc.cyan(line)),\n pc.blue(\" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\"),\n pc.bold(pc.white(` ${TAGLINE}`)),\n \"\",\n ];\n\n console.log(lines.join(\"\\n\"));\n}\n", "import {\n ensureAgentJwtSecret,\n readAgentJwtSecretFromEnv,\n readAgentJwtSecretFromEnvFile,\n resolveAgentJwtEnvFile,\n} from \"../config/env.js\";\nimport type { CheckResult } from \"./index.js\";\n\nexport function agentJwtSecretCheck(configPath?: string): CheckResult {\n if (readAgentJwtSecretFromEnv(configPath)) {\n return {\n name: \"Agent JWT secret\",\n status: \"pass\",\n message: \"PAPERCLIP_AGENT_JWT_SECRET is set in environment\",\n };\n }\n\n const envPath = resolveAgentJwtEnvFile(configPath);\n const fileSecret = readAgentJwtSecretFromEnvFile(envPath);\n\n if (fileSecret) {\n return {\n name: \"Agent JWT secret\",\n status: \"warn\",\n message: `PAPERCLIP_AGENT_JWT_SECRET is present in ${envPath} but not loaded into environment`,\n repairHint: `Set the value from ${envPath} in your shell before starting the Paperclip server`,\n };\n }\n\n return {\n name: \"Agent JWT secret\",\n status: \"fail\",\n message: `PAPERCLIP_AGENT_JWT_SECRET missing from environment and ${envPath}`,\n canRepair: true,\n repair: () => {\n ensureAgentJwtSecret(configPath);\n },\n repairHint: `Run with --repair to create ${envPath} containing PAPERCLIP_AGENT_JWT_SECRET`,\n };\n}\n", "import { readConfig, configExists, resolveConfigPath } from \"../config/store.js\";\nimport type { CheckResult } from \"./index.js\";\n\nexport function configCheck(configPath?: string): CheckResult {\n const filePath = resolveConfigPath(configPath);\n\n if (!configExists(configPath)) {\n return {\n name: \"Config file\",\n status: \"fail\",\n message: `Config file not found at ${filePath}`,\n canRepair: false,\n repairHint: \"Run `paperclipai onboard` to create one\",\n };\n }\n\n try {\n readConfig(configPath);\n return {\n name: \"Config file\",\n status: \"pass\",\n message: `Valid config at ${filePath}`,\n };\n } catch (err) {\n return {\n name: \"Config file\",\n status: \"fail\",\n message: `Invalid config: ${err instanceof Error ? err.message : String(err)}`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section database` (or `paperclipai onboard` to recreate)\",\n };\n }\n}\n", "import type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\n\nfunction isLoopbackHost(host: string) {\n const normalized = host.trim().toLowerCase();\n return normalized === \"127.0.0.1\" || normalized === \"localhost\" || normalized === \"::1\";\n}\n\nexport function deploymentAuthCheck(config: PaperclipConfig): CheckResult {\n const mode = config.server.deploymentMode;\n const exposure = config.server.exposure;\n const auth = config.auth;\n\n if (mode === \"local_trusted\") {\n if (!isLoopbackHost(config.server.host)) {\n return {\n name: \"Deployment/auth mode\",\n status: \"fail\",\n message: `local_trusted requires loopback host binding (found ${config.server.host})`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section server` and set host to 127.0.0.1\",\n };\n }\n return {\n name: \"Deployment/auth mode\",\n status: \"pass\",\n message: \"local_trusted mode is configured for loopback-only access\",\n };\n }\n\n const secret =\n process.env.BETTER_AUTH_SECRET?.trim() ??\n process.env.PAPERCLIP_AGENT_JWT_SECRET?.trim();\n if (!secret) {\n return {\n name: \"Deployment/auth mode\",\n status: \"fail\",\n message: \"authenticated mode requires BETTER_AUTH_SECRET (or PAPERCLIP_AGENT_JWT_SECRET)\",\n canRepair: false,\n repairHint: \"Set BETTER_AUTH_SECRET before starting Paperclip\",\n };\n }\n\n if (auth.baseUrlMode === \"explicit\" && !auth.publicBaseUrl) {\n return {\n name: \"Deployment/auth mode\",\n status: \"fail\",\n message: \"auth.baseUrlMode=explicit requires auth.publicBaseUrl\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section server` and provide a base URL\",\n };\n }\n\n if (exposure === \"public\") {\n if (auth.baseUrlMode !== \"explicit\" || !auth.publicBaseUrl) {\n return {\n name: \"Deployment/auth mode\",\n status: \"fail\",\n message: \"authenticated/public requires explicit auth.publicBaseUrl\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section server` and select public exposure\",\n };\n }\n try {\n const url = new URL(auth.publicBaseUrl);\n if (url.protocol !== \"https:\") {\n return {\n name: \"Deployment/auth mode\",\n status: \"warn\",\n message: \"Public exposure should use an https:// auth.publicBaseUrl\",\n canRepair: false,\n repairHint: \"Use HTTPS in production for secure session cookies\",\n };\n }\n } catch {\n return {\n name: \"Deployment/auth mode\",\n status: \"fail\",\n message: \"auth.publicBaseUrl is not a valid URL\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section server` and provide a valid URL\",\n };\n }\n }\n\n return {\n name: \"Deployment/auth mode\",\n status: \"pass\",\n message: `Mode ${mode}/${exposure} with auth URL mode ${auth.baseUrlMode}`,\n };\n}\n", "export { resolveRuntimeLikePath } from \"../utils/path-resolver.js\";\n", "import fs from \"node:fs\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\nimport { resolveRuntimeLikePath } from \"./path-resolver.js\";\n\nexport async function databaseCheck(config: PaperclipConfig, configPath?: string): Promise<CheckResult> {\n if (config.database.mode === \"postgres\") {\n if (!config.database.connectionString) {\n return {\n name: \"Database\",\n status: \"fail\",\n message: \"PostgreSQL mode selected but no connection string configured\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section database`\",\n };\n }\n\n try {\n const { createDb } = await import(\"@paperclipai/db\");\n const db = createDb(config.database.connectionString);\n await db.execute(\"SELECT 1\");\n return {\n name: \"Database\",\n status: \"pass\",\n message: \"PostgreSQL connection successful\",\n };\n } catch (err) {\n return {\n name: \"Database\",\n status: \"fail\",\n message: `Cannot connect to PostgreSQL: ${err instanceof Error ? err.message : String(err)}`,\n canRepair: false,\n repairHint: \"Check your connection string and ensure PostgreSQL is running\",\n };\n }\n }\n\n if (config.database.mode === \"embedded-postgres\") {\n const dataDir = resolveRuntimeLikePath(config.database.embeddedPostgresDataDir, configPath);\n const reportedPath = dataDir;\n if (!fs.existsSync(dataDir)) {\n return {\n name: \"Database\",\n status: \"warn\",\n message: `Embedded PostgreSQL data directory does not exist: ${reportedPath}`,\n canRepair: true,\n repair: () => {\n fs.mkdirSync(reportedPath, { recursive: true });\n },\n };\n }\n\n return {\n name: \"Database\",\n status: \"pass\",\n message: `Embedded PostgreSQL configured at ${dataDir} (port ${config.database.embeddedPostgresPort})`,\n };\n }\n\n return {\n name: \"Database\",\n status: \"fail\",\n message: `Unknown database mode: ${String(config.database.mode)}`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section database`\",\n };\n}\n", "import type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\n\nexport async function llmCheck(config: PaperclipConfig): Promise<CheckResult> {\n if (!config.llm) {\n return {\n name: \"LLM provider\",\n status: \"warn\",\n message: \"No LLM provider configured\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section llm` to set one up\",\n };\n }\n\n if (!config.llm.apiKey) {\n return {\n name: \"LLM provider\",\n status: \"warn\",\n message: `${config.llm.provider} configured but no API key set`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section llm`\",\n };\n }\n\n try {\n if (config.llm.provider === \"claude\") {\n const res = await fetch(\"https://api.anthropic.com/v1/messages\", {\n method: \"POST\",\n headers: {\n \"x-api-key\": config.llm.apiKey,\n \"anthropic-version\": \"2023-06-01\",\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n model: \"claude-sonnet-4-5-20250929\",\n max_tokens: 1,\n messages: [{ role: \"user\", content: \"hi\" }],\n }),\n });\n if (res.ok || res.status === 400) {\n return { name: \"LLM provider\", status: \"pass\", message: \"Claude API key is valid\" };\n }\n if (res.status === 401) {\n return {\n name: \"LLM provider\",\n status: \"fail\",\n message: \"Claude API key is invalid (401)\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section llm`\",\n };\n }\n return {\n name: \"LLM provider\",\n status: \"warn\",\n message: `Claude API returned status ${res.status}`,\n };\n } else {\n const res = await fetch(\"https://api.openai.com/v1/models\", {\n headers: { Authorization: `Bearer ${config.llm.apiKey}` },\n });\n if (res.ok) {\n return { name: \"LLM provider\", status: \"pass\", message: \"OpenAI API key is valid\" };\n }\n if (res.status === 401) {\n return {\n name: \"LLM provider\",\n status: \"fail\",\n message: \"OpenAI API key is invalid (401)\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section llm`\",\n };\n }\n return {\n name: \"LLM provider\",\n status: \"warn\",\n message: `OpenAI API returned status ${res.status}`,\n };\n }\n } catch {\n return {\n name: \"LLM provider\",\n status: \"warn\",\n message: \"Could not reach API to validate key\",\n };\n }\n}\n", "import fs from \"node:fs\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\nimport { resolveRuntimeLikePath } from \"./path-resolver.js\";\n\nexport function logCheck(config: PaperclipConfig, configPath?: string): CheckResult {\n const logDir = resolveRuntimeLikePath(config.logging.logDir, configPath);\n const reportedDir = logDir;\n\n if (!fs.existsSync(logDir)) {\n return {\n name: \"Log directory\",\n status: \"warn\",\n message: `Log directory does not exist: ${reportedDir}`,\n canRepair: true,\n repair: () => {\n fs.mkdirSync(reportedDir, { recursive: true });\n },\n };\n }\n\n try {\n fs.accessSync(reportedDir, fs.constants.W_OK);\n return {\n name: \"Log directory\",\n status: \"pass\",\n message: `Log directory is writable: ${reportedDir}`,\n };\n } catch {\n return {\n name: \"Log directory\",\n status: \"fail\",\n message: `Log directory is not writable: ${logDir}`,\n canRepair: false,\n repairHint: \"Check file permissions on the log directory\",\n };\n }\n}\n", "import net from \"node:net\";\n\nexport function checkPort(port: number): Promise<{ available: boolean; error?: string }> {\n return new Promise((resolve) => {\n const server = net.createServer();\n server.once(\"error\", (err: NodeJS.ErrnoException) => {\n if (err.code === \"EADDRINUSE\") {\n resolve({ available: false, error: `Port ${port} is already in use` });\n } else {\n resolve({ available: false, error: err.message });\n }\n });\n server.once(\"listening\", () => {\n server.close(() => resolve({ available: true }));\n });\n server.listen(port, \"127.0.0.1\");\n });\n}\n", "import type { PaperclipConfig } from \"../config/schema.js\";\nimport { checkPort } from \"../utils/net.js\";\nimport type { CheckResult } from \"./index.js\";\n\nexport async function portCheck(config: PaperclipConfig): Promise<CheckResult> {\n const port = config.server.port;\n const result = await checkPort(port);\n\n if (result.available) {\n return {\n name: \"Server port\",\n status: \"pass\",\n message: `Port ${port} is available`,\n };\n }\n\n return {\n name: \"Server port\",\n status: \"warn\",\n message: result.error ?? `Port ${port} is not available`,\n canRepair: false,\n repairHint: `Check what's using port ${port} with: lsof -i :${port}`,\n };\n}\n", "import { randomBytes } from \"node:crypto\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\nimport { resolveRuntimeLikePath } from \"./path-resolver.js\";\n\nfunction decodeMasterKey(raw: string): Buffer | null {\n const trimmed = raw.trim();\n if (!trimmed) return null;\n\n if (/^[A-Fa-f0-9]{64}$/.test(trimmed)) {\n return Buffer.from(trimmed, \"hex\");\n }\n\n try {\n const decoded = Buffer.from(trimmed, \"base64\");\n if (decoded.length === 32) return decoded;\n } catch {\n // ignored\n }\n\n if (Buffer.byteLength(trimmed, \"utf8\") === 32) {\n return Buffer.from(trimmed, \"utf8\");\n }\n return null;\n}\n\nfunction withStrictModeNote(\n base: Pick<CheckResult, \"name\" | \"status\" | \"message\" | \"canRepair\" | \"repair\" | \"repairHint\">,\n config: PaperclipConfig,\n): CheckResult {\n const strictModeDisabledInDeployedSetup =\n config.database.mode === \"postgres\" && config.secrets.strictMode === false;\n if (!strictModeDisabledInDeployedSetup) return base;\n\n if (base.status === \"fail\") return base;\n return {\n ...base,\n status: \"warn\",\n message: `${base.message}; strict secret mode is disabled for postgres deployment`,\n repairHint: base.repairHint\n ? `${base.repairHint}. Consider enabling secrets.strictMode`\n : \"Consider enabling secrets.strictMode\",\n };\n}\n\nexport function secretsCheck(config: PaperclipConfig, configPath?: string): CheckResult {\n const provider = config.secrets.provider;\n if (provider !== \"local_encrypted\") {\n return {\n name: \"Secrets adapter\",\n status: \"fail\",\n message: `${provider} is configured, but this build only supports local_encrypted`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section secrets` and set provider to local_encrypted\",\n };\n }\n\n const envMasterKey = process.env.PAPERCLIP_SECRETS_MASTER_KEY;\n if (envMasterKey && envMasterKey.trim().length > 0) {\n if (!decodeMasterKey(envMasterKey)) {\n return {\n name: \"Secrets adapter\",\n status: \"fail\",\n message:\n \"PAPERCLIP_SECRETS_MASTER_KEY is invalid (expected 32-byte base64, 64-char hex, or raw 32-char string)\",\n canRepair: false,\n repairHint: \"Set PAPERCLIP_SECRETS_MASTER_KEY to a valid key or unset it to use a key file\",\n };\n }\n\n return withStrictModeNote(\n {\n name: \"Secrets adapter\",\n status: \"pass\",\n message: \"Local encrypted provider configured via PAPERCLIP_SECRETS_MASTER_KEY\",\n },\n config,\n );\n }\n\n const keyFileOverride = process.env.PAPERCLIP_SECRETS_MASTER_KEY_FILE;\n const configuredPath =\n keyFileOverride && keyFileOverride.trim().length > 0\n ? keyFileOverride.trim()\n : config.secrets.localEncrypted.keyFilePath;\n const keyFilePath = resolveRuntimeLikePath(configuredPath, configPath);\n\n if (!fs.existsSync(keyFilePath)) {\n return withStrictModeNote(\n {\n name: \"Secrets adapter\",\n status: \"warn\",\n message: `Secrets key file does not exist yet: ${keyFilePath}`,\n canRepair: true,\n repair: () => {\n fs.mkdirSync(path.dirname(keyFilePath), { recursive: true });\n fs.writeFileSync(keyFilePath, randomBytes(32).toString(\"base64\"), {\n encoding: \"utf8\",\n mode: 0o600,\n });\n try {\n fs.chmodSync(keyFilePath, 0o600);\n } catch {\n // best effort\n }\n },\n repairHint: \"Run with --repair to create a local encrypted secrets key file\",\n },\n config,\n );\n }\n\n let raw: string;\n try {\n raw = fs.readFileSync(keyFilePath, \"utf8\");\n } catch (err) {\n return {\n name: \"Secrets adapter\",\n status: \"fail\",\n message: `Could not read secrets key file: ${err instanceof Error ? err.message : String(err)}`,\n canRepair: false,\n repairHint: \"Check file permissions or set PAPERCLIP_SECRETS_MASTER_KEY\",\n };\n }\n\n if (!decodeMasterKey(raw)) {\n return {\n name: \"Secrets adapter\",\n status: \"fail\",\n message: `Invalid key material in ${keyFilePath}`,\n canRepair: false,\n repairHint: \"Replace with valid key material or delete it and run doctor --repair\",\n };\n }\n\n return withStrictModeNote(\n {\n name: \"Secrets adapter\",\n status: \"pass\",\n message: `Local encrypted provider configured with key file ${keyFilePath}`,\n },\n config,\n );\n}\n", "import fs from \"node:fs\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport type { CheckResult } from \"./index.js\";\nimport { resolveRuntimeLikePath } from \"./path-resolver.js\";\n\nexport function storageCheck(config: PaperclipConfig, configPath?: string): CheckResult {\n if (config.storage.provider === \"local_disk\") {\n const baseDir = resolveRuntimeLikePath(config.storage.localDisk.baseDir, configPath);\n if (!fs.existsSync(baseDir)) {\n return {\n name: \"Storage\",\n status: \"warn\",\n message: `Local storage directory does not exist: ${baseDir}`,\n canRepair: true,\n repair: () => {\n fs.mkdirSync(baseDir, { recursive: true });\n },\n repairHint: \"Run with --repair to create local storage directory\",\n };\n }\n\n try {\n fs.accessSync(baseDir, fs.constants.W_OK);\n return {\n name: \"Storage\",\n status: \"pass\",\n message: `Local disk storage is writable: ${baseDir}`,\n };\n } catch {\n return {\n name: \"Storage\",\n status: \"fail\",\n message: `Local storage directory is not writable: ${baseDir}`,\n canRepair: false,\n repairHint: \"Check file permissions for storage.localDisk.baseDir\",\n };\n }\n }\n\n const bucket = config.storage.s3.bucket.trim();\n const region = config.storage.s3.region.trim();\n if (!bucket || !region) {\n return {\n name: \"Storage\",\n status: \"fail\",\n message: \"S3 storage requires non-empty bucket and region\",\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section storage`\",\n };\n }\n\n return {\n name: \"Storage\",\n status: \"warn\",\n message: `S3 storage configured (bucket=${bucket}, region=${region}). Reachability check is skipped in doctor.`,\n canRepair: false,\n repairHint: \"Verify credentials and endpoint in deployment environment\",\n };\n}\n\n", "export interface CheckResult {\n name: string;\n status: \"pass\" | \"warn\" | \"fail\";\n message: string;\n canRepair?: boolean;\n repair?: () => void | Promise<void>;\n repairHint?: string;\n}\n\nexport { agentJwtSecretCheck } from \"./agent-jwt-secret-check.js\";\nexport { configCheck } from \"./config-check.js\";\nexport { deploymentAuthCheck } from \"./deployment-auth-check.js\";\nexport { databaseCheck } from \"./database-check.js\";\nexport { llmCheck } from \"./llm-check.js\";\nexport { logCheck } from \"./log-check.js\";\nexport { portCheck } from \"./port-check.js\";\nexport { secretsCheck } from \"./secrets-check.js\";\nexport { storageCheck } from \"./storage-check.js\";\n", "import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport { readConfig, resolveConfigPath } from \"../config/store.js\";\nimport {\n agentJwtSecretCheck,\n configCheck,\n databaseCheck,\n deploymentAuthCheck,\n llmCheck,\n logCheck,\n portCheck,\n secretsCheck,\n storageCheck,\n type CheckResult,\n} from \"../checks/index.js\";\nimport { printPaperclipCliBanner } from \"../utils/banner.js\";\n\nconst STATUS_ICON = {\n pass: pc.green(\"\u2713\"),\n warn: pc.yellow(\"!\"),\n fail: pc.red(\"\u2717\"),\n} as const;\n\nexport async function doctor(opts: {\n config?: string;\n repair?: boolean;\n yes?: boolean;\n}): Promise<{ passed: number; warned: number; failed: number }> {\n printPaperclipCliBanner();\n p.intro(pc.bgCyan(pc.black(\" paperclip doctor \")));\n\n const configPath = resolveConfigPath(opts.config);\n const results: CheckResult[] = [];\n\n // 1. Config check (must pass before others)\n const cfgResult = configCheck(opts.config);\n results.push(cfgResult);\n printResult(cfgResult);\n\n if (cfgResult.status === \"fail\") {\n return printSummary(results);\n }\n\n let config: PaperclipConfig;\n try {\n config = readConfig(opts.config)!;\n } catch (err) {\n const readResult: CheckResult = {\n name: \"Config file\",\n status: \"fail\",\n message: `Could not read config: ${err instanceof Error ? err.message : String(err)}`,\n canRepair: false,\n repairHint: \"Run `paperclipai configure --section database` or `paperclipai onboard`\",\n };\n results.push(readResult);\n printResult(readResult);\n return printSummary(results);\n }\n\n // 2. Deployment/auth mode check\n const deploymentAuthResult = deploymentAuthCheck(config);\n results.push(deploymentAuthResult);\n printResult(deploymentAuthResult);\n\n // 3. Agent JWT check\n const jwtResult = agentJwtSecretCheck(opts.config);\n results.push(jwtResult);\n printResult(jwtResult);\n await maybeRepair(jwtResult, opts);\n\n // 4. Secrets adapter check\n const secretsResult = secretsCheck(config, configPath);\n results.push(secretsResult);\n printResult(secretsResult);\n await maybeRepair(secretsResult, opts);\n\n // 5. Storage check\n const storageResult = storageCheck(config, configPath);\n results.push(storageResult);\n printResult(storageResult);\n await maybeRepair(storageResult, opts);\n\n // 6. Database check\n const dbResult = await databaseCheck(config, configPath);\n results.push(dbResult);\n printResult(dbResult);\n await maybeRepair(dbResult, opts);\n\n // 7. LLM check\n const llmResult = await llmCheck(config);\n results.push(llmResult);\n printResult(llmResult);\n\n // 8. Log directory check\n const logResult = logCheck(config, configPath);\n results.push(logResult);\n printResult(logResult);\n await maybeRepair(logResult, opts);\n\n // 9. Port check\n const portResult = await portCheck(config);\n results.push(portResult);\n printResult(portResult);\n\n // Summary\n return printSummary(results);\n}\n\nfunction printResult(result: CheckResult): void {\n const icon = STATUS_ICON[result.status];\n p.log.message(`${icon} ${pc.bold(result.name)}: ${result.message}`);\n if (result.status !== \"pass\" && result.repairHint) {\n p.log.message(` ${pc.dim(result.repairHint)}`);\n }\n}\n\nasync function maybeRepair(\n result: CheckResult,\n opts: { repair?: boolean; yes?: boolean },\n): Promise<void> {\n if (result.status === \"pass\" || !result.canRepair || !result.repair) return;\n if (!opts.repair) return;\n\n let shouldRepair = opts.yes;\n if (!shouldRepair) {\n const answer = await p.confirm({\n message: `Repair \"${result.name}\"?`,\n initialValue: true,\n });\n if (p.isCancel(answer)) return;\n shouldRepair = answer;\n }\n\n if (shouldRepair) {\n try {\n await result.repair();\n p.log.success(`Repaired: ${result.name}`);\n } catch (err) {\n p.log.error(`Repair failed: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n}\n\nfunction printSummary(results: CheckResult[]): { passed: number; warned: number; failed: number } {\n const passed = results.filter((r) => r.status === \"pass\").length;\n const warned = results.filter((r) => r.status === \"warn\").length;\n const failed = results.filter((r) => r.status === \"fail\").length;\n\n const parts: string[] = [];\n parts.push(pc.green(`${passed} passed`));\n if (warned) parts.push(pc.yellow(`${warned} warnings`));\n if (failed) parts.push(pc.red(`${failed} failed`));\n\n p.note(parts.join(\", \"), \"Summary\");\n\n if (failed > 0) {\n p.outro(pc.red(\"Some checks failed. Fix the issues above and re-run doctor.\"));\n } else if (warned > 0) {\n p.outro(pc.yellow(\"All critical checks passed with some warnings.\"));\n } else {\n p.outro(pc.green(\"All checks passed!\"));\n }\n\n return { passed, warned, failed };\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { onboard } from \"./onboard.js\";\nimport { doctor } from \"./doctor.js\";\nimport { configExists, resolveConfigPath } from \"../config/store.js\";\nimport {\n describeLocalInstancePaths,\n resolvePaperclipHomeDir,\n resolvePaperclipInstanceId,\n} from \"../config/home.js\";\n\ninterface RunOptions {\n config?: string;\n instance?: string;\n repair?: boolean;\n yes?: boolean;\n}\n\nexport async function runCommand(opts: RunOptions): Promise<void> {\n const instanceId = resolvePaperclipInstanceId(opts.instance);\n process.env.PAPERCLIP_INSTANCE_ID = instanceId;\n\n const homeDir = resolvePaperclipHomeDir();\n fs.mkdirSync(homeDir, { recursive: true });\n\n const paths = describeLocalInstancePaths(instanceId);\n fs.mkdirSync(paths.instanceRoot, { recursive: true });\n\n const configPath = resolveConfigPath(opts.config);\n process.env.PAPERCLIP_CONFIG = configPath;\n\n p.intro(pc.bgCyan(pc.black(\" paperclipai run \")));\n p.log.message(pc.dim(`Home: ${paths.homeDir}`));\n p.log.message(pc.dim(`Instance: ${paths.instanceId}`));\n p.log.message(pc.dim(`Config: ${configPath}`));\n\n if (!configExists(configPath)) {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n p.log.error(\"No config found and terminal is non-interactive.\");\n p.log.message(`Run ${pc.cyan(\"paperclipai onboard\")} once, then retry ${pc.cyan(\"paperclipai run\")}.`);\n process.exit(1);\n }\n\n p.log.step(\"No config found. Starting onboarding...\");\n await onboard({ config: configPath, invokedByRun: true });\n }\n\n p.log.step(\"Running doctor checks...\");\n const summary = await doctor({\n config: configPath,\n repair: opts.repair ?? true,\n yes: opts.yes ?? true,\n });\n\n if (summary.failed > 0) {\n p.log.error(\"Doctor found blocking issues. Not starting server.\");\n process.exit(1);\n }\n\n p.log.step(\"Starting Paperclip server...\");\n await importServerEntry();\n}\n\nfunction formatError(err: unknown): string {\n if (err instanceof Error) {\n if (err.message && err.message.trim().length > 0) return err.message;\n return err.name;\n }\n if (typeof err === \"string\") return err;\n try {\n return JSON.stringify(err);\n } catch {\n return String(err);\n }\n}\n\nfunction isModuleNotFoundError(err: unknown): boolean {\n if (!(err instanceof Error)) return false;\n const code = (err as { code?: unknown }).code;\n if (code === \"ERR_MODULE_NOT_FOUND\") return true;\n return err.message.includes(\"Cannot find module\");\n}\n\nfunction maybeEnableUiDevMiddleware(entrypoint: string): void {\n if (process.env.PAPERCLIP_UI_DEV_MIDDLEWARE !== undefined) return;\n const normalized = entrypoint.replaceAll(\"\\\\\", \"/\");\n if (normalized.endsWith(\"/server/src/index.ts\") || normalized.endsWith(\"@paperclipai/server/src/index.ts\")) {\n process.env.PAPERCLIP_UI_DEV_MIDDLEWARE = \"true\";\n }\n}\n\nasync function importServerEntry(): Promise<void> {\n // Dev mode: try local workspace path (monorepo with tsx)\n const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"../../..\");\n const devEntry = path.resolve(projectRoot, \"server/src/index.ts\");\n if (fs.existsSync(devEntry)) {\n maybeEnableUiDevMiddleware(devEntry);\n await import(pathToFileURL(devEntry).href);\n return;\n }\n\n // Production mode: import the published @paperclipai/server package\n try {\n await import(\"@paperclipai/server\");\n } catch (err) {\n if (isModuleNotFoundError(err)) {\n throw new Error(\n `Could not locate a Paperclip server entrypoint.\\n` +\n `Tried: ${devEntry}, @paperclipai/server\\n` +\n `${formatError(err)}`,\n );\n }\n throw new Error(\n `Paperclip server failed to start.\\n` +\n `${formatError(err)}`,\n );\n }\n}\n", "import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { configExists, readConfig, resolveConfigPath, writeConfig } from \"../config/store.js\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport { ensureAgentJwtSecret, resolveAgentJwtEnvFile } from \"../config/env.js\";\nimport { ensureLocalSecretsKeyFile } from \"../config/secrets-key.js\";\nimport { promptDatabase } from \"../prompts/database.js\";\nimport { promptLlm } from \"../prompts/llm.js\";\nimport { promptLogging } from \"../prompts/logging.js\";\nimport { defaultSecretsConfig } from \"../prompts/secrets.js\";\nimport { defaultStorageConfig, promptStorage } from \"../prompts/storage.js\";\nimport { promptServer } from \"../prompts/server.js\";\nimport {\n describeLocalInstancePaths,\n resolveDefaultEmbeddedPostgresDir,\n resolveDefaultLogsDir,\n resolvePaperclipInstanceId,\n} from \"../config/home.js\";\nimport { bootstrapCeoInvite } from \"./auth-bootstrap-ceo.js\";\nimport { printPaperclipCliBanner } from \"../utils/banner.js\";\n\ntype SetupMode = \"quickstart\" | \"advanced\";\n\ntype OnboardOptions = {\n config?: string;\n run?: boolean;\n yes?: boolean;\n invokedByRun?: boolean;\n};\n\nfunction quickstartDefaults(): Pick<PaperclipConfig, \"database\" | \"logging\" | \"server\" | \"auth\" | \"storage\" | \"secrets\"> {\n const instanceId = resolvePaperclipInstanceId();\n return {\n database: {\n mode: \"embedded-postgres\",\n embeddedPostgresDataDir: resolveDefaultEmbeddedPostgresDir(instanceId),\n embeddedPostgresPort: 54329,\n },\n logging: {\n mode: \"file\",\n logDir: resolveDefaultLogsDir(instanceId),\n },\n server: {\n deploymentMode: \"local_trusted\",\n exposure: \"private\",\n host: \"127.0.0.1\",\n port: 3100,\n allowedHostnames: [],\n serveUi: true,\n },\n auth: {\n baseUrlMode: \"auto\",\n },\n storage: defaultStorageConfig(),\n secrets: defaultSecretsConfig(),\n };\n}\n\nexport async function onboard(opts: OnboardOptions): Promise<void> {\n printPaperclipCliBanner();\n p.intro(pc.bgCyan(pc.black(\" paperclipai onboard \")));\n const configPath = resolveConfigPath(opts.config);\n const instance = describeLocalInstancePaths(resolvePaperclipInstanceId());\n p.log.message(\n pc.dim(\n `Local home: ${instance.homeDir} | instance: ${instance.instanceId} | config: ${configPath}`,\n ),\n );\n\n if (configExists(opts.config)) {\n p.log.message(pc.dim(`${configPath} exists, updating config`));\n\n try {\n readConfig(opts.config);\n } catch (err) {\n p.log.message(\n pc.yellow(\n `Existing config appears invalid and will be updated.\\n${err instanceof Error ? err.message : String(err)}`,\n ),\n );\n }\n }\n\n let setupMode: SetupMode = \"quickstart\";\n if (opts.yes) {\n p.log.message(pc.dim(\"`--yes` enabled: using Quickstart defaults.\"));\n } else {\n const setupModeChoice = await p.select({\n message: \"Choose setup path\",\n options: [\n {\n value: \"quickstart\" as const,\n label: \"Quickstart\",\n hint: \"Recommended: local defaults + ready to run\",\n },\n {\n value: \"advanced\" as const,\n label: \"Advanced setup\",\n hint: \"Customize database, server, storage, and more\",\n },\n ],\n initialValue: \"quickstart\",\n });\n if (p.isCancel(setupModeChoice)) {\n p.cancel(\"Setup cancelled.\");\n return;\n }\n setupMode = setupModeChoice as SetupMode;\n }\n\n let llm: PaperclipConfig[\"llm\"] | undefined;\n let {\n database,\n logging,\n server,\n auth,\n storage,\n secrets,\n } = quickstartDefaults();\n\n if (setupMode === \"advanced\") {\n p.log.step(pc.bold(\"Database\"));\n database = await promptDatabase();\n\n if (database.mode === \"postgres\" && database.connectionString) {\n const s = p.spinner();\n s.start(\"Testing database connection...\");\n try {\n const { createDb } = await import(\"@paperclipai/db\");\n const db = createDb(database.connectionString);\n await db.execute(\"SELECT 1\");\n s.stop(\"Database connection successful\");\n } catch {\n s.stop(pc.yellow(\"Could not connect to database \u2014 you can fix this later with `paperclipai doctor`\"));\n }\n }\n\n p.log.step(pc.bold(\"LLM Provider\"));\n llm = await promptLlm();\n\n if (llm?.apiKey) {\n const s = p.spinner();\n s.start(\"Validating API key...\");\n try {\n if (llm.provider === \"claude\") {\n const res = await fetch(\"https://api.anthropic.com/v1/messages\", {\n method: \"POST\",\n headers: {\n \"x-api-key\": llm.apiKey,\n \"anthropic-version\": \"2023-06-01\",\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n model: \"claude-sonnet-4-5-20250929\",\n max_tokens: 1,\n messages: [{ role: \"user\", content: \"hi\" }],\n }),\n });\n if (res.ok || res.status === 400) {\n s.stop(\"API key is valid\");\n } else if (res.status === 401) {\n s.stop(pc.yellow(\"API key appears invalid \u2014 you can update it later\"));\n } else {\n s.stop(pc.yellow(\"Could not validate API key \u2014 continuing anyway\"));\n }\n } else {\n const res = await fetch(\"https://api.openai.com/v1/models\", {\n headers: { Authorization: `Bearer ${llm.apiKey}` },\n });\n if (res.ok) {\n s.stop(\"API key is valid\");\n } else if (res.status === 401) {\n s.stop(pc.yellow(\"API key appears invalid \u2014 you can update it later\"));\n } else {\n s.stop(pc.yellow(\"Could not validate API key \u2014 continuing anyway\"));\n }\n }\n } catch {\n s.stop(pc.yellow(\"Could not reach API \u2014 continuing anyway\"));\n }\n }\n\n p.log.step(pc.bold(\"Logging\"));\n logging = await promptLogging();\n\n p.log.step(pc.bold(\"Server\"));\n ({ server, auth } = await promptServer());\n\n p.log.step(pc.bold(\"Storage\"));\n storage = await promptStorage(defaultStorageConfig());\n\n p.log.step(pc.bold(\"Secrets\"));\n secrets = defaultSecretsConfig();\n p.log.message(\n pc.dim(\n `Using defaults: provider=${secrets.provider}, strictMode=${secrets.strictMode}, keyFile=${secrets.localEncrypted.keyFilePath}`,\n ),\n );\n } else {\n p.log.step(pc.bold(\"Quickstart\"));\n p.log.message(\n pc.dim(\"Using local defaults: embedded database, no LLM provider, file storage, and local encrypted secrets.\"),\n );\n }\n\n const jwtSecret = ensureAgentJwtSecret(configPath);\n const envFilePath = resolveAgentJwtEnvFile(configPath);\n if (jwtSecret.created) {\n p.log.success(`Created ${pc.cyan(\"PAPERCLIP_AGENT_JWT_SECRET\")} in ${pc.dim(envFilePath)}`);\n } else if (process.env.PAPERCLIP_AGENT_JWT_SECRET?.trim()) {\n p.log.info(`Using existing ${pc.cyan(\"PAPERCLIP_AGENT_JWT_SECRET\")} from environment`);\n } else {\n p.log.info(`Using existing ${pc.cyan(\"PAPERCLIP_AGENT_JWT_SECRET\")} in ${pc.dim(envFilePath)}`);\n }\n\n const config: PaperclipConfig = {\n $meta: {\n version: 1,\n updatedAt: new Date().toISOString(),\n source: \"onboard\",\n },\n ...(llm && { llm }),\n database,\n logging,\n server,\n auth,\n storage,\n secrets,\n };\n\n const keyResult = ensureLocalSecretsKeyFile(config, configPath);\n if (keyResult.status === \"created\") {\n p.log.success(`Created local secrets key file at ${pc.dim(keyResult.path)}`);\n } else if (keyResult.status === \"existing\") {\n p.log.message(pc.dim(`Using existing local secrets key file at ${keyResult.path}`));\n }\n\n writeConfig(config, opts.config);\n\n p.note(\n [\n `Database: ${database.mode}`,\n llm ? `LLM: ${llm.provider}` : \"LLM: not configured\",\n `Logging: ${logging.mode} -> ${logging.logDir}`,\n `Server: ${server.deploymentMode}/${server.exposure} @ ${server.host}:${server.port}`,\n `Allowed hosts: ${server.allowedHostnames.length > 0 ? server.allowedHostnames.join(\", \") : \"(loopback only)\"}`,\n `Auth URL mode: ${auth.baseUrlMode}${auth.publicBaseUrl ? ` (${auth.publicBaseUrl})` : \"\"}`,\n `Storage: ${storage.provider}`,\n `Secrets: ${secrets.provider} (strict mode ${secrets.strictMode ? \"on\" : \"off\"})`,\n \"Agent auth: PAPERCLIP_AGENT_JWT_SECRET configured\",\n ].join(\"\\n\"),\n \"Configuration saved\",\n );\n\n p.note(\n [\n `Run: ${pc.cyan(\"paperclipai run\")}`,\n `Reconfigure later: ${pc.cyan(\"paperclipai configure\")}`,\n `Diagnose setup: ${pc.cyan(\"paperclipai doctor\")}`,\n ].join(\"\\n\"),\n \"Next commands\",\n );\n\n if (server.deploymentMode === \"authenticated\") {\n p.log.step(\"Generating bootstrap CEO invite\");\n await bootstrapCeoInvite({ config: configPath });\n }\n\n let shouldRunNow = opts.run === true || opts.yes === true;\n if (!shouldRunNow && !opts.invokedByRun && process.stdin.isTTY && process.stdout.isTTY) {\n const answer = await p.confirm({\n message: \"Start Paperclip now?\",\n initialValue: true,\n });\n if (!p.isCancel(answer)) {\n shouldRunNow = answer;\n }\n }\n\n if (shouldRunNow && !opts.invokedByRun) {\n process.env.PAPERCLIP_OPEN_ON_LISTEN = \"true\";\n const { runCommand } = await import(\"./run.js\");\n await runCommand({ config: configPath, repair: true, yes: true });\n return;\n }\n\n p.outro(\"You're all set!\");\n}\n", "import { Command } from \"commander\";\nimport { onboard } from \"./commands/onboard.js\";\nimport { doctor } from \"./commands/doctor.js\";\nimport { envCommand } from \"./commands/env.js\";\nimport { configure } from \"./commands/configure.js\";\nimport { addAllowedHostname } from \"./commands/allowed-hostname.js\";\nimport { heartbeatRun } from \"./commands/heartbeat-run.js\";\nimport { runCommand } from \"./commands/run.js\";\nimport { bootstrapCeoInvite } from \"./commands/auth-bootstrap-ceo.js\";\nimport { registerContextCommands } from \"./commands/client/context.js\";\nimport { registerCompanyCommands } from \"./commands/client/company.js\";\nimport { registerIssueCommands } from \"./commands/client/issue.js\";\nimport { registerAgentCommands } from \"./commands/client/agent.js\";\nimport { registerApprovalCommands } from \"./commands/client/approval.js\";\nimport { registerActivityCommands } from \"./commands/client/activity.js\";\nimport { registerDashboardCommands } from \"./commands/client/dashboard.js\";\nimport { applyDataDirOverride, type DataDirOptionLike } from \"./config/data-dir.js\";\n\nconst program = new Command();\nconst DATA_DIR_OPTION_HELP =\n \"Paperclip data directory root (isolates state from ~/.paperclip)\";\n\nprogram\n .name(\"paperclipai\")\n .description(\"Paperclip CLI \u2014 setup, diagnose, and configure your instance\")\n .version(\"0.2.4\");\n\nprogram.hook(\"preAction\", (_thisCommand, actionCommand) => {\n const options = actionCommand.optsWithGlobals() as DataDirOptionLike;\n const optionNames = new Set(actionCommand.options.map((option) => option.attributeName()));\n applyDataDirOverride(options, {\n hasConfigOption: optionNames.has(\"config\"),\n hasContextOption: optionNames.has(\"context\"),\n });\n});\n\nprogram\n .command(\"onboard\")\n .description(\"Interactive first-run setup wizard\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"-y, --yes\", \"Accept defaults (quickstart + start immediately)\", false)\n .option(\"--run\", \"Start Paperclip immediately after saving config\", false)\n .action(onboard);\n\nprogram\n .command(\"doctor\")\n .description(\"Run diagnostic checks on your Paperclip setup\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"--repair\", \"Attempt to repair issues automatically\")\n .alias(\"--fix\")\n .option(\"-y, --yes\", \"Skip repair confirmation prompts\")\n .action(async (opts) => {\n await doctor(opts);\n });\n\nprogram\n .command(\"env\")\n .description(\"Print environment variables for deployment\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .action(envCommand);\n\nprogram\n .command(\"configure\")\n .description(\"Update configuration sections\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"-s, --section <section>\", \"Section to configure (llm, database, logging, server, storage, secrets)\")\n .action(configure);\n\nprogram\n .command(\"allowed-hostname\")\n .description(\"Allow a hostname for authenticated/private mode access\")\n .argument(\"<host>\", \"Hostname to allow (for example dotta-macbook-pro)\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .action(addAllowedHostname);\n\nprogram\n .command(\"run\")\n .description(\"Bootstrap local setup (onboard + doctor) and run Paperclip\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"-i, --instance <id>\", \"Local instance id (default: default)\")\n .option(\"--repair\", \"Attempt automatic repairs during doctor\", true)\n .option(\"--no-repair\", \"Disable automatic repairs during doctor\")\n .action(runCommand);\n\nconst heartbeat = program.command(\"heartbeat\").description(\"Heartbeat utilities\");\n\nheartbeat\n .command(\"run\")\n .description(\"Run one agent heartbeat and stream live logs\")\n .requiredOption(\"-a, --agent-id <agentId>\", \"Agent ID to invoke\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"--context <path>\", \"Path to CLI context file\")\n .option(\"--profile <name>\", \"CLI context profile name\")\n .option(\"--api-base <url>\", \"Base URL for the Paperclip server API\")\n .option(\"--api-key <token>\", \"Bearer token for agent-authenticated calls\")\n .option(\n \"--source <source>\",\n \"Invocation source (timer | assignment | on_demand | automation)\",\n \"on_demand\",\n )\n .option(\"--trigger <trigger>\", \"Trigger detail (manual | ping | callback | system)\", \"manual\")\n .option(\"--timeout-ms <ms>\", \"Max time to wait before giving up\", \"0\")\n .option(\"--json\", \"Output raw JSON where applicable\")\n .option(\"--debug\", \"Show raw adapter stdout/stderr JSON chunks\")\n .action(heartbeatRun);\n\nregisterContextCommands(program);\nregisterCompanyCommands(program);\nregisterIssueCommands(program);\nregisterAgentCommands(program);\nregisterApprovalCommands(program);\nregisterActivityCommands(program);\nregisterDashboardCommands(program);\n\nconst auth = program.command(\"auth\").description(\"Authentication and bootstrap utilities\");\n\nauth\n .command(\"bootstrap-ceo\")\n .description(\"Create a one-time bootstrap invite URL for first instance admin\")\n .option(\"-c, --config <path>\", \"Path to config file\")\n .option(\"-d, --data-dir <path>\", DATA_DIR_OPTION_HELP)\n .option(\"--force\", \"Create new invite even if admin already exists\", false)\n .option(\"--expires-hours <hours>\", \"Invite expiration window in hours\", (value) => Number(value))\n .option(\"--base-url <url>\", \"Public base URL used to print invite link\")\n .action(bootstrapCeoInvite);\n\nprogram.parseAsync().catch((err) => {\n console.error(err instanceof Error ? err.message : String(err));\n process.exit(1);\n});\n", "import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport { configExists, readConfig, resolveConfigPath } from \"../config/store.js\";\nimport {\n readAgentJwtSecretFromEnv,\n readAgentJwtSecretFromEnvFile,\n resolveAgentJwtEnvFile,\n} from \"../config/env.js\";\nimport {\n resolveDefaultSecretsKeyFilePath,\n resolveDefaultStorageDir,\n resolvePaperclipInstanceId,\n} from \"../config/home.js\";\n\ntype EnvSource = \"env\" | \"config\" | \"file\" | \"default\" | \"missing\";\n\ntype EnvVarRow = {\n key: string;\n value: string;\n source: EnvSource;\n required: boolean;\n note: string;\n};\n\nconst DEFAULT_AGENT_JWT_TTL_SECONDS = \"172800\";\nconst DEFAULT_AGENT_JWT_ISSUER = \"paperclip\";\nconst DEFAULT_AGENT_JWT_AUDIENCE = \"paperclip-api\";\nconst DEFAULT_HEARTBEAT_SCHEDULER_INTERVAL_MS = \"30000\";\nconst DEFAULT_SECRETS_PROVIDER = \"local_encrypted\";\nconst DEFAULT_STORAGE_PROVIDER = \"local_disk\";\nfunction defaultSecretsKeyFilePath(): string {\n return resolveDefaultSecretsKeyFilePath(resolvePaperclipInstanceId());\n}\nfunction defaultStorageBaseDir(): string {\n return resolveDefaultStorageDir(resolvePaperclipInstanceId());\n}\n\nexport async function envCommand(opts: { config?: string }): Promise<void> {\n p.intro(pc.bgCyan(pc.black(\" paperclip env \")));\n\n const configPath = resolveConfigPath(opts.config);\n let config: PaperclipConfig | null = null;\n let configReadError: string | null = null;\n\n if (configExists(opts.config)) {\n p.log.message(pc.dim(`Config file: ${configPath}`));\n try {\n config = readConfig(opts.config);\n } catch (err) {\n configReadError = err instanceof Error ? err.message : String(err);\n p.log.message(pc.yellow(`Could not parse config: ${configReadError}`));\n }\n } else {\n p.log.message(pc.dim(`Config file missing: ${configPath}`));\n }\n\n const rows = collectDeploymentEnvRows(config, configPath);\n const missingRequired = rows.filter((row) => row.required && row.source === \"missing\");\n const sortedRows = rows.sort((a, b) => Number(b.required) - Number(a.required) || a.key.localeCompare(b.key));\n\n const requiredRows = sortedRows.filter((row) => row.required);\n const optionalRows = sortedRows.filter((row) => !row.required);\n\n const formatSection = (title: string, entries: EnvVarRow[]) => {\n if (entries.length === 0) return;\n\n p.log.message(pc.bold(title));\n for (const entry of entries) {\n const status = entry.source === \"missing\" ? pc.red(\"missing\") : entry.source === \"default\" ? pc.yellow(\"default\") : pc.green(\"set\");\n const sourceNote = {\n env: \"environment\",\n config: \"config\",\n file: \"file\",\n default: \"default\",\n missing: \"missing\",\n }[entry.source];\n p.log.message(\n `${pc.cyan(entry.key)} ${status.padEnd(7)} ${pc.dim(`[${sourceNote}] ${entry.note}`)}${entry.source === \"missing\" ? \"\" : ` ${pc.dim(\"=>\")} ${pc.white(quoteShellValue(entry.value))}`}`,\n );\n }\n };\n\n formatSection(\"Required environment variables\", requiredRows);\n formatSection(\"Optional environment variables\", optionalRows);\n\n const exportRows = rows.map((row) => (row.source === \"missing\" ? { ...row, value: \"<set-this-value>\" } : row));\n const uniqueRows = uniqueByKey(exportRows);\n const exportBlock = uniqueRows.map((row) => `export ${row.key}=${quoteShellValue(row.value)}`).join(\"\\n\");\n\n if (configReadError) {\n p.log.error(`Could not load config cleanly: ${configReadError}`);\n }\n\n p.note(\n exportBlock || \"No values detected. Set required variables manually.\",\n \"Deployment export block\",\n );\n\n if (missingRequired.length > 0) {\n p.log.message(\n pc.yellow(\n `Missing required values: ${missingRequired.map((row) => row.key).join(\", \")}. Set these before deployment.`,\n ),\n );\n } else {\n p.log.message(pc.green(\"All required deployment variables are present.\"));\n }\n p.outro(\"Done\");\n}\n\nfunction collectDeploymentEnvRows(config: PaperclipConfig | null, configPath: string): EnvVarRow[] {\n const agentJwtEnvFile = resolveAgentJwtEnvFile(configPath);\n const jwtEnv = readAgentJwtSecretFromEnv(configPath);\n const jwtFile = jwtEnv ? null : readAgentJwtSecretFromEnvFile(agentJwtEnvFile);\n const jwtSource = jwtEnv ? \"env\" : jwtFile ? \"file\" : \"missing\";\n\n const dbUrl = process.env.DATABASE_URL ?? config?.database?.connectionString ?? \"\";\n const databaseMode = config?.database?.mode ?? \"embedded-postgres\";\n const dbUrlSource: EnvSource = process.env.DATABASE_URL ? \"env\" : config?.database?.connectionString ? \"config\" : \"missing\";\n\n const heartbeatInterval = process.env.HEARTBEAT_SCHEDULER_INTERVAL_MS ?? DEFAULT_HEARTBEAT_SCHEDULER_INTERVAL_MS;\n const heartbeatEnabled = process.env.HEARTBEAT_SCHEDULER_ENABLED ?? \"true\";\n const secretsProvider =\n process.env.PAPERCLIP_SECRETS_PROVIDER ??\n config?.secrets?.provider ??\n DEFAULT_SECRETS_PROVIDER;\n const secretsStrictMode =\n process.env.PAPERCLIP_SECRETS_STRICT_MODE ??\n String(config?.secrets?.strictMode ?? false);\n const secretsKeyFilePath =\n process.env.PAPERCLIP_SECRETS_MASTER_KEY_FILE ??\n config?.secrets?.localEncrypted?.keyFilePath ??\n defaultSecretsKeyFilePath();\n const storageProvider =\n process.env.PAPERCLIP_STORAGE_PROVIDER ??\n config?.storage?.provider ??\n DEFAULT_STORAGE_PROVIDER;\n const storageLocalDir =\n process.env.PAPERCLIP_STORAGE_LOCAL_DIR ??\n config?.storage?.localDisk?.baseDir ??\n defaultStorageBaseDir();\n const storageS3Bucket =\n process.env.PAPERCLIP_STORAGE_S3_BUCKET ??\n config?.storage?.s3?.bucket ??\n \"paperclip\";\n const storageS3Region =\n process.env.PAPERCLIP_STORAGE_S3_REGION ??\n config?.storage?.s3?.region ??\n \"us-east-1\";\n const storageS3Endpoint =\n process.env.PAPERCLIP_STORAGE_S3_ENDPOINT ??\n config?.storage?.s3?.endpoint ??\n \"\";\n const storageS3Prefix =\n process.env.PAPERCLIP_STORAGE_S3_PREFIX ??\n config?.storage?.s3?.prefix ??\n \"\";\n const storageS3ForcePathStyle =\n process.env.PAPERCLIP_STORAGE_S3_FORCE_PATH_STYLE ??\n String(config?.storage?.s3?.forcePathStyle ?? false);\n\n const rows: EnvVarRow[] = [\n {\n key: \"PAPERCLIP_AGENT_JWT_SECRET\",\n value: jwtEnv ?? jwtFile ?? \"\",\n source: jwtSource,\n required: true,\n note:\n jwtSource === \"missing\"\n ? \"Generate during onboard or set manually (required for local adapter authentication)\"\n : jwtSource === \"env\"\n ? \"Set in process environment\"\n : `Set in ${agentJwtEnvFile}`,\n },\n {\n key: \"DATABASE_URL\",\n value: dbUrl,\n source: dbUrlSource,\n required: true,\n note:\n databaseMode === \"postgres\"\n ? \"Configured for postgres mode (required)\"\n : \"Required for live deployment with managed PostgreSQL\",\n },\n {\n key: \"PORT\",\n value:\n process.env.PORT ??\n (config?.server?.port !== undefined ? String(config.server.port) : \"3100\"),\n source: process.env.PORT ? \"env\" : config?.server?.port !== undefined ? \"config\" : \"default\",\n required: false,\n note: \"HTTP listen port\",\n },\n {\n key: \"PAPERCLIP_AGENT_JWT_TTL_SECONDS\",\n value: process.env.PAPERCLIP_AGENT_JWT_TTL_SECONDS ?? DEFAULT_AGENT_JWT_TTL_SECONDS,\n source: process.env.PAPERCLIP_AGENT_JWT_TTL_SECONDS ? \"env\" : \"default\",\n required: false,\n note: \"JWT lifetime in seconds\",\n },\n {\n key: \"PAPERCLIP_AGENT_JWT_ISSUER\",\n value: process.env.PAPERCLIP_AGENT_JWT_ISSUER ?? DEFAULT_AGENT_JWT_ISSUER,\n source: process.env.PAPERCLIP_AGENT_JWT_ISSUER ? \"env\" : \"default\",\n required: false,\n note: \"JWT issuer\",\n },\n {\n key: \"PAPERCLIP_AGENT_JWT_AUDIENCE\",\n value: process.env.PAPERCLIP_AGENT_JWT_AUDIENCE ?? DEFAULT_AGENT_JWT_AUDIENCE,\n source: process.env.PAPERCLIP_AGENT_JWT_AUDIENCE ? \"env\" : \"default\",\n required: false,\n note: \"JWT audience\",\n },\n {\n key: \"HEARTBEAT_SCHEDULER_INTERVAL_MS\",\n value: heartbeatInterval,\n source: process.env.HEARTBEAT_SCHEDULER_INTERVAL_MS ? \"env\" : \"default\",\n required: false,\n note: \"Heartbeat worker interval in ms\",\n },\n {\n key: \"HEARTBEAT_SCHEDULER_ENABLED\",\n value: heartbeatEnabled,\n source: process.env.HEARTBEAT_SCHEDULER_ENABLED ? \"env\" : \"default\",\n required: false,\n note: \"Set to `false` to disable timer scheduling\",\n },\n {\n key: \"PAPERCLIP_SECRETS_PROVIDER\",\n value: secretsProvider,\n source: process.env.PAPERCLIP_SECRETS_PROVIDER\n ? \"env\"\n : config?.secrets?.provider\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Default provider for new secrets\",\n },\n {\n key: \"PAPERCLIP_SECRETS_STRICT_MODE\",\n value: secretsStrictMode,\n source: process.env.PAPERCLIP_SECRETS_STRICT_MODE\n ? \"env\"\n : config?.secrets?.strictMode !== undefined\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Require secret refs for sensitive env keys\",\n },\n {\n key: \"PAPERCLIP_SECRETS_MASTER_KEY_FILE\",\n value: secretsKeyFilePath,\n source: process.env.PAPERCLIP_SECRETS_MASTER_KEY_FILE\n ? \"env\"\n : config?.secrets?.localEncrypted?.keyFilePath\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Path to local encrypted secrets key file\",\n },\n {\n key: \"PAPERCLIP_STORAGE_PROVIDER\",\n value: storageProvider,\n source: process.env.PAPERCLIP_STORAGE_PROVIDER\n ? \"env\"\n : config?.storage?.provider\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Storage provider (local_disk or s3)\",\n },\n {\n key: \"PAPERCLIP_STORAGE_LOCAL_DIR\",\n value: storageLocalDir,\n source: process.env.PAPERCLIP_STORAGE_LOCAL_DIR\n ? \"env\"\n : config?.storage?.localDisk?.baseDir\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Local storage base directory for local_disk provider\",\n },\n {\n key: \"PAPERCLIP_STORAGE_S3_BUCKET\",\n value: storageS3Bucket,\n source: process.env.PAPERCLIP_STORAGE_S3_BUCKET\n ? \"env\"\n : config?.storage?.s3?.bucket\n ? \"config\"\n : \"default\",\n required: false,\n note: \"S3 bucket name for s3 provider\",\n },\n {\n key: \"PAPERCLIP_STORAGE_S3_REGION\",\n value: storageS3Region,\n source: process.env.PAPERCLIP_STORAGE_S3_REGION\n ? \"env\"\n : config?.storage?.s3?.region\n ? \"config\"\n : \"default\",\n required: false,\n note: \"S3 region for s3 provider\",\n },\n {\n key: \"PAPERCLIP_STORAGE_S3_ENDPOINT\",\n value: storageS3Endpoint,\n source: process.env.PAPERCLIP_STORAGE_S3_ENDPOINT\n ? \"env\"\n : config?.storage?.s3?.endpoint\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Optional custom endpoint for S3-compatible providers\",\n },\n {\n key: \"PAPERCLIP_STORAGE_S3_PREFIX\",\n value: storageS3Prefix,\n source: process.env.PAPERCLIP_STORAGE_S3_PREFIX\n ? \"env\"\n : config?.storage?.s3?.prefix\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Optional object key prefix\",\n },\n {\n key: \"PAPERCLIP_STORAGE_S3_FORCE_PATH_STYLE\",\n value: storageS3ForcePathStyle,\n source: process.env.PAPERCLIP_STORAGE_S3_FORCE_PATH_STYLE\n ? \"env\"\n : config?.storage?.s3?.forcePathStyle !== undefined\n ? \"config\"\n : \"default\",\n required: false,\n note: \"Set true for path-style access on compatible providers\",\n },\n ];\n\n const defaultConfigPath = resolveConfigPath();\n if (process.env.PAPERCLIP_CONFIG || configPath !== defaultConfigPath) {\n rows.push({\n key: \"PAPERCLIP_CONFIG\",\n value: process.env.PAPERCLIP_CONFIG ?? configPath,\n source: process.env.PAPERCLIP_CONFIG ? \"env\" : \"default\",\n required: false,\n note: \"Optional path override for config file\",\n });\n }\n\n return rows;\n}\n\nfunction uniqueByKey(rows: EnvVarRow[]): EnvVarRow[] {\n const seen = new Set<string>();\n const result: EnvVarRow[] = [];\n for (const row of rows) {\n if (seen.has(row.key)) continue;\n seen.add(row.key);\n result.push(row);\n }\n return result;\n}\n\nfunction quoteShellValue(value: string): string {\n if (value === \"\") return \"\\\"\\\"\";\n return `'${value.replaceAll(\"'\", \"'\\\\''\")}'`;\n}\n", "import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { readConfig, writeConfig, configExists, resolveConfigPath } from \"../config/store.js\";\nimport type { PaperclipConfig } from \"../config/schema.js\";\nimport { ensureLocalSecretsKeyFile } from \"../config/secrets-key.js\";\nimport { promptDatabase } from \"../prompts/database.js\";\nimport { promptLlm } from \"../prompts/llm.js\";\nimport { promptLogging } from \"../prompts/logging.js\";\nimport { defaultSecretsConfig, promptSecrets } from \"../prompts/secrets.js\";\nimport { defaultStorageConfig, promptStorage } from \"../prompts/storage.js\";\nimport { promptServer } from \"../prompts/server.js\";\nimport {\n resolveDefaultEmbeddedPostgresDir,\n resolveDefaultLogsDir,\n resolvePaperclipInstanceId,\n} from \"../config/home.js\";\nimport { printPaperclipCliBanner } from \"../utils/banner.js\";\n\ntype Section = \"llm\" | \"database\" | \"logging\" | \"server\" | \"storage\" | \"secrets\";\n\nconst SECTION_LABELS: Record<Section, string> = {\n llm: \"LLM Provider\",\n database: \"Database\",\n logging: \"Logging\",\n server: \"Server\",\n storage: \"Storage\",\n secrets: \"Secrets\",\n};\n\nfunction defaultConfig(): PaperclipConfig {\n const instanceId = resolvePaperclipInstanceId();\n return {\n $meta: {\n version: 1,\n updatedAt: new Date().toISOString(),\n source: \"configure\",\n },\n database: {\n mode: \"embedded-postgres\",\n embeddedPostgresDataDir: resolveDefaultEmbeddedPostgresDir(instanceId),\n embeddedPostgresPort: 54329,\n },\n logging: {\n mode: \"file\",\n logDir: resolveDefaultLogsDir(instanceId),\n },\n server: {\n deploymentMode: \"local_trusted\",\n exposure: \"private\",\n host: \"127.0.0.1\",\n port: 3100,\n allowedHostnames: [],\n serveUi: true,\n },\n auth: {\n baseUrlMode: \"auto\",\n },\n storage: defaultStorageConfig(),\n secrets: defaultSecretsConfig(),\n };\n}\n\nexport async function configure(opts: {\n config?: string;\n section?: string;\n}): Promise<void> {\n printPaperclipCliBanner();\n p.intro(pc.bgCyan(pc.black(\" paperclip configure \")));\n const configPath = resolveConfigPath(opts.config);\n\n if (!configExists(opts.config)) {\n p.log.error(\"No config file found. Run `paperclipai onboard` first.\");\n p.outro(\"\");\n return;\n }\n\n let config: PaperclipConfig;\n try {\n config = readConfig(opts.config) ?? defaultConfig();\n } catch (err) {\n p.log.message(\n pc.yellow(\n `Existing config is invalid. Loading defaults so you can repair it now.\\n${err instanceof Error ? err.message : String(err)}`,\n ),\n );\n config = defaultConfig();\n }\n\n let section: Section | undefined = opts.section as Section | undefined;\n\n if (section && !SECTION_LABELS[section]) {\n p.log.error(`Unknown section: ${section}. Choose from: ${Object.keys(SECTION_LABELS).join(\", \")}`);\n p.outro(\"\");\n return;\n }\n\n // Section selection loop\n let continueLoop = true;\n while (continueLoop) {\n if (!section) {\n const choice = await p.select({\n message: \"Which section do you want to configure?\",\n options: Object.entries(SECTION_LABELS).map(([value, label]) => ({\n value: value as Section,\n label,\n })),\n });\n\n if (p.isCancel(choice)) {\n p.cancel(\"Configuration cancelled.\");\n return;\n }\n\n section = choice;\n }\n\n p.log.step(pc.bold(SECTION_LABELS[section]));\n\n switch (section) {\n case \"database\":\n config.database = await promptDatabase();\n break;\n case \"llm\": {\n const llm = await promptLlm();\n if (llm) {\n config.llm = llm;\n } else {\n delete config.llm;\n }\n break;\n }\n case \"logging\":\n config.logging = await promptLogging();\n break;\n case \"server\":\n {\n const { server, auth } = await promptServer({\n currentServer: config.server,\n currentAuth: config.auth,\n });\n config.server = server;\n config.auth = auth;\n }\n break;\n case \"storage\":\n config.storage = await promptStorage(config.storage);\n break;\n case \"secrets\":\n config.secrets = await promptSecrets(config.secrets);\n {\n const keyResult = ensureLocalSecretsKeyFile(config, configPath);\n if (keyResult.status === \"created\") {\n p.log.success(`Created local secrets key file at ${pc.dim(keyResult.path)}`);\n } else if (keyResult.status === \"existing\") {\n p.log.message(pc.dim(`Using existing local secrets key file at ${keyResult.path}`));\n } else if (keyResult.status === \"skipped_provider\") {\n p.log.message(pc.dim(\"Skipping local key file management for non-local provider\"));\n } else {\n p.log.message(pc.dim(\"Skipping local key file management because PAPERCLIP_SECRETS_MASTER_KEY is set\"));\n }\n }\n break;\n }\n\n config.$meta.updatedAt = new Date().toISOString();\n config.$meta.source = \"configure\";\n\n writeConfig(config, opts.config);\n p.log.success(`${SECTION_LABELS[section]} configuration updated.`);\n\n // If section was provided via CLI flag, don't loop\n if (opts.section) {\n continueLoop = false;\n } else {\n const another = await p.confirm({\n message: \"Configure another section?\",\n initialValue: false,\n });\n\n if (p.isCancel(another) || !another) {\n continueLoop = false;\n } else {\n section = undefined; // Reset to show picker again\n }\n }\n }\n\n p.outro(\"Configuration saved.\");\n}\n", "import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { normalizeHostnameInput } from \"../config/hostnames.js\";\nimport { readConfig, resolveConfigPath, writeConfig } from \"../config/store.js\";\n\nexport async function addAllowedHostname(host: string, opts: { config?: string }): Promise<void> {\n const configPath = resolveConfigPath(opts.config);\n const config = readConfig(opts.config);\n\n if (!config) {\n p.log.error(`No config found at ${configPath}. Run ${pc.cyan(\"paperclip onboard\")} first.`);\n return;\n }\n\n const normalized = normalizeHostnameInput(host);\n const current = new Set((config.server.allowedHostnames ?? []).map((value) => value.trim().toLowerCase()).filter(Boolean));\n const existed = current.has(normalized);\n current.add(normalized);\n\n config.server.allowedHostnames = Array.from(current).sort();\n config.$meta.updatedAt = new Date().toISOString();\n config.$meta.source = \"configure\";\n writeConfig(config, opts.config);\n\n if (existed) {\n p.log.info(`Hostname ${pc.cyan(normalized)} is already allowed.`);\n } else {\n p.log.success(`Added allowed hostname: ${pc.cyan(normalized)}`);\n }\n\n if (!(config.server.deploymentMode === \"authenticated\" && config.server.exposure === \"private\")) {\n p.log.message(\n pc.dim(\"Note: allowed hostnames are enforced only in authenticated/private mode.\"),\n );\n }\n}\n\n", "import { setTimeout as delay } from \"node:timers/promises\";\nimport pc from \"picocolors\";\nimport type { Agent, HeartbeatRun, HeartbeatRunEvent, HeartbeatRunStatus } from \"@paperclipai/shared\";\nimport { getCLIAdapter } from \"../adapters/index.js\";\nimport { resolveCommandContext } from \"./client/common.js\";\n\nconst HEARTBEAT_SOURCES = [\"timer\", \"assignment\", \"on_demand\", \"automation\"] as const;\nconst HEARTBEAT_TRIGGERS = [\"manual\", \"ping\", \"callback\", \"system\"] as const;\nconst TERMINAL_STATUSES = new Set<HeartbeatRunStatus>([\"succeeded\", \"failed\", \"cancelled\", \"timed_out\"]);\nconst POLL_INTERVAL_MS = 200;\n\ntype HeartbeatSource = (typeof HEARTBEAT_SOURCES)[number];\ntype HeartbeatTrigger = (typeof HEARTBEAT_TRIGGERS)[number];\ntype InvokedHeartbeat = HeartbeatRun | { status: \"skipped\" };\ninterface HeartbeatRunEventRecord extends HeartbeatRunEvent {\n type?: string | null;\n}\n\ninterface HeartbeatRunOptions {\n config?: string;\n context?: string;\n profile?: string;\n agentId: string;\n apiBase?: string;\n apiKey?: string;\n source: string;\n trigger: string;\n timeoutMs: string;\n debug?: boolean;\n json?: boolean;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null;\n}\n\nfunction asErrorText(value: unknown): string {\n if (typeof value === \"string\") return value;\n const obj = asRecord(value);\n if (!obj) return \"\";\n const message =\n (typeof obj.message === \"string\" && obj.message) ||\n (typeof obj.error === \"string\" && obj.error) ||\n (typeof obj.code === \"string\" && obj.code) ||\n \"\";\n if (message) return message;\n try {\n return JSON.stringify(obj);\n } catch {\n return \"\";\n }\n}\n\ntype AdapterType = string;\n\nexport async function heartbeatRun(opts: HeartbeatRunOptions): Promise<void> {\n const debug = Boolean(opts.debug);\n const parsedTimeout = Number.parseInt(opts.timeoutMs, 10);\n const timeoutMs = Number.isFinite(parsedTimeout) ? parsedTimeout : 0;\n const source = HEARTBEAT_SOURCES.includes(opts.source as HeartbeatSource)\n ? (opts.source as HeartbeatSource)\n : \"on_demand\";\n const triggerDetail = HEARTBEAT_TRIGGERS.includes(opts.trigger as HeartbeatTrigger)\n ? (opts.trigger as HeartbeatTrigger)\n : \"manual\";\n\n const ctx = resolveCommandContext({\n config: opts.config,\n context: opts.context,\n profile: opts.profile,\n apiBase: opts.apiBase,\n apiKey: opts.apiKey,\n json: opts.json,\n });\n const api = ctx.api;\n\n const agent = await api.get<Agent>(`/api/agents/${opts.agentId}`);\n if (!agent || typeof agent !== \"object\" || !agent.id) {\n console.error(pc.red(`Agent not found: ${opts.agentId}`));\n return;\n }\n\n const invokeRes = await api.post<InvokedHeartbeat>(\n `/api/agents/${opts.agentId}/wakeup`,\n {\n source: source,\n triggerDetail: triggerDetail,\n },\n );\n if (!invokeRes) {\n console.error(pc.red(\"Failed to invoke heartbeat\"));\n return;\n }\n if ((invokeRes as { status?: string }).status === \"skipped\") {\n console.log(pc.yellow(\"Heartbeat invocation was skipped\"));\n return;\n }\n\n const run = invokeRes as HeartbeatRun;\n console.log(pc.cyan(`Invoked heartbeat run ${run.id} for agent ${agent.name} (${agent.id})`));\n\n const runId = run.id;\n let activeRunId: string | null = null;\n let lastEventSeq = 0;\n let logOffset = 0;\n let stdoutJsonBuffer = \"\";\n\n const printRawChunk = (stream: \"stdout\" | \"stderr\" | \"system\", chunk: string) => {\n if (stream === \"stdout\") process.stdout.write(pc.green(\"[stdout] \") + chunk);\n else if (stream === \"stderr\") process.stdout.write(pc.red(\"[stderr] \") + chunk);\n else process.stdout.write(pc.yellow(\"[system] \") + chunk);\n };\n\n const printAdapterInvoke = (payload: Record<string, unknown>) => {\n const adapterType = typeof payload.adapterType === \"string\" ? payload.adapterType : \"unknown\";\n const command = typeof payload.command === \"string\" ? payload.command : \"\";\n const cwd = typeof payload.cwd === \"string\" ? payload.cwd : \"\";\n const args =\n Array.isArray(payload.commandArgs) &&\n (payload.commandArgs as unknown[]).every((v) => typeof v === \"string\")\n ? (payload.commandArgs as string[])\n : [];\n const env =\n typeof payload.env === \"object\" && payload.env !== null && !Array.isArray(payload.env)\n ? (payload.env as Record<string, unknown>)\n : null;\n const prompt = typeof payload.prompt === \"string\" ? payload.prompt : \"\";\n const context =\n typeof payload.context === \"object\" && payload.context !== null && !Array.isArray(payload.context)\n ? (payload.context as Record<string, unknown>)\n : null;\n\n console.log(pc.cyan(`Adapter: ${adapterType}`));\n if (cwd) console.log(pc.cyan(`Working dir: ${cwd}`));\n if (command) {\n const rendered = args.length > 0 ? `${command} ${args.join(\" \")}` : command;\n console.log(pc.cyan(`Command: ${rendered}`));\n }\n if (env) {\n console.log(pc.cyan(\"Env:\"));\n console.log(pc.gray(JSON.stringify(env, null, 2)));\n }\n if (context) {\n console.log(pc.cyan(\"Context:\"));\n console.log(pc.gray(JSON.stringify(context, null, 2)));\n }\n if (prompt) {\n console.log(pc.cyan(\"Prompt:\"));\n console.log(prompt);\n }\n };\n\n const adapterType: AdapterType = agent.adapterType ?? \"claude_local\";\n const cliAdapter = getCLIAdapter(adapterType);\n\n const handleStreamChunk = (stream: \"stdout\" | \"stderr\" | \"system\", chunk: string) => {\n if (debug) {\n printRawChunk(stream, chunk);\n return;\n }\n\n if (stream !== \"stdout\") {\n printRawChunk(stream, chunk);\n return;\n }\n\n const combined = stdoutJsonBuffer + chunk;\n const lines = combined.split(/\\r?\\n/);\n stdoutJsonBuffer = lines.pop() ?? \"\";\n for (const line of lines) {\n cliAdapter.formatStdoutEvent(line, debug);\n }\n };\n\n const handleEvent = (event: HeartbeatRunEventRecord) => {\n const payload = normalizePayload(event.payload);\n if (event.runId !== runId) return;\n const eventType = typeof event.eventType === \"string\"\n ? event.eventType\n : typeof event.type === \"string\"\n ? event.type\n : \"\";\n\n if (eventType === \"heartbeat.run.status\") {\n const status = typeof payload.status === \"string\" ? payload.status : null;\n if (status) {\n console.log(pc.blue(`[status] ${status}`));\n }\n } else if (eventType === \"adapter.invoke\") {\n printAdapterInvoke(payload);\n } else if (eventType === \"heartbeat.run.log\") {\n const stream = typeof payload.stream === \"string\" ? payload.stream : \"system\";\n const chunk = typeof payload.chunk === \"string\" ? payload.chunk : \"\";\n if (!chunk) return;\n if (stream === \"stdout\" || stream === \"stderr\" || stream === \"system\") {\n handleStreamChunk(stream, chunk);\n }\n } else if (typeof event.message === \"string\") {\n console.log(pc.gray(`[event] ${eventType || \"heartbeat.run.event\"}: ${event.message}`));\n }\n\n lastEventSeq = Math.max(lastEventSeq, event.seq ?? 0);\n };\n\n activeRunId = runId;\n let finalStatus: string | null = null;\n let finalError: string | null = null;\n let finalRun: HeartbeatRun | null = null;\n\n const deadline = timeoutMs > 0 ? Date.now() + timeoutMs : null;\n if (!activeRunId) {\n console.error(pc.red(\"Failed to capture heartbeat run id\"));\n return;\n }\n\n while (true) {\n const events = await api.get<HeartbeatRunEvent[]>(\n `/api/heartbeat-runs/${activeRunId}/events?afterSeq=${lastEventSeq}&limit=100`,\n );\n for (const event of Array.isArray(events) ? (events as HeartbeatRunEventRecord[]) : []) {\n handleEvent(event);\n }\n\n const runList = (await api.get<(HeartbeatRun | null)[]>(\n `/api/companies/${agent.companyId}/heartbeat-runs?agentId=${agent.id}`,\n )) || [];\n const currentRun = runList.find((r) => r && r.id === activeRunId) ?? null;\n\n if (!currentRun) {\n console.error(pc.red(\"Heartbeat run disappeared\"));\n break;\n }\n\n const currentStatus = currentRun.status as HeartbeatRunStatus | undefined;\n if (currentStatus !== finalStatus && currentStatus) {\n finalStatus = currentStatus;\n console.log(pc.blue(`Status: ${currentStatus}`));\n }\n\n if (currentStatus && TERMINAL_STATUSES.has(currentStatus)) {\n finalStatus = currentRun.status;\n finalError = currentRun.error;\n finalRun = currentRun;\n break;\n }\n\n if (deadline && Date.now() >= deadline) {\n finalError = `CLI timed out after ${timeoutMs}ms`;\n finalStatus = \"timed_out\";\n console.error(pc.yellow(finalError));\n break;\n }\n\n const logResult = await api.get<{ content: string; nextOffset?: number }>(\n `/api/heartbeat-runs/${activeRunId}/log?offset=${logOffset}&limitBytes=16384`,\n { ignoreNotFound: true },\n );\n if (logResult && logResult.content) {\n for (const chunk of logResult.content.split(/\\r?\\n/)) {\n if (!chunk) continue;\n const parsed = safeParseLogLine(chunk);\n if (!parsed) continue;\n handleStreamChunk(parsed.stream, parsed.chunk);\n }\n if (typeof logResult.nextOffset === \"number\") {\n logOffset = logResult.nextOffset;\n } else if (logResult.content) {\n logOffset += Buffer.byteLength(logResult.content, \"utf8\");\n }\n }\n\n await delay(POLL_INTERVAL_MS);\n }\n\n if (finalStatus) {\n if (!debug && stdoutJsonBuffer.trim()) {\n cliAdapter.formatStdoutEvent(stdoutJsonBuffer, debug);\n stdoutJsonBuffer = \"\";\n }\n const label = `Run ${activeRunId} completed with status ${finalStatus}`;\n if (finalStatus === \"succeeded\") {\n console.log(pc.green(label));\n return;\n }\n\n console.log(pc.red(label));\n if (finalError) {\n console.log(pc.red(`Error: ${finalError}`));\n }\n if (finalRun) {\n const resultObj = asRecord(finalRun.resultJson);\n if (resultObj) {\n const subtype = typeof resultObj.subtype === \"string\" ? resultObj.subtype : \"\";\n const isError = resultObj.is_error === true;\n const errors = Array.isArray(resultObj.errors) ? resultObj.errors.map(asErrorText).filter(Boolean) : [];\n const resultText = typeof resultObj.result === \"string\" ? resultObj.result.trim() : \"\";\n if (subtype || isError || errors.length > 0 || resultText) {\n console.log(pc.red(\"Claude result details:\"));\n if (subtype) console.log(pc.red(` subtype: ${subtype}`));\n if (isError) console.log(pc.red(\" is_error: true\"));\n if (errors.length > 0) console.log(pc.red(` errors: ${errors.join(\" | \")}`));\n if (resultText) console.log(pc.red(` result: ${resultText}`));\n }\n }\n\n const stderrExcerpt = typeof finalRun.stderrExcerpt === \"string\" ? finalRun.stderrExcerpt.trim() : \"\";\n const stdoutExcerpt = typeof finalRun.stdoutExcerpt === \"string\" ? finalRun.stdoutExcerpt.trim() : \"\";\n if (stderrExcerpt) {\n console.log(pc.red(\"stderr excerpt:\"));\n console.log(stderrExcerpt);\n }\n if (stdoutExcerpt && (debug || !stderrExcerpt)) {\n console.log(pc.gray(\"stdout excerpt:\"));\n console.log(stdoutExcerpt);\n }\n }\n process.exitCode = 1;\n } else {\n process.exitCode = 1;\n console.log(pc.gray(\"Heartbeat stream ended without terminal status\"));\n }\n}\n\nfunction normalizePayload(payload: unknown): Record<string, unknown> {\n return typeof payload === \"object\" && payload !== null ? (payload as Record<string, unknown>) : {};\n}\n\nfunction safeParseLogLine(line: string): { stream: \"stdout\" | \"stderr\" | \"system\"; chunk: string } | null {\n try {\n const parsed = JSON.parse(line) as { stream?: unknown; chunk?: unknown };\n const stream =\n parsed.stream === \"stdout\" || parsed.stream === \"stderr\" || parsed.stream === \"system\"\n ? parsed.stream\n : \"system\";\n const chunk = typeof parsed.chunk === \"string\" ? parsed.chunk : \"\";\n\n if (!chunk) return null;\n return { stream, chunk };\n } catch {\n return null;\n }\n}\n", "import pc from \"picocolors\";\n\nfunction asErrorText(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return \"\";\n const obj = value as Record<string, unknown>;\n const message =\n (typeof obj.message === \"string\" && obj.message) ||\n (typeof obj.error === \"string\" && obj.error) ||\n (typeof obj.code === \"string\" && obj.code) ||\n \"\";\n if (message) return message;\n try {\n return JSON.stringify(obj);\n } catch {\n return \"\";\n }\n}\n\nexport function printClaudeStreamEvent(raw: string, debug: boolean): void {\n const line = raw.trim();\n if (!line) return;\n\n let parsed: Record<string, unknown> | null = null;\n try {\n parsed = JSON.parse(line) as Record<string, unknown>;\n } catch {\n console.log(line);\n return;\n }\n\n const type = typeof parsed.type === \"string\" ? parsed.type : \"\";\n\n if (type === \"system\" && parsed.subtype === \"init\") {\n const model = typeof parsed.model === \"string\" ? parsed.model : \"unknown\";\n const sessionId = typeof parsed.session_id === \"string\" ? parsed.session_id : \"\";\n console.log(pc.blue(`Claude initialized (model: ${model}${sessionId ? `, session: ${sessionId}` : \"\"})`));\n return;\n }\n\n if (type === \"assistant\") {\n const message =\n typeof parsed.message === \"object\" && parsed.message !== null && !Array.isArray(parsed.message)\n ? (parsed.message as Record<string, unknown>)\n : {};\n const content = Array.isArray(message.content) ? message.content : [];\n for (const blockRaw of content) {\n if (typeof blockRaw !== \"object\" || blockRaw === null || Array.isArray(blockRaw)) continue;\n const block = blockRaw as Record<string, unknown>;\n const blockType = typeof block.type === \"string\" ? block.type : \"\";\n if (blockType === \"text\") {\n const text = typeof block.text === \"string\" ? block.text : \"\";\n if (text) console.log(pc.green(`assistant: ${text}`));\n } else if (blockType === \"tool_use\") {\n const name = typeof block.name === \"string\" ? block.name : \"unknown\";\n console.log(pc.yellow(`tool_call: ${name}`));\n if (block.input !== undefined) {\n console.log(pc.gray(JSON.stringify(block.input, null, 2)));\n }\n }\n }\n return;\n }\n\n if (type === \"result\") {\n const usage =\n typeof parsed.usage === \"object\" && parsed.usage !== null && !Array.isArray(parsed.usage)\n ? (parsed.usage as Record<string, unknown>)\n : {};\n const input = Number(usage.input_tokens ?? 0);\n const output = Number(usage.output_tokens ?? 0);\n const cached = Number(usage.cache_read_input_tokens ?? 0);\n const cost = Number(parsed.total_cost_usd ?? 0);\n const subtype = typeof parsed.subtype === \"string\" ? parsed.subtype : \"\";\n const isError = parsed.is_error === true;\n const resultText = typeof parsed.result === \"string\" ? parsed.result : \"\";\n if (resultText) {\n console.log(pc.green(\"result:\"));\n console.log(resultText);\n }\n const errors = Array.isArray(parsed.errors) ? parsed.errors.map(asErrorText).filter(Boolean) : [];\n if (subtype.startsWith(\"error\") || isError || errors.length > 0) {\n console.log(pc.red(`claude_result: subtype=${subtype || \"unknown\"} is_error=${isError ? \"true\" : \"false\"}`));\n if (errors.length > 0) {\n console.log(pc.red(`claude_errors: ${errors.join(\" | \")}`));\n }\n }\n console.log(\n pc.blue(\n `tokens: in=${Number.isFinite(input) ? input : 0} out=${Number.isFinite(output) ? output : 0} cached=${Number.isFinite(cached) ? cached : 0} cost=$${Number.isFinite(cost) ? cost.toFixed(6) : \"0.000000\"}`,\n ),\n );\n return;\n }\n\n if (debug) {\n console.log(pc.gray(line));\n }\n}\n", "import pc from \"picocolors\";\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return null;\n return value as Record<string, unknown>;\n}\n\nfunction asString(value: unknown, fallback = \"\"): string {\n return typeof value === \"string\" ? value : fallback;\n}\n\nfunction asNumber(value: unknown, fallback = 0): number {\n return typeof value === \"number\" && Number.isFinite(value) ? value : fallback;\n}\n\nfunction errorText(value: unknown): string {\n if (typeof value === \"string\") return value;\n const rec = asRecord(value);\n if (!rec) return \"\";\n const msg =\n (typeof rec.message === \"string\" && rec.message) ||\n (typeof rec.error === \"string\" && rec.error) ||\n (typeof rec.code === \"string\" && rec.code) ||\n \"\";\n if (msg) return msg;\n try {\n return JSON.stringify(rec);\n } catch {\n return \"\";\n }\n}\n\nfunction printItemStarted(item: Record<string, unknown>): boolean {\n const itemType = asString(item.type);\n if (itemType === \"command_execution\") {\n const command = asString(item.command);\n console.log(pc.yellow(\"tool_call: command_execution\"));\n if (command) console.log(pc.gray(command));\n return true;\n }\n\n if (itemType === \"tool_use\") {\n const name = asString(item.name, \"unknown\");\n console.log(pc.yellow(`tool_call: ${name}`));\n if (item.input !== undefined) {\n try {\n console.log(pc.gray(JSON.stringify(item.input, null, 2)));\n } catch {\n console.log(pc.gray(String(item.input)));\n }\n }\n return true;\n }\n\n return false;\n}\n\nfunction printItemCompleted(item: Record<string, unknown>): boolean {\n const itemType = asString(item.type);\n\n if (itemType === \"agent_message\") {\n const text = asString(item.text);\n if (text) console.log(pc.green(`assistant: ${text}`));\n return true;\n }\n\n if (itemType === \"reasoning\") {\n const text = asString(item.text);\n if (text) console.log(pc.gray(`thinking: ${text}`));\n return true;\n }\n\n if (itemType === \"tool_use\") {\n const name = asString(item.name, \"unknown\");\n console.log(pc.yellow(`tool_call: ${name}`));\n if (item.input !== undefined) {\n try {\n console.log(pc.gray(JSON.stringify(item.input, null, 2)));\n } catch {\n console.log(pc.gray(String(item.input)));\n }\n }\n return true;\n }\n\n if (itemType === \"command_execution\") {\n const command = asString(item.command);\n const status = asString(item.status);\n const exitCode = typeof item.exit_code === \"number\" && Number.isFinite(item.exit_code) ? item.exit_code : null;\n const output = asString(item.aggregated_output).replace(/\\s+$/, \"\");\n const isError =\n (exitCode !== null && exitCode !== 0) ||\n status === \"failed\" ||\n status === \"errored\" ||\n status === \"error\" ||\n status === \"cancelled\";\n\n const summaryParts = [\n \"tool_result: command_execution\",\n command ? `command=\"${command}\"` : \"\",\n status ? `status=${status}` : \"\",\n exitCode !== null ? `exit_code=${exitCode}` : \"\",\n ].filter(Boolean);\n console.log((isError ? pc.red : pc.cyan)(summaryParts.join(\" \")));\n if (output) console.log((isError ? pc.red : pc.gray)(output));\n return true;\n }\n\n if (itemType === \"file_change\") {\n const changes = Array.isArray(item.changes) ? item.changes : [];\n const entries = changes\n .map((changeRaw) => asRecord(changeRaw))\n .filter((change): change is Record<string, unknown> => Boolean(change))\n .map((change) => {\n const kind = asString(change.kind, \"update\");\n const path = asString(change.path, \"unknown\");\n return `${kind} ${path}`;\n });\n const preview = entries.length > 0 ? entries.slice(0, 6).join(\", \") : \"none\";\n const more = entries.length > 6 ? ` (+${entries.length - 6} more)` : \"\";\n console.log(pc.cyan(`file_change: ${preview}${more}`));\n return true;\n }\n\n if (itemType === \"error\") {\n const message = errorText(item.message ?? item.error ?? item);\n if (message) console.log(pc.red(`error: ${message}`));\n return true;\n }\n\n if (itemType === \"tool_result\") {\n const isError = item.is_error === true || asString(item.status) === \"error\";\n const text = asString(item.content) || asString(item.result) || asString(item.output);\n console.log((isError ? pc.red : pc.cyan)(`tool_result${isError ? \" (error)\" : \"\"}`));\n if (text) console.log((isError ? pc.red : pc.gray)(text));\n return true;\n }\n\n return false;\n}\n\nexport function printCodexStreamEvent(raw: string, _debug: boolean): void {\n const line = raw.trim();\n if (!line) return;\n\n let parsed: Record<string, unknown> | null = null;\n try {\n parsed = JSON.parse(line) as Record<string, unknown>;\n } catch {\n console.log(line);\n return;\n }\n\n const type = asString(parsed.type);\n\n if (type === \"thread.started\") {\n const threadId = asString(parsed.thread_id);\n const model = asString(parsed.model);\n const details = [threadId ? `session: ${threadId}` : \"\", model ? `model: ${model}` : \"\"].filter(Boolean).join(\", \");\n console.log(pc.blue(`Codex thread started${details ? ` (${details})` : \"\"}`));\n return;\n }\n\n if (type === \"turn.started\") {\n console.log(pc.blue(\"turn started\"));\n return;\n }\n\n if (type === \"item.started\" || type === \"item.completed\") {\n const item = asRecord(parsed.item);\n if (item) {\n const handled =\n type === \"item.started\"\n ? printItemStarted(item)\n : printItemCompleted(item);\n if (!handled) {\n const itemType = asString(item.type, \"unknown\");\n const id = asString(item.id);\n const status = asString(item.status);\n const meta = [id ? `id=${id}` : \"\", status ? `status=${status}` : \"\"].filter(Boolean).join(\" \");\n console.log(pc.gray(`${type}: ${itemType}${meta ? ` (${meta})` : \"\"}`));\n }\n } else {\n console.log(pc.gray(type));\n }\n return;\n }\n\n if (type === \"turn.completed\") {\n const usage = asRecord(parsed.usage);\n const input = asNumber(usage?.input_tokens);\n const output = asNumber(usage?.output_tokens);\n const cached = asNumber(usage?.cached_input_tokens, asNumber(usage?.cache_read_input_tokens));\n const cost = asNumber(parsed.total_cost_usd);\n const isError = parsed.is_error === true;\n const subtype = asString(parsed.subtype);\n const errors = Array.isArray(parsed.errors) ? parsed.errors.map(errorText).filter(Boolean) : [];\n\n console.log(\n pc.blue(`tokens: in=${input} out=${output} cached=${cached} cost=$${cost.toFixed(6)}`),\n );\n if (subtype || isError || errors.length > 0) {\n console.log(\n pc.red(`result: subtype=${subtype || \"unknown\"} is_error=${isError ? \"true\" : \"false\"}`),\n );\n if (errors.length > 0) console.log(pc.red(`errors: ${errors.join(\" | \")}`));\n }\n return;\n }\n\n if (type === \"turn.failed\") {\n const usage = asRecord(parsed.usage);\n const input = asNumber(usage?.input_tokens);\n const output = asNumber(usage?.output_tokens);\n const cached = asNumber(usage?.cached_input_tokens, asNumber(usage?.cache_read_input_tokens));\n const message = errorText(parsed.error ?? parsed.message);\n console.log(pc.red(`turn failed${message ? `: ${message}` : \"\"}`));\n console.log(pc.blue(`tokens: in=${input} out=${output} cached=${cached}`));\n return;\n }\n\n if (type === \"error\") {\n const message = errorText(parsed.message ?? parsed.error ?? parsed);\n if (message) console.log(pc.red(`error: ${message}`));\n return;\n }\n\n console.log(line);\n}\n", "import pc from \"picocolors\";\n\nexport function printOpenClawStreamEvent(raw: string, debug: boolean): void {\n const line = raw.trim();\n if (!line) return;\n\n if (!debug) {\n console.log(line);\n return;\n }\n\n if (line.startsWith(\"[openclaw]\")) {\n console.log(pc.cyan(line));\n return;\n }\n\n console.log(pc.gray(line));\n}\n", "export function printProcessStdoutEvent(raw: string, _debug: boolean): void {\n const line = raw.trim();\n if (line) console.log(line);\n}\n", "import type { CLIAdapterModule } from \"@paperclipai/adapter-utils\";\nimport { printProcessStdoutEvent } from \"./format-event.js\";\n\nexport const processCLIAdapter: CLIAdapterModule = {\n type: \"process\",\n formatStdoutEvent: printProcessStdoutEvent,\n};\n", "export function printHttpStdoutEvent(raw: string, _debug: boolean): void {\n const line = raw.trim();\n if (line) console.log(line);\n}\n", "import type { CLIAdapterModule } from \"@paperclipai/adapter-utils\";\nimport { printHttpStdoutEvent } from \"./format-event.js\";\n\nexport const httpCLIAdapter: CLIAdapterModule = {\n type: \"http\",\n formatStdoutEvent: printHttpStdoutEvent,\n};\n", "import type { CLIAdapterModule } from \"@paperclipai/adapter-utils\";\nimport { printClaudeStreamEvent } from \"@paperclipai/adapter-claude-local/cli\";\nimport { printCodexStreamEvent } from \"@paperclipai/adapter-codex-local/cli\";\nimport { printOpenClawStreamEvent } from \"@paperclipai/adapter-openclaw/cli\";\nimport { processCLIAdapter } from \"./process/index.js\";\nimport { httpCLIAdapter } from \"./http/index.js\";\n\nconst claudeLocalCLIAdapter: CLIAdapterModule = {\n type: \"claude_local\",\n formatStdoutEvent: printClaudeStreamEvent,\n};\n\nconst codexLocalCLIAdapter: CLIAdapterModule = {\n type: \"codex_local\",\n formatStdoutEvent: printCodexStreamEvent,\n};\n\nconst openclawCLIAdapter: CLIAdapterModule = {\n type: \"openclaw\",\n formatStdoutEvent: printOpenClawStreamEvent,\n};\n\nconst adaptersByType = new Map<string, CLIAdapterModule>(\n [claudeLocalCLIAdapter, codexLocalCLIAdapter, openclawCLIAdapter, processCLIAdapter, httpCLIAdapter].map((a) => [a.type, a]),\n);\n\nexport function getCLIAdapter(type: string): CLIAdapterModule {\n return adaptersByType.get(type) ?? processCLIAdapter;\n}\n", "import pc from \"picocolors\";\nimport type { Command } from \"commander\";\nimport { readConfig } from \"../../config/store.js\";\nimport { readContext, resolveProfile, type ClientContextProfile } from \"../../client/context.js\";\nimport { ApiRequestError, PaperclipApiClient } from \"../../client/http.js\";\n\nexport interface BaseClientOptions {\n config?: string;\n dataDir?: string;\n context?: string;\n profile?: string;\n apiBase?: string;\n apiKey?: string;\n companyId?: string;\n json?: boolean;\n}\n\nexport interface ResolvedClientContext {\n api: PaperclipApiClient;\n companyId?: string;\n profileName: string;\n profile: ClientContextProfile;\n json: boolean;\n}\n\nexport function addCommonClientOptions(command: Command, opts?: { includeCompany?: boolean }): Command {\n command\n .option(\"-c, --config <path>\", \"Path to Paperclip config file\")\n .option(\"-d, --data-dir <path>\", \"Paperclip data directory root (isolates state from ~/.paperclip)\")\n .option(\"--context <path>\", \"Path to CLI context file\")\n .option(\"--profile <name>\", \"CLI context profile name\")\n .option(\"--api-base <url>\", \"Base URL for the Paperclip API\")\n .option(\"--api-key <token>\", \"Bearer token for agent-authenticated calls\")\n .option(\"--json\", \"Output raw JSON\");\n\n if (opts?.includeCompany) {\n command.option(\"-C, --company-id <id>\", \"Company ID (overrides context default)\");\n }\n\n return command;\n}\n\nexport function resolveCommandContext(\n options: BaseClientOptions,\n opts?: { requireCompany?: boolean },\n): ResolvedClientContext {\n const context = readContext(options.context);\n const { name: profileName, profile } = resolveProfile(context, options.profile);\n\n const apiBase =\n options.apiBase?.trim() ||\n process.env.PAPERCLIP_API_URL?.trim() ||\n profile.apiBase ||\n inferApiBaseFromConfig(options.config);\n\n const apiKey =\n options.apiKey?.trim() ||\n process.env.PAPERCLIP_API_KEY?.trim() ||\n readKeyFromProfileEnv(profile);\n\n const companyId =\n options.companyId?.trim() ||\n process.env.PAPERCLIP_COMPANY_ID?.trim() ||\n profile.companyId;\n\n if (opts?.requireCompany && !companyId) {\n throw new Error(\n \"Company ID is required. Pass --company-id, set PAPERCLIP_COMPANY_ID, or set context profile companyId via `paperclipai context set`.\",\n );\n }\n\n const api = new PaperclipApiClient({ apiBase, apiKey });\n return {\n api,\n companyId,\n profileName,\n profile,\n json: Boolean(options.json),\n };\n}\n\nexport function printOutput(data: unknown, opts: { json?: boolean; label?: string } = {}): void {\n if (opts.json) {\n console.log(JSON.stringify(data, null, 2));\n return;\n }\n\n if (opts.label) {\n console.log(pc.bold(opts.label));\n }\n\n if (Array.isArray(data)) {\n if (data.length === 0) {\n console.log(pc.dim(\"(empty)\"));\n return;\n }\n for (const item of data) {\n if (typeof item === \"object\" && item !== null) {\n console.log(formatInlineRecord(item as Record<string, unknown>));\n } else {\n console.log(String(item));\n }\n }\n return;\n }\n\n if (typeof data === \"object\" && data !== null) {\n console.log(JSON.stringify(data, null, 2));\n return;\n }\n\n if (data === undefined || data === null) {\n console.log(pc.dim(\"(null)\"));\n return;\n }\n\n console.log(String(data));\n}\n\nexport function formatInlineRecord(record: Record<string, unknown>): string {\n const keyOrder = [\"identifier\", \"id\", \"name\", \"status\", \"priority\", \"title\", \"action\"];\n const seen = new Set<string>();\n const parts: string[] = [];\n\n for (const key of keyOrder) {\n if (!(key in record)) continue;\n parts.push(`${key}=${renderValue(record[key])}`);\n seen.add(key);\n }\n\n for (const [key, value] of Object.entries(record)) {\n if (seen.has(key)) continue;\n if (typeof value === \"object\") continue;\n parts.push(`${key}=${renderValue(value)}`);\n }\n\n return parts.join(\" \");\n}\n\nfunction renderValue(value: unknown): string {\n if (value === null || value === undefined) return \"-\";\n if (typeof value === \"string\") {\n const compact = value.replace(/\\s+/g, \" \").trim();\n return compact.length > 90 ? `${compact.slice(0, 87)}...` : compact;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n return \"[object]\";\n}\n\nfunction inferApiBaseFromConfig(configPath?: string): string {\n const envHost = process.env.PAPERCLIP_SERVER_HOST?.trim() || \"localhost\";\n let port = Number(process.env.PAPERCLIP_SERVER_PORT || \"\");\n\n if (!Number.isFinite(port) || port <= 0) {\n try {\n const config = readConfig(configPath);\n port = Number(config?.server?.port ?? 3100);\n } catch {\n port = 3100;\n }\n }\n\n if (!Number.isFinite(port) || port <= 0) {\n port = 3100;\n }\n\n return `http://${envHost}:${port}`;\n}\n\nfunction readKeyFromProfileEnv(profile: ClientContextProfile): string | undefined {\n if (!profile.apiKeyEnvVarName) return undefined;\n return process.env[profile.apiKeyEnvVarName]?.trim() || undefined;\n}\n\nexport function handleCommandError(error: unknown): never {\n if (error instanceof ApiRequestError) {\n const detailSuffix = error.details !== undefined ? ` details=${JSON.stringify(error.details)}` : \"\";\n console.error(pc.red(`API error ${error.status}: ${error.message}${detailSuffix}`));\n process.exit(1);\n }\n\n const message = error instanceof Error ? error.message : String(error);\n console.error(pc.red(message));\n process.exit(1);\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { resolveDefaultContextPath } from \"../config/home.js\";\n\nconst DEFAULT_CONTEXT_BASENAME = \"context.json\";\nconst DEFAULT_PROFILE = \"default\";\n\nexport interface ClientContextProfile {\n apiBase?: string;\n companyId?: string;\n apiKeyEnvVarName?: string;\n}\n\nexport interface ClientContext {\n version: 1;\n currentProfile: string;\n profiles: Record<string, ClientContextProfile>;\n}\n\nfunction findContextFileFromAncestors(startDir: string): string | null {\n const absoluteStartDir = path.resolve(startDir);\n let currentDir = absoluteStartDir;\n\n while (true) {\n const candidate = path.resolve(currentDir, \".paperclip\", DEFAULT_CONTEXT_BASENAME);\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n\n const nextDir = path.resolve(currentDir, \"..\");\n if (nextDir === currentDir) break;\n currentDir = nextDir;\n }\n\n return null;\n}\n\nexport function resolveContextPath(overridePath?: string): string {\n if (overridePath) return path.resolve(overridePath);\n if (process.env.PAPERCLIP_CONTEXT) return path.resolve(process.env.PAPERCLIP_CONTEXT);\n return findContextFileFromAncestors(process.cwd()) ?? resolveDefaultContextPath();\n}\n\nexport function defaultClientContext(): ClientContext {\n return {\n version: 1,\n currentProfile: DEFAULT_PROFILE,\n profiles: {\n [DEFAULT_PROFILE]: {},\n },\n };\n}\n\nfunction parseJson(filePath: string): unknown {\n try {\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch (err) {\n throw new Error(`Failed to parse JSON at ${filePath}: ${err instanceof Error ? err.message : String(err)}`);\n }\n}\n\nfunction toStringOrUndefined(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nfunction normalizeProfile(value: unknown): ClientContextProfile {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return {};\n const profile = value as Record<string, unknown>;\n\n return {\n apiBase: toStringOrUndefined(profile.apiBase),\n companyId: toStringOrUndefined(profile.companyId),\n apiKeyEnvVarName: toStringOrUndefined(profile.apiKeyEnvVarName),\n };\n}\n\nfunction normalizeContext(raw: unknown): ClientContext {\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) {\n return defaultClientContext();\n }\n\n const record = raw as Record<string, unknown>;\n const version = record.version === 1 ? 1 : 1;\n const currentProfile = toStringOrUndefined(record.currentProfile) ?? DEFAULT_PROFILE;\n\n const rawProfiles = record.profiles;\n const profiles: Record<string, ClientContextProfile> = {};\n\n if (typeof rawProfiles === \"object\" && rawProfiles !== null && !Array.isArray(rawProfiles)) {\n for (const [name, profile] of Object.entries(rawProfiles as Record<string, unknown>)) {\n if (!name.trim()) continue;\n profiles[name] = normalizeProfile(profile);\n }\n }\n\n if (!profiles[currentProfile]) {\n profiles[currentProfile] = {};\n }\n\n if (Object.keys(profiles).length === 0) {\n profiles[DEFAULT_PROFILE] = {};\n }\n\n return {\n version,\n currentProfile,\n profiles,\n };\n}\n\nexport function readContext(contextPath?: string): ClientContext {\n const filePath = resolveContextPath(contextPath);\n if (!fs.existsSync(filePath)) {\n return defaultClientContext();\n }\n\n const raw = parseJson(filePath);\n return normalizeContext(raw);\n}\n\nexport function writeContext(context: ClientContext, contextPath?: string): void {\n const filePath = resolveContextPath(contextPath);\n const dir = path.dirname(filePath);\n fs.mkdirSync(dir, { recursive: true });\n\n const normalized = normalizeContext(context);\n fs.writeFileSync(filePath, `${JSON.stringify(normalized, null, 2)}\\n`, { mode: 0o600 });\n}\n\nexport function upsertProfile(\n profileName: string,\n patch: Partial<ClientContextProfile>,\n contextPath?: string,\n): ClientContext {\n const context = readContext(contextPath);\n const existing = context.profiles[profileName] ?? {};\n const merged: ClientContextProfile = {\n ...existing,\n ...patch,\n };\n\n if (patch.apiBase !== undefined && patch.apiBase.trim().length === 0) {\n delete merged.apiBase;\n }\n if (patch.companyId !== undefined && patch.companyId.trim().length === 0) {\n delete merged.companyId;\n }\n if (patch.apiKeyEnvVarName !== undefined && patch.apiKeyEnvVarName.trim().length === 0) {\n delete merged.apiKeyEnvVarName;\n }\n\n context.profiles[profileName] = merged;\n context.currentProfile = context.currentProfile || profileName;\n writeContext(context, contextPath);\n return context;\n}\n\nexport function setCurrentProfile(profileName: string, contextPath?: string): ClientContext {\n const context = readContext(contextPath);\n if (!context.profiles[profileName]) {\n context.profiles[profileName] = {};\n }\n context.currentProfile = profileName;\n writeContext(context, contextPath);\n return context;\n}\n\nexport function resolveProfile(\n context: ClientContext,\n profileName?: string,\n): { name: string; profile: ClientContextProfile } {\n const name = profileName?.trim() || context.currentProfile || DEFAULT_PROFILE;\n const profile = context.profiles[name] ?? {};\n return { name, profile };\n}\n", "import { URL } from \"node:url\";\n\nexport class ApiRequestError extends Error {\n status: number;\n details?: unknown;\n body?: unknown;\n\n constructor(status: number, message: string, details?: unknown, body?: unknown) {\n super(message);\n this.status = status;\n this.details = details;\n this.body = body;\n }\n}\n\ninterface RequestOptions {\n ignoreNotFound?: boolean;\n}\n\ninterface ApiClientOptions {\n apiBase: string;\n apiKey?: string;\n runId?: string;\n}\n\nexport class PaperclipApiClient {\n readonly apiBase: string;\n readonly apiKey?: string;\n readonly runId?: string;\n\n constructor(opts: ApiClientOptions) {\n this.apiBase = opts.apiBase.replace(/\\/+$/, \"\");\n this.apiKey = opts.apiKey?.trim() || undefined;\n this.runId = opts.runId?.trim() || undefined;\n }\n\n get<T>(path: string, opts?: RequestOptions): Promise<T | null> {\n return this.request<T>(path, { method: \"GET\" }, opts);\n }\n\n post<T>(path: string, body?: unknown, opts?: RequestOptions): Promise<T | null> {\n return this.request<T>(path, {\n method: \"POST\",\n body: body === undefined ? undefined : JSON.stringify(body),\n }, opts);\n }\n\n patch<T>(path: string, body?: unknown, opts?: RequestOptions): Promise<T | null> {\n return this.request<T>(path, {\n method: \"PATCH\",\n body: body === undefined ? undefined : JSON.stringify(body),\n }, opts);\n }\n\n delete<T>(path: string, opts?: RequestOptions): Promise<T | null> {\n return this.request<T>(path, { method: \"DELETE\" }, opts);\n }\n\n private async request<T>(path: string, init: RequestInit, opts?: RequestOptions): Promise<T | null> {\n const url = buildUrl(this.apiBase, path);\n\n const headers: Record<string, string> = {\n accept: \"application/json\",\n ...toStringRecord(init.headers),\n };\n\n if (init.body !== undefined) {\n headers[\"content-type\"] = headers[\"content-type\"] ?? \"application/json\";\n }\n\n if (this.apiKey) {\n headers.authorization = `Bearer ${this.apiKey}`;\n }\n\n if (this.runId) {\n headers[\"x-paperclip-run-id\"] = this.runId;\n }\n\n const response = await fetch(url, {\n ...init,\n headers,\n });\n\n if (opts?.ignoreNotFound && response.status === 404) {\n return null;\n }\n\n if (!response.ok) {\n throw await toApiError(response);\n }\n\n if (response.status === 204) {\n return null;\n }\n\n const text = await response.text();\n if (!text.trim()) {\n return null;\n }\n\n return safeParseJson(text) as T;\n }\n}\n\nfunction buildUrl(apiBase: string, path: string): string {\n const normalizedPath = path.startsWith(\"/\") ? path : `/${path}`;\n const url = new URL(apiBase);\n url.pathname = `${url.pathname.replace(/\\/+$/, \"\")}${normalizedPath}`;\n return url.toString();\n}\n\nfunction safeParseJson(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nasync function toApiError(response: Response): Promise<ApiRequestError> {\n const text = await response.text();\n const parsed = safeParseJson(text);\n\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n const body = parsed as Record<string, unknown>;\n const message =\n (typeof body.error === \"string\" && body.error.trim()) ||\n (typeof body.message === \"string\" && body.message.trim()) ||\n `Request failed with status ${response.status}`;\n\n return new ApiRequestError(response.status, message, body.details, parsed);\n }\n\n return new ApiRequestError(response.status, `Request failed with status ${response.status}`, undefined, parsed);\n}\n\nfunction toStringRecord(headers: HeadersInit | undefined): Record<string, string> {\n if (!headers) return {};\n if (Array.isArray(headers)) {\n return Object.fromEntries(headers.map(([key, value]) => [key, String(value)]));\n }\n if (headers instanceof Headers) {\n return Object.fromEntries(headers.entries());\n }\n return Object.fromEntries(\n Object.entries(headers).map(([key, value]) => [key, String(value)]),\n );\n}\n", "import { Command } from \"commander\";\nimport pc from \"picocolors\";\nimport {\n readContext,\n resolveContextPath,\n resolveProfile,\n setCurrentProfile,\n upsertProfile,\n} from \"../../client/context.js\";\nimport { printOutput } from \"./common.js\";\n\ninterface ContextOptions {\n dataDir?: string;\n context?: string;\n profile?: string;\n json?: boolean;\n}\n\ninterface ContextSetOptions extends ContextOptions {\n apiBase?: string;\n companyId?: string;\n apiKeyEnvVarName?: string;\n use?: boolean;\n}\n\nexport function registerContextCommands(program: Command): void {\n const context = program.command(\"context\").description(\"Manage CLI client context profiles\");\n\n context\n .command(\"show\")\n .description(\"Show current context and active profile\")\n .option(\"-d, --data-dir <path>\", \"Paperclip data directory root (isolates state from ~/.paperclip)\")\n .option(\"--context <path>\", \"Path to CLI context file\")\n .option(\"--profile <name>\", \"Profile to inspect\")\n .option(\"--json\", \"Output raw JSON\")\n .action((opts: ContextOptions) => {\n const contextPath = resolveContextPath(opts.context);\n const store = readContext(opts.context);\n const resolved = resolveProfile(store, opts.profile);\n const payload = {\n contextPath,\n currentProfile: store.currentProfile,\n profileName: resolved.name,\n profile: resolved.profile,\n profiles: store.profiles,\n };\n printOutput(payload, { json: opts.json });\n });\n\n context\n .command(\"list\")\n .description(\"List available context profiles\")\n .option(\"-d, --data-dir <path>\", \"Paperclip data directory root (isolates state from ~/.paperclip)\")\n .option(\"--context <path>\", \"Path to CLI context file\")\n .option(\"--json\", \"Output raw JSON\")\n .action((opts: ContextOptions) => {\n const store = readContext(opts.context);\n const rows = Object.entries(store.profiles).map(([name, profile]) => ({\n name,\n current: name === store.currentProfile,\n apiBase: profile.apiBase ?? null,\n companyId: profile.companyId ?? null,\n apiKeyEnvVarName: profile.apiKeyEnvVarName ?? null,\n }));\n printOutput(rows, { json: opts.json });\n });\n\n context\n .command(\"use\")\n .description(\"Set active context profile\")\n .argument(\"<profile>\", \"Profile name\")\n .option(\"-d, --data-dir <path>\", \"Paperclip data directory root (isolates state from ~/.paperclip)\")\n .option(\"--context <path>\", \"Path to CLI context file\")\n .action((profile: string, opts: ContextOptions) => {\n setCurrentProfile(profile, opts.context);\n console.log(pc.green(`Active profile set to '${profile}'.`));\n });\n\n context\n .command(\"set\")\n .description(\"Set values on a profile\")\n .option(\"-d, --data-dir <path>\", \"Paperclip data directory root (isolates state from ~/.paperclip)\")\n .option(\"--context <path>\", \"Path to CLI context file\")\n .option(\"--profile <name>\", \"Profile name (default: current profile)\")\n .option(\"--api-base <url>\", \"Default API base URL\")\n .option(\"--company-id <id>\", \"Default company ID\")\n .option(\"--api-key-env-var-name <name>\", \"Env var containing API key (recommended)\")\n .option(\"--use\", \"Set this profile as active\")\n .option(\"--json\", \"Output raw JSON\")\n .action((opts: ContextSetOptions) => {\n const existing = readContext(opts.context);\n const targetProfile = opts.profile?.trim() || existing.currentProfile || \"default\";\n\n upsertProfile(\n targetProfile,\n {\n apiBase: opts.apiBase,\n companyId: opts.companyId,\n apiKeyEnvVarName: opts.apiKeyEnvVarName,\n },\n opts.context,\n );\n\n if (opts.use) {\n setCurrentProfile(targetProfile, opts.context);\n }\n\n const updated = readContext(opts.context);\n const resolved = resolveProfile(updated, targetProfile);\n const payload = {\n contextPath: resolveContextPath(opts.context),\n currentProfile: updated.currentProfile,\n profileName: resolved.name,\n profile: resolved.profile,\n };\n\n if (!opts.json) {\n console.log(pc.green(`Updated profile '${targetProfile}'.`));\n if (opts.use) {\n console.log(pc.green(`Set '${targetProfile}' as active profile.`));\n }\n }\n printOutput(payload, { json: opts.json });\n });\n}\n", "import { Command } from \"commander\";\nimport { mkdir, readFile, stat, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type {\n Company,\n CompanyPortabilityExportResult,\n CompanyPortabilityInclude,\n CompanyPortabilityManifest,\n CompanyPortabilityPreviewResult,\n CompanyPortabilityImportResult,\n} from \"@paperclipai/shared\";\nimport { ApiRequestError } from \"../../client/http.js\";\nimport {\n addCommonClientOptions,\n formatInlineRecord,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface CompanyCommandOptions extends BaseClientOptions {}\ntype CompanyDeleteSelectorMode = \"auto\" | \"id\" | \"prefix\";\ntype CompanyImportTargetMode = \"new\" | \"existing\";\ntype CompanyCollisionMode = \"rename\" | \"skip\" | \"replace\";\n\ninterface CompanyDeleteOptions extends BaseClientOptions {\n by?: CompanyDeleteSelectorMode;\n yes?: boolean;\n confirm?: string;\n}\n\ninterface CompanyExportOptions extends BaseClientOptions {\n out?: string;\n include?: string;\n}\n\ninterface CompanyImportOptions extends BaseClientOptions {\n from?: string;\n include?: string;\n target?: CompanyImportTargetMode;\n companyId?: string;\n newCompanyName?: string;\n agents?: string;\n collision?: CompanyCollisionMode;\n dryRun?: boolean;\n}\n\nfunction isUuidLike(value: string): boolean {\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);\n}\n\nfunction normalizeSelector(input: string): string {\n return input.trim();\n}\n\nfunction parseInclude(input: string | undefined): CompanyPortabilityInclude {\n if (!input || !input.trim()) return { company: true, agents: true };\n const values = input.split(\",\").map((part) => part.trim().toLowerCase()).filter(Boolean);\n const include = {\n company: values.includes(\"company\"),\n agents: values.includes(\"agents\"),\n };\n if (!include.company && !include.agents) {\n throw new Error(\"Invalid --include value. Use one or both of: company,agents\");\n }\n return include;\n}\n\nfunction parseAgents(input: string | undefined): \"all\" | string[] {\n if (!input || !input.trim()) return \"all\";\n const normalized = input.trim().toLowerCase();\n if (normalized === \"all\") return \"all\";\n const values = input.split(\",\").map((part) => part.trim()).filter(Boolean);\n if (values.length === 0) return \"all\";\n return Array.from(new Set(values));\n}\n\nfunction isHttpUrl(input: string): boolean {\n return /^https?:\\/\\//i.test(input.trim());\n}\n\nfunction isGithubUrl(input: string): boolean {\n return /^https?:\\/\\/github\\.com\\//i.test(input.trim());\n}\n\nasync function resolveInlineSourceFromPath(inputPath: string): Promise<{\n manifest: CompanyPortabilityManifest;\n files: Record<string, string>;\n}> {\n const resolved = path.resolve(inputPath);\n const resolvedStat = await stat(resolved);\n const manifestPath = resolvedStat.isDirectory()\n ? path.join(resolved, \"paperclip.manifest.json\")\n : resolved;\n const manifestBaseDir = path.dirname(manifestPath);\n const manifestRaw = await readFile(manifestPath, \"utf8\");\n const manifest = JSON.parse(manifestRaw) as CompanyPortabilityManifest;\n const files: Record<string, string> = {};\n\n if (manifest.company?.path) {\n const companyPath = manifest.company.path.replace(/\\\\/g, \"/\");\n files[companyPath] = await readFile(path.join(manifestBaseDir, companyPath), \"utf8\");\n }\n for (const agent of manifest.agents ?? []) {\n const agentPath = agent.path.replace(/\\\\/g, \"/\");\n files[agentPath] = await readFile(path.join(manifestBaseDir, agentPath), \"utf8\");\n }\n\n return { manifest, files };\n}\n\nasync function writeExportToFolder(outDir: string, exported: CompanyPortabilityExportResult): Promise<void> {\n const root = path.resolve(outDir);\n await mkdir(root, { recursive: true });\n const manifestPath = path.join(root, \"paperclip.manifest.json\");\n await writeFile(manifestPath, JSON.stringify(exported.manifest, null, 2), \"utf8\");\n for (const [relativePath, content] of Object.entries(exported.files)) {\n const normalized = relativePath.replace(/\\\\/g, \"/\");\n const filePath = path.join(root, normalized);\n await mkdir(path.dirname(filePath), { recursive: true });\n await writeFile(filePath, content, \"utf8\");\n }\n}\n\nfunction matchesPrefix(company: Company, selector: string): boolean {\n return company.issuePrefix.toUpperCase() === selector.toUpperCase();\n}\n\nexport function resolveCompanyForDeletion(\n companies: Company[],\n selectorRaw: string,\n by: CompanyDeleteSelectorMode = \"auto\",\n): Company {\n const selector = normalizeSelector(selectorRaw);\n if (!selector) {\n throw new Error(\"Company selector is required.\");\n }\n\n const idMatch = companies.find((company) => company.id === selector);\n const prefixMatch = companies.find((company) => matchesPrefix(company, selector));\n\n if (by === \"id\") {\n if (!idMatch) {\n throw new Error(`No company found by ID '${selector}'.`);\n }\n return idMatch;\n }\n\n if (by === \"prefix\") {\n if (!prefixMatch) {\n throw new Error(`No company found by shortname/prefix '${selector}'.`);\n }\n return prefixMatch;\n }\n\n if (idMatch && prefixMatch && idMatch.id !== prefixMatch.id) {\n throw new Error(\n `Selector '${selector}' is ambiguous (matches both an ID and a shortname). Re-run with --by id or --by prefix.`,\n );\n }\n\n if (idMatch) return idMatch;\n if (prefixMatch) return prefixMatch;\n\n throw new Error(\n `No company found for selector '${selector}'. Use company ID or issue prefix (for example PAP).`,\n );\n}\n\nexport function assertDeleteConfirmation(company: Company, opts: CompanyDeleteOptions): void {\n if (!opts.yes) {\n throw new Error(\"Deletion requires --yes.\");\n }\n\n const confirm = opts.confirm?.trim();\n if (!confirm) {\n throw new Error(\n \"Deletion requires --confirm <value> where value matches the company ID or issue prefix.\",\n );\n }\n\n const confirmsById = confirm === company.id;\n const confirmsByPrefix = confirm.toUpperCase() === company.issuePrefix.toUpperCase();\n if (!confirmsById && !confirmsByPrefix) {\n throw new Error(\n `Confirmation '${confirm}' does not match target company. Expected ID '${company.id}' or prefix '${company.issuePrefix}'.`,\n );\n }\n}\n\nfunction assertDeleteFlags(opts: CompanyDeleteOptions): void {\n if (!opts.yes) {\n throw new Error(\"Deletion requires --yes.\");\n }\n if (!opts.confirm?.trim()) {\n throw new Error(\n \"Deletion requires --confirm <value> where value matches the company ID or issue prefix.\",\n );\n }\n}\n\nexport function registerCompanyCommands(program: Command): void {\n const company = program.command(\"company\").description(\"Company operations\");\n\n addCommonClientOptions(\n company\n .command(\"list\")\n .description(\"List companies\")\n .action(async (opts: CompanyCommandOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const rows = (await ctx.api.get<Company[]>(\"/api/companies\")) ?? [];\n if (ctx.json) {\n printOutput(rows, { json: true });\n return;\n }\n\n if (rows.length === 0) {\n printOutput([], { json: false });\n return;\n }\n\n const formatted = rows.map((row) => ({\n id: row.id,\n name: row.name,\n status: row.status,\n budgetMonthlyCents: row.budgetMonthlyCents,\n spentMonthlyCents: row.spentMonthlyCents,\n requireBoardApprovalForNewAgents: row.requireBoardApprovalForNewAgents,\n }));\n for (const row of formatted) {\n console.log(formatInlineRecord(row));\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n company\n .command(\"get\")\n .description(\"Get one company\")\n .argument(\"<companyId>\", \"Company ID\")\n .action(async (companyId: string, opts: CompanyCommandOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const row = await ctx.api.get<Company>(`/api/companies/${companyId}`);\n printOutput(row, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n company\n .command(\"export\")\n .description(\"Export a company into portable manifest + markdown files\")\n .argument(\"<companyId>\", \"Company ID\")\n .requiredOption(\"--out <path>\", \"Output directory\")\n .option(\"--include <values>\", \"Comma-separated include set: company,agents\", \"company,agents\")\n .action(async (companyId: string, opts: CompanyExportOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const include = parseInclude(opts.include);\n const exported = await ctx.api.post<CompanyPortabilityExportResult>(\n `/api/companies/${companyId}/export`,\n { include },\n );\n if (!exported) {\n throw new Error(\"Export request returned no data\");\n }\n await writeExportToFolder(opts.out!, exported);\n printOutput(\n {\n ok: true,\n out: path.resolve(opts.out!),\n filesWritten: Object.keys(exported.files).length + 1,\n warningCount: exported.warnings.length,\n },\n { json: ctx.json },\n );\n if (!ctx.json && exported.warnings.length > 0) {\n for (const warning of exported.warnings) {\n console.log(`warning=${warning}`);\n }\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n company\n .command(\"import\")\n .description(\"Import a portable company package from local path, URL, or GitHub\")\n .requiredOption(\"--from <pathOrUrl>\", \"Source path or URL\")\n .option(\"--include <values>\", \"Comma-separated include set: company,agents\", \"company,agents\")\n .option(\"--target <mode>\", \"Target mode: new | existing\")\n .option(\"-C, --company-id <id>\", \"Existing target company ID\")\n .option(\"--new-company-name <name>\", \"Name override for --target new\")\n .option(\"--agents <list>\", \"Comma-separated agent slugs to import, or all\", \"all\")\n .option(\"--collision <mode>\", \"Collision strategy: rename | skip | replace\", \"rename\")\n .option(\"--dry-run\", \"Run preview only without applying\", false)\n .action(async (opts: CompanyImportOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const from = (opts.from ?? \"\").trim();\n if (!from) {\n throw new Error(\"--from is required\");\n }\n\n const include = parseInclude(opts.include);\n const agents = parseAgents(opts.agents);\n const collision = (opts.collision ?? \"rename\").toLowerCase() as CompanyCollisionMode;\n if (![\"rename\", \"skip\", \"replace\"].includes(collision)) {\n throw new Error(\"Invalid --collision value. Use: rename, skip, replace\");\n }\n\n const inferredTarget = opts.target ?? (opts.companyId || ctx.companyId ? \"existing\" : \"new\");\n const target = inferredTarget.toLowerCase() as CompanyImportTargetMode;\n if (![\"new\", \"existing\"].includes(target)) {\n throw new Error(\"Invalid --target value. Use: new | existing\");\n }\n\n const existingTargetCompanyId = opts.companyId?.trim() || ctx.companyId;\n const targetPayload =\n target === \"existing\"\n ? {\n mode: \"existing_company\" as const,\n companyId: existingTargetCompanyId,\n }\n : {\n mode: \"new_company\" as const,\n newCompanyName: opts.newCompanyName?.trim() || null,\n };\n\n if (targetPayload.mode === \"existing_company\" && !targetPayload.companyId) {\n throw new Error(\"Target existing company requires --company-id (or context default companyId).\");\n }\n\n let sourcePayload:\n | { type: \"inline\"; manifest: CompanyPortabilityManifest; files: Record<string, string> }\n | { type: \"url\"; url: string }\n | { type: \"github\"; url: string };\n\n if (isHttpUrl(from)) {\n sourcePayload = isGithubUrl(from)\n ? { type: \"github\", url: from }\n : { type: \"url\", url: from };\n } else {\n const inline = await resolveInlineSourceFromPath(from);\n sourcePayload = {\n type: \"inline\",\n manifest: inline.manifest,\n files: inline.files,\n };\n }\n\n const payload = {\n source: sourcePayload,\n include,\n target: targetPayload,\n agents,\n collisionStrategy: collision,\n };\n\n if (opts.dryRun) {\n const preview = await ctx.api.post<CompanyPortabilityPreviewResult>(\n \"/api/companies/import/preview\",\n payload,\n );\n printOutput(preview, { json: ctx.json });\n return;\n }\n\n const imported = await ctx.api.post<CompanyPortabilityImportResult>(\"/api/companies/import\", payload);\n printOutput(imported, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n company\n .command(\"delete\")\n .description(\"Delete a company by ID or shortname/prefix (destructive)\")\n .argument(\"<selector>\", \"Company ID or issue prefix (for example PAP)\")\n .option(\n \"--by <mode>\",\n \"Selector mode: auto | id | prefix\",\n \"auto\",\n )\n .option(\"--yes\", \"Required safety flag to confirm destructive action\", false)\n .option(\n \"--confirm <value>\",\n \"Required safety value: target company ID or shortname/prefix\",\n )\n .action(async (selector: string, opts: CompanyDeleteOptions) => {\n try {\n const by = (opts.by ?? \"auto\").trim().toLowerCase() as CompanyDeleteSelectorMode;\n if (![\"auto\", \"id\", \"prefix\"].includes(by)) {\n throw new Error(`Invalid --by mode '${opts.by}'. Expected one of: auto, id, prefix.`);\n }\n\n const ctx = resolveCommandContext(opts);\n const normalizedSelector = normalizeSelector(selector);\n assertDeleteFlags(opts);\n\n let target: Company | null = null;\n const shouldTryIdLookup = by === \"id\" || (by === \"auto\" && isUuidLike(normalizedSelector));\n if (shouldTryIdLookup) {\n const byId = await ctx.api.get<Company>(`/api/companies/${normalizedSelector}`, { ignoreNotFound: true });\n if (byId) {\n target = byId;\n } else if (by === \"id\") {\n throw new Error(`No company found by ID '${normalizedSelector}'.`);\n }\n }\n\n if (!target && ctx.companyId) {\n const scoped = await ctx.api.get<Company>(`/api/companies/${ctx.companyId}`, { ignoreNotFound: true });\n if (scoped) {\n try {\n target = resolveCompanyForDeletion([scoped], normalizedSelector, by);\n } catch {\n // Fallback to board-wide lookup below.\n }\n }\n }\n\n if (!target) {\n try {\n const companies = (await ctx.api.get<Company[]>(\"/api/companies\")) ?? [];\n target = resolveCompanyForDeletion(companies, normalizedSelector, by);\n } catch (error) {\n if (error instanceof ApiRequestError && error.status === 403 && error.message.includes(\"Board access required\")) {\n throw new Error(\n \"Board access is required to resolve companies across the instance. Use a company ID/prefix for your current company, or run with board authentication.\",\n );\n }\n throw error;\n }\n }\n\n if (!target) {\n throw new Error(`No company found for selector '${normalizedSelector}'.`);\n }\n\n assertDeleteConfirmation(target, opts);\n\n await ctx.api.delete<{ ok: true }>(`/api/companies/${target.id}`);\n\n printOutput(\n {\n ok: true,\n deletedCompanyId: target.id,\n deletedCompanyName: target.name,\n deletedCompanyPrefix: target.issuePrefix,\n },\n { json: ctx.json },\n );\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n}\n", "import { Command } from \"commander\";\nimport {\n addIssueCommentSchema,\n checkoutIssueSchema,\n createIssueSchema,\n updateIssueSchema,\n type Issue,\n type IssueComment,\n} from \"@paperclipai/shared\";\nimport {\n addCommonClientOptions,\n formatInlineRecord,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface IssueBaseOptions extends BaseClientOptions {\n status?: string;\n assigneeAgentId?: string;\n projectId?: string;\n match?: string;\n}\n\ninterface IssueCreateOptions extends BaseClientOptions {\n title: string;\n description?: string;\n status?: string;\n priority?: string;\n assigneeAgentId?: string;\n projectId?: string;\n goalId?: string;\n parentId?: string;\n requestDepth?: string;\n billingCode?: string;\n}\n\ninterface IssueUpdateOptions extends BaseClientOptions {\n title?: string;\n description?: string;\n status?: string;\n priority?: string;\n assigneeAgentId?: string;\n projectId?: string;\n goalId?: string;\n parentId?: string;\n requestDepth?: string;\n billingCode?: string;\n comment?: string;\n hiddenAt?: string;\n}\n\ninterface IssueCommentOptions extends BaseClientOptions {\n body: string;\n reopen?: boolean;\n}\n\ninterface IssueCheckoutOptions extends BaseClientOptions {\n agentId: string;\n expectedStatuses?: string;\n}\n\nexport function registerIssueCommands(program: Command): void {\n const issue = program.command(\"issue\").description(\"Issue operations\");\n\n addCommonClientOptions(\n issue\n .command(\"list\")\n .description(\"List issues for a company\")\n .option(\"-C, --company-id <id>\", \"Company ID\")\n .option(\"--status <csv>\", \"Comma-separated statuses\")\n .option(\"--assignee-agent-id <id>\", \"Filter by assignee agent ID\")\n .option(\"--project-id <id>\", \"Filter by project ID\")\n .option(\"--match <text>\", \"Local text match on identifier/title/description\")\n .action(async (opts: IssueBaseOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const params = new URLSearchParams();\n if (opts.status) params.set(\"status\", opts.status);\n if (opts.assigneeAgentId) params.set(\"assigneeAgentId\", opts.assigneeAgentId);\n if (opts.projectId) params.set(\"projectId\", opts.projectId);\n\n const query = params.toString();\n const path = `/api/companies/${ctx.companyId}/issues${query ? `?${query}` : \"\"}`;\n const rows = (await ctx.api.get<Issue[]>(path)) ?? [];\n\n const filtered = filterIssueRows(rows, opts.match);\n if (ctx.json) {\n printOutput(filtered, { json: true });\n return;\n }\n\n if (filtered.length === 0) {\n printOutput([], { json: false });\n return;\n }\n\n for (const item of filtered) {\n console.log(\n formatInlineRecord({\n identifier: item.identifier,\n id: item.id,\n status: item.status,\n priority: item.priority,\n assigneeAgentId: item.assigneeAgentId,\n title: item.title,\n projectId: item.projectId,\n }),\n );\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n\n addCommonClientOptions(\n issue\n .command(\"get\")\n .description(\"Get an issue by UUID or identifier (e.g. PC-12)\")\n .argument(\"<idOrIdentifier>\", \"Issue ID or identifier\")\n .action(async (idOrIdentifier: string, opts: BaseClientOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const row = await ctx.api.get<Issue>(`/api/issues/${idOrIdentifier}`);\n printOutput(row, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n issue\n .command(\"create\")\n .description(\"Create an issue\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .requiredOption(\"--title <title>\", \"Issue title\")\n .option(\"--description <text>\", \"Issue description\")\n .option(\"--status <status>\", \"Issue status\")\n .option(\"--priority <priority>\", \"Issue priority\")\n .option(\"--assignee-agent-id <id>\", \"Assignee agent ID\")\n .option(\"--project-id <id>\", \"Project ID\")\n .option(\"--goal-id <id>\", \"Goal ID\")\n .option(\"--parent-id <id>\", \"Parent issue ID\")\n .option(\"--request-depth <n>\", \"Request depth integer\")\n .option(\"--billing-code <code>\", \"Billing code\")\n .action(async (opts: IssueCreateOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const payload = createIssueSchema.parse({\n title: opts.title,\n description: opts.description,\n status: opts.status,\n priority: opts.priority,\n assigneeAgentId: opts.assigneeAgentId,\n projectId: opts.projectId,\n goalId: opts.goalId,\n parentId: opts.parentId,\n requestDepth: parseOptionalInt(opts.requestDepth),\n billingCode: opts.billingCode,\n });\n\n const created = await ctx.api.post<Issue>(`/api/companies/${ctx.companyId}/issues`, payload);\n printOutput(created, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n\n addCommonClientOptions(\n issue\n .command(\"update\")\n .description(\"Update an issue\")\n .argument(\"<issueId>\", \"Issue ID\")\n .option(\"--title <title>\", \"Issue title\")\n .option(\"--description <text>\", \"Issue description\")\n .option(\"--status <status>\", \"Issue status\")\n .option(\"--priority <priority>\", \"Issue priority\")\n .option(\"--assignee-agent-id <id>\", \"Assignee agent ID\")\n .option(\"--project-id <id>\", \"Project ID\")\n .option(\"--goal-id <id>\", \"Goal ID\")\n .option(\"--parent-id <id>\", \"Parent issue ID\")\n .option(\"--request-depth <n>\", \"Request depth integer\")\n .option(\"--billing-code <code>\", \"Billing code\")\n .option(\"--comment <text>\", \"Optional comment to add with update\")\n .option(\"--hidden-at <iso8601|null>\", \"Set hiddenAt timestamp or literal 'null'\")\n .action(async (issueId: string, opts: IssueUpdateOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = updateIssueSchema.parse({\n title: opts.title,\n description: opts.description,\n status: opts.status,\n priority: opts.priority,\n assigneeAgentId: opts.assigneeAgentId,\n projectId: opts.projectId,\n goalId: opts.goalId,\n parentId: opts.parentId,\n requestDepth: parseOptionalInt(opts.requestDepth),\n billingCode: opts.billingCode,\n comment: opts.comment,\n hiddenAt: parseHiddenAt(opts.hiddenAt),\n });\n\n const updated = await ctx.api.patch<Issue & { comment?: IssueComment | null }>(`/api/issues/${issueId}`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n issue\n .command(\"comment\")\n .description(\"Add comment to issue\")\n .argument(\"<issueId>\", \"Issue ID\")\n .requiredOption(\"--body <text>\", \"Comment body\")\n .option(\"--reopen\", \"Reopen if issue is done/cancelled\")\n .action(async (issueId: string, opts: IssueCommentOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = addIssueCommentSchema.parse({\n body: opts.body,\n reopen: opts.reopen,\n });\n const comment = await ctx.api.post<IssueComment>(`/api/issues/${issueId}/comments`, payload);\n printOutput(comment, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n issue\n .command(\"checkout\")\n .description(\"Checkout issue for an agent\")\n .argument(\"<issueId>\", \"Issue ID\")\n .requiredOption(\"--agent-id <id>\", \"Agent ID\")\n .option(\n \"--expected-statuses <csv>\",\n \"Expected current statuses\",\n \"todo,backlog,blocked\",\n )\n .action(async (issueId: string, opts: IssueCheckoutOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = checkoutIssueSchema.parse({\n agentId: opts.agentId,\n expectedStatuses: parseCsv(opts.expectedStatuses),\n });\n const updated = await ctx.api.post<Issue>(`/api/issues/${issueId}/checkout`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n issue\n .command(\"release\")\n .description(\"Release issue back to todo and clear assignee\")\n .argument(\"<issueId>\", \"Issue ID\")\n .action(async (issueId: string, opts: BaseClientOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const updated = await ctx.api.post<Issue>(`/api/issues/${issueId}/release`, {});\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n}\n\nfunction parseCsv(value: string | undefined): string[] {\n if (!value) return [];\n return value.split(\",\").map((v) => v.trim()).filter(Boolean);\n}\n\nfunction parseOptionalInt(value: string | undefined): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number.parseInt(value, 10);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Invalid integer value: ${value}`);\n }\n return parsed;\n}\n\nfunction parseHiddenAt(value: string | undefined): string | null | undefined {\n if (value === undefined) return undefined;\n if (value.trim().toLowerCase() === \"null\") return null;\n return value;\n}\n\nfunction filterIssueRows(rows: Issue[], match: string | undefined): Issue[] {\n if (!match?.trim()) return rows;\n const needle = match.trim().toLowerCase();\n return rows.filter((row) => {\n const text = [row.identifier, row.title, row.description]\n .filter((part): part is string => Boolean(part))\n .join(\"\\n\")\n .toLowerCase();\n return text.includes(needle);\n });\n}\n", "import { Command } from \"commander\";\nimport type { Agent } from \"@paperclipai/shared\";\nimport {\n addCommonClientOptions,\n formatInlineRecord,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface AgentListOptions extends BaseClientOptions {\n companyId?: string;\n}\n\nexport function registerAgentCommands(program: Command): void {\n const agent = program.command(\"agent\").description(\"Agent operations\");\n\n addCommonClientOptions(\n agent\n .command(\"list\")\n .description(\"List agents for a company\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .action(async (opts: AgentListOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const rows = (await ctx.api.get<Agent[]>(`/api/companies/${ctx.companyId}/agents`)) ?? [];\n\n if (ctx.json) {\n printOutput(rows, { json: true });\n return;\n }\n\n if (rows.length === 0) {\n printOutput([], { json: false });\n return;\n }\n\n for (const row of rows) {\n console.log(\n formatInlineRecord({\n id: row.id,\n name: row.name,\n role: row.role,\n status: row.status,\n reportsTo: row.reportsTo,\n budgetMonthlyCents: row.budgetMonthlyCents,\n spentMonthlyCents: row.spentMonthlyCents,\n }),\n );\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n\n addCommonClientOptions(\n agent\n .command(\"get\")\n .description(\"Get one agent\")\n .argument(\"<agentId>\", \"Agent ID\")\n .action(async (agentId: string, opts: BaseClientOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const row = await ctx.api.get<Agent>(`/api/agents/${agentId}`);\n printOutput(row, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n}\n", "import { Command } from \"commander\";\nimport {\n createApprovalSchema,\n requestApprovalRevisionSchema,\n resolveApprovalSchema,\n resubmitApprovalSchema,\n type Approval,\n type ApprovalComment,\n} from \"@paperclipai/shared\";\nimport {\n addCommonClientOptions,\n formatInlineRecord,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface ApprovalListOptions extends BaseClientOptions {\n companyId?: string;\n status?: string;\n}\n\ninterface ApprovalDecisionOptions extends BaseClientOptions {\n decisionNote?: string;\n decidedByUserId?: string;\n}\n\ninterface ApprovalCreateOptions extends BaseClientOptions {\n companyId?: string;\n type: string;\n requestedByAgentId?: string;\n payload: string;\n issueIds?: string;\n}\n\ninterface ApprovalResubmitOptions extends BaseClientOptions {\n payload?: string;\n}\n\ninterface ApprovalCommentOptions extends BaseClientOptions {\n body: string;\n}\n\nexport function registerApprovalCommands(program: Command): void {\n const approval = program.command(\"approval\").description(\"Approval operations\");\n\n addCommonClientOptions(\n approval\n .command(\"list\")\n .description(\"List approvals for a company\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .option(\"--status <status>\", \"Status filter\")\n .action(async (opts: ApprovalListOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const params = new URLSearchParams();\n if (opts.status) params.set(\"status\", opts.status);\n const query = params.toString();\n const rows =\n (await ctx.api.get<Approval[]>(\n `/api/companies/${ctx.companyId}/approvals${query ? `?${query}` : \"\"}`,\n )) ?? [];\n\n if (ctx.json) {\n printOutput(rows, { json: true });\n return;\n }\n\n if (rows.length === 0) {\n printOutput([], { json: false });\n return;\n }\n\n for (const row of rows) {\n console.log(\n formatInlineRecord({\n id: row.id,\n type: row.type,\n status: row.status,\n requestedByAgentId: row.requestedByAgentId,\n requestedByUserId: row.requestedByUserId,\n }),\n );\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n\n addCommonClientOptions(\n approval\n .command(\"get\")\n .description(\"Get one approval\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .action(async (approvalId: string, opts: BaseClientOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const row = await ctx.api.get<Approval>(`/api/approvals/${approvalId}`);\n printOutput(row, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n approval\n .command(\"create\")\n .description(\"Create an approval request\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .requiredOption(\"--type <type>\", \"Approval type (hire_agent|approve_ceo_strategy)\")\n .requiredOption(\"--payload <json>\", \"Approval payload as JSON object\")\n .option(\"--requested-by-agent-id <id>\", \"Requesting agent ID\")\n .option(\"--issue-ids <csv>\", \"Comma-separated linked issue IDs\")\n .action(async (opts: ApprovalCreateOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const payloadJson = parseJsonObject(opts.payload, \"payload\");\n const payload = createApprovalSchema.parse({\n type: opts.type,\n payload: payloadJson,\n requestedByAgentId: opts.requestedByAgentId,\n issueIds: parseCsv(opts.issueIds),\n });\n const created = await ctx.api.post<Approval>(`/api/companies/${ctx.companyId}/approvals`, payload);\n printOutput(created, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n\n addCommonClientOptions(\n approval\n .command(\"approve\")\n .description(\"Approve an approval request\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .option(\"--decision-note <text>\", \"Decision note\")\n .option(\"--decided-by-user-id <id>\", \"Decision actor user ID\")\n .action(async (approvalId: string, opts: ApprovalDecisionOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = resolveApprovalSchema.parse({\n decisionNote: opts.decisionNote,\n decidedByUserId: opts.decidedByUserId,\n });\n const updated = await ctx.api.post<Approval>(`/api/approvals/${approvalId}/approve`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n approval\n .command(\"reject\")\n .description(\"Reject an approval request\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .option(\"--decision-note <text>\", \"Decision note\")\n .option(\"--decided-by-user-id <id>\", \"Decision actor user ID\")\n .action(async (approvalId: string, opts: ApprovalDecisionOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = resolveApprovalSchema.parse({\n decisionNote: opts.decisionNote,\n decidedByUserId: opts.decidedByUserId,\n });\n const updated = await ctx.api.post<Approval>(`/api/approvals/${approvalId}/reject`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n approval\n .command(\"request-revision\")\n .description(\"Request revision for an approval\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .option(\"--decision-note <text>\", \"Decision note\")\n .option(\"--decided-by-user-id <id>\", \"Decision actor user ID\")\n .action(async (approvalId: string, opts: ApprovalDecisionOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = requestApprovalRevisionSchema.parse({\n decisionNote: opts.decisionNote,\n decidedByUserId: opts.decidedByUserId,\n });\n const updated = await ctx.api.post<Approval>(`/api/approvals/${approvalId}/request-revision`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n approval\n .command(\"resubmit\")\n .description(\"Resubmit an approval (optionally with new payload)\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .option(\"--payload <json>\", \"Payload JSON object\")\n .action(async (approvalId: string, opts: ApprovalResubmitOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const payload = resubmitApprovalSchema.parse({\n payload: opts.payload ? parseJsonObject(opts.payload, \"payload\") : undefined,\n });\n const updated = await ctx.api.post<Approval>(`/api/approvals/${approvalId}/resubmit`, payload);\n printOutput(updated, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n\n addCommonClientOptions(\n approval\n .command(\"comment\")\n .description(\"Add comment to an approval\")\n .argument(\"<approvalId>\", \"Approval ID\")\n .requiredOption(\"--body <text>\", \"Comment body\")\n .action(async (approvalId: string, opts: ApprovalCommentOptions) => {\n try {\n const ctx = resolveCommandContext(opts);\n const created = await ctx.api.post<ApprovalComment>(`/api/approvals/${approvalId}/comments`, {\n body: opts.body,\n });\n printOutput(created, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n );\n}\n\nfunction parseCsv(value: string | undefined): string[] | undefined {\n if (!value) return undefined;\n const rows = value.split(\",\").map((v) => v.trim()).filter(Boolean);\n return rows.length > 0 ? rows : undefined;\n}\n\nfunction parseJsonObject(value: string, name: string): Record<string, unknown> {\n try {\n const parsed = JSON.parse(value) as unknown;\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n throw new Error(`${name} must be a JSON object`);\n }\n return parsed as Record<string, unknown>;\n } catch (err) {\n throw new Error(`Invalid ${name} JSON: ${err instanceof Error ? err.message : String(err)}`);\n }\n}\n", "import { Command } from \"commander\";\nimport type { ActivityEvent } from \"@paperclipai/shared\";\nimport {\n addCommonClientOptions,\n formatInlineRecord,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface ActivityListOptions extends BaseClientOptions {\n companyId?: string;\n agentId?: string;\n entityType?: string;\n entityId?: string;\n}\n\nexport function registerActivityCommands(program: Command): void {\n const activity = program.command(\"activity\").description(\"Activity log operations\");\n\n addCommonClientOptions(\n activity\n .command(\"list\")\n .description(\"List company activity log entries\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .option(\"--agent-id <id>\", \"Filter by agent ID\")\n .option(\"--entity-type <type>\", \"Filter by entity type\")\n .option(\"--entity-id <id>\", \"Filter by entity ID\")\n .action(async (opts: ActivityListOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const params = new URLSearchParams();\n if (opts.agentId) params.set(\"agentId\", opts.agentId);\n if (opts.entityType) params.set(\"entityType\", opts.entityType);\n if (opts.entityId) params.set(\"entityId\", opts.entityId);\n\n const query = params.toString();\n const path = `/api/companies/${ctx.companyId}/activity${query ? `?${query}` : \"\"}`;\n const rows = (await ctx.api.get<ActivityEvent[]>(path)) ?? [];\n\n if (ctx.json) {\n printOutput(rows, { json: true });\n return;\n }\n\n if (rows.length === 0) {\n printOutput([], { json: false });\n return;\n }\n\n for (const row of rows) {\n console.log(\n formatInlineRecord({\n id: row.id,\n action: row.action,\n actorType: row.actorType,\n actorId: row.actorId,\n entityType: row.entityType,\n entityId: row.entityId,\n createdAt: String(row.createdAt),\n }),\n );\n }\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n}\n", "import { Command } from \"commander\";\nimport type { DashboardSummary } from \"@paperclipai/shared\";\nimport {\n addCommonClientOptions,\n handleCommandError,\n printOutput,\n resolveCommandContext,\n type BaseClientOptions,\n} from \"./common.js\";\n\ninterface DashboardGetOptions extends BaseClientOptions {\n companyId?: string;\n}\n\nexport function registerDashboardCommands(program: Command): void {\n const dashboard = program.command(\"dashboard\").description(\"Dashboard summary operations\");\n\n addCommonClientOptions(\n dashboard\n .command(\"get\")\n .description(\"Get dashboard summary for a company\")\n .requiredOption(\"-C, --company-id <id>\", \"Company ID\")\n .action(async (opts: DashboardGetOptions) => {\n try {\n const ctx = resolveCommandContext(opts, { requireCompany: true });\n const row = await ctx.api.get<DashboardSummary>(`/api/companies/${ctx.companyId}/dashboard`);\n printOutput(row, { json: ctx.json });\n } catch (err) {\n handleCommandError(err);\n }\n }),\n { includeCompany: false },\n );\n}\n", "import path from \"node:path\";\nimport {\n expandHomePrefix,\n resolveDefaultConfigPath,\n resolveDefaultContextPath,\n resolvePaperclipInstanceId,\n} from \"./home.js\";\n\nexport interface DataDirOptionLike {\n dataDir?: string;\n config?: string;\n context?: string;\n instance?: string;\n}\n\nexport interface DataDirCommandSupport {\n hasConfigOption?: boolean;\n hasContextOption?: boolean;\n}\n\nexport function applyDataDirOverride(\n options: DataDirOptionLike,\n support: DataDirCommandSupport = {},\n): string | null {\n const rawDataDir = options.dataDir?.trim();\n if (!rawDataDir) return null;\n\n const resolvedDataDir = path.resolve(expandHomePrefix(rawDataDir));\n process.env.PAPERCLIP_HOME = resolvedDataDir;\n\n if (support.hasConfigOption) {\n const hasConfigOverride = Boolean(options.config?.trim()) || Boolean(process.env.PAPERCLIP_CONFIG?.trim());\n if (!hasConfigOverride) {\n const instanceId = resolvePaperclipInstanceId(options.instance);\n process.env.PAPERCLIP_INSTANCE_ID = instanceId;\n process.env.PAPERCLIP_CONFIG = resolveDefaultConfigPath(instanceId);\n }\n }\n\n if (support.hasContextOption) {\n const hasContextOverride = Boolean(options.context?.trim()) || Boolean(process.env.PAPERCLIP_CONTEXT?.trim());\n if (!hasContextOverride) {\n process.env.PAPERCLIP_CONTEXT = resolveDefaultContextPath();\n }\n }\n\n return resolvedDataDir;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["z", "z", "z", "z", "z", "z", "z", "z", "z", "z", "z", "path", "issues", "fs", "path", "fs", "path", "randomBytes", "fs", "path", "p", "p", "p", "p", "unique", "p", "auth", "text", "pgTable", "text", "timestamp", "boolean", "pgTable", "uuid", "text", "timestamp", "uniqueIndex", "pgTable", "uuid", "text", "integer", "timestamp", "index", "pgTable", "uuid", "text", "timestamp", "uniqueIndex", "index", "pgTable", "uuid", "text", "timestamp", "jsonb", "uniqueIndex", "index", "pgTable", "uuid", "text", "timestamp", "jsonb", "index", "uniqueIndex", "pgTable", "uuid", "text", "timestamp", "jsonb", "index", "uniqueIndex", "pgTable", "uuid", "text", "timestamp", "jsonb", "index", "pgTable", "uuid", "text", "timestamp", "index", "pgTable", "uuid", "text", "timestamp", "jsonb", "index", "pgTable", "uuid", "text", "timestamp", "jsonb", "integer", "index", "pgTable", "uuid", "text", "timestamp", "jsonb", "index", "integer", "bigint", "boolean", "pgTable", "uuid", "text", "timestamp", "jsonb", "index", "uniqueIndex", "pgTable", "uuid", "text", "timestamp", "index", "pgTable", "uuid", "text", "timestamp", "index", "boolean", "index", "jsonb", "pgTable", "text", "timestamp", "uuid", "pgTable", "uuid", "timestamp", "index", "pgTable", "uuid", "text", "timestamp", "integer", "jsonb", "index", "uniqueIndex", "pgTable", "uuid", "text", "timestamp", "index", "uniqueIndex", "pgTable", "uuid", "timestamp", "index", "primaryKey", "pgTable", "uuid", "text", "timestamp", "jsonb", "index", "pgTable", "uuid", "text", "timestamp", "index", "primaryKey", "pgTable", "uuid", "text", "timestamp", "index", "pgTable", "uuid", "text", "integer", "timestamp", "index", "uniqueIndex", "pgTable", "uuid", "timestamp", "index", "uniqueIndex", "pgTable", "uuid", "text", "timestamp", "integer", "jsonb", "index", "pgTable", "uuid", "text", "timestamp", "integer", "index", "pgTable", "uuid", "text", "timestamp", "index", "pgTable", "uuid", "text", "timestamp", "jsonb", "index", "pgTable", "uuid", "text", "timestamp", "integer", "index", "uniqueIndex", "pgTable", "uuid", "text", "timestamp", "integer", "jsonb", "index", "uniqueIndex", "init_schema", "rows", "init_schema", "init_src", "init_schema", "createHash", "randomBytes", "p", "init_src", "pc", "auth", "init_path_resolver", "fs", "createDb", "init_path_resolver", "fs", "init_path_resolver", "randomBytes", "fs", "path", "init_path_resolver", "fs", "init_path_resolver", "p", "pc", "fs", "path", "p", "pc", "p", "pc", "auth", "createDb", "runCommand", "p", "pc", "defaultStorageBaseDir", "p", "pc", "auth", "p", "pc", "pc", "pc", "text", "pc", "text", "path", "pc", "pc", "fs", "path", "parseJson", "URL", "path", "text", "pc", "asRecord", "asErrorText", "pc", "adapterType", "pc", "program", "pc", "readFile", "path", "isUuidLike", "path", "readFile", "companies", "confirm", "program", "agents", "program", "path", "text", "program", "program", "parseCsv", "program", "path", "program", "path"]
7
7
  }