fimo 2.10.0-staging.5 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/bundle.json +2 -2
- package/dist/cli/index.js +3 -3
- package/package.json +8 -8
- package/release.json +2 -2
- package/templates/astro/package.json +3 -3
- package/templates/nextjs/package.json +4 -4
- package/templates/react-router/package.json +5 -5
- package/templates/sveltekit/package.json +3 -3
- package/templates/vite/package.json +5 -5
package/dist/cli/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __fimoCreateRequire } from 'node:module';
|
|
3
3
|
const require = __fimoCreateRequire(import.meta.url);
|
|
4
|
-
var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0}),__require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+x+'" is not supported')});var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);import{z}from"zod";function filterUnknownProperties(data,schema){if(data==null)return data;if(schema instanceof z.ZodOptional||schema instanceof z.ZodNullable||schema instanceof z.ZodDefault)return filterUnknownProperties(data,schema.unwrap());if(schema instanceof z.ZodArray){if(!Array.isArray(data))return data;let itemSchema=schema.unwrap();return data.map(item=>filterUnknownProperties(item,itemSchema))}if(schema instanceof z.ZodDiscriminatedUnion){if(typeof data!="object"||data===null)return data;let unionSchema=schema,discriminator=unionSchema.def.discriminator,discriminatorValue=data[discriminator],matchingSchema=unionSchema.options.find(option=>{let discriminatorField=option.shape[discriminator];return discriminatorField instanceof z.ZodLiteral?discriminatorField.def.values.includes(discriminatorValue):!1});return matchingSchema?filterUnknownProperties(data,matchingSchema):data}if(schema instanceof z.ZodObject){if(typeof data!="object")return data;let shape=schema.shape,result={};for(let key in shape)if(Object.prototype.hasOwnProperty.call(data,key)){let fieldSchema=shape[key],fieldValue2=data[key];result[key]=filterUnknownProperties(fieldValue2,fieldSchema)}if(schema.def.catchall instanceof z.ZodUnknown)for(let[key,value]of Object.entries(data))key in shape||(result[key]=value);return result}return data}function createObjectDTO(schema){return{schema,from(data){let filtered=filterUnknownProperties(data,schema);return schema.parse(filtered)},fromList(data){return data.map(item=>this.from(item))},safeParse(data){let filtered=filterUnknownProperties(data,schema);return schema.safeParse(filtered)},partial(){let partialSchema=schema.partial();return createObjectDTO(partialSchema)},pick(keys){let mask=keys.reduce((acc,key)=>({...acc,[key]:!0}),{}),picked=schema.pick(mask);return createObjectDTO(picked)},omit(keys){let mask=keys.reduce((acc,key)=>({...acc,[key]:!0}),{}),omitted=schema.omit(mask);return createObjectDTO(omitted)}}}function createDiscriminatedUnionDTO(schema){return{schema,from(data){let filtered=filterUnknownProperties(data,schema);return schema.parse(filtered)},fromList(data){return data.map(item=>this.from(item))},safeParse(data){let filtered=filterUnknownProperties(data,schema);return schema.safeParse(filtered)}}}function createDTO(schema){if(schema instanceof z.ZodObject)return createObjectDTO(schema);if(schema instanceof z.ZodDiscriminatedUnion)return createDiscriminatedUnionDTO(schema);throw new Error(`Unsupported schema type: ${schema.constructor.name}. createDTO supports ZodObject and ZodDiscriminatedUnion.`)}var init_create_dto=__esm({"../../packages/api-contracts/dist/esm/utils/create-dto.js"(){"use strict";__name(filterUnknownProperties,"filterUnknownProperties");__name(createObjectDTO,"createObjectDTO");__name(createDiscriminatedUnionDTO,"createDiscriminatedUnionDTO");__name(createDTO,"createDTO")}});import{z as z2}from"zod";function createCursorPageDataSchema(dataSchema){return z2.object({items:z2.array(dataSchema),nextCursor:z2.string().nullable()})}function createCursorPaginatedResponseSchema(dataSchema){return z2.object({data:createCursorPageDataSchema(dataSchema)})}var createResponseSchema,init_response=__esm({"../../packages/api-contracts/dist/esm/utils/response.js"(){"use strict";createResponseSchema=__name(dataSchema=>z2.object({data:dataSchema}),"createResponseSchema");__name(createCursorPageDataSchema,"createCursorPageDataSchema");__name(createCursorPaginatedResponseSchema,"createCursorPaginatedResponseSchema")}});import{z as z3}from"zod";var PaginationQuerySchema,init_pagination=__esm({"../../packages/api-contracts/dist/esm/utils/pagination.js"(){"use strict";PaginationQuerySchema=z3.object({page:z3.coerce.number().int().positive().default(1),limit:z3.coerce.number().int().positive().max(100).default(20)})}});import{z as z4}from"zod";var CommonSchemas,BaseEntitySchema,ProjectRoleKeySchema,ProjectRoleKeyWithSystemSchema,ProjectPrincipalTypeSchema,ProjectStatusSchema,ProjectInviteStatusSchema,PublicationStatusSchema,OrganizationRoleSchema,AssetTypeSchema,TemplateCodeSchema,FieldTypeSchema,CONTENT_INTERNAL_FIELD_NAMES,contentInternalFieldNames,RESERVED_CONTENT_FIELD_NAMES,contentReviewHiddenFieldNames,CONTENT_TYPE_NAME_PATTERN,CONTENT_TYPE_NAME_PATTERN_DESCRIPTION,CONTENT_FIELD_NAME_PATTERN,CONTENT_FIELD_NAME_PATTERN_DESCRIPTION,init_common=__esm({"../../packages/api-contracts/dist/esm/types/common.js"(){"use strict";CommonSchemas={timestamp:z4.coerce.date(),positiveInt:z4.number().int().positive(),nonNegativeInt:z4.number().int().nonnegative()},BaseEntitySchema=z4.object({id:z4.uuid(),createdAt:CommonSchemas.timestamp,updatedAt:CommonSchemas.timestamp}),ProjectRoleKeySchema=z4.enum(["full","edit","comment","view"]),ProjectRoleKeyWithSystemSchema=z4.enum(["full","edit","comment","view","agent","schedule"]),ProjectPrincipalTypeSchema=z4.enum(["user","org","orgRole","public","email"]),ProjectStatusSchema=z4.enum(["creating","forking","start_server","created","failed"]),ProjectInviteStatusSchema=z4.enum(["pending","accepted","revoked","expired"]),PublicationStatusSchema=z4.enum(["idle","publishing","published","failed","unpublished"]),OrganizationRoleSchema=z4.enum(["owner","admin","member"]),AssetTypeSchema=z4.enum(["file","folder"]),TemplateCodeSchema=z4.enum(["Free","PAYG","Starter","Premium","Pro"]),FieldTypeSchema=z4.enum(["string","text","richtext","media","number","boolean","date","datetime","json","reference","blocks"]),CONTENT_INTERNAL_FIELD_NAMES=["id","entryId","documentId","locale","__fimo"],contentInternalFieldNames=new Set(CONTENT_INTERNAL_FIELD_NAMES),RESERVED_CONTENT_FIELD_NAMES=[...CONTENT_INTERNAL_FIELD_NAMES,"slug","createdAt","updatedAt"],contentReviewHiddenFieldNames=new Set(RESERVED_CONTENT_FIELD_NAMES),CONTENT_TYPE_NAME_PATTERN=/^[A-Za-z]\w*$/,CONTENT_TYPE_NAME_PATTERN_DESCRIPTION="letters, numbers, and underscores, starting with a letter",CONTENT_FIELD_NAME_PATTERN=/^[A-Za-z_]\w*$/,CONTENT_FIELD_NAME_PATTERN_DESCRIPTION="letters, numbers, and underscores, starting with a letter or underscore"}});import{z as z5}from"zod";var MB,MAX_UPLOAD_FILE_SIZE_BYTES,MAX_DOCUMENT_SIZE_BYTES,MAX_AUDIO_SIZE_BYTES,MAX_IMAGE_SIZE_BYTES,MAX_VIDEO_SIZE_BYTES,MAX_ARCHIVE_SIZE_BYTES,MAX_MODEL_SIZE_BYTES,MAX_ATTACHMENT_MESSAGE_SIZE_BYTES,MODEL_MEDIA_TYPE,AttachmentModelMediaTypeSchema,MODEL_MIME_TYPES,MODEL_RENDER_VIEW_ANGLES,AttachmentModelRenderRequestSchema,AttachmentModelRenderSuccessSchema,AttachmentModelRenderFailureSchema,AttachmentModelRenderResponseSchema,AttachmentModelRenderMeterSchema,ATTACHMENT_TYPES,ATTACHMENT_MIME_TYPES,ATTACHMENT_IMAGE_MIME_TYPES,ATTACHMENT_DOCUMENT_MIME_TYPES,ATTACHMENT_ARCHIVE_MIME_TYPES,ATTACHMENT_AUDIO_MIME_TYPES,ATTACHMENT_VIDEO_MIME_TYPES,ATTACHMENT_ACCEPT_EXTENSIONS,ATTACHMENT_ACCEPT_STRING,ATTACHMENT_DROPZONE_ACCEPT,EXTENSION_MIME_TYPES,init_attachments=__esm({"../../packages/api-contracts/dist/esm/types/attachments.js"(){"use strict";MB=1024*1024,MAX_UPLOAD_FILE_SIZE_BYTES=50*MB,MAX_DOCUMENT_SIZE_BYTES=5*MB,MAX_AUDIO_SIZE_BYTES=10*MB,MAX_IMAGE_SIZE_BYTES=20*MB,MAX_VIDEO_SIZE_BYTES=20*MB,MAX_ARCHIVE_SIZE_BYTES=20*MB,MAX_MODEL_SIZE_BYTES=20*MB,MAX_ATTACHMENT_MESSAGE_SIZE_BYTES=20*MB,MODEL_MEDIA_TYPE={GLB:"model/gltf-binary",GLTF:"model/gltf+json",FBX:"model/fbx",OBJ:"model/obj",STL:"model/stl",PLY:"model/ply"},AttachmentModelMediaTypeSchema=z5.enum(MODEL_MEDIA_TYPE),MODEL_MIME_TYPES=Object.values(MODEL_MEDIA_TYPE),MODEL_RENDER_VIEW_ANGLES=[35,125,215,305],AttachmentModelRenderRequestSchema=z5.object({renderId:z5.uuid(),filename:z5.string().min(1).max(255),mediaType:AttachmentModelMediaTypeSchema,modelUrl:z5.url()}),AttachmentModelRenderSuccessSchema=z5.object({status:z5.literal("succeeded"),views:z5.tuple([z5.object({angle:z5.literal(MODEL_RENDER_VIEW_ANGLES[0]),screenshotUrl:z5.url()}),z5.object({angle:z5.literal(MODEL_RENDER_VIEW_ANGLES[1]),screenshotUrl:z5.url()}),z5.object({angle:z5.literal(MODEL_RENDER_VIEW_ANGLES[2]),screenshotUrl:z5.url()}),z5.object({angle:z5.literal(MODEL_RENDER_VIEW_ANGLES[3]),screenshotUrl:z5.url()})]),elapsedMs:z5.number().nonnegative(),browserElapsedMs:z5.number().nonnegative(),diagnostics:z5.unknown().optional()}),AttachmentModelRenderFailureSchema=z5.object({status:z5.literal("failed"),error:z5.literal("render_failed"),message:z5.string(),elapsedMs:z5.number().nonnegative(),browserElapsedMs:z5.number().nonnegative()}),AttachmentModelRenderResponseSchema=z5.discriminatedUnion("status",[AttachmentModelRenderSuccessSchema,AttachmentModelRenderFailureSchema]),AttachmentModelRenderMeterSchema=z5.object({browserElapsedMs:z5.number().nonnegative()}),ATTACHMENT_TYPES=[{mime:"image/png",extensions:[".png"],category:"image",maxSizeBytes:MAX_IMAGE_SIZE_BYTES},{mime:"image/jpeg",extensions:[".jpg",".jpeg"],category:"image",maxSizeBytes:MAX_IMAGE_SIZE_BYTES},{mime:"image/webp",extensions:[".webp"],category:"image",maxSizeBytes:MAX_IMAGE_SIZE_BYTES},{mime:"image/avif",extensions:[".avif"],category:"image",maxSizeBytes:MAX_IMAGE_SIZE_BYTES},{mime:"application/pdf",extensions:[".pdf"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/msword",extensions:[".doc"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",extensions:[".docx"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.ms-excel",extensions:[".xls"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",extensions:[".xlsx"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.ms-powerpoint",extensions:[".ppt"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation",extensions:[".pptx"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/epub+zip",extensions:[".epub"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.oasis.opendocument.text",extensions:[".odt"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.oasis.opendocument.spreadsheet",extensions:[".ods"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.oasis.opendocument.presentation",extensions:[".odp"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"text/rtf",extensions:[],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/rtf",extensions:[".rtf"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"text/html",extensions:[".html",".htm"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"text/csv",extensions:[".csv"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"text/markdown",extensions:[".md",".markdown"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/json",extensions:[".json"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"text/plain",extensions:[".txt"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/zip",extensions:[".zip"],category:"archive",maxSizeBytes:MAX_ARCHIVE_SIZE_BYTES},{mime:"audio/mpeg",extensions:[".mp3"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"audio/wav",extensions:[".wav"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"audio/aiff",extensions:[".aiff",".aif"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"audio/aac",extensions:[".aac"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"audio/ogg",extensions:[".ogg"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"audio/flac",extensions:[".flac"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"video/mp4",extensions:[".mp4"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/mpeg",extensions:[".mpeg",".mpg"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/mpg",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/quicktime",extensions:[".mov"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/mov",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/avi",extensions:[".avi"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/vnd.avi",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/x-msvideo",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/x-flv",extensions:[".flv"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/webm",extensions:[".webm"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/wmv",extensions:[".wmv"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/x-ms-wmv",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/x-ms-asf",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/3gpp",extensions:[".3gp"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.GLB,extensions:[".glb"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.GLTF,extensions:[".gltf"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.FBX,extensions:[".fbx"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.OBJ,extensions:[".obj"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.STL,extensions:[".stl"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.PLY,extensions:[".ply"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES}],ATTACHMENT_MIME_TYPES=ATTACHMENT_TYPES.map(t2=>t2.mime),ATTACHMENT_IMAGE_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="image").map(t2=>t2.mime),ATTACHMENT_DOCUMENT_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="document").map(t2=>t2.mime),ATTACHMENT_ARCHIVE_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="archive").map(t2=>t2.mime),ATTACHMENT_AUDIO_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="audio").map(t2=>t2.mime),ATTACHMENT_VIDEO_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="video").map(t2=>t2.mime),ATTACHMENT_ACCEPT_EXTENSIONS=ATTACHMENT_TYPES.flatMap(t2=>t2.extensions),ATTACHMENT_ACCEPT_STRING=[...ATTACHMENT_ACCEPT_EXTENSIONS,...ATTACHMENT_MIME_TYPES].join(","),ATTACHMENT_DROPZONE_ACCEPT=Object.fromEntries(ATTACHMENT_TYPES.map(t2=>[t2.mime,t2.extensions])),EXTENSION_MIME_TYPES=Object.fromEntries(ATTACHMENT_TYPES.flatMap(t2=>t2.extensions.map(extension=>[extension,t2.mime])))}});import{z as z6}from"zod";var AssetReadRequestSchema,AssetDerivedFileSchema,AssetReadBaseSchema,AssetReadPageSchema,AssetReadQuerySchema,AssetReadResultSchema,init_asset_reading=__esm({"../../packages/api-contracts/dist/esm/types/asset-reading.js"(){"use strict";AssetReadRequestSchema=z6.object({cursor:z6.string().optional(),query:z6.string().trim().min(1).max(500).optional()}).strict().refine(input=>input.cursor===void 0||input.query===void 0,{message:"Use either cursor or query, not both."}),AssetDerivedFileSchema=z6.object({url:z6.url(),mediaType:z6.string(),filename:z6.string()}),AssetReadBaseSchema=z6.object({assetId:z6.uuid(),filename:z6.string(),mediaType:z6.string(),representation:z6.enum(["text","table","document","archive","image","transcript","video","model"]),content:z6.string(),derivedFiles:z6.array(AssetDerivedFileSchema).optional()}),AssetReadPageSchema=AssetReadBaseSchema.extend({mode:z6.literal("page"),start:z6.number().int().nonnegative(),end:z6.number().int().nonnegative(),total:z6.number().int().nonnegative(),nextCursor:z6.string().nullable(),complete:z6.boolean()}),AssetReadQuerySchema=AssetReadBaseSchema.extend({mode:z6.literal("query"),query:z6.string(),source:z6.enum(["original-file","canonical-text","derived-files"]),truncated:z6.boolean()}),AssetReadResultSchema=z6.discriminatedUnion("mode",[AssetReadPageSchema,AssetReadQuerySchema])}});import{z as z7}from"zod";function isProcessControlEnvKey(key){return PROCESS_CONTROL_ENV_KEYS.has(key)||PROCESS_CONTROL_ENV_PREFIXES.some(prefix=>key.startsWith(prefix))}function isValidBranch(branch){return typeof branch!="string"||branch.length===0||branch.length>MAX_BRANCH_LENGTH||branch.startsWith("-")||branch.startsWith(".")||branch.includes("//")||branch.includes("--")||branch.split("/").some(segment=>segment==="..")?!1:BRANCH_ID_REGEX.test(branch)}function encodeBranchPathSegment(branch){return branch.replace(/\//g,"--")}function isProductionBranch(branch){return branch===PRODUCTION_BRANCH}function fnv1a8(s){let h=2166136261;for(let i=0;i<s.length;i++)h^=s.charCodeAt(i),h=Math.imul(h,16777619);return(h>>>0).toString(16).padStart(8,"0")}function branchResourceKey(branch){let base=branch.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,15),hash=fnv1a8(branch);return base?`${base}-${hash}`:hash}function buildTenantApiUrl(projectId2,branch,tenantApiBaseUrl){let url=new URL(tenantApiBaseUrl);return url.hostname=`${projectId2}-${branchResourceKey(branch)}.${url.hostname}`,url.toString().replace(/\/$/,"")}var FIMO_CONTENT_API_ENV_KEYS,FIMO_ANALYTICS_ENV_KEYS,FIMO_PREVIEW_SCRIPT_ENV_KEYS,FIMO_MANAGED_PROJECT_ENV_KEYS,PROCESS_CONTROL_ENV_KEYS,PROCESS_CONTROL_ENV_PREFIXES,BRANCH_ID_REGEX,MAX_BRANCH_LENGTH,BranchSchema,DEFAULT_BRANCH,PRODUCTION_BRANCH,envResourceKey,init_env=__esm({"../../packages/api-contracts/dist/esm/types/env.js"(){"use strict";FIMO_CONTENT_API_ENV_KEYS=["FIMO_CONTENT_API_URL","VITE_API_URL","NEXT_PUBLIC_FIMO_API_URL","NUXT_PUBLIC_FIMO_API_URL","PUBLIC_FIMO_API_URL"],FIMO_ANALYTICS_ENV_KEYS=["VITE_ENABLE_ANALYTICS","NEXT_PUBLIC_FIMO_ENABLE_ANALYTICS","NUXT_PUBLIC_FIMO_ENABLE_ANALYTICS","PUBLIC_FIMO_ENABLE_ANALYTICS"],FIMO_PREVIEW_SCRIPT_ENV_KEYS=["VITE_PREVIEW_SCRIPT_URL","VITE_FIMO_PREVIEW_SCRIPT_URL","NEXT_PUBLIC_FIMO_PREVIEW_SCRIPT_URL","NUXT_PUBLIC_FIMO_PREVIEW_SCRIPT_URL","PUBLIC_FIMO_PREVIEW_SCRIPT_URL","FIMO_PREVIEW_SCRIPT_URL"],FIMO_MANAGED_PROJECT_ENV_KEYS=["FIMO_API_URL","FIMO_API_TOKEN","FIMO_PROJECT_ID","FIMO_ENV","NEXT_PUBLIC_FIMO_ENV","FIMO_AGENT_SESSION","FIMO_DATA_SOURCES",...FIMO_CONTENT_API_ENV_KEYS,...FIMO_PREVIEW_SCRIPT_ENV_KEYS,...FIMO_ANALYTICS_ENV_KEYS,"VITE_FIMO_BRANCH","VITE_FIMO_IMAGE_HOSTS"],PROCESS_CONTROL_ENV_KEYS=new Set(["PATH","HOME","SHELL","BASH_ENV","ENV","PROMPT_COMMAND","USER","TMPDIR","HOST","HOSTNAME","PORT","NODE_ENV","NODE_OPTIONS","NODE_PATH","NODE_EXTRA_CA_CERTS","NODE_TLS_REJECT_UNAUTHORIZED","SSL_CERT_FILE","CURL_CA_BUNDLE","PYTHONPATH","LD_PRELOAD","LD_LIBRARY_PATH","HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","FIMO_VALIDATION_BUILD","FIMO_SKIP_VERSION_CHECK","FIMO_EDITING_METADATA","FIMO_AGENT_TMP_DIR"]),PROCESS_CONTROL_ENV_PREFIXES=["GIT_","NPM_CONFIG_","PNPM_","YARN_","COREPACK_","BUN_","DENO_"];__name(isProcessControlEnvKey,"isProcessControlEnvKey");BRANCH_ID_REGEX=/^[a-zA-Z0-9._/-]+$/,MAX_BRANCH_LENGTH=255;__name(isValidBranch,"isValidBranch");__name(encodeBranchPathSegment,"encodeBranchPathSegment");BranchSchema=z7.string().min(1,"env must not be empty").max(MAX_BRANCH_LENGTH,`env must be at most ${MAX_BRANCH_LENGTH} characters`).refine(isValidBranch,{error:"env must match /^[a-zA-Z0-9._/-]+$/ and must not start with `-`"}),DEFAULT_BRANCH="main",PRODUCTION_BRANCH="prod";__name(isProductionBranch,"isProductionBranch");__name(fnv1a8,"fnv1a8");__name(branchResourceKey,"branchResourceKey");__name(buildTenantApiUrl,"buildTenantApiUrl");envResourceKey=branchResourceKey}});import{z as z8}from"zod";var PRODUCTION_ENVIRONMENT_KEY,PREVIEW_ENVIRONMENT_KEY,EnvironmentKeySchema,CustomEnvironmentSchema,ResolvedEnvironmentSchema,init_environment=__esm({"../../packages/api-contracts/dist/esm/types/environment.js"(){"use strict";init_env();PRODUCTION_ENVIRONMENT_KEY="production",PREVIEW_ENVIRONMENT_KEY="preview",EnvironmentKeySchema=z8.union([z8.literal(PRODUCTION_ENVIRONMENT_KEY),z8.literal(PREVIEW_ENVIRONMENT_KEY),z8.uuid()]),CustomEnvironmentSchema=z8.object({id:z8.uuid(),projectId:z8.uuid(),name:z8.string().trim().min(1).max(64),branchPatterns:z8.array(z8.string().min(1).max(255)).min(1),description:z8.string().max(255).nullable()}),ResolvedEnvironmentSchema=z8.object({branch:BranchSchema,environment:EnvironmentKeySchema})}});var init_realtime=__esm({"../../packages/api-contracts/dist/esm/types/realtime.js"(){"use strict";init_env()}});var init_realtime_room=__esm({"../../packages/api-contracts/dist/esm/types/realtime-room.js"(){"use strict";init_env()}});import{z as z9}from"zod";function referenceDocumentId(value){if(typeof value=="string")return value;if(value&&typeof value=="object"){let reference=value,hasId=Object.prototype.hasOwnProperty.call(reference,"id"),hasDocumentId=Object.prototype.hasOwnProperty.call(reference,"documentId"),id=reference.id,documentId=reference.documentId;if(hasId&&typeof id!="string"||hasDocumentId&&typeof documentId!="string"||typeof id=="string"&&typeof documentId=="string"&&id!==documentId)return null;if(typeof id=="string")return id;if(typeof documentId=="string")return documentId}return null}function toReferenceValue(value){let documentId=referenceDocumentId(value);return documentId?{documentId}:null}function referenceContentType(value){if(value&&typeof value=="object"&&"contentType"in value){let contentType=value.contentType;return typeof contentType=="string"&&contentType.length>0?contentType:null}return null}function toPolymorphicReferenceValue(value){let documentId=referenceDocumentId(value),contentType=referenceContentType(value);return documentId&&contentType?{contentType,documentId}:null}var referenceValuePreprocess,ReferenceValueSchema,ReferenceInputValueSchema,polymorphicReferenceValuePreprocess,PolymorphicReferenceValueSchema,PolymorphicReferenceInputValueSchema,init_references=__esm({"../../packages/api-contracts/dist/esm/types/references.js"(){"use strict";__name(referenceDocumentId,"referenceDocumentId");__name(toReferenceValue,"toReferenceValue");referenceValuePreprocess=__name(value=>{let reference=toReferenceValue(value);return reference||(value&&typeof value=="object"&&("id"in value||"documentId"in value)?null:value)},"referenceValuePreprocess"),ReferenceValueSchema=z9.preprocess(referenceValuePreprocess,z9.object({documentId:z9.uuid()})),ReferenceInputValueSchema=z9.preprocess(referenceValuePreprocess,z9.union([z9.object({documentId:z9.uuid()}),z9.object({slug:z9.string().min(1)})]));__name(referenceContentType,"referenceContentType");__name(toPolymorphicReferenceValue,"toPolymorphicReferenceValue");polymorphicReferenceValuePreprocess=__name(value=>{let reference=toPolymorphicReferenceValue(value);return reference||(value&&typeof value=="object"&&("id"in value||"documentId"in value)?null:value)},"polymorphicReferenceValuePreprocess"),PolymorphicReferenceValueSchema=z9.preprocess(polymorphicReferenceValuePreprocess,z9.object({contentType:z9.string().min(1),documentId:z9.uuid()})),PolymorphicReferenceInputValueSchema=z9.preprocess(polymorphicReferenceValuePreprocess,z9.union([z9.object({contentType:z9.string().min(1),documentId:z9.uuid()}),z9.object({contentType:z9.string().min(1),slug:z9.string().min(1)})]))}});import{z as z10}from"zod";function isDatetimeInstant(value){return typeof value=="string"&&DATETIME_INSTANT_PATTERN.test(value)&&!Number.isNaN(Date.parse(value))}function rejectLegacyLocaleSettings(field,ctx){"localized"in field&&ctx.addIssue({code:"custom",path:["localized"],message:'Field-level locale settings use "i18n".'})}function rejectFieldI18n(field,ctx){"i18n"in field&&ctx.addIssue({code:"custom",path:["i18n"],message:FIELD_I18N_UNSUPPORTED_MESSAGE})}function refineConditions(field,ctx){if(field.showIf!==void 0&&field.showIfAny!==void 0&&ctx.addIssue({code:"custom",path:["showIfAny"],message:'A field declares "showIf" or "showIfAny", never both.'}),Array.isArray(field.showIf)){let fields=field.showIf.map(clause=>clause.field);new Set(fields).size!==fields.length&&ctx.addIssue({code:"custom",path:["showIf"],message:'"showIf" clauses must each name a different field. Use "in" for several values of one field.'})}}function rejectUnsupportedUnique(field,ctx,type){"unique"in field&&!uniqueFieldTypes.has(type)&&ctx.addIssue({code:"custom",path:["unique"],message:UNSUPPORTED_UNIQUE_MESSAGE})}function getConditionDefinition(field){if(field.showIfAny!==void 0)return{key:"showIfAny",clauses:field.showIfAny};if(field.showIf!==void 0)return{key:"showIf",clauses:Array.isArray(field.showIf)?field.showIf:[field.showIf]}}function getConditionValues(clause){return"equals"in clause?[clause.equals]:clause.in}function collectClauseProblems(fieldName,condition,clause,fields,path50){let conditionPath=[...path50,fieldName,condition.key],trigger=fields[clause.field];if(trigger===void 0)return[{path:conditionPath,message:`"${condition.key}" references unknown field "${clause.field}".`}];if(trigger.showIf!==void 0||trigger.showIfAny!==void 0)return[{path:conditionPath,message:`"${condition.key}" cannot reference "${clause.field}" because it is conditional too. Conditions are one level deep.`}];if(trigger.type!=="boolean"&&trigger.type!=="number"&&trigger.type!=="string")return[{path:conditionPath,message:`"${condition.key}" can only reference boolean, number, and string fields. "${clause.field}" is a ${trigger.type} field.`}];let triggerOptions=trigger.type==="string"?trigger.options:void 0;if(trigger.type==="string"&&triggerOptions===void 0)return[{path:conditionPath,message:`"${condition.key}" can only reference a string field that declares "options". Add options to "${clause.field}".`}];let values=getConditionValues(clause);if(values.some(value=>typeof value!==trigger.type))return[{path:conditionPath,message:`"${condition.key}" on "${clause.field}" expects a ${trigger.type} value.`}];if(triggerOptions!==void 0){let invalidValues=values.filter(value=>!triggerOptions.includes(value));if(invalidValues.length>0)return invalidValues.map(value=>({path:conditionPath,message:`"${value}" is not one of the options declared by "${clause.field}".`}))}return trigger.editable===!1?[{path:conditionPath,message:`"${condition.key}" cannot reference "${clause.field}" because it is not editable.`}]:[]}function collectConditionProblems(fields){let problems=[],walk=__name((currentFields,path50)=>{for(let[fieldName,field]of Object.entries(currentFields)){let condition=getConditionDefinition(field);if(condition!==void 0)for(let clause of condition.clauses)problems.push(...collectClauseProblems(fieldName,condition,clause,currentFields,path50));if(field.type==="blocks")if(isBlocksUnion(field.schema))for(let variant of field.schema.oneOf)walk(variant.fields,[...path50,fieldName,variant.uid]);else walk(field.schema.fields,[...path50,fieldName])}},"walk");return walk(fields,[]),problems}function isBlocksUnion(schema){return"oneOf"in schema}function walkContentFields(fields,visit2){let walk=__name((currentFields,path50,structuredDepth,insideStructuredContent)=>{for(let[fieldName,field]of Object.entries(currentFields)){let fieldPath=[...path50,fieldName];visit2({field,path:fieldPath,structuredDepth,insideStructuredContent});let nextDepth=structuredDepth+1;if(field.type==="blocks")if(isBlocksUnion(field.schema))for(let variant of field.schema.oneOf)walk(variant.fields,[...fieldPath,variant.uid],nextDepth,!0);else walk(field.schema.fields,fieldPath,nextDepth,!0)}},"walk");walk(fields,[],0,!1)}var UNIQUE_FIELD_TYPES,DATETIME_INSTANT_PATTERN,DATETIME_INSTANT_MESSAGE,utf8,MAX_STRUCTURED_CONTENT_DEPTH,MAX_BLOCK_VARIANTS,MAX_BLOCK_ITEMS,RESERVED_STRUCTURED_CONTENT_FIELD_NAMES,showIfClauseSchema,commonFieldShape,FIELD_I18N_UNSUPPORTED_MESSAGE,uniqueFieldTypes,UNSUPPORTED_UNIQUE_MESSAGE,scalarFieldSchema,referenceFieldSchema,reservedStructuredContentNames,ContentFieldDefinitionSchema,blockFieldsSchema,blockVariantSchema,fixedBlocksSchema,blocksSchema,blocksFieldSchema,contentFieldDefinitionSchema,init_content_fields=__esm({"../../packages/api-contracts/dist/esm/types/content-fields.js"(){"use strict";init_common();UNIQUE_FIELD_TYPES=["string","text","number","boolean","date"],DATETIME_INSTANT_PATTERN=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?([Zz]|[+-]\d{2}:\d{2})$/,DATETIME_INSTANT_MESSAGE="A datetime must be an ISO 8601 instant with a UTC offset, such as 2026-08-13T09:30:00Z.";__name(isDatetimeInstant,"isDatetimeInstant");utf8=new TextEncoder,MAX_STRUCTURED_CONTENT_DEPTH=7,MAX_BLOCK_VARIANTS=40,MAX_BLOCK_ITEMS=200,RESERVED_STRUCTURED_CONTENT_FIELD_NAMES=["_key","_type"],showIfClauseSchema=z10.union([z10.object({field:z10.string().min(1),equals:z10.union([z10.string(),z10.number(),z10.boolean()])}).strict(),z10.object({field:z10.string().min(1),in:z10.array(z10.union([z10.string(),z10.number(),z10.boolean()])).min(1)}).strict()]),commonFieldShape={label:z10.string().min(1).optional(),description:z10.string().optional(),group:z10.union([z10.string().min(1),z10.array(z10.string().min(1)).min(1)]).optional(),editable:z10.boolean().optional(),required:z10.boolean().optional(),default:z10.unknown().optional(),showIf:z10.union([showIfClauseSchema,z10.array(showIfClauseSchema).min(1)]).optional(),showIfAny:z10.array(showIfClauseSchema).min(1).optional()},FIELD_I18N_UNSUPPORTED_MESSAGE='"i18n" is only supported on top-level scalar and reference fields.';__name(rejectLegacyLocaleSettings,"rejectLegacyLocaleSettings");__name(rejectFieldI18n,"rejectFieldI18n");__name(refineConditions,"refineConditions");uniqueFieldTypes=new Set(UNIQUE_FIELD_TYPES),UNSUPPORTED_UNIQUE_MESSAGE=`"unique" is only supported on ${UNIQUE_FIELD_TYPES.join(", ")} fields.`;__name(rejectUnsupportedUnique,"rejectUnsupportedUnique");scalarFieldSchema=z10.object({...commonFieldShape,type:z10.enum(["string","text","richtext","media","number","boolean","date","datetime","json"]),min:z10.number().optional(),max:z10.number().optional(),minLength:z10.number().int().nonnegative().optional(),maxLength:z10.number().int().nonnegative().optional(),regex:z10.string().optional(),multiple:z10.boolean().optional(),allowedMimeTypes:z10.array(z10.string()).optional(),options:z10.array(z10.string().min(1)).min(1).optional(),unique:z10.boolean().optional(),i18n:z10.boolean().optional()}).loose().superRefine((field,ctx)=>{rejectLegacyLocaleSettings(field,ctx),refineConditions(field,ctx),rejectUnsupportedUnique(field,ctx,field.type);for(let key of["target","targets","many","repeatable","schema"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is not supported on ${field.type} fields.`});if(field.type!=="number")for(let key of["min","max"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is only supported on number fields.`});if(field.type!=="string"&&field.type!=="text")for(let key of["minLength","maxLength","regex"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is only supported on string and text fields.`});field.min!==void 0&&field.max!==void 0&&field.min>field.max&&ctx.addIssue({code:"custom",path:["max"],message:'"max" must be greater than or equal to "min".'});let effectiveMinimumLength=Math.max(field.minLength??0,field.required?1:0);if(field.maxLength!==void 0&&effectiveMinimumLength>field.maxLength&&ctx.addIssue({code:"custom",path:["maxLength"],message:'"maxLength" must be greater than or equal to the minimum required length.'}),field.regex!==void 0)try{new RegExp(field.regex)}catch{ctx.addIssue({code:"custom",path:["regex"],message:'"regex" must be a valid regular expression.'})}if(field.type!=="media")for(let key of["multiple","allowedMimeTypes"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is only supported on media fields.`});if(field.type==="datetime"&&field.default!==void 0&&!isDatetimeInstant(field.default)&&ctx.addIssue({code:"custom",path:["default"],message:DATETIME_INSTANT_MESSAGE}),field.type!=="string"&&"options"in field&&ctx.addIssue({code:"custom",path:["options"],message:'"options" is only supported on string fields.'}),field.options!==void 0){new Set(field.options).size!==field.options.length&&ctx.addIssue({code:"custom",path:["options"],message:"Options must be unique."});for(let key of["regex","minLength","maxLength"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is not supported alongside "options".`});field.default!==void 0&&!field.options.includes(field.default)&&ctx.addIssue({code:"custom",path:["default"],message:'"default" must be one of the declared options.'})}}),referenceFieldSchema=z10.object({...commonFieldShape,type:z10.literal("reference"),target:z10.string().regex(CONTENT_TYPE_NAME_PATTERN).optional(),targets:z10.array(z10.string().regex(CONTENT_TYPE_NAME_PATTERN)).min(1).optional(),many:z10.boolean().optional(),i18n:z10.boolean().optional()}).loose().superRefine((field,ctx)=>{rejectLegacyLocaleSettings(field,ctx),refineConditions(field,ctx),!field.target&&!field.targets&&ctx.addIssue({code:"custom",path:["target"],message:'Reference fields must declare "target" or "targets".'}),field.target&&field.targets&&ctx.addIssue({code:"custom",path:["targets"],message:'A reference field declares "target" or "targets", never both.'}),field.targets&&new Set(field.targets).size!==field.targets.length&&ctx.addIssue({code:"custom",path:["targets"],message:"Reference targets must be unique."});for(let key of["repeatable","schema","min","max","minLength","maxLength","regex","options","unique"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is not supported on reference fields.`})}),reservedStructuredContentNames=new Set(RESERVED_STRUCTURED_CONTENT_FIELD_NAMES),ContentFieldDefinitionSchema=z10.lazy(()=>contentFieldDefinitionSchema);__name(getConditionDefinition,"getConditionDefinition");__name(getConditionValues,"getConditionValues");__name(collectClauseProblems,"collectClauseProblems");__name(collectConditionProblems,"collectConditionProblems");blockFieldsSchema=z10.record(z10.string(),ContentFieldDefinitionSchema).superRefine((fields,ctx)=>{for(let fieldName of Object.keys(fields))CONTENT_FIELD_NAME_PATTERN.test(fieldName)||ctx.addIssue({code:"custom",path:[fieldName],message:`Field names must use ${CONTENT_FIELD_NAME_PATTERN_DESCRIPTION}.`}),reservedStructuredContentNames.has(fieldName)&&ctx.addIssue({code:"custom",path:[fieldName],message:`"${fieldName}" is reserved structured-content metadata.`}),"unique"in fields[fieldName]&&ctx.addIssue({code:"custom",path:[fieldName,"unique"],message:'"unique" is only supported on top-level fields.'}),"i18n"in fields[fieldName]&&ctx.addIssue({code:"custom",path:[fieldName,"i18n"],message:FIELD_I18N_UNSUPPORTED_MESSAGE})}),blockVariantSchema=z10.object({uid:z10.string().regex(CONTENT_TYPE_NAME_PATTERN),label:z10.string().min(1),description:z10.string().optional(),fields:blockFieldsSchema}).strict(),fixedBlocksSchema=z10.object({fields:blockFieldsSchema}).strict(),blocksSchema=z10.object({oneOf:z10.array(blockVariantSchema).min(1).max(MAX_BLOCK_VARIANTS)}).strict().superRefine((schema,ctx)=>{let seen=new Set;for(let[index,variant]of schema.oneOf.entries())seen.has(variant.uid)&&ctx.addIssue({code:"custom",path:["oneOf",index,"uid"],message:"Variant UIDs must be unique."}),seen.add(variant.uid)}),blocksFieldSchema=z10.object({...commonFieldShape,type:z10.literal("blocks"),min:z10.number().int().nonnegative().max(MAX_BLOCK_ITEMS).optional(),max:z10.number().int().nonnegative().max(MAX_BLOCK_ITEMS).optional(),schema:z10.union([fixedBlocksSchema,blocksSchema])}).loose().superRefine((field,ctx)=>{rejectLegacyLocaleSettings(field,ctx),rejectFieldI18n(field,ctx),refineConditions(field,ctx);let effectiveMinimum=Math.max(field.min??0,field.required?1:0);field.max!==void 0&&effectiveMinimum>field.max&&ctx.addIssue({code:"custom",path:["max"],message:'"max" must be greater than or equal to the minimum number of blocks.'});for(let key of["target","targets","many","repeatable","minLength","maxLength","regex","options","unique"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is not supported on blocks fields.`})}),contentFieldDefinitionSchema=z10.discriminatedUnion("type",[scalarFieldSchema,referenceFieldSchema,blocksFieldSchema]);__name(isBlocksUnion,"isBlocksUnion");__name(walkContentFields,"walkContentFields")}});import{z as z11}from"zod";var AUDIT_ACTIONS,AuditActionSchema,AUDIT_OUTCOMES,AuditOutcomeSchema,AUDIT_ACTOR_KINDS,AuditActorKindSchema,init_audit_log=__esm({"../../packages/api-contracts/dist/esm/types/audit-log.js"(){"use strict";AUDIT_ACTIONS=["env_create","env_delete","env_sync","capability_check","shell_exec","git_push","git_tag","git_merge","fimo_deploy","merge_decision","session_start","session_end","cost_breach","trigger_fire","schedule_notification_change","notification_preference_change","cutover_step","agent_delegate","version_restore","project_transfer","project_takedown","project_takedown_lift","organization_takedown","organization_takedown_lift","site_onboarding_refusal_lift","ops_access_change","ops_service_token_change","ops_project_search","ops_project_inspect","ops_project_chat_read","ops_recent_chat_read","ops_sentry_issue_change","ops_sentry_read","ops_logs_read","ops_trace_read","ops_posthog_milestones_read","ops_agent_trace_list","ops_agent_trace_read","ops_agent_trace_stats","ops_agent_health_read","ops_agent_trace_budget_wrap_up_read","ops_context_health_read","ops_data_usage_read","ops_agent_provider_errors_read","ops_chat_history_health_read","ops_chat_history_calls_read","ops_chat_history_content_read","ops_chat_history_judge_calibration","ops_memory_health_read","ops_routine_metrics_read","ops_project_snapshot","ops_project_file_read","ops_project_file_write","ops_support_thread_read","ops_support_report_read","ops_support_intake_read","ops_pylon_queue_read","ops_support_report_change","ops_billing_read","ops_billing_agent_runtime_activate","ops_billing_entitlements_sync","ops_billing_agent_runtime_attach","ops_billing_cache_invalidate","ops_billing_dispatch_discard","ops_billing_legacy_premium_enroll","ops_billing_legacy_premium_comp","ops_organization_feature_set","ops_billing_plan_transition_notices","ops_customer_registry_change","ops_investigation_change","ops_known_issue_change","ops_signal_case_decision","ops_validation_record","ops_notification_preview","ops_notification_approve","ops_notification_send","ops_project_operation","ops_project_publish","ops_agent_branch_discard","admin_resource_read","merge_force","ops_operation_plan","project_sync","project_thumbnail_regenerate","project_delete","project_import","organization_delete","credits_topup","credits_burn","user_session_revoke","user_ban","user_unban","user_impersonate","user_role_change","user_sessions_revoke","user_delete","platform_pool_change","platform_maintenance_change","platform_sync","platform_tenant_schema_sync","integration_event_replay","ops_billing_dispatch_retry","ops_billing_plan_projection_reconcile","ops_agent_chat_create","ops_pylon_issue_change","ops_pylon_note_create","ops_pylon_reply_preview","ops_pylon_reply_approve","ops_pylon_reply_send","admin_playground_run","ops_find","ops_project_health_read","ops_migrations_read","ops_operational_read","ops_billing_report_read","ops_users_read","ops_organizations_read","ops_merges_read","ops_platform_read","ops_watch_read","ops_notification_read","ops_audit_read"],AuditActionSchema=z11.enum(AUDIT_ACTIONS),AUDIT_OUTCOMES=["success","denied","error"],AuditOutcomeSchema=z11.enum(AUDIT_OUTCOMES),AUDIT_ACTOR_KINDS=["user","agent","system"],AuditActorKindSchema=z11.enum(AUDIT_ACTOR_KINDS)}});import{z as z12}from"zod";var ORGANIZATION_FEATURES,AGENT_PLANS,AgentPlanSchema,OrganizationFeatureSchema,OrganizationFeaturesDTOSchema,OrganizationFeaturesDTO,OrganizationFeatureStateDTOSchema,OrganizationFeatureSetSchema,init_organization_features_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/organization-features.dto.js"(){"use strict";init_create_dto();ORGANIZATION_FEATURES=["routine_planner","pro_agents"],AGENT_PLANS=["free","starter","pro"],AgentPlanSchema=z12.enum(AGENT_PLANS),OrganizationFeatureSchema=z12.enum(ORGANIZATION_FEATURES),OrganizationFeaturesDTOSchema=z12.object({features:z12.record(OrganizationFeatureSchema,z12.boolean()),lockedByPlan:z12.array(OrganizationFeatureSchema),agentPlan:AgentPlanSchema}),OrganizationFeaturesDTO=createDTO(OrganizationFeaturesDTOSchema),OrganizationFeatureStateDTOSchema=z12.object({feature:OrganizationFeatureSchema,enabled:z12.boolean(),default:z12.boolean(),lockedByPlan:z12.boolean(),override:z12.boolean().nullable(),reason:z12.string().nullable(),updatedBy:z12.string().nullable(),updatedAt:z12.string().datetime().nullable()}),OrganizationFeatureSetSchema=z12.object({state:z12.enum(["on","off","default"]),reason:z12.string().trim().min(1).max(500),apply:z12.boolean().default(!1),confirmProduction:z12.boolean().default(!1)})}});import{z as z13}from"zod";function refineChatHistoryWindow(schema){return schema.refine(input=>input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>input.until.getTime()-input.since.getTime()<=OPS_CONTEXT_HEALTH_MAX_WINDOW_MS,{path:["since"],message:"chat history windows cannot exceed 7 days"})}var OPS_BACKEND_PROFILES,OpsBackendProfileSchema,OPS_PERMISSIONS,OpsPermissionSchema,OPS_SUPPORT_PRESET,OPS_PERMISSION_PRESETS,OPS_SERVICE_PERMISSION_PRESETS,OpsAccessGrantInputSchema,OpsServiceTokenInputSchema,OpsCustomerProjectInputSchema,OPS_INVESTIGATION_STATUSES,OpsInvestigationStatusSchema,OpsInvestigationCreateInputSchema,OpsInvestigationUpdateInputSchema,OPS_KNOWN_ISSUE_STATUSES,OpsKnownIssueStatusSchema,OpsKnownIssueCreateInputSchema,OpsKnownIssueUpdateInputSchema,OPS_VALIDATION_OUTCOMES,OpsValidationOutcomeSchema,OpsValidationRunInputSchema,OpsNotificationPreviewInputSchema,OpsPylonIssueIdSchema,OpsPylonReasonSchema,OpsPylonMessageSchema,OpsPylonMessageIdSchema,OpsPylonEmailListSchema,OpsPylonResolveInputSchema,OpsPylonNoteInputSchema,OpsPylonReplyPreviewInputSchema,OpsSentryIssueIdSchema,OpsSentryResolveInputSchema,OpsTraceIdSchema,OpsTraceReadInputSchema,OpsBraintrustSpanIdSchema,OpsAgentInvocationStatusSchema,OpsAgentTraceListInputSchema,OpsAgentTraceSpansInputSchema,OpsSpanBodyEdgeSchema,OpsAgentTraceSpanInputSchema,OpsAgentTraceMessagesInputSchema,OpsAgentHealthGroupBySchema,OpsAgentHealthInputSchema,OPS_DATA_USAGE_MAX_WINDOW_MS,OpsDataUsageGroupBySchema,OpsDataUsageInputSchema,OPS_CONTEXT_HEALTH_MAX_WINDOW_MS,OpsContextHealthInputSchema,OPS_MEMORY_HEALTH_MAX_WINDOW_MS,OpsMemoryHealthInputSchema,opsChatHistoryWindow,OpsChatHistoryHealthInputSchema,OpsChatHistoryCallsInputSchema,OpsChatHistoryJudgeInputSchema,OPS_ROUTINE_METRICS_MAX_WINDOW_MS,OpsRoutineMetricsGroupBySchema,OpsRoutineMetricsSortBySchema,OpsRoutineMetricsInputSchema,OpsChatHistoryJudgeCalibrationInputSchema,OpsAgentTraceStatsGroupBySchema,OpsSpanTypeSchema,OpsAgentTraceStatsInputSchema,OpsAgentProviderErrorsInputSchema,OpsBillingCacheInvalidateInputSchema,OpsBillingEntitlementSyncInputSchema,OpsBillingAgentRuntimeAttachInputSchema,OPS_PROJECT_OPERATIONS,OpsProjectOperationKindSchema,ExactVersionSchema,OpsProjectOperationPlanInputSchema,OPS_MIGRATIONS,OpsMigrationIdSchema,OPS_MIGRATION_PLAN_STATUSES,OpsMigrationPlanStatusSchema,OPS_MIGRATION_CHANGE_ACTIONS,OpsMigrationChangeActionSchema,OpsMigrationDryRunInputSchema,OpsProjectFilePathSchema,OpsProjectFileReasonSchema,OPS_PROJECT_PACKAGE_MANAGER_LOCKFILES,OpsProjectPackageManagerInspectInputSchema,OpsProjectFileReadInputSchema,OpsProjectFileGlobInputSchema,OpsProjectFileGrepInputSchema,OPS_POSTHOG_EVENTS,OPS_POSTHOG_QUESTION,OpsPosthogTimestampSchema,OpsPosthogMilestonesInputSchema,OpsPosthogFailureCodeSchema,OpsPosthogCoverageSchema,OpsPosthogCountsSchema,OpsPosthogMilestonesResponseSchema,OpsSessionHealthInputSchema,OpsProjectAnalyticsHealthInputSchema,init_ops=__esm({"../../packages/api-contracts/dist/esm/types/ops.js"(){"use strict";init_organization_features_dto();init_env();OPS_BACKEND_PROFILES=["local","staging","prod"],OpsBackendProfileSchema=z13.enum(OPS_BACKEND_PROFILES),OPS_PERMISSIONS=["ops:project:read","ops:project:chat:read","ops:project:snapshot","ops:project:operate","ops:project:publish","ops:project:agents:write","ops:sentry:read","ops:sentry:write","ops:logs:read","ops:traces:read","ops:posthog:read","ops:braintrust:read","ops:support:read","ops:support:write","ops:customers:read","ops:customers:write","ops:billing:read","ops:billing:write","ops:organization:features:write","ops:investigations:read","ops:investigations:write","ops:known-issues:read","ops:known-issues:write","ops:validations:read","ops:validations:write","ops:audit:read","ops:notification:preview","ops:notification:approve","ops:notification:send","ops:users:read","ops:users:write","ops:organizations:read","ops:organizations:write","ops:merges:read","ops:merges:write","ops:platform:read","ops:platform:write","ops:project:admin","ops:credits:write"],OpsPermissionSchema=z13.enum(OPS_PERMISSIONS),OPS_SUPPORT_PRESET=["ops:project:read","ops:project:chat:read","ops:project:snapshot","ops:users:read","ops:organizations:read","ops:merges:read","ops:platform:read","ops:billing:read","ops:support:read","ops:support:write","ops:customers:read","ops:investigations:read","ops:investigations:write","ops:known-issues:read","ops:validations:read","ops:audit:read","ops:notification:preview"],OPS_PERMISSION_PRESETS={support:OPS_SUPPORT_PRESET,engineer:[...OPS_SUPPORT_PRESET,"ops:project:operate","ops:sentry:read","ops:sentry:write","ops:logs:read","ops:traces:read","ops:braintrust:read","ops:customers:write","ops:billing:write","ops:organization:features:write","ops:known-issues:write","ops:validations:write","ops:merges:write","ops:platform:write","ops:users:write"],full:[...OPS_PERMISSIONS]},OPS_SERVICE_PERMISSION_PRESETS={support:OPS_PERMISSION_PRESETS.support,engineer:OPS_PERMISSION_PRESETS.engineer,full:OPS_PERMISSION_PRESETS.full.filter(permission=>permission!=="ops:notification:approve")},OpsAccessGrantInputSchema=z13.object({permissions:z13.array(OpsPermissionSchema).min(1),backendProfiles:z13.array(OpsBackendProfileSchema).min(1),enabled:z13.boolean().default(!0)}),OpsServiceTokenInputSchema=z13.object({name:z13.string().trim().min(1).max(120),permissions:z13.array(OpsPermissionSchema).min(1),backendProfiles:z13.array(OpsBackendProfileSchema).min(1),expiresAt:z13.coerce.date()}).refine(input=>!input.permissions.includes("ops:notification:approve"),{path:["permissions"],message:"Service credentials cannot approve customer notifications"}).refine(input=>input.expiresAt.getTime()>Date.now(),{path:["expiresAt"],message:"Service credential expiry must be in the future"}),OpsCustomerProjectInputSchema=z13.object({importanceReason:z13.string().trim().min(1).max(1e3),ownerUserId:z13.string().trim().min(1).nullable().optional(),framework:z13.string().trim().max(120).nullable().optional(),packageManager:z13.enum(["npm","pnpm","yarn","bun"]).nullable().optional(),notes:z13.string().trim().max(5e3).nullable().optional()}),OPS_INVESTIGATION_STATUSES=["open","investigating","awaiting_approval","resolved","monitoring","closed"],OpsInvestigationStatusSchema=z13.enum(OPS_INVESTIGATION_STATUSES),OpsInvestigationCreateInputSchema=z13.object({projectId:z13.uuid(),title:z13.string().trim().min(1).max(240),userReport:z13.string().trim().max(1e4).nullable().optional()}),OpsInvestigationUpdateInputSchema=z13.object({status:OpsInvestigationStatusSchema.optional(),hypothesis:z13.string().trim().max(1e4).nullable().optional(),outcome:z13.string().trim().max(1e4).nullable().optional(),evidence:z13.array(z13.record(z13.string(),z13.unknown())).max(100).optional()}).refine(input=>Object.keys(input).length>0,"At least one field is required"),OPS_KNOWN_ISSUE_STATUSES=["open","monitoring","resolved"],OpsKnownIssueStatusSchema=z13.enum(OPS_KNOWN_ISSUE_STATUSES),OpsKnownIssueCreateInputSchema=z13.object({fingerprint:z13.string().trim().min(1).max(240),title:z13.string().trim().min(1).max(240),description:z13.string().trim().min(1).max(1e4),affectedVersions:z13.array(z13.string().trim().min(1).max(120)).max(100).default([]),detectionQueries:z13.array(z13.string().trim().min(1).max(2e3)).max(50).default([]),fixedVersion:z13.string().trim().min(1).max(64).nullable().optional(),workaround:z13.string().trim().min(1).max(1e4).nullable().optional(),status:OpsKnownIssueStatusSchema.default("open")}),OpsKnownIssueUpdateInputSchema=OpsKnownIssueCreateInputSchema.omit({fingerprint:!0}).extend({affectedVersions:z13.array(z13.string().trim().min(1).max(120)).max(100),detectionQueries:z13.array(z13.string().trim().min(1).max(2e3)).max(50),status:OpsKnownIssueStatusSchema}).partial().refine(input=>Object.keys(input).length>0,"At least one field is required"),OPS_VALIDATION_OUTCOMES=["passed","failed","inconclusive"],OpsValidationOutcomeSchema=z13.enum(OPS_VALIDATION_OUTCOMES),OpsValidationRunInputSchema=z13.object({changeReference:z13.string().trim().min(1).max(500),outcome:OpsValidationOutcomeSchema,summary:z13.string().trim().min(1).max(1e4),evidence:z13.array(z13.record(z13.string(),z13.unknown())).max(100).default([])}),OpsNotificationPreviewInputSchema=z13.object({recipientEmail:z13.email().optional(),subject:z13.string().trim().min(1).max(200).default("An update from Fimo"),message:z13.string().trim().min(1).max(5e3),locale:z13.string().trim().min(2).max(20),reason:z13.string().trim().min(1).max(1e3),acknowledgePolicy:z13.literal(!0)}),OpsPylonIssueIdSchema=z13.string().trim().regex(/^[a-zA-Z0-9-]+$/).max(100),OpsPylonReasonSchema=z13.string().trim().min(1).max(1e3),OpsPylonMessageSchema=z13.string().trim().min(1).max(5e3),OpsPylonMessageIdSchema=z13.string().trim().min(1).max(255),OpsPylonEmailListSchema=z13.array(z13.email()).max(50).default([]),OpsPylonResolveInputSchema=z13.object({reason:OpsPylonReasonSchema}),OpsPylonNoteInputSchema=z13.object({message:OpsPylonMessageSchema,reason:OpsPylonReasonSchema}),OpsPylonReplyPreviewInputSchema=z13.object({messageId:OpsPylonMessageIdSchema,message:OpsPylonMessageSchema,toEmails:OpsPylonEmailListSchema,ccEmails:OpsPylonEmailListSchema,bccEmails:OpsPylonEmailListSchema,reason:OpsPylonReasonSchema,acknowledgePolicy:z13.literal(!0)}).refine(input=>input.toEmails.length+input.ccEmails.length+input.bccEmails.length<=50,{message:"At most 50 email recipients are allowed",path:["toEmails"]}),OpsSentryIssueIdSchema=z13.string().trim().regex(/^[a-zA-Z0-9-]+$/).max(100),OpsSentryResolveInputSchema=z13.object({reason:z13.string().trim().min(1).max(1e3)}),OpsTraceIdSchema=z13.string().trim().regex(/^[a-fA-F0-9]{32}$/).transform(value=>value.toLowerCase()),OpsTraceReadInputSchema=z13.object({projectId:z13.uuid(),from:z13.coerce.date(),to:z13.coerce.date(),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>input.from<=input.to,{path:["from"],message:"from must be before or equal to to"}).refine(input=>input.to.getTime()-input.from.getTime()<=10080*60*1e3,{path:["from"],message:"trace windows cannot exceed 7 days"}),OpsBraintrustSpanIdSchema=z13.string().trim().regex(/^[A-Za-z0-9_-]{1,200}$/),OpsAgentInvocationStatusSchema=z13.enum(["planned","running","finished","cancelled","errored","refused"]),OpsAgentTraceListInputSchema=z13.object({projectId:z13.uuid().optional(),organizationId:z13.string().trim().min(1).max(255).optional(),agentKey:z13.string().trim().min(1).max(120).optional(),threadId:z13.uuid().optional(),status:OpsAgentInvocationStatusSchema.optional(),since:z13.coerce.date().optional(),minCostUsd:z13.coerce.number().min(0).optional(),tracedOnly:z13.coerce.boolean().default(!1),limit:z13.coerce.number().int().min(1).max(100).default(25),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!!(input.projectId||input.organizationId||input.threadId),{path:["projectId"],message:"one of projectId, organizationId, or threadId is required"}),OpsAgentTraceSpansInputSchema=z13.object({limit:z13.coerce.number().int().min(1).max(500).default(200),reason:z13.string().trim().min(1).max(1e3)}),OpsSpanBodyEdgeSchema=z13.enum(["start","end"]).default("start"),OpsAgentTraceSpanInputSchema=z13.object({maxChars:z13.coerce.number().int().min(500).max(2e5).default(2e4),edge:OpsSpanBodyEdgeSchema,reason:z13.string().trim().min(1).max(1e3)}),OpsAgentTraceMessagesInputSchema=z13.object({messageIndex:z13.coerce.number().int().min(0).optional(),maxChars:z13.coerce.number().int().min(500).max(2e5).default(2e4),reason:z13.string().trim().min(1).max(1e3)}),OpsAgentHealthGroupBySchema=z13.enum(["agent","status","branch","project","day"]),OpsAgentHealthInputSchema=z13.strictObject({projectId:z13.uuid().optional(),organizationId:z13.string().trim().min(1).max(255).optional(),branch:BranchSchema.optional(),agentKey:z13.string().trim().min(1).max(120).optional(),since:z13.coerce.date(),until:z13.coerce.date().optional(),groupBy:OpsAgentHealthGroupBySchema.default("agent"),includeChildren:z13.coerce.boolean().default(!1),limit:z13.coerce.number().int().min(1).max(200).default(50),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!input.until||input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}),OPS_DATA_USAGE_MAX_WINDOW_MS=10080*60*1e3,OpsDataUsageGroupBySchema=z13.enum(["operation","provider","day","organization","agent"]),OpsDataUsageInputSchema=z13.strictObject({organizationId:z13.string().trim().min(1).max(255).optional(),since:z13.coerce.date(),until:z13.coerce.date().optional(),groupBy:OpsDataUsageGroupBySchema.default("operation"),limit:z13.coerce.number().int().min(1).max(200).default(50),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!input.until||input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>(input.until??new Date).getTime()-input.since.getTime()<=OPS_DATA_USAGE_MAX_WINDOW_MS,{path:["since"],message:"data usage window cannot exceed 7 days"}),OPS_CONTEXT_HEALTH_MAX_WINDOW_MS=10080*60*1e3,OpsContextHealthInputSchema=z13.object({projectId:z13.uuid().optional(),since:z13.coerce.date(),until:z13.coerce.date().optional(),limit:z13.coerce.number().int().min(1).max(1e3).default(500),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!input.until||input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>(input.until??new Date).getTime()-input.since.getTime()<=OPS_CONTEXT_HEALTH_MAX_WINDOW_MS,{path:["since"],message:"context health window cannot exceed 7 days"}),OPS_MEMORY_HEALTH_MAX_WINDOW_MS=10080*60*1e3,OpsMemoryHealthInputSchema=z13.object({projectId:z13.uuid().optional(),since:z13.coerce.date(),until:z13.coerce.date().optional(),limit:z13.coerce.number().int().min(1).max(1e3).default(200),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!input.until||input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>(input.until??new Date).getTime()-input.since.getTime()<=OPS_MEMORY_HEALTH_MAX_WINDOW_MS,{path:["since"],message:"memory health window cannot exceed 7 days"}),opsChatHistoryWindow={projectId:z13.uuid().optional(),since:z13.coerce.date(),until:z13.coerce.date().default(()=>new Date),reason:z13.string().trim().min(1).max(1e3)};__name(refineChatHistoryWindow,"refineChatHistoryWindow");OpsChatHistoryHealthInputSchema=refineChatHistoryWindow(z13.strictObject(opsChatHistoryWindow)),OpsChatHistoryCallsInputSchema=refineChatHistoryWindow(z13.strictObject({...opsChatHistoryWindow,limit:z13.coerce.number().int().min(1).max(500).default(100)})),OpsChatHistoryJudgeInputSchema=refineChatHistoryWindow(z13.strictObject({...opsChatHistoryWindow,sample:z13.coerce.number().int().min(1).max(25).default(10)})),OPS_ROUTINE_METRICS_MAX_WINDOW_MS=2160*60*60*1e3,OpsRoutineMetricsGroupBySchema=z13.enum(["routine","plan","day","project"]),OpsRoutineMetricsSortBySchema=z13.enum(["total","jev","runs"]),OpsRoutineMetricsInputSchema=z13.strictObject({projectId:z13.uuid().optional(),organizationId:z13.string().trim().min(1).max(255).optional(),plan:AgentPlanSchema.optional(),routine:z13.string().trim().min(1).max(64).optional(),groupBy:OpsRoutineMetricsGroupBySchema.default("routine"),sortBy:OpsRoutineMetricsSortBySchema.default("total"),burstMinutes:z13.coerce.number().int().min(1).max(120).default(10),since:z13.coerce.date(),until:z13.coerce.date().default(()=>new Date),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>input.until.getTime()-input.since.getTime()<=OPS_ROUTINE_METRICS_MAX_WINDOW_MS,{path:["since"],message:"routine metrics windows cannot exceed 90 days"}),OpsChatHistoryJudgeCalibrationInputSchema=z13.strictObject({reason:z13.string().trim().min(1).max(1e3)}),OpsAgentTraceStatsGroupBySchema=z13.enum(["model","provider","span","type"]),OpsSpanTypeSchema=z13.enum(["llm","tool","function","task","score","eval"]),OpsAgentTraceStatsInputSchema=z13.object({since:z13.coerce.date(),until:z13.coerce.date().optional(),groupBy:OpsAgentTraceStatsGroupBySchema.default("model"),spanType:OpsSpanTypeSchema.optional(),slowerThanSeconds:z13.coerce.number().min(0).optional(),limit:z13.coerce.number().int().min(1).max(200).default(50),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!input.until||input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}),OpsAgentProviderErrorsInputSchema=z13.object({since:z13.coerce.date(),until:z13.coerce.date().default(()=>new Date),model:z13.string().trim().min(1).max(120).optional(),provider:z13.string().trim().min(1).max(120).optional(),spanType:OpsSpanTypeSchema.optional(),before:z13.coerce.date().optional(),limit:z13.coerce.number().int().min(1).max(1e3).default(500),sampleChars:z13.coerce.number().int().min(200).max(2e4).default(1200),correlateInvocations:z13.boolean().default(!1),correlationLimit:z13.coerce.number().int().min(1).max(100).default(25),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>input.until.getTime()-input.since.getTime()<=10080*60*1e3,{path:["since"],message:"provider error windows cannot exceed 7 days"}).refine(input=>!input.before||input.before>=input.since&&input.before<=input.until,{path:["before"],message:"before must be within the requested window"}),OpsBillingCacheInvalidateInputSchema=z13.object({reason:z13.string().trim().min(1).max(1e3)}),OpsBillingEntitlementSyncInputSchema=z13.object({reason:z13.string().trim().min(1).max(500),apply:z13.boolean().default(!1),confirmProduction:z13.boolean().default(!1),cursor:z13.string().min(1).optional(),batchSize:z13.number().int().min(1).max(100).default(50),concurrency:z13.number().int().min(1).max(10).default(2)}),OpsBillingAgentRuntimeAttachInputSchema=z13.object({reason:z13.string().trim().min(1).max(500),apply:z13.boolean().default(!1),confirmProduction:z13.boolean().default(!1),organizationIds:z13.array(z13.string().min(1)).min(1).max(100).optional(),cursor:z13.string().min(1).optional(),batchSize:z13.number().int().min(1).max(100).default(50)}),OPS_PROJECT_OPERATIONS=["runtime.bump","preview.restart","production.publish"],OpsProjectOperationKindSchema=z13.enum(OPS_PROJECT_OPERATIONS),ExactVersionSchema=z13.string().trim().regex(/^\d+\.\d+\.\d+$/,"Expected an exact version such as 0.11.0"),OpsProjectOperationPlanInputSchema=z13.discriminatedUnion("kind",[z13.object({kind:z13.literal("runtime.bump"),targetVersion:ExactVersionSchema}),z13.object({kind:z13.literal("preview.restart")})]),OPS_MIGRATIONS=["project.v3-to-v4"],OpsMigrationIdSchema=z13.enum(OPS_MIGRATIONS),OPS_MIGRATION_PLAN_STATUSES=["applicable","not_applicable","unknown"],OpsMigrationPlanStatusSchema=z13.enum(OPS_MIGRATION_PLAN_STATUSES),OPS_MIGRATION_CHANGE_ACTIONS=["create","rewrite","delete"],OpsMigrationChangeActionSchema=z13.enum(OPS_MIGRATION_CHANGE_ACTIONS),OpsMigrationDryRunInputSchema=z13.object({migrationId:OpsMigrationIdSchema,projectEnv:z13.string().trim().min(1).max(255).default("main"),reason:z13.string().trim().min(1).max(1e3)}),OpsProjectFilePathSchema=z13.string().trim().min(1).max(1024),OpsProjectFileReasonSchema=z13.string().trim().min(1).max(1e3),OPS_PROJECT_PACKAGE_MANAGER_LOCKFILES=["pnpm-lock.yaml","bun.lockb","bun.lock","yarn.lock","package-lock.json"],OpsProjectPackageManagerInspectInputSchema=z13.object({reason:OpsProjectFileReasonSchema}),OpsProjectFileReadInputSchema=z13.object({path:OpsProjectFilePathSchema,reason:OpsProjectFileReasonSchema}),OpsProjectFileGlobInputSchema=z13.object({pattern:z13.string().min(1).max(300).optional(),limit:z13.coerce.number().int().min(1).max(2e3).default(2e3),reason:OpsProjectFileReasonSchema}),OpsProjectFileGrepInputSchema=z13.object({pattern:z13.string().min(1).max(200),include:z13.string().min(1).max(300).optional(),caseInsensitive:z13.boolean().default(!1),maxMatches:z13.coerce.number().int().min(1).max(200).default(100),reason:OpsProjectFileReasonSchema}),OPS_POSTHOG_EVENTS=["didCreateProject","didInitiateProject","didDeploy","didDeployProject","didFirstPublish"],OPS_POSTHOG_QUESTION="project-milestone-counts-v1",OpsPosthogTimestampSchema=z13.iso.datetime({offset:!0}).refine(value=>Number.isFinite(Date.parse(value))&&!/\.\d{3}\d*[1-9]\d*(?:Z|[+-]\d{2}:\d{2})$/.test(value),"A finite timestamp with at most millisecond precision is required").transform(value=>new Date(value).toISOString()),OpsPosthogMilestonesInputSchema=z13.strictObject({projectId:z13.uuid().transform(value=>value.toLowerCase()),from:OpsPosthogTimestampSchema,to:OpsPosthogTimestampSchema,reason:z13.string().trim().min(1).max(1e3)}).refine(value=>{let duration=Date.parse(value.to)-Date.parse(value.from);return duration>0&&duration<=1440*60*1e3},{message:"Window must satisfy from < to and be at most 24 hours",path:["to"]}),OpsPosthogFailureCodeSchema=z13.enum(["not_configured","unauthenticated","forbidden","backend_mismatch","invalid_request","provider_auth_failed","provider_project_unavailable","rate_limited","timeout","provider_error","capability_unavailable","invalid_response","incomplete","pending","audit_unavailable"]),OpsPosthogCoverageSchema=z13.strictObject({completeAggregate:z13.boolean(),truncated:z13.boolean().nullable(),sampled:z13.boolean().nullable(),pagination:z13.enum(["not_applicable","unexpected","unknown"]),providerFreshnessKnown:z13.literal(!1),providerAsOf:z13.null(),projectFilter:z13.literal("exact properties.projectId equality"),environmentFilterSupported:z13.literal(!1),excludesMissingProjectId:z13.literal(!0),transport:z13.literal("server"),consentCoverage:z13.literal("server-policy-not-browser-consent"),operationDedupeAvailable:z13.literal(!1)}),OpsPosthogCountsSchema=z13.array(z13.strictObject({event:z13.enum(OPS_POSTHOG_EVENTS),captureCount:z13.number().int().min(0).max(Number.MAX_SAFE_INTEGER)})).length(5).refine(counts=>counts.every((entry,i)=>entry.event===OPS_POSTHOG_EVENTS[i])),OpsPosthogMilestonesResponseSchema=z13.strictObject({schemaVersion:z13.literal(1),questionId:z13.literal(OPS_POSTHOG_QUESTION),backendProfile:OpsBackendProfileSchema,projectId:z13.uuid().nullable(),projectEnvironment:z13.literal("mixed_or_unrecorded"),window:z13.strictObject({from:z13.iso.datetime(),to:z13.iso.datetime(),bounds:z13.literal("[from,to)")}).nullable(),source:z13.literal("posthog"),sourceStatus:z13.enum(["available","unavailable","forbidden"]),failureCode:OpsPosthogFailureCodeSchema.nullable(),queriedAt:z13.iso.datetime(),auditId:z13.uuid().nullable(),counts:OpsPosthogCountsSchema.nullable(),coverage:OpsPosthogCoverageSchema}).superRefine((value,ctx)=>{(value.sourceStatus==="available"?value.counts===null||value.failureCode!==null||value.auditId===null||value.projectId===null||value.window===null||!value.coverage.completeAggregate||value.coverage.sampled!==!1||value.coverage.truncated!==!1||value.coverage.pagination!=="not_applicable":value.counts!==null||value.failureCode===null||value.coverage.completeAggregate)&&ctx.addIssue({code:"custom",message:"Invalid aggregate availability"})}),OpsSessionHealthInputSchema=z13.object({reason:z13.string().trim().min(1).max(1e3),limit:z13.number().int().min(1).max(100).default(25),checkProvider:z13.boolean().default(!1)}),OpsProjectAnalyticsHealthInputSchema=z13.object({branch:z13.string().trim().min(1).max(255),canaryPath:z13.string().max(300).regex(/^\/[a-zA-Z0-9/_-]*\?fimo_monitor=[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/).optional(),since:z13.iso.datetime({offset:!0}),until:z13.iso.datetime({offset:!0}),reason:z13.string().trim().min(1).max(1e3)}).strict().refine(input=>Date.parse(input.since)<=Date.parse(input.until),{path:["since"],message:"since must be before or equal to until"}).refine(input=>Date.parse(input.until)-Date.parse(input.since)<=10080*60*1e3,{path:["since"],message:"analytics health window cannot exceed 7 days"}).refine(input=>Date.parse(input.until)<=Date.now(),{path:["until"],message:"until cannot be in the future"}).transform(({since,until,...input})=>({...input,since:new Date(since),until:new Date(until)}))}});import{z as z14}from"zod";function resolveOpsTime(value,now=new Date){let relative3=RELATIVE_WINDOW.exec(value.trim());if(relative3){let amount=Number(relative3[1]),unit=relative3[2];return new Date(now.getTime()-amount*UNIT_MS[unit]).toISOString()}return new Date(value).toISOString()}function opsHoursSince(value,now=new Date){let start=Date.parse(resolveOpsTime(value,now));return Math.max(1,Math.ceil((now.getTime()-start)/UNIT_MS.h))}var RELATIVE_WINDOW,time,opsArgs,OPS_STANDARD_ARG_KEYS,UNIT_MS,init_args=__esm({"../../packages/api-contracts/dist/esm/ops/args.js"(){"use strict";RELATIVE_WINDOW=/^(\d+)(m|h|d|w)$/,time=z14.string().trim().min(1).max(64).refine(value=>RELATIVE_WINDOW.test(value)||!Number.isNaN(Date.parse(value)),{message:"Expected an ISO timestamp or a relative window such as 30m, 24h, 7d or 2w"}),opsArgs={project:z14.uuid().describe("Fimo project id"),org:z14.string().trim().min(1).max(255).describe("Organization id"),user:z14.string().trim().min(1).max(255).describe("User id"),env:z14.string().trim().min(1).max(255).describe("Project environment (branch), e.g. main or prod"),since:time.describe("Start of the window: ISO timestamp or relative (30m, 24h, 7d, 2w)"),until:time.describe("End of the window: ISO timestamp or relative (defaults to now)"),limit:z14.coerce.number().int().min(1).max(1e3).describe("Maximum results"),cursor:z14.string().trim().min(1).max(2e3).describe("Continue from a previous page"),query:z14.string().trim().min(1).max(200).describe("Free-text search"),reason:z14.string().trim().min(1).max(1e3).describe("Why this is being read or changed; stored in the audit log"),output:z14.string().trim().min(1).max(4096).describe("Write the result to this local file")},OPS_STANDARD_ARG_KEYS=Object.keys(opsArgs),UNIT_MS={m:6e4,h:36e5,d:864e5,w:6048e5};__name(resolveOpsTime,"resolveOpsTime");__name(opsHoursSince,"opsHoursSince")}});import{z as z15}from"zod";var OPS_RECENT_CHAT_MAX_WINDOW_MS,OpsChatTimestampInputSchema,OpsRecentChatInputSchema,OpsRecentChatMessageSchema,OpsRecentChatResponseSchema,OpsRecentChatResponseDTO,init_ops_chat_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/ops-chat.dto.js"(){"use strict";init_ops();init_create_dto();OPS_RECENT_CHAT_MAX_WINDOW_MS=10080*60*1e3,OpsChatTimestampInputSchema=z15.iso.datetime({offset:!0}).pipe(z15.coerce.date()),OpsRecentChatInputSchema=z15.object({from:OpsChatTimestampInputSchema,to:OpsChatTimestampInputSchema.optional(),projectEnv:z15.string().trim().min(1).max(255).optional(),limit:z15.coerce.number().int().min(1).max(200).default(100),cursor:z15.string().trim().min(1).max(2e3).optional(),slim:z15.boolean().default(!0),reason:z15.string().trim().min(1).max(1e3)}).refine(input=>input.from<=(input.to??new Date),{message:"from must be before or equal to to",path:["from"]}).refine(input=>(input.to??new Date).getTime()-input.from.getTime()<=OPS_RECENT_CHAT_MAX_WINDOW_MS,{message:"recent chat window cannot exceed 7 days",path:["from"]}).refine(input=>!input.cursor||!!input.to,{message:"to is required when continuing with a cursor",path:["to"]}),OpsRecentChatMessageSchema=z15.object({id:z15.string(),threadId:z15.string(),providerMessageId:z15.string().nullable(),invocationId:z15.string().nullable(),env:z15.string().nullable(),role:z15.string(),parts:z15.array(z15.record(z15.string(),z15.unknown())),metadata:z15.object({status:z15.string().optional(),traceUrl:z15.string().optional(),externalFileChanges:z15.array(z15.unknown()).optional()}),stats:z15.object({toolCount:z15.number().int().nonnegative(),failedToolCount:z15.number().int().nonnegative()}),createdAt:z15.iso.datetime({offset:!0}),project:z15.object({id:z15.string(),name:z15.string(),displayName:z15.string().nullable(),organizationId:z15.string().nullable()})}),OpsRecentChatResponseSchema=z15.object({target:z15.object({backendProfile:OpsBackendProfileSchema,projectEnv:z15.string().nullable()}),window:z15.object({from:z15.iso.datetime({offset:!0}),to:z15.iso.datetime({offset:!0})}),messages:z15.object({items:z15.array(OpsRecentChatMessageSchema),nextCursor:z15.string().nullable()})}),OpsRecentChatResponseDTO=createDTO(OpsRecentChatResponseSchema)}});var init_types=__esm({"../../packages/api-contracts/dist/esm/ops/types.js"(){"use strict"}});function compact(value){return Object.fromEntries(Object.entries(value).filter(([,entry])=>entry!==void 0))}function time2(value){return value===void 0?void 0:resolveOpsTime(value)}function seg(value){return encodeURIComponent(value)}var init_shared=__esm({"../../packages/api-contracts/dist/esm/ops/commands/shared.js"(){"use strict";init_args();__name(compact,"compact");__name(time2,"time");__name(seg,"seg")}});import{z as z16}from"zod";var invocation,span,OpsChatViewSchema,OpsChatViewsInputSchema,viewIds,ending,toolCallRow,turnRow,turnSlice,viewEnvelope,OpsChatViewsResponseDTO,agentCommands,init_agent=__esm({"../../packages/api-contracts/dist/esm/ops/commands/agent.js"(){"use strict";init_ops_chat_dto();init_ops();init_create_dto();init_args();init_types();init_shared();invocation=z16.string().trim().min(1).max(255).describe("Agent invocation (run) id"),span=z16.string().trim().min(1).max(255).describe("Braintrust span id"),OpsChatViewSchema=z16.enum(["tool-calls","turns","slices"]),OpsChatViewsInputSchema=OpsRecentChatInputSchema.safeExtend({view:OpsChatViewSchema}),viewIds=z16.object({threadId:z16.string(),invocationId:z16.string().nullable(),projectId:z16.string(),messageId:z16.string()}),ending={terminal:z16.string(),terminalReason:z16.string().nullable()},toolCallRow=viewIds.extend({tool:z16.string(),subcommand:z16.string().nullable(),state:z16.string().nullable(),failed:z16.boolean(),errorSignature:z16.string().nullable(),position:z16.number().int().nonnegative(),recoveredNext:z16.boolean().nullable()}),turnRow=viewIds.extend({...ending,userMessageId:z16.string().nullable(),failureCategory:z16.enum(["expected_billing_stop","expected_model_refusal","workspace_failure","provider_model_failure","unknown_failure"]).nullable(),changes:z16.string().nullable(),mergeState:z16.string().nullable(),validation:z16.string().nullable(),publication:z16.string().nullable(),stepCount:z16.number().int().nonnegative(),toolCount:z16.number().int().nonnegative(),failedToolCount:z16.number().int().nonnegative(),hasTextReply:z16.boolean(),fimoAuthored:z16.boolean().nullable()}),turnSlice=viewIds.extend({...ending,previousUserAsk:z16.string().max(300),previousAgentWords:z16.string().max(500),userMessage:z16.string().max(1500),agentReply:z16.string().max(1305),failedToolCalls:z16.array(z16.object({tool:z16.string(),errorSignature:z16.string()})).max(6)}),viewEnvelope=z16.object({target:z16.object({backendProfile:OpsBackendProfileSchema,projectEnv:z16.string().nullable()}),window:z16.object({from:z16.iso.datetime({offset:!0}),to:z16.iso.datetime({offset:!0})})}),OpsChatViewsResponseDTO=createDTO(z16.discriminatedUnion("view",[viewEnvelope.extend({view:z16.literal("tool-calls"),messages:z16.object({items:z16.array(toolCallRow),nextCursor:z16.string().nullable()})}),viewEnvelope.extend({view:z16.literal("turns"),messages:z16.object({items:z16.array(turnRow),nextCursor:z16.string().nullable()})}),viewEnvelope.extend({view:z16.literal("slices"),messages:z16.object({items:z16.array(turnSlice),nextCursor:z16.string().nullable()})})])),agentCommands=[{id:"agent.chats.views",summary:"Read tool calls, turn outcomes or customer-text slices from a bounded chat window",permission:"ops:project:chat:read",effect:"read",input:z16.object({view:OpsChatViewSchema,since:opsArgs.since,until:opsArgs.until.optional(),env:opsArgs.env.optional(),limit:opsArgs.limit.max(200).default(100).describe("Source messages per page; each may produce several view rows"),cursor:opsArgs.cursor.optional(),reason:opsArgs.reason,output:opsArgs.output.optional().describe("Private JSON file; required for slices")}),request:__name(input=>({method:"POST",path:"/chat/messages/views",body:compact({view:input.view,from:time2(input.since),to:time2(input.until)??new Date().toISOString(),projectEnv:input.env,limit:input.limit,cursor:input.cursor,reason:input.reason})}),"request")},{id:"agent.chats.recent",summary:"Read recent chat messages across every project in a time window",permission:"ops:project:chat:read",effect:"read",input:z16.object({since:opsArgs.since,until:opsArgs.until.optional(),env:opsArgs.env.optional().describe("Only messages from this environment"),limit:opsArgs.limit.max(200).default(100),cursor:opsArgs.cursor.optional(),full:z16.boolean().default(!1).describe("Include complete message parts instead of the slim transcript"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/chat/messages/recent",body:compact({from:time2(input.since),to:time2(input.until)??new Date().toISOString(),projectEnv:input.env,limit:input.limit,cursor:input.cursor,slim:!input.full,reason:input.reason})}),"request")},{id:"agent.chats.create",summary:"Create an agent chat with routines in a customer project, as the organization owner. Validate the spec and confirm intent first: routines run and spend credits",permission:"ops:project:agents:write",effect:"write",risk:"low",input:z16.object({project:opsArgs.project,spec:z16.record(z16.string(),z16.unknown()).describe("JSON spec: { agent: { name, description } | { template }, routines: [...] }")}),cli:{fileArgs:["spec"]}},{id:"agent.traces.list",summary:"List agent runs for a project, organization or thread, with cost and status",permission:"ops:project:read",effect:"read",input:z16.object({project:opsArgs.project.optional(),org:opsArgs.org.optional(),thread:z16.uuid().optional().describe("Chat thread id"),agent:z16.string().trim().min(1).max(120).optional().describe("Agent key, e.g. chat.project"),status:OpsAgentInvocationStatusSchema.optional(),since:opsArgs.since.optional(),minCost:z16.coerce.number().min(0).optional().describe("Only runs costing at least this many USD"),tracedOnly:z16.boolean().default(!1).describe("Only runs that recorded a Braintrust root span"),limit:opsArgs.limit.max(100).default(25),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/agent-traces/list",body:compact({projectId:input.project,organizationId:input.org,threadId:input.thread,agentKey:input.agent,status:input.status,since:time2(input.since),minCostUsd:input.minCost,tracedOnly:input.tracedOnly,limit:input.limit,reason:input.reason})}),"request")},{id:"agent.traces.budget",summary:"List chats whose runs crossed the context budget and had to wrap up (content-free)",permission:"ops:braintrust:read",effect:"read",input:z16.object({since:opsArgs.since,until:opsArgs.until.optional(),limit:opsArgs.limit.max(25).default(25),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/agent-traces/budget-wrap-up",body:compact({since:time2(input.since),until:time2(input.until),limit:input.limit,reason:input.reason})}),"request")},{id:"agent.traces.spans",summary:"List the spans of one agent run",permission:"ops:braintrust:read",effect:"read",input:z16.object({invocation,limit:opsArgs.limit.max(500).default(200),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/agent-traces/${seg(input.invocation)}/spans`,body:{limit:input.limit,reason:input.reason}}),"request")},{id:"agent.traces.span",summary:"Read one span body (input and output) of an agent run",permission:"ops:braintrust:read",effect:"read",input:z16.object({invocation,span,maxChars:z16.coerce.number().int().min(500).max(2e5).default(2e4).describe("Per-field character bound"),tail:z16.boolean().default(!1).describe("Return the end of an over-long body instead of the start"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/agent-traces/${seg(input.invocation)}/spans/${seg(input.span)}`,body:{maxChars:input.maxChars,edge:input.tail?"end":"start",reason:input.reason}}),"request")},{id:"agent.traces.messages",summary:"Read the conversation the model saw in one LLM span",permission:"ops:braintrust:read",effect:"read",input:z16.object({invocation,span,message:z16.coerce.number().int().min(0).optional().describe("Return this one message instead of the index"),maxChars:z16.coerce.number().int().min(500).max(2e5).default(2e4),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/agent-traces/${seg(input.invocation)}/spans/${seg(input.span)}/messages`,body:compact({messageIndex:input.message,maxChars:input.maxChars,reason:input.reason})}),"request")},{id:"agent.traces.stats",summary:"Aggregate agent step latency, tokens and cost by model, provider, span or type",permission:"ops:braintrust:read",effect:"read",input:z16.object({since:opsArgs.since,until:opsArgs.until.optional(),groupBy:OpsAgentTraceStatsGroupBySchema.default("model"),spanType:OpsSpanTypeSchema.optional(),slowerThan:z16.coerce.number().positive().optional().describe("Only steps at least this many seconds slow"),limit:opsArgs.limit.max(200).default(50),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/agent-traces/stats",body:compact({since:time2(input.since),until:time2(input.until),groupBy:input.groupBy,spanType:input.spanType,slowerThanSeconds:input.slowerThan,limit:input.limit,reason:input.reason})}),"request")}]}});import{z as z17}from"zod";var assistantCommands,init_assistant=__esm({"../../packages/api-contracts/dist/esm/ops/commands/assistant.js"(){"use strict";init_args();init_types();init_shared();assistantCommands=[{id:"assistant.threads.list",summary:"List your admin assistant threads, newest activity first",permission:"ops:platform:read",effect:"read",input:z17.object({query:opsArgs.query.optional().describe("Match the thread title"),limit:z17.coerce.number().int().min(1).max(100).optional().describe("Maximum results"),cursor:opsArgs.cursor.optional()}),request:__name(input=>({method:"GET",path:"/assistant/threads",query:{q:input.query,limit:input.limit,cursor:input.cursor}}),"request")},{id:"assistant.threads.get",summary:"Read one admin assistant thread with every message",permission:"ops:platform:read",effect:"read",input:z17.object({thread:z17.uuid().describe("Admin assistant thread id")}),request:__name(input=>({method:"GET",path:`/assistant/threads/${seg(input.thread)}`}),"request")}]}});import{z as z18}from"zod";var day,billingCommands,init_billing=__esm({"../../packages/api-contracts/dist/esm/ops/commands/billing.js"(){"use strict";init_args();init_types();init_shared();day=z18.iso.date().describe("UTC day, YYYY-MM-DD"),billingCommands=[{id:"billing.customer",summary:"Read one Hyperline billing customer",permission:"ops:billing:read",effect:"read",input:z18.object({customer:z18.string().trim().min(1).max(255).describe("Hyperline customer id"),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/billing/customers/${seg(input.customer)}`,query:{reason:input.reason}}),"request")},{id:"billing.org",summary:"Read an organization's billing state: subscription, plan projection, credits and wallet",permission:"ops:billing:read",effect:"read",input:z18.object({org:opsArgs.org,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/billing/organizations/${seg(input.org)}`,query:{reason:input.reason}}),"request")},{id:"billing.bandwidth-contract",summary:"Read an organization's hosting bandwidth contract and current usage",permission:"ops:billing:read",effect:"read",input:z18.object({org:opsArgs.org,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/billing/organizations/${seg(input.org)}/bandwidth-contract`,query:{reason:input.reason}}),"request")},{id:"billing.ledger",summary:"Read an organization's credit ledger: holds, settlements, grants or usage events",permission:"ops:billing:read",effect:"read",input:z18.object({org:opsArgs.org,kind:z18.enum(["holds","settlements","grants","usage-events"]),since:opsArgs.since.optional(),limit:opsArgs.limit.max(200).default(100),cursor:opsArgs.cursor.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/ledger",query:compact({organizationId:input.org,kind:input.kind,since:time2(input.since),limit:input.limit,cursor:input.cursor,reason:input.reason})}),"request")},{id:"billing.plans.report",summary:"Find organizations whose local plan projection is missing or unusable (one page)",permission:"ops:billing:read",effect:"read",input:z18.object({cursor:opsArgs.cursor.optional().describe("Resume after this organization id"),at:z18.iso.datetime({offset:!0}).optional().describe("Reuse evaluatedAt when resuming a scan"),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/plan-projections/report",query:compact({reason:input.reason,at:input.at??new Date().toISOString(),cursor:input.cursor})}),"request")},{id:"billing.plans.reconcile",summary:"Repair organizations' local plan projections from Hyperline",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({orgs:z18.array(opsArgs.org).min(1).max(100).describe("Organization ids")})},{id:"billing.legacy-premium.report",summary:"Report legacy Premium organizations and where each stands in the Pro transition",permission:"ops:billing:read",effect:"read",input:z18.object({org:opsArgs.org.optional(),limit:opsArgs.limit.max(200).optional(),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/legacy-premium-report",query:compact({reason:input.reason,org:input.org,limit:input.limit})}),"request")},{id:"billing.legacy-premium.enroll",summary:"Record the approved Pro offer for one legacy Premium organization",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({org:opsArgs.org,deadline:z18.string().trim().min(1).max(64).describe("Decision date exactly 90 calendar days from today")})},{id:"billing.legacy-premium.comp",summary:"Accept an internal organization's Pro offer on its behalf, free through a 100% coupon",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({org:opsArgs.org,coupon:z18.string().trim().min(1).max(64).describe("Hyperline coupon id: 100% off every product")})},{id:"billing.legacy-premium.notify",summary:"Send the due legacy Premium transition notices for one organization",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({org:opsArgs.org})},{id:"billing.entitlements.sync",summary:"Reconcile subscription entitlement properties in Hyperline with Fimo's plans (one batch)",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({batchSize:z18.coerce.number().int().min(1).max(100).default(50),concurrency:z18.coerce.number().int().min(1).max(10).default(2),cursor:opsArgs.cursor.optional().describe("Resume after this organization id")})},{id:"billing.agent-runtime.attach",summary:"Attach the Agent runtime product to PAYG and Pro subscriptions (one batch)",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({orgs:z18.array(opsArgs.org).min(1).max(100).optional().describe("Only these organizations"),batchSize:z18.coerce.number().int().min(1).max(100).default(25),cursor:opsArgs.cursor.optional().describe("Resume after this organization id")})},{id:"billing.dispatches.list",summary:"List billing usage dispatches to Hyperline by state",permission:"ops:billing:read",effect:"read",input:z18.object({state:z18.enum(["pending","dispatched","dead-lettered","discarded"]),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/billing/dispatches",body:{state:input.state,reason:input.reason}}),"request")},{id:"billing.dispatches.discard",summary:"Discard dead-lettered billing dispatches so they are never sent",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({dispatches:z18.array(z18.uuid()).min(1).max(100).describe("Dispatch ids")})},{id:"billing.dispatches.retry",summary:"Retry a dead-lettered billing dispatch",permission:"ops:billing:write",effect:"write",risk:"low",input:z18.object({dispatch:z18.uuid().describe("Dispatch id")})},{id:"billing.cache.invalidate",summary:"Clear an organization's cached billing state so the next read goes to Hyperline",permission:"ops:billing:write",effect:"write",risk:"low",input:z18.object({org:opsArgs.org})},{id:"billing.hosting-usage.day",summary:"Read hosting usage recorded for one source, meter and day",permission:"ops:billing:read",effect:"read",input:z18.object({source:z18.string().trim().min(1).max(100),meter:z18.string().trim().min(1).max(100),day,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/hosting-usage",query:{source:input.source,meter:input.meter,day:input.day,reason:input.reason}}),"request")},{id:"billing.hosting-usage.reconciliation",summary:"Compare a project's served traffic with the hosting usage billed for one day",permission:"ops:billing:read",effect:"read",input:z18.object({project:opsArgs.project,day,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/hosting-usage/reconciliation",query:{projectId:input.project,day:input.day,reason:input.reason}}),"request")},{id:"billing.hosting-usage.periods",summary:"List an organization's hosting billing periods",permission:"ops:billing:read",effect:"read",input:z18.object({org:opsArgs.org,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/hosting-usage/customer-periods",query:{organizationId:input.org,reason:input.reason}}),"request")}]}});import{z as z19}from"zod";var coreCommands,init_core=__esm({"../../packages/api-contracts/dist/esm/ops/commands/core.js"(){"use strict";init_args();init_types();init_shared();coreCommands=[{id:"find",summary:"Find projects, organizations or users by name, slug, domain, email or id",permission:"ops:project:read",effect:"read",input:z19.object({query:opsArgs.query,kind:z19.enum(["project","org","user"]).optional().describe("Only this kind of record"),limit:opsArgs.limit.max(100).default(20),cursor:opsArgs.cursor.optional()}),request:__name(input=>({method:"GET",path:"/find",query:compact({q:input.query,kind:input.kind,limit:input.limit,cursor:input.cursor})}),"request"),cli:{positional:"query"}},{id:"audit.list",summary:"List audit log entries, newest first",permission:"ops:audit:read",effect:"read",input:z19.object({project:opsArgs.project.optional(),org:opsArgs.org.optional(),actor:z19.string().trim().min(1).max(255).optional().describe("User or service principal id"),action:z19.string().trim().min(1).max(64).optional().describe("Audit action, e.g. project_takedown"),since:opsArgs.since.optional(),limit:opsArgs.limit.max(200).default(50)}),request:__name(input=>({method:"GET",path:"/audit",query:compact({projectId:input.project,organizationId:input.org,actor:input.actor,action:input.action,since:time2(input.since),limit:input.limit})}),"request")}]}});import{z as z20}from"zod";var window2,healthCommands,init_health=__esm({"../../packages/api-contracts/dist/esm/ops/commands/health.js"(){"use strict";init_organization_features_dto();init_ops();init_args();init_types();init_shared();window2={since:opsArgs.since,until:opsArgs.until.optional()},healthCommands=[{id:"health.overview",summary:"Platform health brief: Sentry, logs, agents, publishing and support in one window",permission:"ops:project:read",effect:"read",input:z20.object({...window2,project:opsArgs.project.optional().describe("Narrow every source that can be narrowed to one project"),limit:opsArgs.limit.max(100).default(25).describe("Maximum findings per source"),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/health",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,limit:input.limit,reason:input.reason})}),"request")},{id:"health.agents",summary:"Agent run outcomes, cost and duration grouped by agent, status, branch, project or day",permission:"ops:project:read",effect:"read",input:z20.object({...window2,project:opsArgs.project.optional(),org:opsArgs.org.optional(),env:opsArgs.env.optional(),agent:z20.string().trim().min(1).max(120).optional().describe("Agent key, e.g. chat.project"),groupBy:OpsAgentHealthGroupBySchema.default("agent"),includeChildren:z20.boolean().default(!1).describe("Count sub-steps too"),limit:opsArgs.limit.max(200).default(50),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/agent-health",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,organizationId:input.org,branch:input.env,agentKey:input.agent,groupBy:input.groupBy,includeChildren:input.includeChildren,limit:input.limit,reason:input.reason})}),"request")},{id:"health.context",summary:"Context-window pressure and compaction facts for agent turns",permission:"ops:project:read",effect:"read",input:z20.object({...window2,project:opsArgs.project.optional(),limit:opsArgs.limit.max(1e3).default(500),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/context-health",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,limit:input.limit,reason:input.reason})}),"request")},{id:"health.memory",summary:"Agent memory health: threads and routines with missing or stale memory",permission:"ops:project:read",effect:"read",input:z20.object({...window2,project:opsArgs.project.optional(),limit:opsArgs.limit.max(1e3).default(200),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/memory-health",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,limit:input.limit,reason:input.reason})}),"request")},{id:"health.providers",summary:"Model provider errors grouped by signature, optionally correlated to agent runs",permission:"ops:braintrust:read",effect:"read",input:z20.object({...window2,model:z20.string().trim().min(1).max(200).optional(),provider:z20.string().trim().min(1).max(120).optional().describe("e.g. gateway or vertex"),spanType:OpsSpanTypeSchema.optional(),before:z20.string().trim().min(1).max(64).optional().describe("Page boundary: nextBefore from the previous page"),limit:opsArgs.limit.max(1e3).default(500).describe("Error spans to scan per page"),correlate:z20.boolean().default(!1).describe("Resolve the newest occurrences to Fimo runs"),correlationLimit:z20.coerce.number().int().min(1).max(100).default(25),sampleChars:z20.coerce.number().int().min(200).max(2e4).default(1200),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/agent-provider-errors",body:compact({since:time2(input.since),until:time2(input.until),model:input.model,provider:input.provider,spanType:input.spanType,before:input.before,limit:input.limit,sampleChars:input.sampleChars,correlateInvocations:input.correlate||void 0,correlationLimit:input.correlate?input.correlationLimit:void 0,reason:input.reason})}),"request")},{id:"health.chat-history.summary",summary:"How often agents call the chatHistory tool and whether it finds what they need",permission:"ops:project:read",effect:"read",input:z20.object({since:opsArgs.since.optional(),until:opsArgs.until.optional(),project:opsArgs.project.optional(),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/chat-history/health",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,reason:input.reason})}),"request")},{id:"health.chat-history.calls",summary:"List chatHistory tool calls; --with-content adds the surrounding messages (needs chat read)",permission:"ops:project:read",effect:"read",input:z20.object({since:opsArgs.since,until:opsArgs.until.optional(),project:opsArgs.project.optional(),limit:opsArgs.limit.max(500).default(100),withContent:z20.boolean().default(!1),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:input.withContent?"/chat-history/calls/content":"/chat-history/calls",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,limit:input.limit,reason:input.reason})}),"request")},{id:"health.chat-history.judge",summary:"Have a model judge a sample of chatHistory calls; --calibrate runs the labelled benchmark",permission:"ops:project:chat:read",effect:"read",input:z20.object({since:opsArgs.since.optional(),until:opsArgs.until.optional(),project:opsArgs.project.optional(),sample:z20.coerce.number().int().min(1).max(25).default(10),calibrate:z20.boolean().default(!1),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>input.calibrate?{method:"POST",path:"/chat-history/judge/calibration",body:{reason:input.reason}}:{method:"POST",path:"/chat-history/judge",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,sample:input.sample,reason:input.reason})},"request")},{id:"health.data-usage",summary:"Data-provider usage (search, scraping, enrichment) grouped by operation, provider, day, org or agent",permission:"ops:project:read",effect:"read",input:z20.object({...window2,org:opsArgs.org.optional(),groupBy:OpsDataUsageGroupBySchema.default("operation"),limit:opsArgs.limit.max(200).default(50),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/data-usage",body:compact({since:time2(input.since),until:time2(input.until),organizationId:input.org,groupBy:input.groupBy,limit:input.limit,reason:input.reason})}),"request")},{id:"health.routines",summary:"Routine runs, event bursts, Jev trigger calls and cost, by routine, plan, day or project",permission:"ops:project:read",effect:"read",input:z20.object({...window2,project:opsArgs.project.optional(),org:opsArgs.org.optional(),plan:AgentPlanSchema.optional().describe("The organization's agent plan now"),routine:z20.string().trim().min(1).max(64).optional().describe("Template routine key, or custom"),groupBy:OpsRoutineMetricsGroupBySchema.default("routine"),sortBy:OpsRoutineMetricsSortBySchema.default("total").describe("Rank buckets by total cost, Jev's trigger cost, or runs"),burstMinutes:z20.coerce.number().int().min(1).max(120).default(10).describe("An event this many minutes or less after the routine's previous one is a burst"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/routine-metrics",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,organizationId:input.org,plan:input.plan,routine:input.routine,groupBy:input.groupBy,sortBy:input.sortBy,burstMinutes:input.burstMinutes,reason:input.reason})}),"request")},{id:"health.analytics",summary:"Whether a project's website analytics are arriving (content-free counts, max 7 days)",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project,env:opsArgs.env.default("prod").describe("Environment whose traffic to check; prod for published traffic"),...window2,canaryPath:z20.string().max(300).optional().describe("Exact test path ending in ?fimo_monitor=<UUID>"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/projects/${seg(input.project)}/analytics-health`,body:compact({branch:input.env,canaryPath:input.canaryPath,since:time2(input.since),until:time2(input.until)??new Date().toISOString(),reason:input.reason})}),"request")},{id:"health.session",summary:"A project's work-session and database-branch health: cleanup due, unresolved allocations, capacity",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project,checkProvider:z20.boolean().default(!1).describe("Include one bounded read-only Neon inventory page"),limit:opsArgs.limit.max(100).default(25),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:`/projects/${seg(input.project)}/session-health`,body:{reason:input.reason,limit:input.limit,checkProvider:input.checkProvider}}),"request")},{id:"health.sandbox",summary:"A project environment's sandbox and preview status",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project,env:opsArgs.env.default("main"),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:`/projects/${seg(input.project)}/sandbox/status`,body:{projectEnv:input.env,reason:input.reason}}),"request")},{id:"health.schedules",summary:"Failed scheduled runs and webhook deliveries",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project.optional(),env:opsArgs.env.optional(),schedule:z20.uuid().optional().describe("Schedule id"),run:z20.uuid().optional().describe("Schedule run id (needs --project)"),since:opsArgs.since.optional(),until:opsArgs.until.optional(),limit:opsArgs.limit.max(100).optional(),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/schedules/failures",body:compact({projectId:input.project,projectEnv:input.env,scheduleId:input.schedule,runId:input.run,since:time2(input.since),until:time2(input.until),limit:input.limit,reason:input.reason})}),"request")},{id:"health.integrations",summary:"Failing integration connections and inbound events",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/integrations/failures",body:compact({projectId:input.project,reason:input.reason})}),"request")},{id:"health.domains",summary:"Custom domains with DNS, SSL or provider problems",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project.optional(),org:opsArgs.org.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/domains/problems",body:compact({projectId:input.project,organizationId:input.org,reason:input.reason})}),"request")}]}});import{z as z21}from"zod";var mergeCommands,init_merge=__esm({"../../packages/api-contracts/dist/esm/ops/commands/merge.js"(){"use strict";init_args();init_types();init_shared();mergeCommands=[{id:"merge.list",summary:"List merges, newest first; --stuck lists only merges that stopped progressing",permission:"ops:merges:read",effect:"read",input:z21.object({project:opsArgs.project.optional(),stuck:z21.boolean().default(!1).describe("Only merges stuck in a non-terminal state"),status:z21.string().trim().min(1).max(64).optional().describe("Only merges in this status"),since:opsArgs.since.optional(),limit:opsArgs.limit.max(200).default(50),cursor:opsArgs.cursor.optional()}),request:__name(input=>({method:"GET",path:"/merges",query:compact({projectId:input.project,stuck:input.stuck||void 0,status:input.status,since:time2(input.since),limit:input.limit,cursor:input.cursor})}),"request")},{id:"merge.get",summary:"Show one merge with its steps, conflicts and release",permission:"ops:merges:read",effect:"read",input:z21.object({merge:z21.uuid().describe("Merge id")}),request:__name(input=>({method:"GET",path:`/merges/${seg(input.merge)}`}),"request")},{id:"merge.unwind",summary:"Force-unwind a stuck merge: reset the target branch to its pre-merge head and reopen the merge",permission:"ops:merges:write",effect:"write",risk:"high",humanOnly:!0,input:z21.object({merge:z21.uuid().describe("Merge id")})},{id:"merge.fail",summary:"Force-fail a stuck merge without touching the target branch",permission:"ops:merges:write",effect:"write",risk:"high",humanOnly:!0,input:z21.object({merge:z21.uuid().describe("Merge id")})}]}});var MONITORING_SEVERITIES,init_admin_monitoring_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin-monitoring.dto.js"(){"use strict";MONITORING_SEVERITIES=["critical","high","medium","low"]}});import{z as z22}from"zod";var OPS_SIGNAL_CASE_STATES,OpsSignalCaseStateSchema,monitorCommands,init_monitor=__esm({"../../packages/api-contracts/dist/esm/ops/commands/monitor.js"(){"use strict";init_admin_monitoring_dto();init_args();init_types();init_shared();OPS_SIGNAL_CASE_STATES=["open","accepted","snoozed","dismissed","resolved"],OpsSignalCaseStateSchema=z22.enum(OPS_SIGNAL_CASE_STATES),monitorCommands=[{id:"monitor.checks.list",summary:"List staff checks with their schedule, action and last run",permission:"ops:investigations:read",effect:"read",input:z22.object({}),request:__name(()=>({method:"GET",path:"/monitor/checks"}),"request")},{id:"monitor.checks.try",summary:"Run one code check over a window, read-only, and show what it would open; nothing is stored (Jev and external checks are refused)",permission:"ops:investigations:read",effect:"read",input:z22.object({check:z22.string().trim().min(1).max(160).describe("Check id, e.g. agents/tools/errors/tool-failure-rate"),since:opsArgs.since,until:opsArgs.until.optional()}),request:__name(input=>({method:"POST",path:"/monitor/checks/try",body:compact({checkId:input.check,since:time2(input.since),until:time2(input.until)})}),"request")},{id:"monitor.cases.list",summary:"List cases opened by staff checks, newest activity first",permission:"ops:investigations:read",effect:"read",input:z22.object({state:OpsSignalCaseStateSchema.optional().describe("Only cases in this state"),check:z22.string().trim().min(1).max(160).optional().describe("Only cases from this check id, or from every check under a prefix ending in /"),minSeverity:z22.enum(MONITORING_SEVERITIES).optional().describe("Only cases at least this severe: critical, high, medium or low"),limit:opsArgs.limit.max(200).default(50)}),request:__name(input=>({method:"POST",path:"/monitor/cases",body:compact({state:input.state,checkId:input.check,minSeverity:input.minSeverity,limit:input.limit})}),"request")},{id:"monitor.cases.get",summary:"Read one case with its latest observations (ids and numbers only)",permission:"ops:investigations:read",effect:"read",input:z22.object({case:z22.uuid().describe("Case id")}),request:__name(input=>({method:"GET",path:`/monitor/cases/${seg(input.case)}`}),"request")},{id:"monitor.cases.update",summary:"Decide on a case: accept with a ceiling, snooze until a date, dismiss, resolve, or reopen",permission:"ops:investigations:write",effect:"write",risk:"low",input:z22.object({case:z22.uuid().describe("Case id"),state:OpsSignalCaseStateSchema.optional(),decisionReason:z22.string().trim().min(1).max(2e3).optional().describe("Why this decision; required to accept, snooze or dismiss. Shown on the finding"),ceiling:z22.number().nonnegative().optional().describe("For accepted: reopen above this metric"),snoozedUntil:z22.iso.datetime().optional().describe("For snoozed: reopen after this time"),linearIssue:z22.string().trim().regex(/^[A-Z]+-\d+$/).optional(),prUrl:z22.url().optional()})}]}});import{z as z23}from"zod";var channel,draft,notifyCommands,init_notify=__esm({"../../packages/api-contracts/dist/esm/ops/commands/notify.js"(){"use strict";init_ops();init_args();init_types();init_shared();channel=z23.enum(["email","pylon"]).describe("email (Resend, to the project owner) or pylon (ticket reply)"),draft=z23.uuid().describe("Draft id"),notifyCommands=[{id:"notify.draft",summary:"Draft a customer-visible message: an email to a project owner or a reply on a Pylon ticket",permission:"ops:notification:preview",effect:"write",risk:"low",input:z23.object({channel,message:z23.string().trim().min(1).max(5e3),project:opsArgs.project.optional().describe("email: the project whose owner receives it"),recipient:z23.email().optional().describe("email: override the recipient"),subject:z23.string().trim().min(1).max(200).optional().describe("email: subject line"),locale:z23.string().trim().min(2).max(20).optional().describe("email: message locale, e.g. en"),issue:OpsPylonIssueIdSchema.optional().describe("pylon: ticket id"),replyTo:z23.string().trim().min(1).max(255).optional().describe("pylon: top-level message id to reply to"),toEmails:z23.array(z23.email()).max(50).optional().describe("pylon: email recipients"),ccEmails:z23.array(z23.email()).max(50).optional(),bccEmails:z23.array(z23.email()).max(50).optional()}),cli:{fileArgs:["message"]}},{id:"notify.show",summary:"Show a drafted customer message and its approval state",permission:"ops:notification:preview",effect:"read",input:z23.object({channel,draft}),request:__name(input=>({method:"GET",path:input.channel==="pylon"?`/support/pylon/replies/${seg(input.draft)}`:`/notifications/${seg(input.draft)}`}),"request")},{id:"notify.approve",summary:"Approve a drafted customer message (a person must approve before it can be sent)",permission:"ops:notification:approve",effect:"write",risk:"low",humanOnly:!0,input:z23.object({channel,draft})},{id:"notify.send",summary:"Send an approved customer message",permission:"ops:notification:send",effect:"write",risk:"high",input:z23.object({channel,draft})}]}});function normalizeSentryIssueReference(reference){let trimmed=reference.trim();if(SENTRY_ISSUE_ID_PATTERN.test(trimmed))return trimmed;let url;try{url=new URL(trimmed)}catch{throw new Error("Expected a Sentry issue id or /issues/<id>/ URL")}let segments=url.pathname.split("/").filter(Boolean),issuesIndex=segments.lastIndexOf("issues"),issueId=issuesIndex>=0&&issuesIndex===segments.length-2?segments[issuesIndex+1]:void 0;if(!issueId||!SENTRY_ISSUE_ID_PATTERN.test(issueId))throw new Error("Expected a Sentry issue id or /issues/<id>/ URL");return issueId}function collectTraceIds(value,candidates,depth=0){if(!(depth>32)){if(typeof value=="string"){TRACE_ID_PATTERN.test(value.trim())&&candidates.add(value.trim().toLowerCase());return}if(Array.isArray(value)){for(let item of value)collectTraceIds(item,candidates,depth+1);return}if(typeof value=="object"&&value!==null)for(let item of Object.values(value))collectTraceIds(item,candidates,depth+1)}}function normalizeTempoTraceReference(reference){let trimmed=reference.trim();if(TRACE_ID_PATTERN.test(trimmed))return trimmed.toLowerCase();let url;try{url=new URL(trimmed)}catch{throw new Error("Expected an exact 32-character trace id or a Grafana trace URL")}let candidates=new Set;for(let segment of url.pathname.split("/"))collectTraceIds(segment,candidates);for(let value of url.searchParams.values()){collectTraceIds(value,candidates);try{collectTraceIds(JSON.parse(value),candidates)}catch{continue}}if(candidates.size!==1)throw new Error(candidates.size===0?"Grafana URL did not contain a trace id":"Grafana URL contained multiple trace ids");return[...candidates][0]}var SENTRY_ISSUE_ID_PATTERN,TRACE_ID_PATTERN,init_references2=__esm({"../../packages/api-contracts/dist/esm/ops/references.js"(){"use strict";SENTRY_ISSUE_ID_PATTERN=/^[a-zA-Z0-9-]{1,100}$/,TRACE_ID_PATTERN=/^[a-fA-F0-9]{32}$/;__name(normalizeSentryIssueReference,"normalizeSentryIssueReference");__name(collectTraceIds,"collectTraceIds");__name(normalizeTempoTraceReference,"normalizeTempoTraceReference")}});import{z as z24}from"zod";function parseWhere(values){if(!(!values||values.length===0))return Object.fromEntries(values.map(value=>{let separator=value.indexOf("=");if(separator<1)throw new Error("--where expects key=value");return[value.slice(0,separator),value.slice(separator+1)]}))}var issue,logFilters,observeCommands,init_observe=__esm({"../../packages/api-contracts/dist/esm/ops/commands/observe.js"(){"use strict";init_args();init_references2();init_types();init_shared();issue=z24.string().trim().min(1).max(500).describe("Sentry issue id or issue URL");__name(parseWhere,"parseWhere");logFilters={project:opsArgs.project,where:z24.array(z24.string().min(3).max(500)).optional().describe("Structured field filter key=value; repeatable"),contains:z24.string().min(1).max(500).optional().describe("Plain-text line filter"),limit:opsArgs.limit.max(1e3).default(100),reason:opsArgs.reason,output:opsArgs.output.optional()},observeCommands=[{id:"observe.logs.query",summary:"Query a project's production logs in a time window",permission:"ops:logs:read",effect:"read",input:z24.object({...logFilters,since:opsArgs.since,until:opsArgs.until.optional()}),request:__name(input=>({method:"POST",path:"/logs/query",body:compact({projectId:input.project,from:time2(input.since),to:time2(input.until)??new Date().toISOString(),limit:input.limit,contains:input.contains,where:parseWhere(input.where),reason:input.reason})}),"request")},{id:"observe.logs.around",summary:"Read a project's production logs a few minutes either side of a moment",permission:"ops:logs:read",effect:"read",input:z24.object({...logFilters,at:z24.iso.datetime({offset:!0}).describe("The moment to center on"),minutes:z24.coerce.number().int().min(1).max(120).default(5).describe("Minutes before and after")}),request:__name(input=>{let at2=Date.parse(input.at);return{method:"POST",path:"/logs/query",body:compact({projectId:input.project,from:new Date(at2-input.minutes*6e4).toISOString(),to:new Date(at2+input.minutes*6e4).toISOString(),limit:input.limit,contains:input.contains,where:parseWhere(input.where),reason:input.reason})}},"request")},{id:"observe.traces.get",summary:"Read one Grafana Tempo trace (id or Grafana URL) for a project",permission:"ops:traces:read",effect:"read",input:z24.object({trace:z24.string().trim().min(1).max(4e3).describe("32-character trace id or Grafana trace URL"),project:opsArgs.project,since:opsArgs.since,until:opsArgs.until.optional(),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/traces/${normalizeTempoTraceReference(input.trace)}`,body:{projectId:input.project,from:resolveOpsTime(input.since),to:time2(input.until)??new Date().toISOString(),reason:input.reason}}),"request")},{id:"observe.sentry.issues",summary:"Search Sentry issues, for one project or every project",permission:"ops:sentry:read",effect:"read",input:z24.object({project:opsArgs.project.optional(),search:z24.string().trim().min(1).max(500).optional().describe('Sentry search, e.g. "is:unresolved"'),period:z24.enum(["1h","24h","7d","14d","30d","90d"]).optional().describe("Stats period (default 14d)"),sort:z24.enum(["date","new","freq","user","trends"]).optional(),limit:opsArgs.limit.max(100).optional(),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/sentry/issues",body:compact({projectId:input.project,query:input.search,statsPeriod:input.period,sort:input.sort,limit:input.limit,reason:input.reason})}),"request")},{id:"observe.sentry.issue",summary:"Read one Sentry issue",permission:"ops:sentry:read",effect:"read",input:z24.object({issue,reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/sentry/issues/${seg(normalizeSentryIssueReference(input.issue))}`,body:{reason:input.reason}}),"request")},{id:"observe.sentry.event",summary:"Read one full Sentry event",permission:"ops:sentry:read",effect:"read",input:z24.object({event:z24.string().trim().min(1).max(100).describe("Sentry event id"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/sentry/events/${seg(input.event)}`,body:{reason:input.reason}}),"request")},{id:"observe.sentry.latest-event",summary:"Read the latest full event of a Sentry issue",permission:"ops:sentry:read",effect:"read",input:z24.object({issue,reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/sentry/issues/${seg(normalizeSentryIssueReference(input.issue))}/events/latest`,body:{reason:input.reason}}),"request")},{id:"observe.sentry.resolve",summary:"Mark a Sentry issue resolved",permission:"ops:sentry:write",effect:"write",risk:"low",input:z24.object({issue})},{id:"observe.posthog.milestones",summary:"Count a project's PostHog lifecycle milestones (create, deploy, first publish) in a window",permission:"ops:posthog:read",effect:"read",input:z24.object({project:opsArgs.project,since:opsArgs.since,until:opsArgs.until.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/posthog/milestones",body:{projectId:input.project,from:resolveOpsTime(input.since),to:time2(input.until)??new Date().toISOString(),reason:input.reason}}),"request")}]}});import{z as z25}from"zod";var orgCommands,init_org=__esm({"../../packages/api-contracts/dist/esm/ops/commands/org.js"(){"use strict";init_organization_features_dto();init_args();init_types();init_shared();orgCommands=[{id:"org.get",summary:"Show an organization: plan, members, projects and subscription summary",permission:"ops:organizations:read",effect:"read",input:z25.object({org:opsArgs.org,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/organizations/${seg(input.org)}`,query:{reason:input.reason}}),"request")},{id:"org.features.list",summary:"List an organization's features and any staff overrides",permission:"ops:customers:read",effect:"read",input:z25.object({org:opsArgs.org}),request:__name(input=>({method:"GET",path:`/organizations/${seg(input.org)}/features`}),"request")},{id:"org.features.set",summary:"Force an organization feature on or off, or clear the override",permission:"ops:organization:features:write",effect:"write",risk:"low",humanOnly:!0,input:z25.object({org:opsArgs.org,feature:z25.enum(ORGANIZATION_FEATURES).describe("Feature name"),state:z25.enum(["on","off","default"]).describe("on, off, or default to clear the override")})},{id:"org.takedown",summary:"Take every project of an organization off Fimo domains and block publishing",permission:"ops:organizations:write",effect:"write",risk:"high",humanOnly:!0,input:z25.object({org:opsArgs.org})},{id:"org.restore",summary:"Lift an organization takedown",permission:"ops:organizations:write",effect:"write",risk:"high",humanOnly:!0,input:z25.object({org:opsArgs.org})},{id:"org.delete",summary:"Delete an organization and everything it owns permanently",permission:"ops:organizations:write",effect:"write",risk:"high",humanOnly:!0,input:z25.object({org:opsArgs.org})},{id:"org.credits.topup",summary:"Grant credits to an organization, free or as a recorded purchase",permission:"ops:credits:write",effect:"write",risk:"high",humanOnly:!0,input:z25.object({org:opsArgs.org,credits:z25.coerce.number().int().positive().describe("Number of credits"),type:z25.enum(["free","purchase"]).default("free"),amountCents:z25.coerce.number().int().positive().optional().describe("Amount paid, required for a purchase"),expiresAt:z25.iso.datetime({offset:!0}).optional().describe("When the credits expire"),message:z25.string().trim().optional().describe("Note shown with the grant")})},{id:"org.credits.burn-zombies",summary:"Burn credits held by abandoned (zombie) holds of one organization since a date",permission:"ops:credits:write",effect:"write",risk:"high",humanOnly:!0,input:z25.object({org:opsArgs.org,since:opsArgs.since})}]}});import{z as z26}from"zod";var OPS_PLATFORM_DASHBOARDS,platformCommands,init_platform=__esm({"../../packages/api-contracts/dist/esm/ops/commands/platform.js"(){"use strict";init_args();init_types();init_shared();OPS_PLATFORM_DASHBOARDS=["agents","money","projects","automation","growth","platform","usage","stats"],platformCommands=[{id:"platform.metrics",summary:"Read an admin dashboard as data: agents, money, projects, automation, growth, platform, usage or stats",permission:"ops:platform:read",effect:"read",input:z26.object({dashboard:z26.enum(OPS_PLATFORM_DASHBOARDS),since:opsArgs.since.default("7d"),until:opsArgs.until.optional()}),request:__name(input=>({method:"GET",path:"/platform/metrics",query:compact({dashboard:input.dashboard,since:time2(input.since),until:time2(input.until)})}),"request")},{id:"platform.pool.status",summary:"Show the warm sandbox pool: size, target, and projects waiting in it",permission:"ops:platform:read",effect:"read",input:z26.object({}),request:__name(()=>({method:"GET",path:"/platform/pool"}),"request")},{id:"platform.pool.refill",summary:"Top the warm sandbox pool up to its target size",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({})},{id:"platform.pool.flush",summary:"Delete warm sandboxes from the pool, all of them or only the listed ones (new projects start cold until it refills)",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({pooled:z26.array(z26.uuid()).min(1).max(500).optional().describe("Only these pooled project ids; omit to flush all")})},{id:"platform.maintenance.status",summary:"Show whether maintenance mode is on and its message",permission:"ops:platform:read",effect:"read",input:z26.object({}),request:__name(()=>({method:"GET",path:"/platform/maintenance"}),"request")},{id:"platform.maintenance.enable",summary:"Turn maintenance mode on: Studio shows the message and refuses work",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({message:z26.string().max(500).optional().describe("Message shown to users")})},{id:"platform.maintenance.disable",summary:"Turn maintenance mode off",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({})},{id:"platform.maintenance.message",summary:"Change the maintenance message without toggling maintenance mode",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({message:z26.string().max(500).describe("Message shown to users")})},{id:"platform.sync-all",summary:"Re-sync every project's database records from its repository",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({})},{id:"platform.sync-tenant-schemas",summary:"Apply pending tenant schema migrations to every project database",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({})},{id:"platform.integrations.replay",summary:"Replay one failed inbound integration event",permission:"ops:platform:write",effect:"write",risk:"low",input:z26.object({event:z26.string().trim().min(1).max(255).describe("Inbound event id")})},{id:"platform.onboardings.list",summary:"List site onboardings (start from an existing website) with their status",permission:"ops:platform:read",effect:"read",input:z26.object({status:z26.string().trim().min(1).max(64).optional(),since:opsArgs.since.optional(),limit:opsArgs.limit.max(200).default(50),cursor:opsArgs.cursor.optional()}),request:__name(input=>({method:"GET",path:"/platform/onboardings",query:compact({status:input.status,since:time2(input.since),limit:input.limit,cursor:input.cursor})}),"request")},{id:"platform.onboardings.get",summary:"Show one project's site onboarding: questions, answers, refusal and timeline",permission:"ops:platform:read",effect:"read",input:z26.object({project:opsArgs.project,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/platform/onboardings/${seg(input.project)}`,query:{reason:input.reason}}),"request")},{id:"platform.onboardings.lift-refusal",summary:"Lift a site onboarding's Terms refusal so the project can continue",permission:"ops:platform:write",effect:"write",risk:"low",input:z26.object({project:opsArgs.project})},{id:"platform.unclaimed.list",summary:"List unclaimed projects (created without an account) and their claim state",permission:"ops:platform:read",effect:"read",input:z26.object({since:opsArgs.since.optional(),limit:opsArgs.limit.max(200).default(50),cursor:opsArgs.cursor.optional()}),request:__name(input=>({method:"GET",path:"/platform/unclaimed",query:compact({since:time2(input.since),limit:input.limit,cursor:input.cursor})}),"request")},{id:"platform.resources.resolve",summary:"Resolve any id, URL, email or domain to the Fimo record it names",permission:"ops:platform:read",effect:"read",input:z26.object({query:z26.string().trim().min(1).max(512).describe("Id, URL, email or domain")}),request:__name(input=>({method:"GET",path:"/platform/resources/resolve",query:{q:input.query}}),"request"),cli:{positional:"query"}}]}});import{z as z27}from"zod";function files(project,action,env){return`/projects/${seg(project)}/files/${action}?projectEnv=${seg(env)}`}var envMain,projectCommands,init_project=__esm({"../../packages/api-contracts/dist/esm/ops/commands/project.js"(){"use strict";init_args();init_types();init_shared();envMain=opsArgs.env.default("main");__name(files,"files");projectCommands=[{id:"project.get",summary:"Inspect a project: owner, environments, domains, publications, recent runs and logs",permission:"ops:project:read",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,since:opsArgs.since.default("24h"),limit:opsArgs.limit.max(500).default(100).describe("Maximum log entries")}),request:__name(input=>({method:"GET",path:`/projects/${seg(input.project)}/inspect`,query:{projectEnv:input.env,hours:Math.min(168,opsHoursSince(input.since)),logLimit:input.limit}}),"request")},{id:"project.snapshot",summary:"Download a zip snapshot of a project's source and content",permission:"ops:project:snapshot",effect:"read",input:z27.object({project:opsArgs.project,reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/projects/${seg(input.project)}/snapshot`,body:{reason:input.reason}}),"request")},{id:"project.chat",summary:"Read a project's agent chat transcript (the most recently active chat unless --thread is set)",permission:"ops:project:chat:read",effect:"read",input:z27.object({project:opsArgs.project,thread:z27.uuid().optional().describe("One chat or routine run thread id"),env:opsArgs.env.optional().describe("Only turns that targeted this environment"),since:opsArgs.since.optional(),until:opsArgs.until.optional(),limit:opsArgs.limit.max(200).default(100),cursor:opsArgs.cursor.optional(),full:z27.boolean().default(!1).describe("Include tool inputs, outputs and other message parts"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/projects/${seg(input.project)}/chat/messages`,body:compact({projectEnv:input.env,threadId:input.thread,from:time2(input.since),to:time2(input.until),limit:input.limit,cursor:input.cursor,slim:!input.full,reason:input.reason})}),"request")},{id:"project.files.read",summary:"Read one source file from a project environment",permission:"ops:project:snapshot",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,path:z27.string().trim().min(1).max(1024).describe("File path relative to the project root"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:files(input.project,"read",input.env),body:{path:input.path,reason:input.reason}}),"request")},{id:"project.files.glob",summary:"List source file paths in a project environment",permission:"ops:project:snapshot",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,pattern:z27.string().min(1).max(300).optional().describe("Glob pattern, e.g. src/**/*.tsx"),limit:opsArgs.limit.max(2e3).default(2e3),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:files(input.project,"glob",input.env),body:compact({pattern:input.pattern,limit:input.limit,reason:input.reason})}),"request")},{id:"project.files.grep",summary:"Search source files in a project environment with a regular expression",permission:"ops:project:snapshot",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,pattern:z27.string().min(1).max(200).describe("Regular expression"),include:z27.string().min(1).max(300).optional().describe("Only paths matching this glob"),caseInsensitive:z27.boolean().default(!1),limit:opsArgs.limit.max(200).default(100).describe("Maximum matches"),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:files(input.project,"grep",input.env),body:compact({pattern:input.pattern,include:input.include,caseInsensitive:input.caseInsensitive,maxMatches:input.limit,reason:input.reason})}),"request")},{id:"project.files.package-manager",summary:"Report which package manager a project declares and which lockfiles it has",permission:"ops:project:snapshot",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:files(input.project,"package-manager",input.env),body:{reason:input.reason}}),"request")},{id:"project.files.write",summary:"Create or replace one source file in a project environment (commits to its branch)",permission:"ops:project:operate",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project,env:envMain,path:z27.string().trim().min(1).max(1024).describe("File path relative to the project root"),content:z27.string().max(256*1024).describe("The exact desired file contents"),overwrite:z27.boolean().default(!1).describe("Allow replacing an existing file")}),cli:{fileArgs:["content"]}},{id:"project.runtime.bump",summary:"Pin the project's fimo runtime packages to an exact version, install, and restart the dev server",permission:"ops:project:operate",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project,env:envMain,version:z27.string().trim().min(1).max(64).describe("Exact target version, e.g. 0.11.0")})},{id:"project.preview.restart",summary:"Restart the project's preview dev server",permission:"ops:project:operate",effect:"write",risk:"low",humanOnly:!0,input:z27.object({project:opsArgs.project,env:envMain})},{id:"project.publish",summary:"Publish the customer's site on their behalf. Only when a Fimo admin explicitly asks for it; never on an agent's own initiative",permission:"ops:project:publish",effect:"write",risk:"high",humanOnly:!0,consent:!0,input:z27.object({project:opsArgs.project,env:opsArgs.env.optional().describe("Source environment; defaults to the project's publish source")})},{id:"project.domain.refresh",summary:"Refresh a custom domain's provider and SSL state",permission:"ops:project:operate",effect:"write",risk:"low",humanOnly:!0,input:z27.object({project:opsArgs.project,domain:z27.uuid().describe("Project domain id")})},{id:"project.migrations.dry-run",summary:"Plan a source migration for one project without changing it",permission:"ops:project:read",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,migration:z27.string().trim().min(1).max(120).optional().describe("Migration id (default: the current one)"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/migrations/projects/${seg(input.project)}/dry-run`,body:compact({migrationId:input.migration,projectEnv:input.env,reason:input.reason})}),"request")},{id:"project.sync",summary:"Re-sync a project's database records from its repository",permission:"ops:project:operate",effect:"write",risk:"low",input:z27.object({project:opsArgs.project})},{id:"project.thumbnail.regenerate",summary:"Regenerate a project's dashboard thumbnail",permission:"ops:project:operate",effect:"write",risk:"low",input:z27.object({project:opsArgs.project,type:z27.enum(["dev","published"]).default("dev").describe("dev (the preview) or published (the live site)")})},{id:"project.version.restore",summary:"Restore a project environment to an earlier version (overwrites the current state)",permission:"ops:project:admin",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project,env:envMain,version:z27.string().trim().min(1).max(255).describe("Version id to restore")})},{id:"project.takedown",summary:"Take a project off Fimo domains and block it from publishing",permission:"ops:project:admin",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project})},{id:"project.restore",summary:"Lift a project takedown so it can serve and publish again",permission:"ops:project:admin",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project})},{id:"project.transfer",summary:"Move a project to another organization",permission:"ops:project:admin",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project,toOrg:opsArgs.org.describe("Destination organization id")})},{id:"project.delete",summary:"Delete a project and its resources permanently",permission:"ops:project:admin",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project})}]}});import{z as z28}from"zod";var SUPPORT_REPORT_CATEGORIES,SupportReportCategorySchema,SUPPORT_REPORT_STATUSES,SupportReportStatusSchema,SupportReportSourceSchema,SupportReportDeliveryStatusSchema,SUPPORT_REPORT_LINK_KINDS,SupportReportLinkKindSchema,SupportReportEventKindSchema,SupportReportActorKindSchema,SupportReportTagSchema,SupportReportHttpUrlSchema,SupportReportContextInputSchema,CreateSupportReportInputSchema,SupportReportListQuerySchema,UpdateSupportReportInputSchema,CreateSupportReportMessageInputSchema,CreateSupportReportLinkInputSchema,SupportReportActorDTOSchema,SupportReportLinkDTOSchema,SupportReportLinkDTO,SupportReportEventDTOSchema,SupportReportEventDTO,SupportReportSummaryDTOSchema,SupportReportSummaryDTO,SupportReportDetailDTOSchema,SupportReportDetailDTO,SupportReportListDTOSchema,SupportReportListDTO,CreateSupportReportResultDTOSchema,CreateSupportReportResultDTO,init_support_report_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/support-report.dto.js"(){"use strict";init_create_dto();SUPPORT_REPORT_CATEGORIES=[{value:"account_billing",label:"Account & billing"},{value:"project_issues",label:"Project issues"},{value:"ai_prompt_output_quality",label:"AI prompt & output quality"},{value:"roles_access_collaboration",label:"Roles, access & collaboration"},{value:"code_technical_questions",label:"Code & technical questions"},{value:"others",label:"Other"}],SupportReportCategorySchema=z28.enum(SUPPORT_REPORT_CATEGORIES.map(category=>category.value)),SUPPORT_REPORT_STATUSES=["new","in_progress","waiting","resolved","duplicate","irrelevant","ignored"],SupportReportStatusSchema=z28.enum(SUPPORT_REPORT_STATUSES),SupportReportSourceSchema=z28.enum(["app","cli","agent"]),SupportReportDeliveryStatusSchema=z28.enum(["pending","delivered","failed"]),SUPPORT_REPORT_LINK_KINDS=["linear","pylon","project","sentry","grafana","other"],SupportReportLinkKindSchema=z28.enum(SUPPORT_REPORT_LINK_KINDS),SupportReportEventKindSchema=z28.enum(["report_created","report_updated","message","link_added","link_removed","delivery"]),SupportReportActorKindSchema=z28.enum(["user","agent","system"]),SupportReportTagSchema=z28.string().trim().min(1).max(50),SupportReportHttpUrlSchema=z28.url({protocol:/^https?$/}).max(2e3),SupportReportContextInputSchema=z28.object({organization:z28.object({id:z28.string().trim().min(1).max(255),name:z28.string().trim().max(240).optional()}),project:z28.object({id:z28.uuid(),name:z28.string().trim().max(240).optional(),createdAt:z28.coerce.date().optional()}).optional(),environment:z28.string().trim().max(255).optional(),clientVersion:z28.string().trim().max(64).optional()}),CreateSupportReportInputSchema=z28.object({message:z28.string().trim().min(1).max(2e4),category:SupportReportCategorySchema,source:SupportReportSourceSchema.default("cli"),context:SupportReportContextInputSchema}),SupportReportListQuerySchema=z28.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),source:SupportReportSourceSchema.optional(),tag:SupportReportTagSchema.optional(),query:z28.string().trim().max(200).optional(),limit:z28.coerce.number().int().min(1).max(100).default(50),offset:z28.coerce.number().int().min(0).default(0)}),UpdateSupportReportInputSchema=z28.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),tags:z28.array(SupportReportTagSchema).max(20).optional(),duplicateOfReportId:z28.uuid().nullable().optional(),note:z28.string().trim().min(1).max(2e4).optional()}).refine(input=>Object.values(input).some(value=>value!==void 0),{message:"At least one report change is required"}),CreateSupportReportMessageInputSchema=z28.object({message:z28.string().trim().min(1).max(2e4)}),CreateSupportReportLinkInputSchema=z28.object({kind:SupportReportLinkKindSchema,label:z28.string().trim().min(1).max(240),url:SupportReportHttpUrlSchema,externalId:z28.string().trim().max(240).optional()}),SupportReportActorDTOSchema=z28.object({kind:SupportReportActorKindSchema,id:z28.string().nullable(),name:z28.string().nullable()}),SupportReportLinkDTOSchema=z28.object({id:z28.uuid(),kind:SupportReportLinkKindSchema,label:z28.string(),url:SupportReportHttpUrlSchema,externalId:z28.string().nullable(),addedBy:SupportReportActorDTOSchema,createdAt:z28.coerce.date()}),SupportReportLinkDTO=createDTO(SupportReportLinkDTOSchema),SupportReportEventDTOSchema=z28.object({id:z28.uuid(),kind:SupportReportEventKindSchema,body:z28.string().nullable(),metadata:z28.record(z28.string(),z28.unknown()),actor:SupportReportActorDTOSchema,createdAt:z28.coerce.date()}),SupportReportEventDTO=createDTO(SupportReportEventDTOSchema),SupportReportSummaryDTOSchema=z28.object({id:z28.uuid(),status:SupportReportStatusSchema,category:SupportReportCategorySchema,tags:z28.array(z28.string()),source:SupportReportSourceSchema,message:z28.string(),reporter:z28.object({id:z28.string().nullable(),name:z28.string().nullable(),email:z28.string().nullable()}),organization:z28.object({id:z28.string().nullable(),name:z28.string()}),project:z28.object({id:z28.uuid().nullable(),name:z28.string()}).nullable(),assignee:SupportReportActorDTOSchema.nullable(),delivery:z28.object({status:SupportReportDeliveryStatusSchema,pylonIssueId:z28.string().nullable(),pylonIssueUrl:SupportReportHttpUrlSchema.nullable(),error:z28.string().nullable(),deliveredAt:z28.coerce.date().nullable()}).nullable(),duplicateOfReportId:z28.uuid().nullable(),resolvedAt:z28.coerce.date().nullable(),createdAt:z28.coerce.date(),updatedAt:z28.coerce.date()}),SupportReportSummaryDTO=createDTO(SupportReportSummaryDTOSchema),SupportReportDetailDTOSchema=SupportReportSummaryDTOSchema.extend({environment:z28.string().nullable(),clientVersion:z28.string().nullable(),links:z28.array(SupportReportLinkDTOSchema),events:z28.array(SupportReportEventDTOSchema)}),SupportReportDetailDTO=createDTO(SupportReportDetailDTOSchema),SupportReportListDTOSchema=z28.object({reports:z28.array(SupportReportSummaryDTOSchema),total:z28.number().int().nonnegative(),statusCounts:z28.object({new:z28.number().int().nonnegative(),in_progress:z28.number().int().nonnegative(),waiting:z28.number().int().nonnegative(),resolved:z28.number().int().nonnegative(),duplicate:z28.number().int().nonnegative(),irrelevant:z28.number().int().nonnegative(),ignored:z28.number().int().nonnegative()}),limit:z28.number().int().positive(),offset:z28.number().int().nonnegative()}),SupportReportListDTO=createDTO(SupportReportListDTOSchema),CreateSupportReportResultDTOSchema=z28.object({id:z28.uuid(),deliveryStatus:SupportReportDeliveryStatusSchema,message:z28.string()}),CreateSupportReportResultDTO=createDTO(CreateSupportReportResultDTOSchema)}});import{z as z29}from"zod";var report,pylonIssue,supportCommands,init_support=__esm({"../../packages/api-contracts/dist/esm/ops/commands/support.js"(){"use strict";init_support_report_dto();init_ops();init_args();init_types();init_shared();report=z29.uuid().describe("Support report id"),pylonIssue=OpsPylonIssueIdSchema.describe("Pylon issue id"),supportCommands=[{id:"support.reports.list",summary:"List Fimo support reports, newest first",permission:"ops:support:read",effect:"read",input:z29.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),source:SupportReportSourceSchema.optional(),tag:z29.string().trim().min(1).max(50).optional(),search:z29.string().trim().min(1).max(200).optional().describe("Text search over the report"),limit:opsArgs.limit.max(200).default(50),offset:z29.coerce.number().int().min(0).default(0),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"GET",path:"/support/reports",query:compact({reason:input.reason,status:input.status,category:input.category,source:input.source,tag:input.tag,query:input.search,limit:input.limit,offset:input.offset})}),"request")},{id:"support.reports.get",summary:"Read one support report with its messages, links and context",permission:"ops:support:read",effect:"read",input:z29.object({report,reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"GET",path:`/support/reports/${seg(input.report)}`,query:{reason:input.reason}}),"request")},{id:"support.reports.claim",summary:"Claim a support report (mark it in progress), optionally with a note",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({report,note:z29.string().trim().min(1).max(2e4).optional()}),cli:{fileArgs:["note"]}},{id:"support.reports.update",summary:"Change a support report's status, category, tags or duplicate link, optionally with a note",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({report,status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),tags:z29.array(z29.string().trim().min(1).max(50)).max(20).optional(),duplicateOf:z29.uuid().nullable().optional().describe("Report id this one duplicates; null clears it"),note:z29.string().trim().min(1).max(2e4).optional()}),cli:{fileArgs:["note"]}},{id:"support.reports.note",summary:"Add an internal message to a support report",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({report,message:z29.string().trim().min(1).max(2e4)}),cli:{fileArgs:["message"]}},{id:"support.reports.link",summary:"Link a support report to a Linear issue, Pylon ticket, project, Sentry issue or other URL",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({report,kind:SupportReportLinkKindSchema,label:z29.string().trim().min(1).max(240),url:z29.url({protocol:/^https?$/}).max(2e3),externalId:z29.string().trim().min(1).max(255).optional()})},{id:"support.reports.unlink",summary:"Remove a link from a support report",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({report,link:z29.uuid().describe("Link id")})},{id:"support.intake",summary:"Show the support intake receipt: reports received and delivered in a window (max 7 days)",permission:"ops:support:read",effect:"read",input:z29.object({since:opsArgs.since,until:opsArgs.until.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/support/intake/status",query:{since:time2(input.since),until:time2(input.until)??new Date().toISOString(),reason:input.reason}}),"request")},{id:"support.pylon.list",summary:"List Pylon support tickets in a window (max 7 days)",permission:"ops:support:read",effect:"read",input:z29.object({since:opsArgs.since,until:opsArgs.until.optional(),state:z29.enum(["open","closed","all"]).default("open"),limit:opsArgs.limit.max(100).default(50),cursor:opsArgs.cursor.optional(),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"GET",path:"/support/pylon/issues",query:compact({since:time2(input.since),until:time2(input.until)??new Date().toISOString(),state:input.state,limit:input.limit,cursor:input.cursor,reason:input.reason})}),"request")},{id:"support.pylon.thread",summary:"Read the full message thread of a Pylon ticket",permission:"ops:support:read",effect:"read",input:z29.object({issue:pylonIssue,reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/support/issues/${seg(input.issue)}/thread`,body:{reason:input.reason}}),"request")},{id:"support.pylon.resolve",summary:"Close a Pylon ticket",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({issue:pylonIssue})},{id:"support.pylon.note",summary:"Add an internal note to a Pylon ticket (not visible to the customer)",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({issue:pylonIssue,message:z29.string().trim().min(1).max(5e3)}),cli:{fileArgs:["message"]}}]}});import{z as z30}from"zod";var userCommands,init_user=__esm({"../../packages/api-contracts/dist/esm/ops/commands/user.js"(){"use strict";init_args();init_types();init_shared();userCommands=[{id:"user.get",summary:"Show a user: profile, role, organizations, recent sessions and usage",permission:"ops:users:read",effect:"read",input:z30.object({user:opsArgs.user,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/users/${seg(input.user)}`,query:{reason:input.reason}}),"request")},{id:"user.sessions",summary:"List sign-in sessions, for one user or across the platform",permission:"ops:users:read",effect:"read",input:z30.object({user:opsArgs.user.optional(),active:z30.boolean().optional().describe("Only sessions that have not expired or been revoked"),limit:opsArgs.limit.max(200).default(50),cursor:opsArgs.cursor.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/sessions",query:compact({userId:input.user,active:input.active,limit:input.limit,cursor:input.cursor,reason:input.reason})}),"request")},{id:"user.session.revoke",summary:"Revoke one sign-in session",permission:"ops:users:write",effect:"write",risk:"low",humanOnly:!0,input:z30.object({session:z30.string().trim().min(1).max(255).describe("Session id")})}]}});import{z as z31}from"zod";var evidence,versions,detectionQueries,watchCommands,init_watch=__esm({"../../packages/api-contracts/dist/esm/ops/commands/watch.js"(){"use strict";init_ops();init_args();init_types();init_shared();evidence=z31.array(z31.record(z31.string(),z31.unknown())).max(100),versions=z31.array(z31.string().trim().min(1).max(120)).max(100),detectionQueries=z31.array(z31.string().trim().min(1).max(2e3)).max(50),watchCommands=[{id:"watch.list",summary:"List watched projects and why each is watched",permission:"ops:customers:read",effect:"read",input:z31.object({}),request:__name(()=>({method:"GET",path:"/customers"}),"request")},{id:"watch.add",summary:"Watch a project (or update why it is watched)",permission:"ops:customers:write",effect:"write",risk:"low",input:z31.object({project:opsArgs.project,importance:z31.string().trim().min(1).max(1e3).describe("Why this project is operationally important"),owner:opsArgs.user.optional().describe("Owner user id"),framework:z31.string().trim().max(120).optional(),packageManager:z31.enum(["npm","pnpm","yarn","bun"]).optional(),notes:z31.string().trim().max(5e3).optional()})},{id:"watch.remove",summary:"Stop watching a project",permission:"ops:customers:write",effect:"write",risk:"low",input:z31.object({project:opsArgs.project})},{id:"watch.validations.list",summary:"List validation runs recorded for a watched project",permission:"ops:validations:read",effect:"read",input:z31.object({project:opsArgs.project}),request:__name(input=>({method:"GET",path:`/customers/${seg(input.project)}/validations`}),"request")},{id:"watch.validations.record",summary:"Record the outcome of validating a release, migration or change against a watched project",permission:"ops:validations:write",effect:"write",risk:"low",input:z31.object({project:opsArgs.project,change:z31.string().trim().min(1).max(500).describe("Release, migration or change that was validated"),outcome:OpsValidationOutcomeSchema,summary:z31.string().trim().min(1).max(1e4),evidence:evidence.default([])}),cli:{fileArgs:["evidence"]}},{id:"watch.investigations.list",summary:"List open and recent investigations",permission:"ops:investigations:read",effect:"read",input:z31.object({}),request:__name(()=>({method:"GET",path:"/investigations"}),"request")},{id:"watch.investigations.create",summary:"Open an investigation into a problem on a project",permission:"ops:investigations:write",effect:"write",risk:"low",input:z31.object({project:opsArgs.project,title:z31.string().trim().min(1).max(240),userReport:z31.string().trim().max(1e4).optional().describe("The customer's own words")})},{id:"watch.investigations.update",summary:"Update an investigation's status, hypothesis, outcome or evidence",permission:"ops:investigations:write",effect:"write",risk:"low",input:z31.object({investigation:z31.uuid().describe("Investigation id"),status:OpsInvestigationStatusSchema.optional(),hypothesis:z31.string().trim().max(1e4).optional(),outcome:z31.string().trim().max(1e4).optional(),evidence:evidence.optional()}),cli:{fileArgs:["evidence"]}},{id:"watch.known-issues.list",summary:"List known issues and their detection queries",permission:"ops:known-issues:read",effect:"read",input:z31.object({}),request:__name(()=>({method:"GET",path:"/known-issues"}),"request")},{id:"watch.known-issues.create",summary:"Record a known issue with how to detect it and any workaround",permission:"ops:known-issues:write",effect:"write",risk:"low",input:z31.object({fingerprint:z31.string().trim().min(1).max(240),title:z31.string().trim().min(1).max(240),description:z31.string().trim().min(1).max(1e4),affectedVersions:versions.default([]),detectionQueries:detectionQueries.default([]),fixedVersion:z31.string().trim().min(1).max(64).optional(),workaround:z31.string().trim().min(1).max(1e4).optional(),status:OpsKnownIssueStatusSchema.default("open")}),cli:{fileArgs:["detectionQueries"]}},{id:"watch.known-issues.update",summary:"Update a known issue",permission:"ops:known-issues:write",effect:"write",risk:"low",input:z31.object({knownIssue:z31.uuid().describe("Known issue id"),title:z31.string().trim().min(1).max(240).optional(),description:z31.string().trim().min(1).max(1e4).optional(),affectedVersions:versions.optional(),detectionQueries:detectionQueries.optional(),fixedVersion:z31.string().trim().min(1).max(64).optional(),workaround:z31.string().trim().min(1).max(1e4).optional(),status:OpsKnownIssueStatusSchema.optional()}),cli:{fileArgs:["detectionQueries"]}}]}});var OPS_COMMANDS,BY_ID,OPS_OPERATION_IDS,init_commands=__esm({"../../packages/api-contracts/dist/esm/ops/commands/index.js"(){"use strict";init_agent();init_agent();init_assistant();init_billing();init_core();init_health();init_merge();init_monitor();init_monitor();init_notify();init_observe();init_org();init_platform();init_platform();init_project();init_support();init_user();init_watch();OPS_COMMANDS=[...coreCommands,...projectCommands,...orgCommands,...userCommands,...mergeCommands,...agentCommands,...healthCommands,...billingCommands,...platformCommands,...observeCommands,...supportCommands,...watchCommands,...monitorCommands,...notifyCommands,...assistantCommands],BY_ID=new Map(OPS_COMMANDS.map(command=>[command.id,command])),OPS_OPERATION_IDS=OPS_COMMANDS.filter(command=>command.effect==="write").map(command=>command.id)}});import{z as z32}from"zod";function getChatFormOptionLabels(body){switch(body.type){case"choices":return body.actions.map(action=>action.label);case"cards":return body.items.map(item=>item.title);case"table":return body.rows.map(row2=>row2.cells[0]??"");case"assets":return body.items.map(item=>item.label??item.alt);case"capabilities":return body.items.map(item=>item.label);case"text":return[]}}var BlockSayActionSchema,BlockActionSchema,BlockAppActionSchema,BlockBaseSchema,ChoicesBlockSchema,TableRowTargetSchema,TableBlockSchema,CardsBlockSchema,EntryBlockSchema,AssetsBlockSchema,CalloutBlockSchema,StatBlockSchema,ChartBlockSchema,AgentBlockSchema,ChatDisplayBlockSchema,TextBlockSchema,ChatFormStepIdSchema,CapabilityRequestSchema,CapabilitiesBlockSchema,ChatFormBodySchema,ChatFormStepSchema,CHAT_FORM_INTERNAL_NOTE_MAX,FormBlockSchema,ChatBlockSchema,ChatBlockToolInputSchema,ChatFormAnswerItemSchema,ChatFormAnswerMetadataSchema,QUESTION_FORM_CONTRACT_VERSION,QuestionFormSnapshotSchema,QuestionFormAnswerSnapshotSchema,ChatFormResponseSchema,init_chat_block=__esm({"../../packages/api-contracts/dist/esm/types/chat-block.js"(){"use strict";BlockSayActionSchema=z32.object({kind:z32.literal("say"),label:z32.string().trim().min(1).max(40,"Button labels must be 40 characters or fewer."),description:z32.string().min(1).max(240).optional(),message:z32.string().trim().min(1,"Every say button needs the sentence the user is saying by clicking.").max(2e3),style:z32.enum(["primary","default","ghost"]).optional()}),BlockActionSchema=BlockSayActionSchema,BlockAppActionSchema=z32.discriminatedUnion("command",[z32.object({kind:z32.literal("app"),command:z32.literal("publish")}).strict(),z32.object({kind:z32.literal("app"),command:z32.literal("connect"),integrationKey:z32.string().trim().min(1).max(80)}).strict()]),BlockBaseSchema=z32.object({fallback:z32.string().trim().min(1,"Every block needs a fallback line for clients that cannot render it.").max(500),title:z32.string().min(1).max(80).optional()}),ChoicesBlockSchema=BlockBaseSchema.extend({type:z32.literal("choices"),text:z32.string().max(500).optional(),actions:z32.array(BlockActionSchema).min(2,"A choices block needs 2 to 4 buttons.").max(4,"A choices block needs 2 to 4 buttons.")}),TableRowTargetSchema=z32.discriminatedUnion("kind",[z32.object({kind:z32.literal("entry"),collection:z32.string().min(1).max(80),entryId:z32.string().min(1).max(120)}),z32.object({kind:z32.literal("asset"),assetId:z32.string().min(1).max(120)}),z32.object({kind:z32.literal("url"),url:z32.url({protocol:/^https$/}).max(2e3)}),z32.object({kind:z32.literal("routine"),routineId:z32.string().min(1).max(120)})]),TableBlockSchema=BlockBaseSchema.extend({type:z32.literal("table"),columns:z32.array(z32.object({label:z32.string().min(1).max(24)})).min(2).max(4),rows:z32.array(z32.object({cells:z32.array(z32.string().max(80)).min(2).max(4),target:TableRowTargetSchema.optional()})).min(1).max(8)}).superRefine((table,ctx)=>{table.rows.forEach((row2,index)=>{row2.cells.length!==table.columns.length&&ctx.addIssue({code:"custom",path:["rows",index,"cells"],message:`Every table row needs exactly ${table.columns.length} cells, one for each column.`})})}),CardsBlockSchema=BlockBaseSchema.extend({type:z32.literal("cards"),layout:z32.enum(["rail","stack"]).optional(),items:z32.array(z32.object({title:z32.string().min(1).max(60),subtitle:z32.string().min(1).max(120).optional(),imageUrl:z32.url({protocol:/^https$/}).max(2e3).optional(),action:BlockSayActionSchema.optional()})).min(2).max(6)}),EntryBlockSchema=BlockBaseSchema.extend({type:z32.literal("entry"),label:z32.string().min(1).max(80),collection:z32.string().min(1).max(80),entryId:z32.string().min(1).max(120),path:z32.string().min(1).max(120).optional()}),AssetsBlockSchema=BlockBaseSchema.extend({type:z32.literal("assets"),items:z32.array(z32.object({url:z32.url({protocol:/^https$/}).max(2e3),alt:z32.string().min(1).max(120),label:z32.string().min(1).max(60).optional()})).min(1).max(6)}),CalloutBlockSchema=BlockBaseSchema.extend({type:z32.literal("callout"),title:z32.string().min(1).max(80),text:z32.string().min(1).max(240),action:BlockAppActionSchema}).strict(),StatBlockSchema=BlockBaseSchema.extend({type:z32.literal("stat"),items:z32.array(z32.object({label:z32.string().min(1).max(24),value:z32.string().min(1).max(16),delta:z32.string().min(1).max(12).optional(),tone:z32.enum(["up","down","flat"]).optional()})).min(1).max(4)}),ChartBlockSchema=BlockBaseSchema.extend({type:z32.literal("chart"),unit:z32.string().min(1).max(12).optional(),points:z32.array(z32.object({label:z32.string().min(1).max(12),value:z32.number().finite().min(0).max(1e9)})).min(2).max(12)}),AgentBlockSchema=BlockBaseSchema.extend({type:z32.literal("agent"),agentId:z32.string().uuid(),view:z32.enum(["compact","full"]).optional()}),ChatDisplayBlockSchema=z32.discriminatedUnion("type",[ChoicesBlockSchema,TableBlockSchema,CardsBlockSchema,EntryBlockSchema,AssetsBlockSchema,CalloutBlockSchema,StatBlockSchema,ChartBlockSchema]),TextBlockSchema=BlockBaseSchema.extend({type:z32.literal("text"),placeholder:z32.string().min(1).max(120).optional(),multiline:z32.boolean().optional()}).strict(),ChatFormStepIdSchema=z32.string().regex(/^[a-z0-9][a-z0-9_-]{0,39}$/,"Step ids are lowercase letters, digits, hyphen, or underscore (max 40)."),CapabilityRequestSchema=z32.object({id:ChatFormStepIdSchema,token:z32.string().regex(/^[a-z][a-z0-9_]*:[a-z][a-z0-9_]*(?::[a-z][a-z0-9_]*)?$/,"Capability tokens are verb:noun[:qualifier]."),label:z32.string().trim().min(1).max(60),reason:z32.string().trim().min(1).max(240)}).strict(),CapabilitiesBlockSchema=BlockBaseSchema.extend({type:z32.literal("capabilities"),items:z32.array(CapabilityRequestSchema).min(1).max(6)}).strict().superRefine((block,ctx)=>{let duplicate=__name(values=>new Set(values).size!==values.length,"duplicate");duplicate(block.items.map(item=>item.id))&&ctx.addIssue({code:"custom",path:["items"],message:"Every capability request needs its own id."}),duplicate(block.items.map(item=>item.token))&&ctx.addIssue({code:"custom",path:["items"],message:"Ask for each capability token once."}),duplicate(block.items.map(item=>item.label))&&ctx.addIssue({code:"custom",path:["items"],message:"Every capability request needs a distinct label."})}),ChatFormBodySchema=z32.discriminatedUnion("type",[ChoicesBlockSchema,TableBlockSchema,CardsBlockSchema,AssetsBlockSchema,TextBlockSchema,CapabilitiesBlockSchema]);__name(getChatFormOptionLabels,"getChatFormOptionLabels");ChatFormStepSchema=z32.object({id:ChatFormStepIdSchema.optional(),question:z32.string().min(1).max(500),header:z32.string().min(1).max(25),body:ChatFormBodySchema,multiSelect:z32.boolean().optional(),recommended:z32.string().min(1).max(80).optional()}).superRefine((step,ctx)=>{let labels2=getChatFormOptionLabels(step.body);labels2.some(label=>!label.trim())&&ctx.addIssue({code:"custom",path:["body"],message:"Every form option needs a visible label."}),new Set(labels2).size!==labels2.length&&ctx.addIssue({code:"custom",path:["body"],message:"Every form option needs a unique label."}),step.recommended&&!labels2.includes(step.recommended)&&ctx.addIssue({code:"custom",path:["recommended"],message:"The recommended option must match a visible option label."}),step.body.type==="capabilities"&&step.multiSelect===!1&&ctx.addIssue({code:"custom",path:["multiSelect"],message:"A capabilities step is always multi-select: selected is approved, unselected is denied."})}).transform(step=>({...step,multiSelect:step.multiSelect??step.body.type==="capabilities"})),CHAT_FORM_INTERNAL_NOTE_MAX=300,FormBlockSchema=BlockBaseSchema.extend({type:z32.literal("form"),steps:z32.array(ChatFormStepSchema).min(1).max(4),internalNote:z32.string().trim().min(1).max(CHAT_FORM_INTERNAL_NOTE_MAX).optional()}),ChatBlockSchema=z32.discriminatedUnion("type",[ChoicesBlockSchema,TableBlockSchema,CardsBlockSchema,EntryBlockSchema,AssetsBlockSchema,CalloutBlockSchema,StatBlockSchema,ChartBlockSchema,AgentBlockSchema,FormBlockSchema]),ChatBlockToolInputSchema=z32.object({block:ChatBlockSchema}),ChatFormAnswerItemSchema=z32.object({stepId:ChatFormStepIdSchema.optional(),header:z32.string().min(1).max(25),question:z32.string().min(1).max(500),answer:z32.string().min(1),selectedLabels:z32.array(z32.string().min(1).max(120)).max(8),freeText:z32.string(),skipped:z32.boolean()}),ChatFormAnswerMetadataSchema=z32.object({toolCallId:z32.string().max(255).optional(),shortTitle:z32.string().max(80).optional(),questions:z32.array(ChatFormAnswerItemSchema).max(4)}),QUESTION_FORM_CONTRACT_VERSION=1,QuestionFormSnapshotSchema=z32.object({version:z32.literal(QUESTION_FORM_CONTRACT_VERSION),block:FormBlockSchema}).strict(),QuestionFormAnswerSnapshotSchema=z32.object({version:z32.literal(QUESTION_FORM_CONTRACT_VERSION),answer:ChatFormAnswerMetadataSchema}).strict(),ChatFormResponseSchema=ChatFormAnswerMetadataSchema.extend({toolCallId:z32.string().min(1).max(255),partial:z32.boolean().optional()})}});import{z as z33}from"zod";var AdminTargetSchema,AdminToneSchema,AdminStatusSchema,AdminLinkSchema,AdminActionSchema,BlockBaseSchema2,AdminRecordBlockSchema,AdminCardsBlockSchema,AdminTableBlockSchema,AdminTimelineBlockSchema,AdminStatsBlockSchema,AdminExcerptBlockSchema,AdminMediaBlockSchema,AdminActionsBlockSchema,AdminHandoffBlockSchema,AdminChatBlockSchema,AdminChatBlockToolInputSchema,init_admin_chat_block=__esm({"../../packages/api-contracts/dist/esm/types/admin-chat-block.js"(){"use strict";init_chat_block();AdminTargetSchema=z33.union([z33.string().regex(/^\/(?!\/)[^\s]*$/,"Admin paths start with a single slash, e.g. /projects/<id>.").max(500),z33.url({protocol:/^https$/}).max(2e3)]),AdminToneSchema=z33.enum(["ok","warn","bad","neutral"]),AdminStatusSchema=z33.object({label:z33.string().trim().min(1).max(24),tone:AdminToneSchema}),AdminLinkSchema=z33.object({label:z33.string().trim().min(1).max(24),target:AdminTargetSchema}),AdminActionSchema=z33.discriminatedUnion("kind",[BlockSayActionSchema,z33.object({kind:z33.literal("open"),label:z33.string().trim().min(1).max(32),target:AdminTargetSchema}).strict(),z33.object({kind:z33.literal("op"),label:z33.string().trim().min(1).max(32),operation:z33.string().min(1).max(80),input:z33.record(z33.string(),z33.unknown())}).strict(),z33.object({kind:z33.literal("impersonate"),label:z33.string().trim().min(1).max(32),userId:z33.string().min(1).max(120)}).strict(),z33.object({kind:z33.literal("studio"),label:z33.string().trim().min(1).max(32),projectId:z33.string().min(1).max(120)}).strict()]),BlockBaseSchema2=z33.object({fallback:z33.string().trim().min(1,"Every block needs a fallback line for clients that cannot render it.").max(500),title:z33.string().min(1).max(80).optional()}),AdminRecordBlockSchema=BlockBaseSchema2.extend({type:z33.literal("record"),kind:z33.string().trim().min(1).max(24),name:z33.string().trim().min(1).max(80),id:z33.string().min(1).max(120).optional(),status:AdminStatusSchema.optional(),fields:z33.array(z33.object({label:z33.string().trim().min(1).max(24),value:z33.string().min(1).max(80)})).max(4,"A record shows at most 4 fields.").optional(),links:z33.array(AdminLinkSchema).max(2,"A record shows at most 2 links.").optional(),actions:z33.array(AdminActionSchema).max(3).optional()}),AdminCardsBlockSchema=BlockBaseSchema2.extend({type:z33.literal("cards"),items:z33.array(z33.object({name:z33.string().trim().min(1).max(60),subtitle:z33.string().min(1).max(80).optional(),status:AdminStatusSchema.optional(),imageUrl:z33.url({protocol:/^https$/}).max(2e3).optional(),target:AdminTargetSchema.optional()})).min(2).max(6)}),AdminTableBlockSchema=BlockBaseSchema2.extend({type:z33.literal("table"),columns:z33.array(z33.object({label:z33.string().min(1).max(24)})).min(2).max(3,"A table shows at most 3 columns."),rows:z33.array(z33.object({cells:z33.array(z33.string().max(80)).min(2).max(3),tone:AdminToneSchema.optional(),target:AdminTargetSchema.optional()})).min(1).max(8)}).superRefine((table,ctx)=>{table.rows.forEach((row2,index)=>{row2.cells.length!==table.columns.length&&ctx.addIssue({code:"custom",path:["rows",index,"cells"],message:`Every table row needs exactly ${table.columns.length} cells, one for each column.`})})}),AdminTimelineBlockSchema=BlockBaseSchema2.extend({type:z33.literal("timeline"),events:z33.array(z33.object({at:z33.string().trim().min(1).max(16),label:z33.string().trim().min(1).max(80),detail:z33.string().min(1).max(80).optional(),tone:AdminToneSchema,target:AdminTargetSchema.optional()})).min(2).max(6)}),AdminStatsBlockSchema=BlockBaseSchema2.extend({type:z33.literal("stats"),items:z33.array(z33.object({label:z33.string().min(1).max(24),value:z33.string().min(1).max(16),delta:z33.string().min(1).max(12).optional()})).min(1).max(4)}),AdminExcerptBlockSchema=BlockBaseSchema2.extend({type:z33.literal("excerpt"),source:z33.string().trim().min(1).max(60),link:AdminTargetSchema.optional(),content:z33.discriminatedUnion("kind",[z33.object({kind:z33.literal("lines"),lines:z33.array(z33.object({text:z33.string().max(200),highlight:z33.boolean().optional()})).min(1).max(5,"An excerpt shows at most 5 lines.")}),z33.object({kind:z33.literal("message"),author:z33.string().trim().min(1).max(60),at:z33.string().max(24).optional(),text:z33.string().trim().min(1).max(600)})])}),AdminMediaBlockSchema=BlockBaseSchema2.extend({type:z33.literal("media"),items:z33.array(z33.object({url:z33.url({protocol:/^https$/}).max(2e3),alt:z33.string().min(1).max(120),label:z33.string().min(1).max(60).optional()})).min(1).max(6)}),AdminActionsBlockSchema=BlockBaseSchema2.extend({type:z33.literal("actions"),actions:z33.array(AdminActionSchema).min(1).max(3)}),AdminHandoffBlockSchema=BlockBaseSchema2.extend({type:z33.literal("handoff"),prompt:z33.string().trim().min(1).max(4e3)}),AdminChatBlockSchema=z33.discriminatedUnion("type",[AdminRecordBlockSchema,AdminCardsBlockSchema,AdminTableBlockSchema,AdminTimelineBlockSchema,AdminStatsBlockSchema,ChartBlockSchema,AdminExcerptBlockSchema,AdminMediaBlockSchema,ChoicesBlockSchema,AdminActionsBlockSchema,FormBlockSchema,AdminHandoffBlockSchema]),AdminChatBlockToolInputSchema=z33.object({block:AdminChatBlockSchema})}});import{z as z34}from"zod";var CHAT_PORTRAIT_SHAPES,CHAT_PORTRAIT_EYES,CHAT_PORTRAIT_MOUTHS,CHAT_PORTRAIT_COLORS,ChatPortraitSchema,init_chat_portrait=__esm({"../../packages/api-contracts/dist/esm/types/chat-portrait.js"(){"use strict";CHAT_PORTRAIT_SHAPES=["pebble","bean","cloud","drop","potato","mochi","bun","pillow"],CHAT_PORTRAIT_EYES=["dot","caret","ring","shut","small","squint"],CHAT_PORTRAIT_MOUTHS=["smile","grin","o","w"],CHAT_PORTRAIT_COLORS=["red","orange","amber","lime","emerald","teal","sky","blue","indigo","violet","fuchsia","pink"],ChatPortraitSchema=z34.object({shape:z34.enum(CHAT_PORTRAIT_SHAPES),eyes:z34.enum(CHAT_PORTRAIT_EYES),mouth:z34.enum(CHAT_PORTRAIT_MOUTHS),color:z34.enum(CHAT_PORTRAIT_COLORS)})}});import{z as z35}from"zod";function isIanaTimezone(value){try{return new Intl.DateTimeFormat("en-US",{timeZone:value}),!0}catch{return!1}}var ChatRoutineCronSchema,ChatRoutineTimezoneSchema,ChatRoutineScheduleSchema,ChatRoutineNameSchema,ChatRoutineInstructionsSchema,ChatRoutineDescriptionSchema,ChatRoutineModelSchema,ChatRoutineWaitMinutesSchema,ChatRoutineEventTriggerDTOSchema,ChatRoutineEventTriggerInputSchema,ChatRoutineTriggersDTOSchema,ChatRoutineRunOutcomeSchema,ChatRoutineReportSchema,ChatRoutineDTOSchema,ChatRoutineListDTOSchema,AgentHoursUsageDTOSchema,ChatRoutineCreateSchema,ChatRoutineUpdateSchema,ChatRoutineRefusalReasonSchema,ChatRoutineRefusalDTOSchema,ChatRoutineRunStatusSchema,ChatRoutineRunTriggerSchema,ChatRoutineRunStartedBySchema,ChatRoutineRunDTOSchema,ChatRoutineRunListDTOSchema,ChatRoutineRunRequestSchema,ChatRoutineRunOutcomeDTOSchema,init_chat_routine_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/chat-routine.dto.js"(){"use strict";ChatRoutineCronSchema=z35.string().trim().max(64).regex(/^\S+(?: \S+){4}$/,"A schedule is a five-field cron expression");__name(isIanaTimezone,"isIanaTimezone");ChatRoutineTimezoneSchema=z35.string().trim().min(1).max(64).refine(isIanaTimezone,"Unknown timezone"),ChatRoutineScheduleSchema=z35.object({cron:ChatRoutineCronSchema,timezone:ChatRoutineTimezoneSchema}),ChatRoutineNameSchema=z35.string().trim().min(1).max(120),ChatRoutineInstructionsSchema=z35.string().trim().min(1).max(2e4),ChatRoutineDescriptionSchema=z35.string().trim().min(1).max(500),ChatRoutineModelSchema=z35.string().trim().min(1).max(120),ChatRoutineWaitMinutesSchema=z35.number().int().min(0).max(120),ChatRoutineEventTriggerDTOSchema=z35.object({text:z35.string(),title:z35.string(),explanation:z35.string(),watches:z35.array(z35.object({url:z35.string(),health:z35.enum(["ok","needs_repair","blocked","unstable"]),lastCheckedAt:z35.string().nullable()})).optional()}),ChatRoutineEventTriggerInputSchema=z35.object({text:z35.string().trim().min(1).max(500)}),ChatRoutineTriggersDTOSchema=z35.object({manual:z35.literal(!0),schedule:ChatRoutineScheduleSchema.nullable(),event:ChatRoutineEventTriggerDTOSchema.nullable()}),ChatRoutineRunOutcomeSchema=z35.enum(["quiet","reported","decision","incomplete","failed","running"]),ChatRoutineReportSchema=z35.object({message:z35.string().trim().min(1).max(2e4),decision:z35.boolean().optional(),incomplete:z35.boolean().optional()}).refine(report2=>!(report2.decision===!0&&report2.incomplete===!0),{message:"A run that could not check asks for no decision: set incomplete or decision, not both."}),ChatRoutineDTOSchema=z35.object({id:z35.string().uuid(),threadId:z35.string().uuid(),runThreadId:z35.string().uuid(),name:z35.string(),description:z35.string().nullable(),instructions:z35.string(),template:z35.object({key:z35.string()}).nullable(),triggers:ChatRoutineTriggersDTOSchema,model:z35.string(),modelIsDefault:z35.boolean(),waitMinutes:ChatRoutineWaitMinutesSchema,paused:z35.boolean(),nextRunAt:z35.string().nullable(),lastRunAt:z35.string().nullable(),lastOutcome:ChatRoutineRunOutcomeSchema.nullable(),outOfAgentHoursUntil:z35.string().nullable(),createdAt:z35.string(),updatedAt:z35.string()}),ChatRoutineListDTOSchema=z35.object({routines:z35.array(ChatRoutineDTOSchema)}),AgentHoursUsageDTOSchema=z35.object({usedMs:z35.number().int().min(0),includedMs:z35.number().int().min(0),periodStart:z35.string(),periodEnd:z35.string(),stopsAtIncluded:z35.boolean(),canStart:z35.boolean(),canPayOverage:z35.boolean(),overageRateMicrosPerHour:z35.number().int().nullable(),billedMs:z35.number().int().min(0),billedMicros:z35.number().int().min(0)}),ChatRoutineCreateSchema=z35.object({name:ChatRoutineNameSchema,description:ChatRoutineDescriptionSchema.nullable().optional(),instructions:ChatRoutineInstructionsSchema,schedule:ChatRoutineScheduleSchema.nullable().optional(),event:ChatRoutineEventTriggerInputSchema.nullable().optional(),model:ChatRoutineModelSchema.nullable().optional(),waitMinutes:ChatRoutineWaitMinutesSchema.optional()}),ChatRoutineUpdateSchema=z35.object({name:ChatRoutineNameSchema,description:ChatRoutineDescriptionSchema.nullable(),instructions:ChatRoutineInstructionsSchema,schedule:ChatRoutineScheduleSchema.nullable(),event:ChatRoutineEventTriggerInputSchema.nullable(),model:ChatRoutineModelSchema.nullable(),waitMinutes:ChatRoutineWaitMinutesSchema,paused:z35.boolean()}).partial().refine(update=>Object.values(update).some(value=>value!==void 0),"Change at least one field"),ChatRoutineRefusalReasonSchema=z35.enum(["routine_cadence_too_frequent","routine_schedule_invalid","routine_owner_not_agent","routine_trigger_unsupported","routine_model_unknown","routine_needs_pro","routine_is_default"]),ChatRoutineRefusalDTOSchema=z35.object({message:z35.string(),reason:ChatRoutineRefusalReasonSchema}),ChatRoutineRunStatusSchema=z35.enum(["queued","running","finished","failed","cancelled"]),ChatRoutineRunTriggerSchema=z35.enum(["schedule","hand","event"]),ChatRoutineRunStartedBySchema=z35.object({kind:z35.enum(["person","agent"]),name:z35.string().nullable()}),ChatRoutineRunDTOSchema=z35.object({messageId:z35.string().uuid(),invocationId:z35.string().uuid().nullable(),startedAt:z35.string(),trigger:ChatRoutineRunTriggerSchema,startedBy:ChatRoutineRunStartedBySchema.nullable(),status:ChatRoutineRunStatusSchema,outcome:ChatRoutineRunOutcomeSchema.nullable(),summary:z35.string().nullable(),events:z35.number().int().min(1),durationMs:z35.number().int().min(0).nullable(),credits:z35.number().int().min(0).nullable()}),ChatRoutineRunListDTOSchema=z35.object({runs:z35.array(ChatRoutineRunDTOSchema)}),ChatRoutineRunRequestSchema=z35.object({message:z35.string().trim().min(1).max(2e4).optional()}),ChatRoutineRunOutcomeDTOSchema=z35.object({kind:z35.enum(["published","queued","replay","streaming","busy","refused"]),messageId:z35.string().uuid().nullable()})}});import{z as z36}from"zod";var PROJECT_CHAT_MANUAL_MODEL_IDS,ProjectChatManualModelIdSchema,ProjectDTOSchema,ProjectDTO,UpdateProjectSettingsRequestSchema,ProjectWithPlanDTOSchema,ProjectWithPlanDTO,ProjectSummaryDTOSchema,ProjectSummaryDTO,ProjectUserDTOSchema,ProjectUserDTO,ProjectFileDTOSchema,ProjectFileDTO,ProjectChatMessageRole,ProjectMessageBaseSchema,MessageUserMetadataSchema,ProjectMessagePublicDTOSchema,ProjectMessagePublicDTO,ProjectMessageDTOSchema,ProjectVersionDTOSchema,ProjectVersionDTO,ProjectHistoryUsageDTOSchema,ProjectVersionPageDTOSchema,ProjectVersionPageDTO,ProjectHistorySummaryDTOSchema,ProjectHistorySummaryDTO,ProjectDocumentContentDTOSchema,ProjectDocumentContentDTO,ProjectListResponseSchema,ProjectVersionResponseSchema,ProjectVersionPageResponseSchema,ProjectHistorySummaryResponseSchema,VersionMutationResponseSchema,PublishUpgradeRequiredSchema,ProjectLatestPublicationAttemptSchema,ProjectPublicationStateDTOSchema,ProjectPublicationStateDTO,PublishProjectRequestSchema,PublicationMutationDTOSchema,PublicationMutationDTO,ProjectPublicationStateResponseSchema,PublicationMutationResponseSchema,ProjectResponseSchema,ProjectWithPlanResponseSchema,init_project_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project.dto.js"(){"use strict";init_chat_block();init_common();init_env();init_create_dto();init_response();PROJECT_CHAT_MANUAL_MODEL_IDS=["anthropic/claude-opus-5.5","anthropic/claude-opus-5","anthropic/claude-sonnet-5.5","anthropic/claude-sonnet-5","anthropic/claude-fable-5","anthropic/claude-haiku-5.5","openai/gpt-5.6-luna","openai/gpt-5.6-terra","openai/gpt-5.6-sol","openai/gpt-6-astra","openai/gpt-6.1-sol","openai/gpt-6-sol","openai/gpt-6-luna","xai/grok-4.6","google/gemini-3.1-pro-preview","google/gemini-3.8-flash","google/gemini-3.7-flash","google/gemini-3.6-flash","google/gemini-3.5-flash-lite","zai/glm-5.2","zai/glm-5.3-flash","deepseek/deepseek-v4-pro","minimax/minimax-m3","moonshotai/kimi-k3"],ProjectChatManualModelIdSchema=z36.enum(PROJECT_CHAT_MANUAL_MODEL_IDS),ProjectDTOSchema=BaseEntitySchema.extend({name:z36.string(),displayName:z36.string().nullable(),subdomain:z36.string().nullable().optional(),subdomainUpdatedAt:z36.date().nullable().optional(),organizationId:z36.string().nullable(),createdBy:z36.string().nullable(),defaultBranch:BranchSchema.default(DEFAULT_BRANCH),productionSourceBranch:BranchSchema.default(DEFAULT_BRANCH),enabledChatModels:z36.array(ProjectChatManualModelIdSchema).nullable().default(null),status:ProjectStatusSchema,creationStatus:z36.string(),thumbnailUrl:z36.string().nullable(),publishedThumbnailUrl:z36.string().nullable(),category:z36.string().nullable(),snapshotUrl:z36.string().startsWith("/").optional(),appUrl:z36.string().nullable(),lastPublishedAt:z36.coerce.date()}),ProjectDTO=createDTO(ProjectDTOSchema),UpdateProjectSettingsRequestSchema=z36.object({name:z36.string().optional(),enabledChatModels:z36.array(ProjectChatManualModelIdSchema).optional(),productionSourceBranch:BranchSchema.optional(),syncConfig:z36.boolean().optional()}).strict(),ProjectWithPlanDTOSchema=ProjectDTOSchema.extend({planTier:z36.string().nullable()}),ProjectWithPlanDTO=createDTO(ProjectWithPlanDTOSchema),ProjectSummaryDTOSchema=z36.object({id:z36.uuid(),name:z36.string(),displayName:z36.string().nullable(),thumbnailUrl:z36.string().nullable(),category:z36.string().nullable()}),ProjectSummaryDTO=createDTO(ProjectSummaryDTOSchema),ProjectUserDTOSchema=z36.object({id:z36.string(),name:z36.string(),avatar:z36.string().nullable(),color:z36.object({bg:z36.string(),text:z36.string()})}),ProjectUserDTO=createDTO(ProjectUserDTOSchema),ProjectFileDTOSchema=z36.object({path:z36.string(),content:z36.string()}),ProjectFileDTO=createDTO(ProjectFileDTOSchema),ProjectChatMessageRole=z36.enum(["user","assistant","system"]),ProjectMessageBaseSchema=z36.object({id:z36.string(),messageId:z36.string(),versionId:z36.string().nullable(),role:ProjectChatMessageRole,parts:z36.array(z36.any()),createdAt:z36.coerce.date()}),MessageUserMetadataSchema=z36.object({id:z36.string(),name:z36.string().nullable().optional(),image:z36.string().nullable().optional()}).nullable().optional(),ProjectMessagePublicDTOSchema=ProjectMessageBaseSchema.extend({credits:z36.number(),metadata:z36.object({user:MessageUserMetadataSchema,changeManifest:z36.array(z36.any()).optional(),questionAnswer:ChatFormAnswerMetadataSchema.optional()}).nullable().optional()}),ProjectMessagePublicDTO=createDTO(ProjectMessagePublicDTOSchema),ProjectMessageDTOSchema=ProjectMessagePublicDTOSchema,ProjectVersionDTOSchema=z36.object({versionId:z36.uuid(),commitHash:z36.string(),name:z36.string(),description:z36.string().nullable(),kind:z36.enum(["manual","agent","restore-safety","deploy","merge","content","legacy"]),createdAt:CommonSchemas.timestamp,expiresAt:CommonSchemas.timestamp}),ProjectVersionDTO=createDTO(ProjectVersionDTOSchema),ProjectHistoryUsageDTOSchema=z36.object({versionCount:z36.number().int().nonnegative(),snapshotBytes:z36.number().int().nonnegative()}),ProjectVersionPageDTOSchema=createCursorPageDataSchema(ProjectVersionDTOSchema),ProjectVersionPageDTO=createDTO(ProjectVersionPageDTOSchema),ProjectHistorySummaryDTOSchema=z36.object({usage:ProjectHistoryUsageDTOSchema,retentionDays:z36.number().int().positive()}),ProjectHistorySummaryDTO=createDTO(ProjectHistorySummaryDTOSchema),ProjectDocumentContentDTOSchema=z36.object({content:z36.string()}),ProjectDocumentContentDTO=createDTO(ProjectDocumentContentDTOSchema),ProjectListResponseSchema=createResponseSchema(z36.array(ProjectDTOSchema)),ProjectVersionResponseSchema=createResponseSchema(ProjectVersionDTOSchema),ProjectVersionPageResponseSchema=createCursorPaginatedResponseSchema(ProjectVersionDTOSchema),ProjectHistorySummaryResponseSchema=createResponseSchema(ProjectHistorySummaryDTOSchema),VersionMutationResponseSchema=createResponseSchema(z36.object({success:z36.boolean(),message:z36.string().optional(),warning:z36.string().optional(),durationMs:z36.number().int().nonnegative().optional()})),PublishUpgradeRequiredSchema=z36.object({code:z36.literal("PUBLISH_UPGRADE_REQUIRED"),message:z36.string(),currentVersion:z36.number().int().positive(),targetVersion:z36.literal(4)}),ProjectLatestPublicationAttemptSchema=z36.object({publicationId:z36.uuid(),status:z36.enum(["queued","building","published","failed","canceled"]),failureCode:z36.string().nullable(),sourceBranch:z36.string(),createdAt:CommonSchemas.timestamp,finishedAt:CommonSchemas.timestamp.nullable()}),ProjectPublicationStateDTOSchema=z36.object({isPublished:z36.boolean(),publishedAt:CommonSchemas.timestamp.nullable(),publishedVersion:z36.string().nullable(),upgradeRequired:PublishUpgradeRequiredSchema.nullish(),hasActiveRelease:z36.boolean().optional(),latestAttempt:ProjectLatestPublicationAttemptSchema.nullish()}),ProjectPublicationStateDTO=createDTO(ProjectPublicationStateDTOSchema),PublishProjectRequestSchema=z36.object({label:z36.string().trim().min(1).max(120).optional(),notes:z36.string().max(2e4).optional()}).strict(),PublicationMutationDTOSchema=z36.object({success:z36.boolean(),message:z36.string().optional(),publishedAt:CommonSchemas.timestamp.optional(),firstPublish:z36.boolean(),publicationId:z36.string().optional(),url:z36.string().nullable().optional()}),PublicationMutationDTO=createDTO(PublicationMutationDTOSchema),ProjectPublicationStateResponseSchema=createResponseSchema(ProjectPublicationStateDTOSchema),PublicationMutationResponseSchema=createResponseSchema(PublicationMutationDTOSchema),ProjectResponseSchema=createResponseSchema(ProjectDTOSchema),ProjectWithPlanResponseSchema=createResponseSchema(ProjectWithPlanDTOSchema)}});import{z as z37}from"zod";var ChatMessageListDTOSchema,ChatMessagesPageDTOSchema,ChatLiveTurnDTOSchema,ChatLiveTurnStateDTOSchema,ChatLiveTurnStateDTO,ChatMessageAuthorDTOSchema,ChatThreadMessageDTOSchema,ChatQueuedMessageDTOSchema,ChatAttentionDTOSchema,ChatThreadMessagesPageDTOSchema,ChatReplayOutcomeDTOSchema,ChatQueuedOutcomeDTOSchema,ChatBusyOutcomeDTOSchema,ChatRefusedOutcomeDTOSchema,ChatNonStreamingOutcomeDTOSchema,ProjectChatKindSchema,ProjectChatCreatableKindSchema,ProjectChatRoutinesDTOSchema,ProjectChatDescriptionSchema,ProjectChatInstructionsSchema,ProjectChatDTOSchema,ProjectChatListDTOSchema,ProjectChatCreatedDTOSchema,ProjectChatTitleSchema,ProjectChatCreateSchema,ProjectChatUpdateSchema,ChatTemplateRoutineScheduleDTOSchema,ChatTemplateRoutineDTOSchema,ChatTemplateDTOSchema,ChatTemplateListDTOSchema,ProjectChatStateSchema,ChatMessageListResponseSchema,ChatMessagesPageResponseSchema,init_chat_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/chat.dto.js"(){"use strict";init_chat_portrait();init_create_dto();init_response();init_chat_routine_dto();init_organization_features_dto();init_project_dto();ChatMessageListDTOSchema=z37.array(ProjectMessageDTOSchema),ChatMessagesPageDTOSchema=z37.object({items:z37.array(ProjectMessagePublicDTOSchema),nextCursor:z37.string().nullable()}),ChatLiveTurnDTOSchema=z37.object({invocationId:z37.string(),step:z37.enum(["preparing","working","compacting","merging"]),startedAt:z37.string(),continuesInvocationId:z37.string().nullable().optional()}),ChatLiveTurnStateDTOSchema=z37.object({threadId:z37.string().nullable(),liveTurn:ChatLiveTurnDTOSchema.nullable()}),ChatLiveTurnStateDTO=createDTO(ChatLiveTurnStateDTOSchema),ChatMessageAuthorDTOSchema=z37.object({kind:z37.enum(["person","agent","routine","system"]),id:z37.string().nullable()}),ChatThreadMessageDTOSchema=z37.object({id:z37.string(),role:z37.enum(["user","assistant"]),parts:z37.array(z37.unknown()),metadata:z37.record(z37.string(),z37.unknown()).nullable(),versionId:z37.string().nullable().optional(),createdAt:z37.date().transform(value=>value.toISOString()),providerMessageId:z37.string().nullable().optional(),author:ChatMessageAuthorDTOSchema,invocationId:z37.string().nullable().optional(),invocationStatus:z37.string().nullable().optional(),invocationTerminalReason:z37.string().nullable().optional()}),ChatQueuedMessageDTOSchema=z37.object({id:z37.string(),parts:z37.array(z37.unknown()),metadata:z37.record(z37.string(),z37.unknown()).nullable(),providerMessageId:z37.string().nullable().optional(),author:ChatMessageAuthorDTOSchema,failed:z37.boolean(),queuedAt:z37.date().transform(value=>value.toISOString())}),ChatAttentionDTOSchema=z37.object({type:z37.literal("merge_conflict"),merge:z37.object({mergeId:z37.string().uuid(),projectId:z37.string(),fromBranch:z37.string(),toBranch:z37.string()}),publishAfterMerge:z37.boolean()}),ChatThreadMessagesPageDTOSchema=z37.object({threadId:z37.string().nullable(),title:z37.string().nullable(),messages:z37.array(ChatThreadMessageDTOSchema),nextCursor:z37.string().nullable(),liveTurn:ChatLiveTurnDTOSchema.nullable().optional(),attention:ChatAttentionDTOSchema.nullable().optional(),queue:z37.array(ChatQueuedMessageDTOSchema).optional(),queuePaused:z37.boolean().optional(),queueWaitUntil:z37.string().nullable().optional()}),ChatReplayOutcomeDTOSchema=z37.object({kind:z37.literal("replay"),threadId:z37.string(),userMessageId:z37.string()}),ChatQueuedOutcomeDTOSchema=z37.object({kind:z37.literal("queued"),threadId:z37.string(),userMessageId:z37.string(),blockingRootId:z37.string().optional()}),ChatBusyOutcomeDTOSchema=z37.object({kind:z37.literal("busy"),threadId:z37.string(),userMessageId:z37.string(),blockingRootId:z37.string().optional()}),ChatRefusedOutcomeDTOSchema=z37.object({kind:z37.literal("refused"),threadId:z37.string(),userMessageId:z37.string(),refusedInvocationId:z37.string(),terminalReason:z37.string()}),ChatNonStreamingOutcomeDTOSchema=z37.discriminatedUnion("kind",[ChatReplayOutcomeDTOSchema,ChatQueuedOutcomeDTOSchema,ChatBusyOutcomeDTOSchema,ChatRefusedOutcomeDTOSchema]),ProjectChatKindSchema=z37.enum(["chat","agent","routine"]),ProjectChatCreatableKindSchema=z37.enum(["chat","agent"]),ProjectChatRoutinesDTOSchema=z37.object({quietRuns:z37.number().int().nonnegative(),since:z37.string().nullable(),lastOutcome:ChatRoutineRunOutcomeSchema.nullable(),lastRunAt:z37.string().nullable(),nextRunAt:z37.string().nullable(),wakesOnChanges:z37.boolean()}),ProjectChatDescriptionSchema=z37.string().trim().max(2e3),ProjectChatInstructionsSchema=z37.string().trim().max(8e3),ProjectChatDTOSchema=z37.object({id:z37.string().uuid(),kind:ProjectChatKindSchema,title:z37.string().nullable(),description:z37.string().nullable(),instructions:z37.string().nullable(),liveAt:z37.string().nullable(),template:z37.string().nullable(),parentThreadId:z37.string().uuid().nullable(),routines:ProjectChatRoutinesDTOSchema.nullable(),createdAt:z37.string(),lastMessageAt:z37.string().nullable(),preview:z37.string().nullable(),running:z37.boolean(),awaitingAnswer:z37.boolean(),unread:z37.boolean(),pinned:z37.boolean(),archived:z37.boolean(),muted:z37.boolean(),portrait:ChatPortraitSchema.nullable()}),ProjectChatListDTOSchema=z37.object({chats:z37.array(ProjectChatDTOSchema)}),ProjectChatCreatedDTOSchema=z37.object({id:z37.string().uuid()}),ProjectChatTitleSchema=z37.string().trim().min(1).max(120),ProjectChatCreateSchema=z37.object({id:z37.string().uuid(),portrait:ChatPortraitSchema,kind:ProjectChatCreatableKindSchema,title:ProjectChatTitleSchema,description:ProjectChatDescriptionSchema,template:z37.string().min(1).max(64),timezone:ChatRoutineTimezoneSchema,setup:z37.literal(!0),locale:z37.string().trim().min(2).max(16)}).partial().refine(create=>create.template===void 0||create.kind===void 0&&create.title===void 0&&create.description===void 0,"A template brings its own kind, title and description").refine(create=>create.setup===void 0||create.kind==="agent","Only an agent is set up in its chat"),ProjectChatUpdateSchema=z37.object({title:ProjectChatTitleSchema,description:ProjectChatDescriptionSchema,instructions:ProjectChatInstructionsSchema,portrait:ChatPortraitSchema}).partial().refine(update=>update.title!==void 0||update.description!==void 0||update.instructions!==void 0||update.portrait!==void 0,"Set a title, a description, instructions or a portrait"),ChatTemplateRoutineScheduleDTOSchema=z37.object({cron:z37.string()}),ChatTemplateRoutineDTOSchema=z37.object({name:z37.string(),description:z37.string(),instructions:z37.string(),schedule:ChatTemplateRoutineScheduleDTOSchema.nullable(),plans:z37.array(AgentPlanSchema)}),ChatTemplateDTOSchema=z37.object({id:z37.string(),name:z37.string(),summary:z37.string(),description:z37.string(),greeting:z37.string(),starters:z37.array(z37.string()),portrait:ChatPortraitSchema,plans:z37.array(AgentPlanSchema),routines:z37.array(ChatTemplateRoutineDTOSchema)}),ChatTemplateListDTOSchema=z37.object({templates:z37.array(ChatTemplateDTOSchema)}),ProjectChatStateSchema=z37.object({read:z37.boolean(),pinned:z37.boolean(),archived:z37.boolean(),muted:z37.boolean()}).partial().refine(state=>Object.keys(state).length>0,"Set at least one of read, pinned, archived or muted"),ChatMessageListResponseSchema=createResponseSchema(ChatMessageListDTOSchema),ChatMessagesPageResponseSchema=createResponseSchema(ChatMessagesPageDTOSchema)}});import{z as z38}from"zod";var ADMIN_ASSISTANT_BASE_PATH,ADMIN_ASSISTANT_PATHS,ADMIN_ASSISTANT_MESSAGE_MAX_CHARS,ADMIN_ASSISTANT_FORM_NOTE_MAX_CHARS,ADMIN_ASSISTANT_REQUEST_MAX_BYTES,AdminAssistantFormResponseSchema,AdminAssistantOutgoingMessageSchema,AdminAssistantSendRequestSchema,AdminAssistantSendOutcomeSchema,AdminAssistantStreamHeadSchema,AdminAssistantThreadSummarySchema,AdminAssistantThreadListQuerySchema,AdminAssistantThreadListResponseSchema,AdminAssistantThreadResponseSchema,AdminAssistantLiveTurnResponseSchema,AdminAssistantAbortResponseSchema,AdminAssistantThreadUpdateSchema,AdminAssistantThreadDeleteResponseSchema,init_admin_assistant=__esm({"../../packages/api-contracts/dist/esm/types/admin-assistant.js"(){"use strict";init_chat_dto();init_chat_block();ADMIN_ASSISTANT_BASE_PATH="/api/ops/assistant",ADMIN_ASSISTANT_PATHS={chat:`${ADMIN_ASSISTANT_BASE_PATH}/chat`,threads:`${ADMIN_ASSISTANT_BASE_PATH}/threads`,thread:__name(threadId=>`${ADMIN_ASSISTANT_BASE_PATH}/threads/${encodeURIComponent(threadId)}`,"thread"),live:__name(threadId=>`${ADMIN_ASSISTANT_BASE_PATH}/threads/${encodeURIComponent(threadId)}/live`,"live"),stream:__name(threadId=>`${ADMIN_ASSISTANT_BASE_PATH}/threads/${encodeURIComponent(threadId)}/stream`,"stream"),abort:__name(threadId=>`${ADMIN_ASSISTANT_BASE_PATH}/threads/${encodeURIComponent(threadId)}/abort`,"abort")},ADMIN_ASSISTANT_MESSAGE_MAX_CHARS=2e4,ADMIN_ASSISTANT_FORM_NOTE_MAX_CHARS=4e3,ADMIN_ASSISTANT_REQUEST_MAX_BYTES=256*1024,AdminAssistantFormResponseSchema=ChatFormResponseSchema.extend({questions:z38.array(ChatFormAnswerItemSchema.extend({answer:z38.string().min(1).max(ADMIN_ASSISTANT_FORM_NOTE_MAX_CHARS+1200),freeText:z38.string().max(ADMIN_ASSISTANT_FORM_NOTE_MAX_CHARS)})).max(4)}),AdminAssistantOutgoingMessageSchema=z38.object({id:z38.string().min(1).max(255).regex(/^(app|e2e):/,"Message ids from a client start with app:"),text:z38.string().max(ADMIN_ASSISTANT_MESSAGE_MAX_CHARS)}).strict(),AdminAssistantSendRequestSchema=z38.object({threadId:z38.string().uuid().optional(),message:AdminAssistantOutgoingMessageSchema,formResponse:AdminAssistantFormResponseSchema.optional()}).strict().superRefine((body,context)=>{body.message.text.trim().length===0&&!body.formResponse&&context.addIssue({code:"custom",path:["message","text"],message:"A message cannot be empty."})}),AdminAssistantSendOutcomeSchema=z38.discriminatedUnion("kind",[z38.object({kind:z38.literal("replay"),threadId:z38.string(),userMessageId:z38.string()}),z38.object({kind:z38.literal("queued"),threadId:z38.string(),userMessageId:z38.string(),blockingRootId:z38.string().optional()}),z38.object({kind:z38.literal("busy"),threadId:z38.string(),userMessageId:z38.string(),blockingRootId:z38.string().optional()}),z38.object({kind:z38.literal("refused"),threadId:z38.string(),userMessageId:z38.string(),refusedInvocationId:z38.string(),terminalReason:z38.string()})]),AdminAssistantStreamHeadSchema=z38.object({kind:z38.literal("turn"),threadId:z38.string(),userMessageId:z38.string(),invocationId:z38.string()}),AdminAssistantThreadSummarySchema=z38.object({id:z38.string().uuid(),title:z38.string().nullable(),lastMessageAt:z38.string().nullable(),createdAt:z38.string()}),AdminAssistantThreadListQuerySchema=z38.object({q:z38.string().trim().max(200).optional(),cursor:z38.string().max(500).optional(),limit:z38.coerce.number().int().min(1).max(100).optional()}),AdminAssistantThreadListResponseSchema=z38.object({threads:z38.array(AdminAssistantThreadSummarySchema),nextCursor:z38.string().nullable()}),AdminAssistantThreadResponseSchema=z38.object({thread:AdminAssistantThreadSummarySchema.extend({createdBy:z38.string().nullable()}),messages:z38.array(ChatThreadMessageDTOSchema),liveTurn:ChatLiveTurnDTOSchema.nullable()}),AdminAssistantLiveTurnResponseSchema=z38.object({threadId:z38.string().nullable(),liveTurn:ChatLiveTurnDTOSchema.nullable()}),AdminAssistantAbortResponseSchema=z38.object({aborted:z38.boolean()}),AdminAssistantThreadUpdateSchema=z38.object({title:ProjectChatTitleSchema}).strict(),AdminAssistantThreadDeleteResponseSchema=z38.object({deleted:z38.literal(!0)})}});import{z as z39}from"zod";function normalizeStoredBlock(block){if(typeof block!="object"||block===null||Array.isArray(block))return block;let{type,...rest}=block;if(typeof type!="string")return block;let target=LEGACY_BLOCK_TYPES[type];return target?target==="viz"?{...rest,type:target,kind:"bar"}:{...rest,type:target}:block}function normalizeStoredBlocks(blocks){return Array.isArray(blocks)?blocks.map(normalizeStoredBlock):blocks}function normalizeStoredDocument(document){if(typeof document!="object"||document===null||Array.isArray(document))return document;let source=document;return{...source,brief:normalizeStoredBlocks(source.brief),details:normalizeStoredBlocks(source.details)}}function derivedBlockBody(block){let lines=[];switch(block.type){case"text":lines.push(block.text);break;case"metric":for(let item of block.items)lines.push([`${item.value}${item.unit??""}`,item.label].join(" \u2014 ")),item.note&&lines.push(item.note);break;case"viz":lines.push(block.points.map(point=>`${point.label}: ${formatReportValue(point.value,block.unit)}`).join(", ")),block.caption&&lines.push(block.caption);break;case"list":for(let item of block.items)lines.push([item.label,item.heading].filter(Boolean).join(" \u2014 ")),item.body&&lines.push(item.body),item.evidence&&lines.push(item.evidence);break;case"table":lines.push(block.columns.map(column=>column.label).join(" | "));for(let row2 of block.rows)lines.push(row2.cells.map(cell=>cell.text).join(" | "));block.caption&&lines.push(block.caption);break;case"media":lines.push(block.alt),block.caption&&lines.push(block.caption);break;case"links":for(let item of block.items)lines.push([`${item.label}: ${item.url}`,item.description].filter(Boolean).join(" \u2014 "));break;case"code":lines.push(block.code),block.caption&&lines.push(block.caption);break}return lines.join(`
|
|
4
|
+
var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0}),__require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+x+'" is not supported')});var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);import{z}from"zod";function filterUnknownProperties(data,schema){if(data==null)return data;if(schema instanceof z.ZodOptional||schema instanceof z.ZodNullable||schema instanceof z.ZodDefault)return filterUnknownProperties(data,schema.unwrap());if(schema instanceof z.ZodArray){if(!Array.isArray(data))return data;let itemSchema=schema.unwrap();return data.map(item=>filterUnknownProperties(item,itemSchema))}if(schema instanceof z.ZodDiscriminatedUnion){if(typeof data!="object"||data===null)return data;let unionSchema=schema,discriminator=unionSchema.def.discriminator,discriminatorValue=data[discriminator],matchingSchema=unionSchema.options.find(option=>{let discriminatorField=option.shape[discriminator];return discriminatorField instanceof z.ZodLiteral?discriminatorField.def.values.includes(discriminatorValue):!1});return matchingSchema?filterUnknownProperties(data,matchingSchema):data}if(schema instanceof z.ZodObject){if(typeof data!="object")return data;let shape=schema.shape,result={};for(let key in shape)if(Object.prototype.hasOwnProperty.call(data,key)){let fieldSchema=shape[key],fieldValue2=data[key];result[key]=filterUnknownProperties(fieldValue2,fieldSchema)}if(schema.def.catchall instanceof z.ZodUnknown)for(let[key,value]of Object.entries(data))key in shape||(result[key]=value);return result}return data}function createObjectDTO(schema){return{schema,from(data){let filtered=filterUnknownProperties(data,schema);return schema.parse(filtered)},fromList(data){return data.map(item=>this.from(item))},safeParse(data){let filtered=filterUnknownProperties(data,schema);return schema.safeParse(filtered)},partial(){let partialSchema=schema.partial();return createObjectDTO(partialSchema)},pick(keys){let mask=keys.reduce((acc,key)=>({...acc,[key]:!0}),{}),picked=schema.pick(mask);return createObjectDTO(picked)},omit(keys){let mask=keys.reduce((acc,key)=>({...acc,[key]:!0}),{}),omitted=schema.omit(mask);return createObjectDTO(omitted)}}}function createDiscriminatedUnionDTO(schema){return{schema,from(data){let filtered=filterUnknownProperties(data,schema);return schema.parse(filtered)},fromList(data){return data.map(item=>this.from(item))},safeParse(data){let filtered=filterUnknownProperties(data,schema);return schema.safeParse(filtered)}}}function createDTO(schema){if(schema instanceof z.ZodObject)return createObjectDTO(schema);if(schema instanceof z.ZodDiscriminatedUnion)return createDiscriminatedUnionDTO(schema);throw new Error(`Unsupported schema type: ${schema.constructor.name}. createDTO supports ZodObject and ZodDiscriminatedUnion.`)}var init_create_dto=__esm({"../../packages/api-contracts/dist/esm/utils/create-dto.js"(){"use strict";__name(filterUnknownProperties,"filterUnknownProperties");__name(createObjectDTO,"createObjectDTO");__name(createDiscriminatedUnionDTO,"createDiscriminatedUnionDTO");__name(createDTO,"createDTO")}});import{z as z2}from"zod";function createCursorPageDataSchema(dataSchema){return z2.object({items:z2.array(dataSchema),nextCursor:z2.string().nullable()})}function createCursorPaginatedResponseSchema(dataSchema){return z2.object({data:createCursorPageDataSchema(dataSchema)})}var createResponseSchema,init_response=__esm({"../../packages/api-contracts/dist/esm/utils/response.js"(){"use strict";createResponseSchema=__name(dataSchema=>z2.object({data:dataSchema}),"createResponseSchema");__name(createCursorPageDataSchema,"createCursorPageDataSchema");__name(createCursorPaginatedResponseSchema,"createCursorPaginatedResponseSchema")}});import{z as z3}from"zod";var PaginationQuerySchema,init_pagination=__esm({"../../packages/api-contracts/dist/esm/utils/pagination.js"(){"use strict";PaginationQuerySchema=z3.object({page:z3.coerce.number().int().positive().default(1),limit:z3.coerce.number().int().positive().max(100).default(20)})}});import{z as z4}from"zod";var CommonSchemas,BaseEntitySchema,ProjectRoleKeySchema,ProjectRoleKeyWithSystemSchema,ProjectPrincipalTypeSchema,ProjectStatusSchema,ProjectInviteStatusSchema,PublicationStatusSchema,OrganizationRoleSchema,AssetTypeSchema,TemplateCodeSchema,FieldTypeSchema,CONTENT_INTERNAL_FIELD_NAMES,contentInternalFieldNames,RESERVED_CONTENT_FIELD_NAMES,contentReviewHiddenFieldNames,CONTENT_TYPE_NAME_PATTERN,CONTENT_TYPE_NAME_PATTERN_DESCRIPTION,CONTENT_FIELD_NAME_PATTERN,CONTENT_FIELD_NAME_PATTERN_DESCRIPTION,init_common=__esm({"../../packages/api-contracts/dist/esm/types/common.js"(){"use strict";CommonSchemas={timestamp:z4.coerce.date(),positiveInt:z4.number().int().positive(),nonNegativeInt:z4.number().int().nonnegative()},BaseEntitySchema=z4.object({id:z4.uuid(),createdAt:CommonSchemas.timestamp,updatedAt:CommonSchemas.timestamp}),ProjectRoleKeySchema=z4.enum(["full","edit","comment","view"]),ProjectRoleKeyWithSystemSchema=z4.enum(["full","edit","comment","view","agent","schedule"]),ProjectPrincipalTypeSchema=z4.enum(["user","org","orgRole","public","email"]),ProjectStatusSchema=z4.enum(["creating","forking","start_server","created","failed"]),ProjectInviteStatusSchema=z4.enum(["pending","accepted","revoked","expired"]),PublicationStatusSchema=z4.enum(["idle","publishing","published","failed","unpublished"]),OrganizationRoleSchema=z4.enum(["owner","admin","member"]),AssetTypeSchema=z4.enum(["file","folder"]),TemplateCodeSchema=z4.enum(["Free","PAYG","Starter","Premium","Pro"]),FieldTypeSchema=z4.enum(["string","text","richtext","media","number","boolean","date","datetime","json","reference","blocks"]),CONTENT_INTERNAL_FIELD_NAMES=["id","entryId","documentId","locale","__fimo"],contentInternalFieldNames=new Set(CONTENT_INTERNAL_FIELD_NAMES),RESERVED_CONTENT_FIELD_NAMES=[...CONTENT_INTERNAL_FIELD_NAMES,"slug","createdAt","updatedAt"],contentReviewHiddenFieldNames=new Set(RESERVED_CONTENT_FIELD_NAMES),CONTENT_TYPE_NAME_PATTERN=/^[A-Za-z]\w*$/,CONTENT_TYPE_NAME_PATTERN_DESCRIPTION="letters, numbers, and underscores, starting with a letter",CONTENT_FIELD_NAME_PATTERN=/^[A-Za-z_]\w*$/,CONTENT_FIELD_NAME_PATTERN_DESCRIPTION="letters, numbers, and underscores, starting with a letter or underscore"}});import{z as z5}from"zod";var MB,MAX_UPLOAD_FILE_SIZE_BYTES,MAX_DOCUMENT_SIZE_BYTES,MAX_AUDIO_SIZE_BYTES,MAX_IMAGE_SIZE_BYTES,MAX_VIDEO_SIZE_BYTES,MAX_ARCHIVE_SIZE_BYTES,MAX_MODEL_SIZE_BYTES,MAX_ATTACHMENT_MESSAGE_SIZE_BYTES,MODEL_MEDIA_TYPE,AttachmentModelMediaTypeSchema,MODEL_MIME_TYPES,MODEL_RENDER_VIEW_ANGLES,AttachmentModelRenderRequestSchema,AttachmentModelRenderSuccessSchema,AttachmentModelRenderFailureSchema,AttachmentModelRenderResponseSchema,AttachmentModelRenderMeterSchema,ATTACHMENT_TYPES,ATTACHMENT_MIME_TYPES,ATTACHMENT_IMAGE_MIME_TYPES,ATTACHMENT_DOCUMENT_MIME_TYPES,ATTACHMENT_ARCHIVE_MIME_TYPES,ATTACHMENT_AUDIO_MIME_TYPES,ATTACHMENT_VIDEO_MIME_TYPES,ATTACHMENT_ACCEPT_EXTENSIONS,ATTACHMENT_ACCEPT_STRING,ATTACHMENT_DROPZONE_ACCEPT,EXTENSION_MIME_TYPES,init_attachments=__esm({"../../packages/api-contracts/dist/esm/types/attachments.js"(){"use strict";MB=1024*1024,MAX_UPLOAD_FILE_SIZE_BYTES=50*MB,MAX_DOCUMENT_SIZE_BYTES=5*MB,MAX_AUDIO_SIZE_BYTES=10*MB,MAX_IMAGE_SIZE_BYTES=20*MB,MAX_VIDEO_SIZE_BYTES=20*MB,MAX_ARCHIVE_SIZE_BYTES=20*MB,MAX_MODEL_SIZE_BYTES=20*MB,MAX_ATTACHMENT_MESSAGE_SIZE_BYTES=20*MB,MODEL_MEDIA_TYPE={GLB:"model/gltf-binary",GLTF:"model/gltf+json",FBX:"model/fbx",OBJ:"model/obj",STL:"model/stl",PLY:"model/ply"},AttachmentModelMediaTypeSchema=z5.enum(MODEL_MEDIA_TYPE),MODEL_MIME_TYPES=Object.values(MODEL_MEDIA_TYPE),MODEL_RENDER_VIEW_ANGLES=[35,125,215,305],AttachmentModelRenderRequestSchema=z5.object({renderId:z5.uuid(),filename:z5.string().min(1).max(255),mediaType:AttachmentModelMediaTypeSchema,modelUrl:z5.url()}),AttachmentModelRenderSuccessSchema=z5.object({status:z5.literal("succeeded"),views:z5.tuple([z5.object({angle:z5.literal(MODEL_RENDER_VIEW_ANGLES[0]),screenshotUrl:z5.url()}),z5.object({angle:z5.literal(MODEL_RENDER_VIEW_ANGLES[1]),screenshotUrl:z5.url()}),z5.object({angle:z5.literal(MODEL_RENDER_VIEW_ANGLES[2]),screenshotUrl:z5.url()}),z5.object({angle:z5.literal(MODEL_RENDER_VIEW_ANGLES[3]),screenshotUrl:z5.url()})]),elapsedMs:z5.number().nonnegative(),browserElapsedMs:z5.number().nonnegative(),diagnostics:z5.unknown().optional()}),AttachmentModelRenderFailureSchema=z5.object({status:z5.literal("failed"),error:z5.literal("render_failed"),message:z5.string(),elapsedMs:z5.number().nonnegative(),browserElapsedMs:z5.number().nonnegative()}),AttachmentModelRenderResponseSchema=z5.discriminatedUnion("status",[AttachmentModelRenderSuccessSchema,AttachmentModelRenderFailureSchema]),AttachmentModelRenderMeterSchema=z5.object({browserElapsedMs:z5.number().nonnegative()}),ATTACHMENT_TYPES=[{mime:"image/png",extensions:[".png"],category:"image",maxSizeBytes:MAX_IMAGE_SIZE_BYTES},{mime:"image/jpeg",extensions:[".jpg",".jpeg"],category:"image",maxSizeBytes:MAX_IMAGE_SIZE_BYTES},{mime:"image/webp",extensions:[".webp"],category:"image",maxSizeBytes:MAX_IMAGE_SIZE_BYTES},{mime:"image/avif",extensions:[".avif"],category:"image",maxSizeBytes:MAX_IMAGE_SIZE_BYTES},{mime:"application/pdf",extensions:[".pdf"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/msword",extensions:[".doc"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",extensions:[".docx"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.ms-excel",extensions:[".xls"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",extensions:[".xlsx"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.ms-powerpoint",extensions:[".ppt"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation",extensions:[".pptx"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/epub+zip",extensions:[".epub"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.oasis.opendocument.text",extensions:[".odt"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.oasis.opendocument.spreadsheet",extensions:[".ods"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/vnd.oasis.opendocument.presentation",extensions:[".odp"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"text/rtf",extensions:[],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/rtf",extensions:[".rtf"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"text/html",extensions:[".html",".htm"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"text/csv",extensions:[".csv"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"text/markdown",extensions:[".md",".markdown"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/json",extensions:[".json"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"text/plain",extensions:[".txt"],category:"document",maxSizeBytes:MAX_DOCUMENT_SIZE_BYTES},{mime:"application/zip",extensions:[".zip"],category:"archive",maxSizeBytes:MAX_ARCHIVE_SIZE_BYTES},{mime:"audio/mpeg",extensions:[".mp3"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"audio/wav",extensions:[".wav"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"audio/aiff",extensions:[".aiff",".aif"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"audio/aac",extensions:[".aac"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"audio/ogg",extensions:[".ogg"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"audio/flac",extensions:[".flac"],category:"audio",maxSizeBytes:MAX_AUDIO_SIZE_BYTES},{mime:"video/mp4",extensions:[".mp4"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/mpeg",extensions:[".mpeg",".mpg"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/mpg",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/quicktime",extensions:[".mov"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/mov",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/avi",extensions:[".avi"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/vnd.avi",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/x-msvideo",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/x-flv",extensions:[".flv"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/webm",extensions:[".webm"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/wmv",extensions:[".wmv"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/x-ms-wmv",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/x-ms-asf",extensions:[],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:"video/3gpp",extensions:[".3gp"],category:"video",maxSizeBytes:MAX_VIDEO_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.GLB,extensions:[".glb"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.GLTF,extensions:[".gltf"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.FBX,extensions:[".fbx"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.OBJ,extensions:[".obj"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.STL,extensions:[".stl"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES},{mime:MODEL_MEDIA_TYPE.PLY,extensions:[".ply"],category:"model",maxSizeBytes:MAX_MODEL_SIZE_BYTES}],ATTACHMENT_MIME_TYPES=ATTACHMENT_TYPES.map(t2=>t2.mime),ATTACHMENT_IMAGE_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="image").map(t2=>t2.mime),ATTACHMENT_DOCUMENT_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="document").map(t2=>t2.mime),ATTACHMENT_ARCHIVE_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="archive").map(t2=>t2.mime),ATTACHMENT_AUDIO_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="audio").map(t2=>t2.mime),ATTACHMENT_VIDEO_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="video").map(t2=>t2.mime),ATTACHMENT_ACCEPT_EXTENSIONS=ATTACHMENT_TYPES.flatMap(t2=>t2.extensions),ATTACHMENT_ACCEPT_STRING=[...ATTACHMENT_ACCEPT_EXTENSIONS,...ATTACHMENT_MIME_TYPES].join(","),ATTACHMENT_DROPZONE_ACCEPT=Object.fromEntries(ATTACHMENT_TYPES.map(t2=>[t2.mime,t2.extensions])),EXTENSION_MIME_TYPES=Object.fromEntries(ATTACHMENT_TYPES.flatMap(t2=>t2.extensions.map(extension=>[extension,t2.mime])))}});import{z as z6}from"zod";var AssetReadRequestSchema,AssetDerivedFileSchema,AssetReadBaseSchema,AssetReadPageSchema,AssetReadQuerySchema,AssetReadResultSchema,init_asset_reading=__esm({"../../packages/api-contracts/dist/esm/types/asset-reading.js"(){"use strict";AssetReadRequestSchema=z6.object({cursor:z6.string().optional(),query:z6.string().trim().min(1).max(500).optional()}).strict().refine(input=>input.cursor===void 0||input.query===void 0,{message:"Use either cursor or query, not both."}),AssetDerivedFileSchema=z6.object({url:z6.url(),mediaType:z6.string(),filename:z6.string()}),AssetReadBaseSchema=z6.object({assetId:z6.uuid(),filename:z6.string(),mediaType:z6.string(),representation:z6.enum(["text","table","document","archive","image","transcript","video","model"]),content:z6.string(),derivedFiles:z6.array(AssetDerivedFileSchema).optional()}),AssetReadPageSchema=AssetReadBaseSchema.extend({mode:z6.literal("page"),start:z6.number().int().nonnegative(),end:z6.number().int().nonnegative(),total:z6.number().int().nonnegative(),nextCursor:z6.string().nullable(),complete:z6.boolean()}),AssetReadQuerySchema=AssetReadBaseSchema.extend({mode:z6.literal("query"),query:z6.string(),source:z6.enum(["original-file","canonical-text","derived-files"]),truncated:z6.boolean()}),AssetReadResultSchema=z6.discriminatedUnion("mode",[AssetReadPageSchema,AssetReadQuerySchema])}});import{z as z7}from"zod";function isProcessControlEnvKey(key){return PROCESS_CONTROL_ENV_KEYS.has(key)||PROCESS_CONTROL_ENV_PREFIXES.some(prefix=>key.startsWith(prefix))}function isValidBranch(branch){return typeof branch!="string"||branch.length===0||branch.length>MAX_BRANCH_LENGTH||branch.startsWith("-")||branch.startsWith(".")||branch.includes("//")||branch.includes("--")||branch.split("/").some(segment=>segment==="..")?!1:BRANCH_ID_REGEX.test(branch)}function encodeBranchPathSegment(branch){return branch.replace(/\//g,"--")}function isProductionBranch(branch){return branch===PRODUCTION_BRANCH}function fnv1a8(s){let h=2166136261;for(let i=0;i<s.length;i++)h^=s.charCodeAt(i),h=Math.imul(h,16777619);return(h>>>0).toString(16).padStart(8,"0")}function branchResourceKey(branch){let base=branch.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,15),hash=fnv1a8(branch);return base?`${base}-${hash}`:hash}function buildTenantApiUrl(projectId2,branch,tenantApiBaseUrl){let url=new URL(tenantApiBaseUrl);return url.hostname=`${projectId2}-${branchResourceKey(branch)}.${url.hostname}`,url.toString().replace(/\/$/,"")}var FIMO_CONTENT_API_ENV_KEYS,FIMO_ANALYTICS_ENV_KEYS,FIMO_PREVIEW_SCRIPT_ENV_KEYS,FIMO_MANAGED_PROJECT_ENV_KEYS,PROCESS_CONTROL_ENV_KEYS,PROCESS_CONTROL_ENV_PREFIXES,BRANCH_ID_REGEX,MAX_BRANCH_LENGTH,BranchSchema,DEFAULT_BRANCH,PRODUCTION_BRANCH,envResourceKey,init_env=__esm({"../../packages/api-contracts/dist/esm/types/env.js"(){"use strict";FIMO_CONTENT_API_ENV_KEYS=["FIMO_CONTENT_API_URL","VITE_API_URL","NEXT_PUBLIC_FIMO_API_URL","NUXT_PUBLIC_FIMO_API_URL","PUBLIC_FIMO_API_URL"],FIMO_ANALYTICS_ENV_KEYS=["VITE_ENABLE_ANALYTICS","NEXT_PUBLIC_FIMO_ENABLE_ANALYTICS","NUXT_PUBLIC_FIMO_ENABLE_ANALYTICS","PUBLIC_FIMO_ENABLE_ANALYTICS"],FIMO_PREVIEW_SCRIPT_ENV_KEYS=["VITE_PREVIEW_SCRIPT_URL","VITE_FIMO_PREVIEW_SCRIPT_URL","NEXT_PUBLIC_FIMO_PREVIEW_SCRIPT_URL","NUXT_PUBLIC_FIMO_PREVIEW_SCRIPT_URL","PUBLIC_FIMO_PREVIEW_SCRIPT_URL","FIMO_PREVIEW_SCRIPT_URL"],FIMO_MANAGED_PROJECT_ENV_KEYS=["FIMO_API_URL","FIMO_API_TOKEN","FIMO_PROJECT_ID","FIMO_ENV","NEXT_PUBLIC_FIMO_ENV","FIMO_AGENT_SESSION","FIMO_DATA_SOURCES",...FIMO_CONTENT_API_ENV_KEYS,...FIMO_PREVIEW_SCRIPT_ENV_KEYS,...FIMO_ANALYTICS_ENV_KEYS,"VITE_FIMO_BRANCH","VITE_FIMO_IMAGE_HOSTS"],PROCESS_CONTROL_ENV_KEYS=new Set(["PATH","HOME","SHELL","BASH_ENV","ENV","PROMPT_COMMAND","USER","TMPDIR","HOST","HOSTNAME","PORT","NODE_ENV","NODE_OPTIONS","NODE_PATH","NODE_EXTRA_CA_CERTS","NODE_TLS_REJECT_UNAUTHORIZED","SSL_CERT_FILE","CURL_CA_BUNDLE","PYTHONPATH","LD_PRELOAD","LD_LIBRARY_PATH","HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","FIMO_VALIDATION_BUILD","FIMO_SKIP_VERSION_CHECK","FIMO_EDITING_METADATA","FIMO_AGENT_TMP_DIR"]),PROCESS_CONTROL_ENV_PREFIXES=["GIT_","NPM_CONFIG_","PNPM_","YARN_","COREPACK_","BUN_","DENO_"];__name(isProcessControlEnvKey,"isProcessControlEnvKey");BRANCH_ID_REGEX=/^[a-zA-Z0-9._/-]+$/,MAX_BRANCH_LENGTH=255;__name(isValidBranch,"isValidBranch");__name(encodeBranchPathSegment,"encodeBranchPathSegment");BranchSchema=z7.string().min(1,"env must not be empty").max(MAX_BRANCH_LENGTH,`env must be at most ${MAX_BRANCH_LENGTH} characters`).refine(isValidBranch,{error:"env must match /^[a-zA-Z0-9._/-]+$/ and must not start with `-`"}),DEFAULT_BRANCH="main",PRODUCTION_BRANCH="prod";__name(isProductionBranch,"isProductionBranch");__name(fnv1a8,"fnv1a8");__name(branchResourceKey,"branchResourceKey");__name(buildTenantApiUrl,"buildTenantApiUrl");envResourceKey=branchResourceKey}});import{z as z8}from"zod";var PRODUCTION_ENVIRONMENT_KEY,PREVIEW_ENVIRONMENT_KEY,EnvironmentKeySchema,CustomEnvironmentSchema,ResolvedEnvironmentSchema,init_environment=__esm({"../../packages/api-contracts/dist/esm/types/environment.js"(){"use strict";init_env();PRODUCTION_ENVIRONMENT_KEY="production",PREVIEW_ENVIRONMENT_KEY="preview",EnvironmentKeySchema=z8.union([z8.literal(PRODUCTION_ENVIRONMENT_KEY),z8.literal(PREVIEW_ENVIRONMENT_KEY),z8.uuid()]),CustomEnvironmentSchema=z8.object({id:z8.uuid(),projectId:z8.uuid(),name:z8.string().trim().min(1).max(64),branchPatterns:z8.array(z8.string().min(1).max(255)).min(1),description:z8.string().max(255).nullable()}),ResolvedEnvironmentSchema=z8.object({branch:BranchSchema,environment:EnvironmentKeySchema})}});var init_realtime=__esm({"../../packages/api-contracts/dist/esm/types/realtime.js"(){"use strict";init_env()}});var init_realtime_room=__esm({"../../packages/api-contracts/dist/esm/types/realtime-room.js"(){"use strict";init_env()}});import{z as z9}from"zod";function referenceDocumentId(value){if(typeof value=="string")return value;if(value&&typeof value=="object"){let reference=value,hasId=Object.prototype.hasOwnProperty.call(reference,"id"),hasDocumentId=Object.prototype.hasOwnProperty.call(reference,"documentId"),id=reference.id,documentId=reference.documentId;if(hasId&&typeof id!="string"||hasDocumentId&&typeof documentId!="string"||typeof id=="string"&&typeof documentId=="string"&&id!==documentId)return null;if(typeof id=="string")return id;if(typeof documentId=="string")return documentId}return null}function toReferenceValue(value){let documentId=referenceDocumentId(value);return documentId?{documentId}:null}function referenceContentType(value){if(value&&typeof value=="object"&&"contentType"in value){let contentType=value.contentType;return typeof contentType=="string"&&contentType.length>0?contentType:null}return null}function toPolymorphicReferenceValue(value){let documentId=referenceDocumentId(value),contentType=referenceContentType(value);return documentId&&contentType?{contentType,documentId}:null}var referenceValuePreprocess,ReferenceValueSchema,ReferenceInputValueSchema,polymorphicReferenceValuePreprocess,PolymorphicReferenceValueSchema,PolymorphicReferenceInputValueSchema,init_references=__esm({"../../packages/api-contracts/dist/esm/types/references.js"(){"use strict";__name(referenceDocumentId,"referenceDocumentId");__name(toReferenceValue,"toReferenceValue");referenceValuePreprocess=__name(value=>{let reference=toReferenceValue(value);return reference||(value&&typeof value=="object"&&("id"in value||"documentId"in value)?null:value)},"referenceValuePreprocess"),ReferenceValueSchema=z9.preprocess(referenceValuePreprocess,z9.object({documentId:z9.uuid()})),ReferenceInputValueSchema=z9.preprocess(referenceValuePreprocess,z9.union([z9.object({documentId:z9.uuid()}),z9.object({slug:z9.string().min(1)})]));__name(referenceContentType,"referenceContentType");__name(toPolymorphicReferenceValue,"toPolymorphicReferenceValue");polymorphicReferenceValuePreprocess=__name(value=>{let reference=toPolymorphicReferenceValue(value);return reference||(value&&typeof value=="object"&&("id"in value||"documentId"in value)?null:value)},"polymorphicReferenceValuePreprocess"),PolymorphicReferenceValueSchema=z9.preprocess(polymorphicReferenceValuePreprocess,z9.object({contentType:z9.string().min(1),documentId:z9.uuid()})),PolymorphicReferenceInputValueSchema=z9.preprocess(polymorphicReferenceValuePreprocess,z9.union([z9.object({contentType:z9.string().min(1),documentId:z9.uuid()}),z9.object({contentType:z9.string().min(1),slug:z9.string().min(1)})]))}});import{z as z10}from"zod";function isDatetimeInstant(value){return typeof value=="string"&&DATETIME_INSTANT_PATTERN.test(value)&&!Number.isNaN(Date.parse(value))}function rejectLegacyLocaleSettings(field,ctx){"localized"in field&&ctx.addIssue({code:"custom",path:["localized"],message:'Field-level locale settings use "i18n".'})}function rejectFieldI18n(field,ctx){"i18n"in field&&ctx.addIssue({code:"custom",path:["i18n"],message:FIELD_I18N_UNSUPPORTED_MESSAGE})}function refineConditions(field,ctx){if(field.showIf!==void 0&&field.showIfAny!==void 0&&ctx.addIssue({code:"custom",path:["showIfAny"],message:'A field declares "showIf" or "showIfAny", never both.'}),Array.isArray(field.showIf)){let fields=field.showIf.map(clause=>clause.field);new Set(fields).size!==fields.length&&ctx.addIssue({code:"custom",path:["showIf"],message:'"showIf" clauses must each name a different field. Use "in" for several values of one field.'})}}function rejectUnsupportedUnique(field,ctx,type){"unique"in field&&!uniqueFieldTypes.has(type)&&ctx.addIssue({code:"custom",path:["unique"],message:UNSUPPORTED_UNIQUE_MESSAGE})}function getConditionDefinition(field){if(field.showIfAny!==void 0)return{key:"showIfAny",clauses:field.showIfAny};if(field.showIf!==void 0)return{key:"showIf",clauses:Array.isArray(field.showIf)?field.showIf:[field.showIf]}}function getConditionValues(clause){return"equals"in clause?[clause.equals]:clause.in}function collectClauseProblems(fieldName,condition,clause,fields,path50){let conditionPath=[...path50,fieldName,condition.key],trigger=fields[clause.field];if(trigger===void 0)return[{path:conditionPath,message:`"${condition.key}" references unknown field "${clause.field}".`}];if(trigger.showIf!==void 0||trigger.showIfAny!==void 0)return[{path:conditionPath,message:`"${condition.key}" cannot reference "${clause.field}" because it is conditional too. Conditions are one level deep.`}];if(trigger.type!=="boolean"&&trigger.type!=="number"&&trigger.type!=="string")return[{path:conditionPath,message:`"${condition.key}" can only reference boolean, number, and string fields. "${clause.field}" is a ${trigger.type} field.`}];let triggerOptions=trigger.type==="string"?trigger.options:void 0;if(trigger.type==="string"&&triggerOptions===void 0)return[{path:conditionPath,message:`"${condition.key}" can only reference a string field that declares "options". Add options to "${clause.field}".`}];let values=getConditionValues(clause);if(values.some(value=>typeof value!==trigger.type))return[{path:conditionPath,message:`"${condition.key}" on "${clause.field}" expects a ${trigger.type} value.`}];if(triggerOptions!==void 0){let invalidValues=values.filter(value=>!triggerOptions.includes(value));if(invalidValues.length>0)return invalidValues.map(value=>({path:conditionPath,message:`"${value}" is not one of the options declared by "${clause.field}".`}))}return trigger.editable===!1?[{path:conditionPath,message:`"${condition.key}" cannot reference "${clause.field}" because it is not editable.`}]:[]}function collectConditionProblems(fields){let problems=[],walk=__name((currentFields,path50)=>{for(let[fieldName,field]of Object.entries(currentFields)){let condition=getConditionDefinition(field);if(condition!==void 0)for(let clause of condition.clauses)problems.push(...collectClauseProblems(fieldName,condition,clause,currentFields,path50));if(field.type==="blocks")if(isBlocksUnion(field.schema))for(let variant of field.schema.oneOf)walk(variant.fields,[...path50,fieldName,variant.uid]);else walk(field.schema.fields,[...path50,fieldName])}},"walk");return walk(fields,[]),problems}function isBlocksUnion(schema){return"oneOf"in schema}function walkContentFields(fields,visit2){let walk=__name((currentFields,path50,structuredDepth,insideStructuredContent)=>{for(let[fieldName,field]of Object.entries(currentFields)){let fieldPath=[...path50,fieldName];visit2({field,path:fieldPath,structuredDepth,insideStructuredContent});let nextDepth=structuredDepth+1;if(field.type==="blocks")if(isBlocksUnion(field.schema))for(let variant of field.schema.oneOf)walk(variant.fields,[...fieldPath,variant.uid],nextDepth,!0);else walk(field.schema.fields,fieldPath,nextDepth,!0)}},"walk");walk(fields,[],0,!1)}var UNIQUE_FIELD_TYPES,DATETIME_INSTANT_PATTERN,DATETIME_INSTANT_MESSAGE,utf8,MAX_STRUCTURED_CONTENT_DEPTH,MAX_BLOCK_VARIANTS,MAX_BLOCK_ITEMS,RESERVED_STRUCTURED_CONTENT_FIELD_NAMES,showIfClauseSchema,commonFieldShape,FIELD_I18N_UNSUPPORTED_MESSAGE,uniqueFieldTypes,UNSUPPORTED_UNIQUE_MESSAGE,scalarFieldSchema,referenceFieldSchema,reservedStructuredContentNames,ContentFieldDefinitionSchema,blockFieldsSchema,blockVariantSchema,fixedBlocksSchema,blocksSchema,blocksFieldSchema,contentFieldDefinitionSchema,init_content_fields=__esm({"../../packages/api-contracts/dist/esm/types/content-fields.js"(){"use strict";init_common();UNIQUE_FIELD_TYPES=["string","text","number","boolean","date"],DATETIME_INSTANT_PATTERN=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?([Zz]|[+-]\d{2}:\d{2})$/,DATETIME_INSTANT_MESSAGE="A datetime must be an ISO 8601 instant with a UTC offset, such as 2026-08-13T09:30:00Z.";__name(isDatetimeInstant,"isDatetimeInstant");utf8=new TextEncoder,MAX_STRUCTURED_CONTENT_DEPTH=7,MAX_BLOCK_VARIANTS=40,MAX_BLOCK_ITEMS=200,RESERVED_STRUCTURED_CONTENT_FIELD_NAMES=["_key","_type"],showIfClauseSchema=z10.union([z10.object({field:z10.string().min(1),equals:z10.union([z10.string(),z10.number(),z10.boolean()])}).strict(),z10.object({field:z10.string().min(1),in:z10.array(z10.union([z10.string(),z10.number(),z10.boolean()])).min(1)}).strict()]),commonFieldShape={label:z10.string().min(1).optional(),description:z10.string().optional(),group:z10.union([z10.string().min(1),z10.array(z10.string().min(1)).min(1)]).optional(),editable:z10.boolean().optional(),required:z10.boolean().optional(),default:z10.unknown().optional(),showIf:z10.union([showIfClauseSchema,z10.array(showIfClauseSchema).min(1)]).optional(),showIfAny:z10.array(showIfClauseSchema).min(1).optional()},FIELD_I18N_UNSUPPORTED_MESSAGE='"i18n" is only supported on top-level scalar and reference fields.';__name(rejectLegacyLocaleSettings,"rejectLegacyLocaleSettings");__name(rejectFieldI18n,"rejectFieldI18n");__name(refineConditions,"refineConditions");uniqueFieldTypes=new Set(UNIQUE_FIELD_TYPES),UNSUPPORTED_UNIQUE_MESSAGE=`"unique" is only supported on ${UNIQUE_FIELD_TYPES.join(", ")} fields.`;__name(rejectUnsupportedUnique,"rejectUnsupportedUnique");scalarFieldSchema=z10.object({...commonFieldShape,type:z10.enum(["string","text","richtext","media","number","boolean","date","datetime","json"]),min:z10.number().optional(),max:z10.number().optional(),minLength:z10.number().int().nonnegative().optional(),maxLength:z10.number().int().nonnegative().optional(),regex:z10.string().optional(),multiple:z10.boolean().optional(),allowedMimeTypes:z10.array(z10.string()).optional(),options:z10.array(z10.string().min(1)).min(1).optional(),unique:z10.boolean().optional(),i18n:z10.boolean().optional()}).loose().superRefine((field,ctx)=>{rejectLegacyLocaleSettings(field,ctx),refineConditions(field,ctx),rejectUnsupportedUnique(field,ctx,field.type);for(let key of["target","targets","many","repeatable","schema"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is not supported on ${field.type} fields.`});if(field.type!=="number")for(let key of["min","max"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is only supported on number fields.`});if(field.type!=="string"&&field.type!=="text")for(let key of["minLength","maxLength","regex"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is only supported on string and text fields.`});field.min!==void 0&&field.max!==void 0&&field.min>field.max&&ctx.addIssue({code:"custom",path:["max"],message:'"max" must be greater than or equal to "min".'});let effectiveMinimumLength=Math.max(field.minLength??0,field.required?1:0);if(field.maxLength!==void 0&&effectiveMinimumLength>field.maxLength&&ctx.addIssue({code:"custom",path:["maxLength"],message:'"maxLength" must be greater than or equal to the minimum required length.'}),field.regex!==void 0)try{new RegExp(field.regex)}catch{ctx.addIssue({code:"custom",path:["regex"],message:'"regex" must be a valid regular expression.'})}if(field.type!=="media")for(let key of["multiple","allowedMimeTypes"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is only supported on media fields.`});if(field.type==="datetime"&&field.default!==void 0&&!isDatetimeInstant(field.default)&&ctx.addIssue({code:"custom",path:["default"],message:DATETIME_INSTANT_MESSAGE}),field.type!=="string"&&"options"in field&&ctx.addIssue({code:"custom",path:["options"],message:'"options" is only supported on string fields.'}),field.options!==void 0){new Set(field.options).size!==field.options.length&&ctx.addIssue({code:"custom",path:["options"],message:"Options must be unique."});for(let key of["regex","minLength","maxLength"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is not supported alongside "options".`});field.default!==void 0&&!field.options.includes(field.default)&&ctx.addIssue({code:"custom",path:["default"],message:'"default" must be one of the declared options.'})}}),referenceFieldSchema=z10.object({...commonFieldShape,type:z10.literal("reference"),target:z10.string().regex(CONTENT_TYPE_NAME_PATTERN).optional(),targets:z10.array(z10.string().regex(CONTENT_TYPE_NAME_PATTERN)).min(1).optional(),many:z10.boolean().optional(),i18n:z10.boolean().optional()}).loose().superRefine((field,ctx)=>{rejectLegacyLocaleSettings(field,ctx),refineConditions(field,ctx),!field.target&&!field.targets&&ctx.addIssue({code:"custom",path:["target"],message:'Reference fields must declare "target" or "targets".'}),field.target&&field.targets&&ctx.addIssue({code:"custom",path:["targets"],message:'A reference field declares "target" or "targets", never both.'}),field.targets&&new Set(field.targets).size!==field.targets.length&&ctx.addIssue({code:"custom",path:["targets"],message:"Reference targets must be unique."});for(let key of["repeatable","schema","min","max","minLength","maxLength","regex","options","unique"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is not supported on reference fields.`})}),reservedStructuredContentNames=new Set(RESERVED_STRUCTURED_CONTENT_FIELD_NAMES),ContentFieldDefinitionSchema=z10.lazy(()=>contentFieldDefinitionSchema);__name(getConditionDefinition,"getConditionDefinition");__name(getConditionValues,"getConditionValues");__name(collectClauseProblems,"collectClauseProblems");__name(collectConditionProblems,"collectConditionProblems");blockFieldsSchema=z10.record(z10.string(),ContentFieldDefinitionSchema).superRefine((fields,ctx)=>{for(let fieldName of Object.keys(fields))CONTENT_FIELD_NAME_PATTERN.test(fieldName)||ctx.addIssue({code:"custom",path:[fieldName],message:`Field names must use ${CONTENT_FIELD_NAME_PATTERN_DESCRIPTION}.`}),reservedStructuredContentNames.has(fieldName)&&ctx.addIssue({code:"custom",path:[fieldName],message:`"${fieldName}" is reserved structured-content metadata.`}),"unique"in fields[fieldName]&&ctx.addIssue({code:"custom",path:[fieldName,"unique"],message:'"unique" is only supported on top-level fields.'}),"i18n"in fields[fieldName]&&ctx.addIssue({code:"custom",path:[fieldName,"i18n"],message:FIELD_I18N_UNSUPPORTED_MESSAGE})}),blockVariantSchema=z10.object({uid:z10.string().regex(CONTENT_TYPE_NAME_PATTERN),label:z10.string().min(1),description:z10.string().optional(),fields:blockFieldsSchema}).strict(),fixedBlocksSchema=z10.object({fields:blockFieldsSchema}).strict(),blocksSchema=z10.object({oneOf:z10.array(blockVariantSchema).min(1).max(MAX_BLOCK_VARIANTS)}).strict().superRefine((schema,ctx)=>{let seen=new Set;for(let[index,variant]of schema.oneOf.entries())seen.has(variant.uid)&&ctx.addIssue({code:"custom",path:["oneOf",index,"uid"],message:"Variant UIDs must be unique."}),seen.add(variant.uid)}),blocksFieldSchema=z10.object({...commonFieldShape,type:z10.literal("blocks"),min:z10.number().int().nonnegative().max(MAX_BLOCK_ITEMS).optional(),max:z10.number().int().nonnegative().max(MAX_BLOCK_ITEMS).optional(),schema:z10.union([fixedBlocksSchema,blocksSchema])}).loose().superRefine((field,ctx)=>{rejectLegacyLocaleSettings(field,ctx),rejectFieldI18n(field,ctx),refineConditions(field,ctx);let effectiveMinimum=Math.max(field.min??0,field.required?1:0);field.max!==void 0&&effectiveMinimum>field.max&&ctx.addIssue({code:"custom",path:["max"],message:'"max" must be greater than or equal to the minimum number of blocks.'});for(let key of["target","targets","many","repeatable","minLength","maxLength","regex","options","unique"])key in field&&ctx.addIssue({code:"custom",path:[key],message:`"${key}" is not supported on blocks fields.`})}),contentFieldDefinitionSchema=z10.discriminatedUnion("type",[scalarFieldSchema,referenceFieldSchema,blocksFieldSchema]);__name(isBlocksUnion,"isBlocksUnion");__name(walkContentFields,"walkContentFields")}});import{z as z11}from"zod";var AUDIT_ACTIONS,AuditActionSchema,AUDIT_OUTCOMES,AuditOutcomeSchema,AUDIT_ACTOR_KINDS,AuditActorKindSchema,init_audit_log=__esm({"../../packages/api-contracts/dist/esm/types/audit-log.js"(){"use strict";AUDIT_ACTIONS=["env_create","env_delete","env_sync","capability_check","shell_exec","git_push","git_tag","git_merge","fimo_deploy","merge_decision","session_start","session_end","cost_breach","trigger_fire","schedule_notification_change","notification_preference_change","cutover_step","agent_delegate","version_restore","project_transfer","project_takedown","project_takedown_lift","organization_takedown","organization_takedown_lift","site_onboarding_refusal_lift","ops_access_change","ops_service_token_change","ops_project_search","ops_project_inspect","ops_project_chat_read","ops_recent_chat_read","ops_sentry_issue_change","ops_sentry_read","ops_logs_read","ops_trace_read","ops_posthog_milestones_read","ops_agent_trace_list","ops_agent_trace_read","ops_agent_trace_stats","ops_agent_health_read","ops_agent_trace_budget_wrap_up_read","ops_context_health_read","ops_data_usage_read","ops_agent_provider_errors_read","ops_chat_history_health_read","ops_chat_history_calls_read","ops_chat_history_content_read","ops_chat_history_judge_calibration","ops_memory_health_read","ops_routine_metrics_read","ops_project_snapshot","ops_project_file_read","ops_project_file_write","ops_support_thread_read","ops_support_report_read","ops_support_intake_read","ops_pylon_queue_read","ops_support_report_change","ops_billing_read","ops_billing_agent_runtime_activate","ops_billing_entitlements_sync","ops_billing_agent_runtime_attach","ops_billing_cache_invalidate","ops_billing_dispatch_discard","ops_billing_legacy_premium_enroll","ops_billing_legacy_premium_comp","ops_organization_feature_set","ops_billing_plan_transition_notices","ops_customer_registry_change","ops_investigation_change","ops_known_issue_change","ops_signal_case_decision","ops_validation_record","ops_notification_preview","ops_notification_approve","ops_notification_send","ops_project_operation","ops_project_publish","ops_agent_branch_discard","admin_resource_read","merge_force","ops_operation_plan","project_sync","project_thumbnail_regenerate","project_delete","project_import","organization_delete","credits_topup","credits_burn","user_session_revoke","user_ban","user_unban","user_impersonate","user_role_change","user_sessions_revoke","user_delete","platform_pool_change","platform_maintenance_change","platform_sync","platform_tenant_schema_sync","integration_event_replay","ops_billing_dispatch_retry","ops_billing_plan_projection_reconcile","ops_agent_chat_create","ops_pylon_issue_change","ops_pylon_note_create","ops_pylon_reply_preview","ops_pylon_reply_approve","ops_pylon_reply_send","admin_playground_run","ops_find","ops_project_health_read","ops_migrations_read","ops_operational_read","ops_billing_report_read","ops_users_read","ops_organizations_read","ops_merges_read","ops_platform_read","ops_watch_read","ops_notification_read","ops_audit_read"],AuditActionSchema=z11.enum(AUDIT_ACTIONS),AUDIT_OUTCOMES=["success","denied","error"],AuditOutcomeSchema=z11.enum(AUDIT_OUTCOMES),AUDIT_ACTOR_KINDS=["user","agent","system"],AuditActorKindSchema=z11.enum(AUDIT_ACTOR_KINDS)}});import{z as z12}from"zod";var ORGANIZATION_FEATURES,AGENT_PLANS,AgentPlanSchema,OrganizationFeatureSchema,OrganizationFeaturesDTOSchema,OrganizationFeaturesDTO,OrganizationFeatureStateDTOSchema,OrganizationFeatureSetSchema,init_organization_features_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/organization-features.dto.js"(){"use strict";init_create_dto();ORGANIZATION_FEATURES=["routine_planner","pro_agents"],AGENT_PLANS=["free","starter","pro"],AgentPlanSchema=z12.enum(AGENT_PLANS),OrganizationFeatureSchema=z12.enum(ORGANIZATION_FEATURES),OrganizationFeaturesDTOSchema=z12.object({features:z12.record(OrganizationFeatureSchema,z12.boolean()),lockedByPlan:z12.array(OrganizationFeatureSchema),agentPlan:AgentPlanSchema}),OrganizationFeaturesDTO=createDTO(OrganizationFeaturesDTOSchema),OrganizationFeatureStateDTOSchema=z12.object({feature:OrganizationFeatureSchema,enabled:z12.boolean(),default:z12.boolean(),lockedByPlan:z12.boolean(),override:z12.boolean().nullable(),reason:z12.string().nullable(),updatedBy:z12.string().nullable(),updatedAt:z12.string().datetime().nullable()}),OrganizationFeatureSetSchema=z12.object({state:z12.enum(["on","off","default"]),reason:z12.string().trim().min(1).max(500),apply:z12.boolean().default(!1),confirmProduction:z12.boolean().default(!1)})}});import{z as z13}from"zod";function refineChatHistoryWindow(schema){return schema.refine(input=>input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>input.until.getTime()-input.since.getTime()<=OPS_CONTEXT_HEALTH_MAX_WINDOW_MS,{path:["since"],message:"chat history windows cannot exceed 7 days"})}var OPS_BACKEND_PROFILES,OpsBackendProfileSchema,OPS_PERMISSIONS,OpsPermissionSchema,OPS_SUPPORT_PRESET,OPS_PERMISSION_PRESETS,OPS_SERVICE_PERMISSION_PRESETS,OpsAccessGrantInputSchema,OpsServiceTokenInputSchema,OpsCustomerProjectInputSchema,OPS_INVESTIGATION_STATUSES,OpsInvestigationStatusSchema,OpsInvestigationCreateInputSchema,OpsInvestigationUpdateInputSchema,OPS_KNOWN_ISSUE_STATUSES,OpsKnownIssueStatusSchema,OpsKnownIssueCreateInputSchema,OpsKnownIssueUpdateInputSchema,OPS_VALIDATION_OUTCOMES,OpsValidationOutcomeSchema,OpsValidationRunInputSchema,OpsNotificationPreviewInputSchema,OpsPylonIssueIdSchema,OpsPylonReasonSchema,OpsPylonMessageSchema,OpsPylonMessageIdSchema,OpsPylonEmailListSchema,OpsPylonResolveInputSchema,OpsPylonNoteInputSchema,OpsPylonReplyPreviewInputSchema,OpsSentryIssueIdSchema,OpsSentryResolveInputSchema,OpsTraceIdSchema,OpsTraceReadInputSchema,OpsBraintrustSpanIdSchema,OpsAgentInvocationStatusSchema,OpsAgentTraceListInputSchema,OpsAgentTraceSpansInputSchema,OpsSpanBodyEdgeSchema,OpsAgentTraceSpanInputSchema,OpsAgentTraceMessagesInputSchema,OpsAgentHealthGroupBySchema,OpsAgentHealthInputSchema,OPS_DATA_USAGE_MAX_WINDOW_MS,OpsDataUsageGroupBySchema,OpsDataUsageInputSchema,OPS_CONTEXT_HEALTH_MAX_WINDOW_MS,OpsContextHealthInputSchema,OPS_MEMORY_HEALTH_MAX_WINDOW_MS,OpsMemoryHealthInputSchema,opsChatHistoryWindow,OpsChatHistoryHealthInputSchema,OpsChatHistoryCallsInputSchema,OpsChatHistoryJudgeInputSchema,OPS_ROUTINE_METRICS_MAX_WINDOW_MS,OpsRoutineMetricsGroupBySchema,OpsRoutineMetricsSortBySchema,OpsRoutineMetricsInputSchema,OpsChatHistoryJudgeCalibrationInputSchema,OpsAgentTraceStatsGroupBySchema,OpsSpanTypeSchema,OpsAgentTraceStatsInputSchema,OpsAgentProviderErrorsInputSchema,OpsBillingCacheInvalidateInputSchema,OpsBillingEntitlementSyncInputSchema,OpsBillingAgentRuntimeAttachInputSchema,OPS_PROJECT_OPERATIONS,OpsProjectOperationKindSchema,ExactVersionSchema,OpsProjectOperationPlanInputSchema,OPS_MIGRATIONS,OpsMigrationIdSchema,OPS_MIGRATION_PLAN_STATUSES,OpsMigrationPlanStatusSchema,OPS_MIGRATION_CHANGE_ACTIONS,OpsMigrationChangeActionSchema,OpsMigrationDryRunInputSchema,OpsProjectFilePathSchema,OpsProjectFileReasonSchema,OPS_PROJECT_PACKAGE_MANAGER_LOCKFILES,OpsProjectPackageManagerInspectInputSchema,OpsProjectFileReadInputSchema,OpsProjectFileGlobInputSchema,OpsProjectFileGrepInputSchema,OPS_POSTHOG_EVENTS,OPS_POSTHOG_QUESTION,OpsPosthogTimestampSchema,OpsPosthogMilestonesInputSchema,OpsPosthogFailureCodeSchema,OpsPosthogCoverageSchema,OpsPosthogCountsSchema,OpsPosthogMilestonesResponseSchema,OpsSessionHealthInputSchema,OpsProjectAnalyticsHealthInputSchema,init_ops=__esm({"../../packages/api-contracts/dist/esm/types/ops.js"(){"use strict";init_organization_features_dto();init_env();OPS_BACKEND_PROFILES=["local","staging","prod"],OpsBackendProfileSchema=z13.enum(OPS_BACKEND_PROFILES),OPS_PERMISSIONS=["ops:project:read","ops:project:chat:read","ops:project:snapshot","ops:project:operate","ops:project:publish","ops:project:agents:write","ops:sentry:read","ops:sentry:write","ops:logs:read","ops:traces:read","ops:posthog:read","ops:braintrust:read","ops:support:read","ops:support:write","ops:customers:read","ops:customers:write","ops:billing:read","ops:billing:write","ops:organization:features:write","ops:investigations:read","ops:investigations:write","ops:known-issues:read","ops:known-issues:write","ops:validations:read","ops:validations:write","ops:audit:read","ops:notification:preview","ops:notification:approve","ops:notification:send","ops:users:read","ops:users:write","ops:organizations:read","ops:organizations:write","ops:merges:read","ops:merges:write","ops:platform:read","ops:platform:write","ops:project:admin","ops:credits:write"],OpsPermissionSchema=z13.enum(OPS_PERMISSIONS),OPS_SUPPORT_PRESET=["ops:project:read","ops:project:chat:read","ops:project:snapshot","ops:users:read","ops:organizations:read","ops:merges:read","ops:platform:read","ops:billing:read","ops:support:read","ops:support:write","ops:customers:read","ops:investigations:read","ops:investigations:write","ops:known-issues:read","ops:validations:read","ops:audit:read","ops:notification:preview"],OPS_PERMISSION_PRESETS={support:OPS_SUPPORT_PRESET,engineer:[...OPS_SUPPORT_PRESET,"ops:project:operate","ops:sentry:read","ops:sentry:write","ops:logs:read","ops:traces:read","ops:braintrust:read","ops:customers:write","ops:billing:write","ops:organization:features:write","ops:known-issues:write","ops:validations:write","ops:merges:write","ops:platform:write","ops:users:write"],full:[...OPS_PERMISSIONS]},OPS_SERVICE_PERMISSION_PRESETS={support:OPS_PERMISSION_PRESETS.support,engineer:OPS_PERMISSION_PRESETS.engineer,full:OPS_PERMISSION_PRESETS.full.filter(permission=>permission!=="ops:notification:approve")},OpsAccessGrantInputSchema=z13.object({permissions:z13.array(OpsPermissionSchema).min(1),backendProfiles:z13.array(OpsBackendProfileSchema).min(1),enabled:z13.boolean().default(!0)}),OpsServiceTokenInputSchema=z13.object({name:z13.string().trim().min(1).max(120),permissions:z13.array(OpsPermissionSchema).min(1),backendProfiles:z13.array(OpsBackendProfileSchema).min(1),expiresAt:z13.coerce.date()}).refine(input=>!input.permissions.includes("ops:notification:approve"),{path:["permissions"],message:"Service credentials cannot approve customer notifications"}).refine(input=>input.expiresAt.getTime()>Date.now(),{path:["expiresAt"],message:"Service credential expiry must be in the future"}),OpsCustomerProjectInputSchema=z13.object({importanceReason:z13.string().trim().min(1).max(1e3),ownerUserId:z13.string().trim().min(1).nullable().optional(),framework:z13.string().trim().max(120).nullable().optional(),packageManager:z13.enum(["npm","pnpm","yarn","bun"]).nullable().optional(),notes:z13.string().trim().max(5e3).nullable().optional()}),OPS_INVESTIGATION_STATUSES=["open","investigating","awaiting_approval","resolved","monitoring","closed"],OpsInvestigationStatusSchema=z13.enum(OPS_INVESTIGATION_STATUSES),OpsInvestigationCreateInputSchema=z13.object({projectId:z13.uuid(),title:z13.string().trim().min(1).max(240),userReport:z13.string().trim().max(1e4).nullable().optional()}),OpsInvestigationUpdateInputSchema=z13.object({status:OpsInvestigationStatusSchema.optional(),hypothesis:z13.string().trim().max(1e4).nullable().optional(),outcome:z13.string().trim().max(1e4).nullable().optional(),evidence:z13.array(z13.record(z13.string(),z13.unknown())).max(100).optional()}).refine(input=>Object.keys(input).length>0,"At least one field is required"),OPS_KNOWN_ISSUE_STATUSES=["open","monitoring","resolved"],OpsKnownIssueStatusSchema=z13.enum(OPS_KNOWN_ISSUE_STATUSES),OpsKnownIssueCreateInputSchema=z13.object({fingerprint:z13.string().trim().min(1).max(240),title:z13.string().trim().min(1).max(240),description:z13.string().trim().min(1).max(1e4),affectedVersions:z13.array(z13.string().trim().min(1).max(120)).max(100).default([]),detectionQueries:z13.array(z13.string().trim().min(1).max(2e3)).max(50).default([]),fixedVersion:z13.string().trim().min(1).max(64).nullable().optional(),workaround:z13.string().trim().min(1).max(1e4).nullable().optional(),status:OpsKnownIssueStatusSchema.default("open")}),OpsKnownIssueUpdateInputSchema=OpsKnownIssueCreateInputSchema.omit({fingerprint:!0}).extend({affectedVersions:z13.array(z13.string().trim().min(1).max(120)).max(100),detectionQueries:z13.array(z13.string().trim().min(1).max(2e3)).max(50),status:OpsKnownIssueStatusSchema}).partial().refine(input=>Object.keys(input).length>0,"At least one field is required"),OPS_VALIDATION_OUTCOMES=["passed","failed","inconclusive"],OpsValidationOutcomeSchema=z13.enum(OPS_VALIDATION_OUTCOMES),OpsValidationRunInputSchema=z13.object({changeReference:z13.string().trim().min(1).max(500),outcome:OpsValidationOutcomeSchema,summary:z13.string().trim().min(1).max(1e4),evidence:z13.array(z13.record(z13.string(),z13.unknown())).max(100).default([])}),OpsNotificationPreviewInputSchema=z13.object({recipientEmail:z13.email().optional(),subject:z13.string().trim().min(1).max(200).default("An update from Fimo"),message:z13.string().trim().min(1).max(5e3),locale:z13.string().trim().min(2).max(20),reason:z13.string().trim().min(1).max(1e3),acknowledgePolicy:z13.literal(!0)}),OpsPylonIssueIdSchema=z13.string().trim().regex(/^[a-zA-Z0-9-]+$/).max(100),OpsPylonReasonSchema=z13.string().trim().min(1).max(1e3),OpsPylonMessageSchema=z13.string().trim().min(1).max(5e3),OpsPylonMessageIdSchema=z13.string().trim().min(1).max(255),OpsPylonEmailListSchema=z13.array(z13.email()).max(50).default([]),OpsPylonResolveInputSchema=z13.object({reason:OpsPylonReasonSchema}),OpsPylonNoteInputSchema=z13.object({message:OpsPylonMessageSchema,reason:OpsPylonReasonSchema}),OpsPylonReplyPreviewInputSchema=z13.object({messageId:OpsPylonMessageIdSchema,message:OpsPylonMessageSchema,toEmails:OpsPylonEmailListSchema,ccEmails:OpsPylonEmailListSchema,bccEmails:OpsPylonEmailListSchema,reason:OpsPylonReasonSchema,acknowledgePolicy:z13.literal(!0)}).refine(input=>input.toEmails.length+input.ccEmails.length+input.bccEmails.length<=50,{message:"At most 50 email recipients are allowed",path:["toEmails"]}),OpsSentryIssueIdSchema=z13.string().trim().regex(/^[a-zA-Z0-9-]+$/).max(100),OpsSentryResolveInputSchema=z13.object({reason:z13.string().trim().min(1).max(1e3)}),OpsTraceIdSchema=z13.string().trim().regex(/^[a-fA-F0-9]{32}$/).transform(value=>value.toLowerCase()),OpsTraceReadInputSchema=z13.object({projectId:z13.uuid(),from:z13.coerce.date(),to:z13.coerce.date(),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>input.from<=input.to,{path:["from"],message:"from must be before or equal to to"}).refine(input=>input.to.getTime()-input.from.getTime()<=10080*60*1e3,{path:["from"],message:"trace windows cannot exceed 7 days"}),OpsBraintrustSpanIdSchema=z13.string().trim().regex(/^[A-Za-z0-9_-]{1,200}$/),OpsAgentInvocationStatusSchema=z13.enum(["planned","running","finished","cancelled","errored","refused"]),OpsAgentTraceListInputSchema=z13.object({projectId:z13.uuid().optional(),organizationId:z13.string().trim().min(1).max(255).optional(),agentKey:z13.string().trim().min(1).max(120).optional(),threadId:z13.uuid().optional(),status:OpsAgentInvocationStatusSchema.optional(),since:z13.coerce.date().optional(),minCostUsd:z13.coerce.number().min(0).optional(),tracedOnly:z13.coerce.boolean().default(!1),limit:z13.coerce.number().int().min(1).max(100).default(25),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!!(input.projectId||input.organizationId||input.threadId),{path:["projectId"],message:"one of projectId, organizationId, or threadId is required"}),OpsAgentTraceSpansInputSchema=z13.object({limit:z13.coerce.number().int().min(1).max(500).default(200),reason:z13.string().trim().min(1).max(1e3)}),OpsSpanBodyEdgeSchema=z13.enum(["start","end"]).default("start"),OpsAgentTraceSpanInputSchema=z13.object({maxChars:z13.coerce.number().int().min(500).max(2e5).default(2e4),edge:OpsSpanBodyEdgeSchema,reason:z13.string().trim().min(1).max(1e3)}),OpsAgentTraceMessagesInputSchema=z13.object({messageIndex:z13.coerce.number().int().min(0).optional(),maxChars:z13.coerce.number().int().min(500).max(2e5).default(2e4),reason:z13.string().trim().min(1).max(1e3)}),OpsAgentHealthGroupBySchema=z13.enum(["agent","status","branch","project","day"]),OpsAgentHealthInputSchema=z13.strictObject({projectId:z13.uuid().optional(),organizationId:z13.string().trim().min(1).max(255).optional(),branch:BranchSchema.optional(),agentKey:z13.string().trim().min(1).max(120).optional(),since:z13.coerce.date(),until:z13.coerce.date().optional(),groupBy:OpsAgentHealthGroupBySchema.default("agent"),includeChildren:z13.coerce.boolean().default(!1),limit:z13.coerce.number().int().min(1).max(200).default(50),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!input.until||input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}),OPS_DATA_USAGE_MAX_WINDOW_MS=10080*60*1e3,OpsDataUsageGroupBySchema=z13.enum(["operation","provider","day","organization","agent"]),OpsDataUsageInputSchema=z13.strictObject({organizationId:z13.string().trim().min(1).max(255).optional(),since:z13.coerce.date(),until:z13.coerce.date().optional(),groupBy:OpsDataUsageGroupBySchema.default("operation"),limit:z13.coerce.number().int().min(1).max(200).default(50),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!input.until||input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>(input.until??new Date).getTime()-input.since.getTime()<=OPS_DATA_USAGE_MAX_WINDOW_MS,{path:["since"],message:"data usage window cannot exceed 7 days"}),OPS_CONTEXT_HEALTH_MAX_WINDOW_MS=10080*60*1e3,OpsContextHealthInputSchema=z13.object({projectId:z13.uuid().optional(),since:z13.coerce.date(),until:z13.coerce.date().optional(),limit:z13.coerce.number().int().min(1).max(1e3).default(500),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!input.until||input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>(input.until??new Date).getTime()-input.since.getTime()<=OPS_CONTEXT_HEALTH_MAX_WINDOW_MS,{path:["since"],message:"context health window cannot exceed 7 days"}),OPS_MEMORY_HEALTH_MAX_WINDOW_MS=10080*60*1e3,OpsMemoryHealthInputSchema=z13.object({projectId:z13.uuid().optional(),since:z13.coerce.date(),until:z13.coerce.date().optional(),limit:z13.coerce.number().int().min(1).max(1e3).default(200),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!input.until||input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>(input.until??new Date).getTime()-input.since.getTime()<=OPS_MEMORY_HEALTH_MAX_WINDOW_MS,{path:["since"],message:"memory health window cannot exceed 7 days"}),opsChatHistoryWindow={projectId:z13.uuid().optional(),since:z13.coerce.date(),until:z13.coerce.date().default(()=>new Date),reason:z13.string().trim().min(1).max(1e3)};__name(refineChatHistoryWindow,"refineChatHistoryWindow");OpsChatHistoryHealthInputSchema=refineChatHistoryWindow(z13.strictObject(opsChatHistoryWindow)),OpsChatHistoryCallsInputSchema=refineChatHistoryWindow(z13.strictObject({...opsChatHistoryWindow,limit:z13.coerce.number().int().min(1).max(500).default(100)})),OpsChatHistoryJudgeInputSchema=refineChatHistoryWindow(z13.strictObject({...opsChatHistoryWindow,sample:z13.coerce.number().int().min(1).max(25).default(10)})),OPS_ROUTINE_METRICS_MAX_WINDOW_MS=2160*60*60*1e3,OpsRoutineMetricsGroupBySchema=z13.enum(["routine","plan","day","project"]),OpsRoutineMetricsSortBySchema=z13.enum(["total","jev","runs"]),OpsRoutineMetricsInputSchema=z13.strictObject({projectId:z13.uuid().optional(),organizationId:z13.string().trim().min(1).max(255).optional(),plan:AgentPlanSchema.optional(),routine:z13.string().trim().min(1).max(64).optional(),groupBy:OpsRoutineMetricsGroupBySchema.default("routine"),sortBy:OpsRoutineMetricsSortBySchema.default("total"),burstMinutes:z13.coerce.number().int().min(1).max(120).default(10),since:z13.coerce.date(),until:z13.coerce.date().default(()=>new Date),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>input.until.getTime()-input.since.getTime()<=OPS_ROUTINE_METRICS_MAX_WINDOW_MS,{path:["since"],message:"routine metrics windows cannot exceed 90 days"}),OpsChatHistoryJudgeCalibrationInputSchema=z13.strictObject({reason:z13.string().trim().min(1).max(1e3)}),OpsAgentTraceStatsGroupBySchema=z13.enum(["model","provider","span","type"]),OpsSpanTypeSchema=z13.enum(["llm","tool","function","task","score","eval"]),OpsAgentTraceStatsInputSchema=z13.object({since:z13.coerce.date(),until:z13.coerce.date().optional(),groupBy:OpsAgentTraceStatsGroupBySchema.default("model"),spanType:OpsSpanTypeSchema.optional(),slowerThanSeconds:z13.coerce.number().min(0).optional(),limit:z13.coerce.number().int().min(1).max(200).default(50),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>!input.until||input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}),OpsAgentProviderErrorsInputSchema=z13.object({since:z13.coerce.date(),until:z13.coerce.date().default(()=>new Date),model:z13.string().trim().min(1).max(120).optional(),provider:z13.string().trim().min(1).max(120).optional(),spanType:OpsSpanTypeSchema.optional(),before:z13.coerce.date().optional(),limit:z13.coerce.number().int().min(1).max(1e3).default(500),sampleChars:z13.coerce.number().int().min(200).max(2e4).default(1200),correlateInvocations:z13.boolean().default(!1),correlationLimit:z13.coerce.number().int().min(1).max(100).default(25),reason:z13.string().trim().min(1).max(1e3)}).refine(input=>input.since<=input.until,{path:["since"],message:"since must be before or equal to until"}).refine(input=>input.until.getTime()-input.since.getTime()<=10080*60*1e3,{path:["since"],message:"provider error windows cannot exceed 7 days"}).refine(input=>!input.before||input.before>=input.since&&input.before<=input.until,{path:["before"],message:"before must be within the requested window"}),OpsBillingCacheInvalidateInputSchema=z13.object({reason:z13.string().trim().min(1).max(1e3)}),OpsBillingEntitlementSyncInputSchema=z13.object({reason:z13.string().trim().min(1).max(500),apply:z13.boolean().default(!1),confirmProduction:z13.boolean().default(!1),cursor:z13.string().min(1).optional(),batchSize:z13.number().int().min(1).max(100).default(50),concurrency:z13.number().int().min(1).max(10).default(2)}),OpsBillingAgentRuntimeAttachInputSchema=z13.object({reason:z13.string().trim().min(1).max(500),apply:z13.boolean().default(!1),confirmProduction:z13.boolean().default(!1),organizationIds:z13.array(z13.string().min(1)).min(1).max(100).optional(),cursor:z13.string().min(1).optional(),batchSize:z13.number().int().min(1).max(100).default(50)}),OPS_PROJECT_OPERATIONS=["runtime.bump","preview.restart","production.publish"],OpsProjectOperationKindSchema=z13.enum(OPS_PROJECT_OPERATIONS),ExactVersionSchema=z13.string().trim().regex(/^\d+\.\d+\.\d+$/,"Expected an exact version such as 0.11.0"),OpsProjectOperationPlanInputSchema=z13.discriminatedUnion("kind",[z13.object({kind:z13.literal("runtime.bump"),targetVersion:ExactVersionSchema}),z13.object({kind:z13.literal("preview.restart")})]),OPS_MIGRATIONS=["project.v3-to-v4"],OpsMigrationIdSchema=z13.enum(OPS_MIGRATIONS),OPS_MIGRATION_PLAN_STATUSES=["applicable","not_applicable","unknown"],OpsMigrationPlanStatusSchema=z13.enum(OPS_MIGRATION_PLAN_STATUSES),OPS_MIGRATION_CHANGE_ACTIONS=["create","rewrite","delete"],OpsMigrationChangeActionSchema=z13.enum(OPS_MIGRATION_CHANGE_ACTIONS),OpsMigrationDryRunInputSchema=z13.object({migrationId:OpsMigrationIdSchema,projectEnv:z13.string().trim().min(1).max(255).default("main"),reason:z13.string().trim().min(1).max(1e3)}),OpsProjectFilePathSchema=z13.string().trim().min(1).max(1024),OpsProjectFileReasonSchema=z13.string().trim().min(1).max(1e3),OPS_PROJECT_PACKAGE_MANAGER_LOCKFILES=["pnpm-lock.yaml","bun.lockb","bun.lock","yarn.lock","package-lock.json"],OpsProjectPackageManagerInspectInputSchema=z13.object({reason:OpsProjectFileReasonSchema}),OpsProjectFileReadInputSchema=z13.object({path:OpsProjectFilePathSchema,reason:OpsProjectFileReasonSchema}),OpsProjectFileGlobInputSchema=z13.object({pattern:z13.string().min(1).max(300).optional(),limit:z13.coerce.number().int().min(1).max(2e3).default(2e3),reason:OpsProjectFileReasonSchema}),OpsProjectFileGrepInputSchema=z13.object({pattern:z13.string().min(1).max(200),include:z13.string().min(1).max(300).optional(),caseInsensitive:z13.boolean().default(!1),maxMatches:z13.coerce.number().int().min(1).max(200).default(100),reason:OpsProjectFileReasonSchema}),OPS_POSTHOG_EVENTS=["didCreateProject","didInitiateProject","didDeploy","didDeployProject","didFirstPublish"],OPS_POSTHOG_QUESTION="project-milestone-counts-v1",OpsPosthogTimestampSchema=z13.iso.datetime({offset:!0}).refine(value=>Number.isFinite(Date.parse(value))&&!/\.\d{3}\d*[1-9]\d*(?:Z|[+-]\d{2}:\d{2})$/.test(value),"A finite timestamp with at most millisecond precision is required").transform(value=>new Date(value).toISOString()),OpsPosthogMilestonesInputSchema=z13.strictObject({projectId:z13.uuid().transform(value=>value.toLowerCase()),from:OpsPosthogTimestampSchema,to:OpsPosthogTimestampSchema,reason:z13.string().trim().min(1).max(1e3)}).refine(value=>{let duration=Date.parse(value.to)-Date.parse(value.from);return duration>0&&duration<=1440*60*1e3},{message:"Window must satisfy from < to and be at most 24 hours",path:["to"]}),OpsPosthogFailureCodeSchema=z13.enum(["not_configured","unauthenticated","forbidden","backend_mismatch","invalid_request","provider_auth_failed","provider_project_unavailable","rate_limited","timeout","provider_error","capability_unavailable","invalid_response","incomplete","pending","audit_unavailable"]),OpsPosthogCoverageSchema=z13.strictObject({completeAggregate:z13.boolean(),truncated:z13.boolean().nullable(),sampled:z13.boolean().nullable(),pagination:z13.enum(["not_applicable","unexpected","unknown"]),providerFreshnessKnown:z13.literal(!1),providerAsOf:z13.null(),projectFilter:z13.literal("exact properties.projectId equality"),environmentFilterSupported:z13.literal(!1),excludesMissingProjectId:z13.literal(!0),transport:z13.literal("server"),consentCoverage:z13.literal("server-policy-not-browser-consent"),operationDedupeAvailable:z13.literal(!1)}),OpsPosthogCountsSchema=z13.array(z13.strictObject({event:z13.enum(OPS_POSTHOG_EVENTS),captureCount:z13.number().int().min(0).max(Number.MAX_SAFE_INTEGER)})).length(5).refine(counts=>counts.every((entry,i)=>entry.event===OPS_POSTHOG_EVENTS[i])),OpsPosthogMilestonesResponseSchema=z13.strictObject({schemaVersion:z13.literal(1),questionId:z13.literal(OPS_POSTHOG_QUESTION),backendProfile:OpsBackendProfileSchema,projectId:z13.uuid().nullable(),projectEnvironment:z13.literal("mixed_or_unrecorded"),window:z13.strictObject({from:z13.iso.datetime(),to:z13.iso.datetime(),bounds:z13.literal("[from,to)")}).nullable(),source:z13.literal("posthog"),sourceStatus:z13.enum(["available","unavailable","forbidden"]),failureCode:OpsPosthogFailureCodeSchema.nullable(),queriedAt:z13.iso.datetime(),auditId:z13.uuid().nullable(),counts:OpsPosthogCountsSchema.nullable(),coverage:OpsPosthogCoverageSchema}).superRefine((value,ctx)=>{(value.sourceStatus==="available"?value.counts===null||value.failureCode!==null||value.auditId===null||value.projectId===null||value.window===null||!value.coverage.completeAggregate||value.coverage.sampled!==!1||value.coverage.truncated!==!1||value.coverage.pagination!=="not_applicable":value.counts!==null||value.failureCode===null||value.coverage.completeAggregate)&&ctx.addIssue({code:"custom",message:"Invalid aggregate availability"})}),OpsSessionHealthInputSchema=z13.object({reason:z13.string().trim().min(1).max(1e3),limit:z13.number().int().min(1).max(100).default(25),checkProvider:z13.boolean().default(!1)}),OpsProjectAnalyticsHealthInputSchema=z13.object({branch:z13.string().trim().min(1).max(255),canaryPath:z13.string().max(300).regex(/^\/[a-zA-Z0-9/_-]*\?fimo_monitor=[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/).optional(),since:z13.iso.datetime({offset:!0}),until:z13.iso.datetime({offset:!0}),reason:z13.string().trim().min(1).max(1e3)}).strict().refine(input=>Date.parse(input.since)<=Date.parse(input.until),{path:["since"],message:"since must be before or equal to until"}).refine(input=>Date.parse(input.until)-Date.parse(input.since)<=10080*60*1e3,{path:["since"],message:"analytics health window cannot exceed 7 days"}).refine(input=>Date.parse(input.until)<=Date.now(),{path:["until"],message:"until cannot be in the future"}).transform(({since,until,...input})=>({...input,since:new Date(since),until:new Date(until)}))}});import{z as z14}from"zod";function resolveOpsTime(value,now=new Date){let relative3=RELATIVE_WINDOW.exec(value.trim());if(relative3){let amount=Number(relative3[1]),unit=relative3[2];return new Date(now.getTime()-amount*UNIT_MS[unit]).toISOString()}return new Date(value).toISOString()}function opsHoursSince(value,now=new Date){let start=Date.parse(resolveOpsTime(value,now));return Math.max(1,Math.ceil((now.getTime()-start)/UNIT_MS.h))}var RELATIVE_WINDOW,time,opsArgs,OPS_STANDARD_ARG_KEYS,UNIT_MS,init_args=__esm({"../../packages/api-contracts/dist/esm/ops/args.js"(){"use strict";RELATIVE_WINDOW=/^(\d+)(m|h|d|w)$/,time=z14.string().trim().min(1).max(64).refine(value=>RELATIVE_WINDOW.test(value)||!Number.isNaN(Date.parse(value)),{message:"Expected an ISO timestamp or a relative window such as 30m, 24h, 7d or 2w"}),opsArgs={project:z14.uuid().describe("Fimo project id"),org:z14.string().trim().min(1).max(255).describe("Organization id"),user:z14.string().trim().min(1).max(255).describe("User id"),env:z14.string().trim().min(1).max(255).describe("Project environment (branch), e.g. main or prod"),since:time.describe("Start of the window: ISO timestamp or relative (30m, 24h, 7d, 2w)"),until:time.describe("End of the window: ISO timestamp or relative (defaults to now)"),limit:z14.coerce.number().int().min(1).max(1e3).describe("Maximum results"),cursor:z14.string().trim().min(1).max(2e3).describe("Continue from a previous page"),query:z14.string().trim().min(1).max(200).describe("Free-text search"),reason:z14.string().trim().min(1).max(1e3).describe("Why this is being read or changed; stored in the audit log"),output:z14.string().trim().min(1).max(4096).describe("Write the result to this local file")},OPS_STANDARD_ARG_KEYS=Object.keys(opsArgs),UNIT_MS={m:6e4,h:36e5,d:864e5,w:6048e5};__name(resolveOpsTime,"resolveOpsTime");__name(opsHoursSince,"opsHoursSince")}});import{z as z15}from"zod";var OPS_RECENT_CHAT_MAX_WINDOW_MS,OpsChatTimestampInputSchema,OpsRecentChatInputSchema,OpsRecentChatMessageSchema,OpsRecentChatResponseSchema,OpsRecentChatResponseDTO,init_ops_chat_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/ops-chat.dto.js"(){"use strict";init_ops();init_create_dto();OPS_RECENT_CHAT_MAX_WINDOW_MS=10080*60*1e3,OpsChatTimestampInputSchema=z15.iso.datetime({offset:!0}).pipe(z15.coerce.date()),OpsRecentChatInputSchema=z15.object({from:OpsChatTimestampInputSchema,to:OpsChatTimestampInputSchema.optional(),projectEnv:z15.string().trim().min(1).max(255).optional(),limit:z15.coerce.number().int().min(1).max(200).default(100),cursor:z15.string().trim().min(1).max(2e3).optional(),slim:z15.boolean().default(!0),reason:z15.string().trim().min(1).max(1e3)}).refine(input=>input.from<=(input.to??new Date),{message:"from must be before or equal to to",path:["from"]}).refine(input=>(input.to??new Date).getTime()-input.from.getTime()<=OPS_RECENT_CHAT_MAX_WINDOW_MS,{message:"recent chat window cannot exceed 7 days",path:["from"]}).refine(input=>!input.cursor||!!input.to,{message:"to is required when continuing with a cursor",path:["to"]}),OpsRecentChatMessageSchema=z15.object({id:z15.string(),threadId:z15.string(),providerMessageId:z15.string().nullable(),invocationId:z15.string().nullable(),env:z15.string().nullable(),role:z15.string(),parts:z15.array(z15.record(z15.string(),z15.unknown())),metadata:z15.object({status:z15.string().optional(),traceUrl:z15.string().optional(),externalFileChanges:z15.array(z15.unknown()).optional()}),stats:z15.object({toolCount:z15.number().int().nonnegative(),failedToolCount:z15.number().int().nonnegative()}),createdAt:z15.iso.datetime({offset:!0}),project:z15.object({id:z15.string(),name:z15.string(),displayName:z15.string().nullable(),organizationId:z15.string().nullable()})}),OpsRecentChatResponseSchema=z15.object({target:z15.object({backendProfile:OpsBackendProfileSchema,projectEnv:z15.string().nullable()}),window:z15.object({from:z15.iso.datetime({offset:!0}),to:z15.iso.datetime({offset:!0})}),messages:z15.object({items:z15.array(OpsRecentChatMessageSchema),nextCursor:z15.string().nullable()})}),OpsRecentChatResponseDTO=createDTO(OpsRecentChatResponseSchema)}});var init_types=__esm({"../../packages/api-contracts/dist/esm/ops/types.js"(){"use strict"}});function compact(value){return Object.fromEntries(Object.entries(value).filter(([,entry])=>entry!==void 0))}function time2(value){return value===void 0?void 0:resolveOpsTime(value)}function seg(value){return encodeURIComponent(value)}var init_shared=__esm({"../../packages/api-contracts/dist/esm/ops/commands/shared.js"(){"use strict";init_args();__name(compact,"compact");__name(time2,"time");__name(seg,"seg")}});import{z as z16}from"zod";var invocation,span,OpsChatViewSchema,OpsChatViewsInputSchema,viewIds,ending,toolCallRow,turnRow,turnSlice,viewEnvelope,OpsChatViewsResponseDTO,agentCommands,init_agent=__esm({"../../packages/api-contracts/dist/esm/ops/commands/agent.js"(){"use strict";init_ops_chat_dto();init_ops();init_create_dto();init_args();init_types();init_shared();invocation=z16.string().trim().min(1).max(255).describe("Agent invocation (run) id"),span=z16.string().trim().min(1).max(255).describe("Braintrust span id"),OpsChatViewSchema=z16.enum(["tool-calls","turns","slices"]),OpsChatViewsInputSchema=OpsRecentChatInputSchema.safeExtend({view:OpsChatViewSchema}),viewIds=z16.object({threadId:z16.string(),invocationId:z16.string().nullable(),projectId:z16.string(),messageId:z16.string()}),ending={terminal:z16.string(),terminalReason:z16.string().nullable()},toolCallRow=viewIds.extend({tool:z16.string(),subcommand:z16.string().nullable(),state:z16.string().nullable(),failed:z16.boolean(),errorSignature:z16.string().nullable(),position:z16.number().int().nonnegative(),recoveredNext:z16.boolean().nullable()}),turnRow=viewIds.extend({...ending,userMessageId:z16.string().nullable(),failureCategory:z16.enum(["expected_billing_stop","expected_model_refusal","workspace_failure","provider_model_failure","unknown_failure"]).nullable(),changes:z16.string().nullable(),mergeState:z16.string().nullable(),validation:z16.string().nullable(),publication:z16.string().nullable(),stepCount:z16.number().int().nonnegative(),toolCount:z16.number().int().nonnegative(),failedToolCount:z16.number().int().nonnegative(),hasTextReply:z16.boolean(),fimoAuthored:z16.boolean().nullable()}),turnSlice=viewIds.extend({...ending,previousUserAsk:z16.string().max(300),previousAgentWords:z16.string().max(500),userMessage:z16.string().max(1500),agentReply:z16.string().max(1305),failedToolCalls:z16.array(z16.object({tool:z16.string(),errorSignature:z16.string()})).max(6)}),viewEnvelope=z16.object({target:z16.object({backendProfile:OpsBackendProfileSchema,projectEnv:z16.string().nullable()}),window:z16.object({from:z16.iso.datetime({offset:!0}),to:z16.iso.datetime({offset:!0})})}),OpsChatViewsResponseDTO=createDTO(z16.discriminatedUnion("view",[viewEnvelope.extend({view:z16.literal("tool-calls"),messages:z16.object({items:z16.array(toolCallRow),nextCursor:z16.string().nullable()})}),viewEnvelope.extend({view:z16.literal("turns"),messages:z16.object({items:z16.array(turnRow),nextCursor:z16.string().nullable()})}),viewEnvelope.extend({view:z16.literal("slices"),messages:z16.object({items:z16.array(turnSlice),nextCursor:z16.string().nullable()})})])),agentCommands=[{id:"agent.chats.views",summary:"Read tool calls, turn outcomes or customer-text slices from a bounded chat window",permission:"ops:project:chat:read",effect:"read",input:z16.object({view:OpsChatViewSchema,since:opsArgs.since,until:opsArgs.until.optional(),env:opsArgs.env.optional(),limit:opsArgs.limit.max(200).default(100).describe("Source messages per page; each may produce several view rows"),cursor:opsArgs.cursor.optional(),reason:opsArgs.reason,output:opsArgs.output.optional().describe("Private JSON file; required for slices")}),request:__name(input=>({method:"POST",path:"/chat/messages/views",body:compact({view:input.view,from:time2(input.since),to:time2(input.until)??new Date().toISOString(),projectEnv:input.env,limit:input.limit,cursor:input.cursor,reason:input.reason})}),"request")},{id:"agent.chats.recent",summary:"Read recent chat messages across every project in a time window",permission:"ops:project:chat:read",effect:"read",input:z16.object({since:opsArgs.since,until:opsArgs.until.optional(),env:opsArgs.env.optional().describe("Only messages from this environment"),limit:opsArgs.limit.max(200).default(100),cursor:opsArgs.cursor.optional(),full:z16.boolean().default(!1).describe("Include complete message parts instead of the slim transcript"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/chat/messages/recent",body:compact({from:time2(input.since),to:time2(input.until)??new Date().toISOString(),projectEnv:input.env,limit:input.limit,cursor:input.cursor,slim:!input.full,reason:input.reason})}),"request")},{id:"agent.chats.create",summary:"Create an agent chat with routines in a customer project, as the organization owner. Validate the spec and confirm intent first: routines run and spend credits",permission:"ops:project:agents:write",effect:"write",risk:"low",input:z16.object({project:opsArgs.project,spec:z16.record(z16.string(),z16.unknown()).describe("JSON spec: { agent: { name, description } | { template }, routines: [...] }")}),cli:{fileArgs:["spec"]}},{id:"agent.traces.list",summary:"List agent runs for a project, organization or thread, with cost and status",permission:"ops:project:read",effect:"read",input:z16.object({project:opsArgs.project.optional(),org:opsArgs.org.optional(),thread:z16.uuid().optional().describe("Chat thread id"),agent:z16.string().trim().min(1).max(120).optional().describe("Agent key, e.g. chat.project"),status:OpsAgentInvocationStatusSchema.optional(),since:opsArgs.since.optional(),minCost:z16.coerce.number().min(0).optional().describe("Only runs costing at least this many USD"),tracedOnly:z16.boolean().default(!1).describe("Only runs that recorded a Braintrust root span"),limit:opsArgs.limit.max(100).default(25),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/agent-traces/list",body:compact({projectId:input.project,organizationId:input.org,threadId:input.thread,agentKey:input.agent,status:input.status,since:time2(input.since),minCostUsd:input.minCost,tracedOnly:input.tracedOnly,limit:input.limit,reason:input.reason})}),"request")},{id:"agent.traces.budget",summary:"List chats whose runs crossed the context budget and had to wrap up (content-free)",permission:"ops:braintrust:read",effect:"read",input:z16.object({since:opsArgs.since,until:opsArgs.until.optional(),limit:opsArgs.limit.max(25).default(25),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/agent-traces/budget-wrap-up",body:compact({since:time2(input.since),until:time2(input.until),limit:input.limit,reason:input.reason})}),"request")},{id:"agent.traces.spans",summary:"List the spans of one agent run",permission:"ops:braintrust:read",effect:"read",input:z16.object({invocation,limit:opsArgs.limit.max(500).default(200),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/agent-traces/${seg(input.invocation)}/spans`,body:{limit:input.limit,reason:input.reason}}),"request")},{id:"agent.traces.span",summary:"Read one span body (input and output) of an agent run",permission:"ops:braintrust:read",effect:"read",input:z16.object({invocation,span,maxChars:z16.coerce.number().int().min(500).max(2e5).default(2e4).describe("Per-field character bound"),tail:z16.boolean().default(!1).describe("Return the end of an over-long body instead of the start"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/agent-traces/${seg(input.invocation)}/spans/${seg(input.span)}`,body:{maxChars:input.maxChars,edge:input.tail?"end":"start",reason:input.reason}}),"request")},{id:"agent.traces.messages",summary:"Read the conversation the model saw in one LLM span",permission:"ops:braintrust:read",effect:"read",input:z16.object({invocation,span,message:z16.coerce.number().int().min(0).optional().describe("Return this one message instead of the index"),maxChars:z16.coerce.number().int().min(500).max(2e5).default(2e4),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/agent-traces/${seg(input.invocation)}/spans/${seg(input.span)}/messages`,body:compact({messageIndex:input.message,maxChars:input.maxChars,reason:input.reason})}),"request")},{id:"agent.traces.stats",summary:"Aggregate agent step latency, tokens and cost by model, provider, span or type",permission:"ops:braintrust:read",effect:"read",input:z16.object({since:opsArgs.since,until:opsArgs.until.optional(),groupBy:OpsAgentTraceStatsGroupBySchema.default("model"),spanType:OpsSpanTypeSchema.optional(),slowerThan:z16.coerce.number().positive().optional().describe("Only steps at least this many seconds slow"),limit:opsArgs.limit.max(200).default(50),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/agent-traces/stats",body:compact({since:time2(input.since),until:time2(input.until),groupBy:input.groupBy,spanType:input.spanType,slowerThanSeconds:input.slowerThan,limit:input.limit,reason:input.reason})}),"request")}]}});import{z as z17}from"zod";var assistantCommands,init_assistant=__esm({"../../packages/api-contracts/dist/esm/ops/commands/assistant.js"(){"use strict";init_args();init_types();init_shared();assistantCommands=[{id:"assistant.threads.list",summary:"List your admin assistant threads, newest activity first",permission:"ops:platform:read",effect:"read",input:z17.object({query:opsArgs.query.optional().describe("Match the thread title"),limit:z17.coerce.number().int().min(1).max(100).optional().describe("Maximum results"),cursor:opsArgs.cursor.optional()}),request:__name(input=>({method:"GET",path:"/assistant/threads",query:{q:input.query,limit:input.limit,cursor:input.cursor}}),"request")},{id:"assistant.threads.get",summary:"Read one admin assistant thread with every message",permission:"ops:platform:read",effect:"read",input:z17.object({thread:z17.uuid().describe("Admin assistant thread id")}),request:__name(input=>({method:"GET",path:`/assistant/threads/${seg(input.thread)}`}),"request")}]}});import{z as z18}from"zod";var day,billingCommands,init_billing=__esm({"../../packages/api-contracts/dist/esm/ops/commands/billing.js"(){"use strict";init_args();init_types();init_shared();day=z18.iso.date().describe("UTC day, YYYY-MM-DD"),billingCommands=[{id:"billing.customer",summary:"Read one Hyperline billing customer",permission:"ops:billing:read",effect:"read",input:z18.object({customer:z18.string().trim().min(1).max(255).describe("Hyperline customer id"),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/billing/customers/${seg(input.customer)}`,query:{reason:input.reason}}),"request")},{id:"billing.org",summary:"Read an organization's billing state: subscription, plan projection, credits and wallet",permission:"ops:billing:read",effect:"read",input:z18.object({org:opsArgs.org,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/billing/organizations/${seg(input.org)}`,query:{reason:input.reason}}),"request")},{id:"billing.bandwidth-contract",summary:"Read an organization's hosting bandwidth contract and current usage",permission:"ops:billing:read",effect:"read",input:z18.object({org:opsArgs.org,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/billing/organizations/${seg(input.org)}/bandwidth-contract`,query:{reason:input.reason}}),"request")},{id:"billing.ledger",summary:"Read an organization's credit ledger: holds, settlements, grants or usage events",permission:"ops:billing:read",effect:"read",input:z18.object({org:opsArgs.org,kind:z18.enum(["holds","settlements","grants","usage-events"]),since:opsArgs.since.optional(),limit:opsArgs.limit.max(200).default(100),cursor:opsArgs.cursor.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/ledger",query:compact({organizationId:input.org,kind:input.kind,since:time2(input.since),limit:input.limit,cursor:input.cursor,reason:input.reason})}),"request")},{id:"billing.plans.report",summary:"Find organizations whose local plan projection is missing or unusable (one page)",permission:"ops:billing:read",effect:"read",input:z18.object({cursor:opsArgs.cursor.optional().describe("Resume after this organization id"),at:z18.iso.datetime({offset:!0}).optional().describe("Reuse evaluatedAt when resuming a scan"),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/plan-projections/report",query:compact({reason:input.reason,at:input.at??new Date().toISOString(),cursor:input.cursor})}),"request")},{id:"billing.plans.reconcile",summary:"Repair organizations' local plan projections from Hyperline",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({orgs:z18.array(opsArgs.org).min(1).max(100).describe("Organization ids")})},{id:"billing.legacy-premium.report",summary:"Report legacy Premium organizations and where each stands in the Pro transition",permission:"ops:billing:read",effect:"read",input:z18.object({org:opsArgs.org.optional(),limit:opsArgs.limit.max(200).optional(),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/legacy-premium-report",query:compact({reason:input.reason,org:input.org,limit:input.limit})}),"request")},{id:"billing.legacy-premium.enroll",summary:"Record the approved Pro offer for one legacy Premium organization",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({org:opsArgs.org,deadline:z18.string().trim().min(1).max(64).describe("Decision date exactly 90 calendar days from today")})},{id:"billing.legacy-premium.comp",summary:"Accept an internal organization's Pro offer on its behalf, free through a 100% coupon",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({org:opsArgs.org,coupon:z18.string().trim().min(1).max(64).describe("Hyperline coupon id: 100% off every product")})},{id:"billing.legacy-premium.notify",summary:"Send the due legacy Premium transition notices for one organization",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({org:opsArgs.org})},{id:"billing.entitlements.sync",summary:"Reconcile subscription entitlement properties in Hyperline with Fimo's plans (one batch)",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({batchSize:z18.coerce.number().int().min(1).max(100).default(50),concurrency:z18.coerce.number().int().min(1).max(10).default(2),cursor:opsArgs.cursor.optional().describe("Resume after this organization id")})},{id:"billing.agent-runtime.attach",summary:"Attach the Agent runtime product to PAYG and Pro subscriptions (one batch)",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({orgs:z18.array(opsArgs.org).min(1).max(100).optional().describe("Only these organizations"),batchSize:z18.coerce.number().int().min(1).max(100).default(25),cursor:opsArgs.cursor.optional().describe("Resume after this organization id")})},{id:"billing.dispatches.list",summary:"List billing usage dispatches to Hyperline by state",permission:"ops:billing:read",effect:"read",input:z18.object({state:z18.enum(["pending","dispatched","dead-lettered","discarded"]),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/billing/dispatches",body:{state:input.state,reason:input.reason}}),"request")},{id:"billing.dispatches.discard",summary:"Discard dead-lettered billing dispatches so they are never sent",permission:"ops:billing:write",effect:"write",risk:"high",humanOnly:!0,input:z18.object({dispatches:z18.array(z18.uuid()).min(1).max(100).describe("Dispatch ids")})},{id:"billing.dispatches.retry",summary:"Retry a dead-lettered billing dispatch",permission:"ops:billing:write",effect:"write",risk:"low",input:z18.object({dispatch:z18.uuid().describe("Dispatch id")})},{id:"billing.cache.invalidate",summary:"Clear an organization's cached billing state so the next read goes to Hyperline",permission:"ops:billing:write",effect:"write",risk:"low",input:z18.object({org:opsArgs.org})},{id:"billing.hosting-usage.day",summary:"Read hosting usage recorded for one source, meter and day",permission:"ops:billing:read",effect:"read",input:z18.object({source:z18.string().trim().min(1).max(100),meter:z18.string().trim().min(1).max(100),day,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/hosting-usage",query:{source:input.source,meter:input.meter,day:input.day,reason:input.reason}}),"request")},{id:"billing.hosting-usage.reconciliation",summary:"Compare a project's served traffic with the hosting usage billed for one day",permission:"ops:billing:read",effect:"read",input:z18.object({project:opsArgs.project,day,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/hosting-usage/reconciliation",query:{projectId:input.project,day:input.day,reason:input.reason}}),"request")},{id:"billing.hosting-usage.periods",summary:"List an organization's hosting billing periods",permission:"ops:billing:read",effect:"read",input:z18.object({org:opsArgs.org,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/billing/hosting-usage/customer-periods",query:{organizationId:input.org,reason:input.reason}}),"request")}]}});import{z as z19}from"zod";var coreCommands,init_core=__esm({"../../packages/api-contracts/dist/esm/ops/commands/core.js"(){"use strict";init_args();init_types();init_shared();coreCommands=[{id:"find",summary:"Find projects, organizations or users by name, slug, domain, email or id",permission:"ops:project:read",effect:"read",input:z19.object({query:opsArgs.query,kind:z19.enum(["project","org","user"]).optional().describe("Only this kind of record"),limit:opsArgs.limit.max(100).default(20),cursor:opsArgs.cursor.optional()}),request:__name(input=>({method:"GET",path:"/find",query:compact({q:input.query,kind:input.kind,limit:input.limit,cursor:input.cursor})}),"request"),cli:{positional:"query"}},{id:"audit.list",summary:"List audit log entries, newest first",permission:"ops:audit:read",effect:"read",input:z19.object({project:opsArgs.project.optional(),org:opsArgs.org.optional(),actor:z19.string().trim().min(1).max(255).optional().describe("User or service principal id"),action:z19.string().trim().min(1).max(64).optional().describe("Audit action, e.g. project_takedown"),since:opsArgs.since.optional(),limit:opsArgs.limit.max(200).default(50)}),request:__name(input=>({method:"GET",path:"/audit",query:compact({projectId:input.project,organizationId:input.org,actor:input.actor,action:input.action,since:time2(input.since),limit:input.limit})}),"request")}]}});import{z as z20}from"zod";var window2,healthCommands,init_health=__esm({"../../packages/api-contracts/dist/esm/ops/commands/health.js"(){"use strict";init_organization_features_dto();init_ops();init_args();init_types();init_shared();window2={since:opsArgs.since,until:opsArgs.until.optional()},healthCommands=[{id:"health.overview",summary:"Platform health brief: Sentry, logs, agents, publishing and support in one window",permission:"ops:project:read",effect:"read",input:z20.object({...window2,project:opsArgs.project.optional().describe("Narrow every source that can be narrowed to one project"),limit:opsArgs.limit.max(100).default(25).describe("Maximum findings per source"),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/health",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,limit:input.limit,reason:input.reason})}),"request")},{id:"health.agents",summary:"Agent run outcomes, cost and duration grouped by agent, status, branch, project or day",permission:"ops:project:read",effect:"read",input:z20.object({...window2,project:opsArgs.project.optional(),org:opsArgs.org.optional(),env:opsArgs.env.optional(),agent:z20.string().trim().min(1).max(120).optional().describe("Agent key, e.g. chat.project"),groupBy:OpsAgentHealthGroupBySchema.default("agent"),includeChildren:z20.boolean().default(!1).describe("Count sub-steps too"),limit:opsArgs.limit.max(200).default(50),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/agent-health",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,organizationId:input.org,branch:input.env,agentKey:input.agent,groupBy:input.groupBy,includeChildren:input.includeChildren,limit:input.limit,reason:input.reason})}),"request")},{id:"health.context",summary:"Context-window pressure and compaction facts for agent turns",permission:"ops:project:read",effect:"read",input:z20.object({...window2,project:opsArgs.project.optional(),limit:opsArgs.limit.max(1e3).default(500),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/context-health",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,limit:input.limit,reason:input.reason})}),"request")},{id:"health.memory",summary:"Agent memory health: threads and routines with missing or stale memory",permission:"ops:project:read",effect:"read",input:z20.object({...window2,project:opsArgs.project.optional(),limit:opsArgs.limit.max(1e3).default(200),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/memory-health",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,limit:input.limit,reason:input.reason})}),"request")},{id:"health.providers",summary:"Model provider errors grouped by signature, optionally correlated to agent runs",permission:"ops:braintrust:read",effect:"read",input:z20.object({...window2,model:z20.string().trim().min(1).max(200).optional(),provider:z20.string().trim().min(1).max(120).optional().describe("e.g. gateway or vertex"),spanType:OpsSpanTypeSchema.optional(),before:z20.string().trim().min(1).max(64).optional().describe("Page boundary: nextBefore from the previous page"),limit:opsArgs.limit.max(1e3).default(500).describe("Error spans to scan per page"),correlate:z20.boolean().default(!1).describe("Resolve the newest occurrences to Fimo runs"),correlationLimit:z20.coerce.number().int().min(1).max(100).default(25),sampleChars:z20.coerce.number().int().min(200).max(2e4).default(1200),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/agent-provider-errors",body:compact({since:time2(input.since),until:time2(input.until),model:input.model,provider:input.provider,spanType:input.spanType,before:input.before,limit:input.limit,sampleChars:input.sampleChars,correlateInvocations:input.correlate||void 0,correlationLimit:input.correlate?input.correlationLimit:void 0,reason:input.reason})}),"request")},{id:"health.chat-history.summary",summary:"How often agents call the chatHistory tool and whether it finds what they need",permission:"ops:project:read",effect:"read",input:z20.object({since:opsArgs.since.optional(),until:opsArgs.until.optional(),project:opsArgs.project.optional(),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/chat-history/health",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,reason:input.reason})}),"request")},{id:"health.chat-history.calls",summary:"List chatHistory tool calls; --with-content adds the surrounding messages (needs chat read)",permission:"ops:project:read",effect:"read",input:z20.object({since:opsArgs.since,until:opsArgs.until.optional(),project:opsArgs.project.optional(),limit:opsArgs.limit.max(500).default(100),withContent:z20.boolean().default(!1),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:input.withContent?"/chat-history/calls/content":"/chat-history/calls",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,limit:input.limit,reason:input.reason})}),"request")},{id:"health.chat-history.judge",summary:"Have a model judge a sample of chatHistory calls; --calibrate runs the labelled benchmark",permission:"ops:project:chat:read",effect:"read",input:z20.object({since:opsArgs.since.optional(),until:opsArgs.until.optional(),project:opsArgs.project.optional(),sample:z20.coerce.number().int().min(1).max(25).default(10),calibrate:z20.boolean().default(!1),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>input.calibrate?{method:"POST",path:"/chat-history/judge/calibration",body:{reason:input.reason}}:{method:"POST",path:"/chat-history/judge",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,sample:input.sample,reason:input.reason})},"request")},{id:"health.data-usage",summary:"Data-provider usage (search, scraping, enrichment) grouped by operation, provider, day, org or agent",permission:"ops:project:read",effect:"read",input:z20.object({...window2,org:opsArgs.org.optional(),groupBy:OpsDataUsageGroupBySchema.default("operation"),limit:opsArgs.limit.max(200).default(50),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/data-usage",body:compact({since:time2(input.since),until:time2(input.until),organizationId:input.org,groupBy:input.groupBy,limit:input.limit,reason:input.reason})}),"request")},{id:"health.routines",summary:"Routine runs, event bursts, Jev trigger calls and cost, by routine, plan, day or project",permission:"ops:project:read",effect:"read",input:z20.object({...window2,project:opsArgs.project.optional(),org:opsArgs.org.optional(),plan:AgentPlanSchema.optional().describe("The organization's agent plan now"),routine:z20.string().trim().min(1).max(64).optional().describe("Template routine key, or custom"),groupBy:OpsRoutineMetricsGroupBySchema.default("routine"),sortBy:OpsRoutineMetricsSortBySchema.default("total").describe("Rank buckets by total cost, Jev's trigger cost, or runs"),burstMinutes:z20.coerce.number().int().min(1).max(120).default(10).describe("An event this many minutes or less after the routine's previous one is a burst"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:"/routine-metrics",body:compact({since:time2(input.since),until:time2(input.until),projectId:input.project,organizationId:input.org,plan:input.plan,routine:input.routine,groupBy:input.groupBy,sortBy:input.sortBy,burstMinutes:input.burstMinutes,reason:input.reason})}),"request")},{id:"health.analytics",summary:"Whether a project's website analytics are arriving (content-free counts, max 7 days)",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project,env:opsArgs.env.default("prod").describe("Environment whose traffic to check; prod for published traffic"),...window2,canaryPath:z20.string().max(300).optional().describe("Exact test path ending in ?fimo_monitor=<UUID>"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/projects/${seg(input.project)}/analytics-health`,body:compact({branch:input.env,canaryPath:input.canaryPath,since:time2(input.since),until:time2(input.until)??new Date().toISOString(),reason:input.reason})}),"request")},{id:"health.session",summary:"A project's work-session and database-branch health: cleanup due, unresolved allocations, capacity",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project,checkProvider:z20.boolean().default(!1).describe("Include one bounded read-only Neon inventory page"),limit:opsArgs.limit.max(100).default(25),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:`/projects/${seg(input.project)}/session-health`,body:{reason:input.reason,limit:input.limit,checkProvider:input.checkProvider}}),"request")},{id:"health.sandbox",summary:"A project environment's sandbox and preview status",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project,env:opsArgs.env.default("main"),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:`/projects/${seg(input.project)}/sandbox/status`,body:{projectEnv:input.env,reason:input.reason}}),"request")},{id:"health.schedules",summary:"Failed scheduled runs and webhook deliveries",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project.optional(),env:opsArgs.env.optional(),schedule:z20.uuid().optional().describe("Schedule id"),run:z20.uuid().optional().describe("Schedule run id (needs --project)"),since:opsArgs.since.optional(),until:opsArgs.until.optional(),limit:opsArgs.limit.max(100).optional(),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/schedules/failures",body:compact({projectId:input.project,projectEnv:input.env,scheduleId:input.schedule,runId:input.run,since:time2(input.since),until:time2(input.until),limit:input.limit,reason:input.reason})}),"request")},{id:"health.integrations",summary:"Failing integration connections and inbound events",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/integrations/failures",body:compact({projectId:input.project,reason:input.reason})}),"request")},{id:"health.domains",summary:"Custom domains with DNS, SSL or provider problems",permission:"ops:project:read",effect:"read",input:z20.object({project:opsArgs.project.optional(),org:opsArgs.org.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/domains/problems",body:compact({projectId:input.project,organizationId:input.org,reason:input.reason})}),"request")}]}});import{z as z21}from"zod";var mergeCommands,init_merge=__esm({"../../packages/api-contracts/dist/esm/ops/commands/merge.js"(){"use strict";init_args();init_types();init_shared();mergeCommands=[{id:"merge.list",summary:"List merges, newest first; --stuck lists only merges that stopped progressing",permission:"ops:merges:read",effect:"read",input:z21.object({project:opsArgs.project.optional(),stuck:z21.boolean().default(!1).describe("Only merges stuck in a non-terminal state"),status:z21.string().trim().min(1).max(64).optional().describe("Only merges in this status"),since:opsArgs.since.optional(),limit:opsArgs.limit.max(200).default(50),cursor:opsArgs.cursor.optional()}),request:__name(input=>({method:"GET",path:"/merges",query:compact({projectId:input.project,stuck:input.stuck||void 0,status:input.status,since:time2(input.since),limit:input.limit,cursor:input.cursor})}),"request")},{id:"merge.get",summary:"Show one merge with its steps, conflicts and release",permission:"ops:merges:read",effect:"read",input:z21.object({merge:z21.uuid().describe("Merge id")}),request:__name(input=>({method:"GET",path:`/merges/${seg(input.merge)}`}),"request")},{id:"merge.unwind",summary:"Force-unwind a stuck merge: reset the target branch to its pre-merge head and reopen the merge",permission:"ops:merges:write",effect:"write",risk:"high",humanOnly:!0,input:z21.object({merge:z21.uuid().describe("Merge id")})},{id:"merge.fail",summary:"Force-fail a stuck merge without touching the target branch",permission:"ops:merges:write",effect:"write",risk:"high",humanOnly:!0,input:z21.object({merge:z21.uuid().describe("Merge id")})}]}});var MONITORING_SEVERITIES,init_admin_monitoring_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin-monitoring.dto.js"(){"use strict";MONITORING_SEVERITIES=["critical","high","medium","low"]}});import{z as z22}from"zod";var OPS_SIGNAL_CASE_STATES,OpsSignalCaseStateSchema,monitorCommands,init_monitor=__esm({"../../packages/api-contracts/dist/esm/ops/commands/monitor.js"(){"use strict";init_admin_monitoring_dto();init_args();init_types();init_shared();OPS_SIGNAL_CASE_STATES=["open","accepted","snoozed","dismissed","resolved"],OpsSignalCaseStateSchema=z22.enum(OPS_SIGNAL_CASE_STATES),monitorCommands=[{id:"monitor.checks.list",summary:"List staff checks with their schedule, action and last run",permission:"ops:investigations:read",effect:"read",input:z22.object({}),request:__name(()=>({method:"GET",path:"/monitor/checks"}),"request")},{id:"monitor.checks.try",summary:"Run one code check over a window, read-only, and show what it would open; nothing is stored (Jev and external checks are refused)",permission:"ops:investigations:read",effect:"read",input:z22.object({check:z22.string().trim().min(1).max(160).describe("Check id, e.g. agents/tools/errors/tool-failure-rate"),since:opsArgs.since,until:opsArgs.until.optional()}),request:__name(input=>({method:"POST",path:"/monitor/checks/try",body:compact({checkId:input.check,since:time2(input.since),until:time2(input.until)})}),"request")},{id:"monitor.cases.list",summary:"List cases opened by staff checks, newest activity first",permission:"ops:investigations:read",effect:"read",input:z22.object({state:OpsSignalCaseStateSchema.optional().describe("Only cases in this state"),check:z22.string().trim().min(1).max(160).optional().describe("Only cases from this check id, or from every check under a prefix ending in /"),minSeverity:z22.enum(MONITORING_SEVERITIES).optional().describe("Only cases at least this severe: critical, high, medium or low"),limit:opsArgs.limit.max(200).default(50)}),request:__name(input=>({method:"POST",path:"/monitor/cases",body:compact({state:input.state,checkId:input.check,minSeverity:input.minSeverity,limit:input.limit})}),"request")},{id:"monitor.cases.get",summary:"Read one case with its latest observations (ids and numbers only)",permission:"ops:investigations:read",effect:"read",input:z22.object({case:z22.uuid().describe("Case id")}),request:__name(input=>({method:"GET",path:`/monitor/cases/${seg(input.case)}`}),"request")},{id:"monitor.cases.update",summary:"Decide on a case: accept with a ceiling, snooze until a date, dismiss, resolve, or reopen",permission:"ops:investigations:write",effect:"write",risk:"low",input:z22.object({case:z22.uuid().describe("Case id"),state:OpsSignalCaseStateSchema.optional(),decisionReason:z22.string().trim().min(1).max(2e3).optional().describe("Why this decision; required to accept, snooze or dismiss. Shown on the finding"),ceiling:z22.number().nonnegative().optional().describe("For accepted: reopen above this metric"),snoozedUntil:z22.iso.datetime().optional().describe("For snoozed: reopen after this time"),linearIssue:z22.string().trim().regex(/^[A-Z]+-\d+$/).optional(),prUrl:z22.url().optional()})}]}});import{z as z23}from"zod";var channel,draft,notifyCommands,init_notify=__esm({"../../packages/api-contracts/dist/esm/ops/commands/notify.js"(){"use strict";init_ops();init_args();init_types();init_shared();channel=z23.enum(["email","pylon"]).describe("email (Resend, to the project owner) or pylon (ticket reply)"),draft=z23.uuid().describe("Draft id"),notifyCommands=[{id:"notify.draft",summary:"Draft a customer-visible message: an email to a project owner or a reply on a Pylon ticket",permission:"ops:notification:preview",effect:"write",risk:"low",input:z23.object({channel,message:z23.string().trim().min(1).max(5e3),project:opsArgs.project.optional().describe("email: the project whose owner receives it"),recipient:z23.email().optional().describe("email: override the recipient"),subject:z23.string().trim().min(1).max(200).optional().describe("email: subject line"),locale:z23.string().trim().min(2).max(20).optional().describe("email: message locale, e.g. en"),issue:OpsPylonIssueIdSchema.optional().describe("pylon: ticket id"),replyTo:z23.string().trim().min(1).max(255).optional().describe("pylon: top-level message id to reply to"),toEmails:z23.array(z23.email()).max(50).optional().describe("pylon: email recipients"),ccEmails:z23.array(z23.email()).max(50).optional(),bccEmails:z23.array(z23.email()).max(50).optional()}),cli:{fileArgs:["message"]}},{id:"notify.show",summary:"Show a drafted customer message and its approval state",permission:"ops:notification:preview",effect:"read",input:z23.object({channel,draft}),request:__name(input=>({method:"GET",path:input.channel==="pylon"?`/support/pylon/replies/${seg(input.draft)}`:`/notifications/${seg(input.draft)}`}),"request")},{id:"notify.approve",summary:"Approve a drafted customer message (a person must approve before it can be sent)",permission:"ops:notification:approve",effect:"write",risk:"low",humanOnly:!0,input:z23.object({channel,draft})},{id:"notify.send",summary:"Send an approved customer message",permission:"ops:notification:send",effect:"write",risk:"high",input:z23.object({channel,draft})}]}});function normalizeSentryIssueReference(reference){let trimmed=reference.trim();if(SENTRY_ISSUE_ID_PATTERN.test(trimmed))return trimmed;let url;try{url=new URL(trimmed)}catch{throw new Error("Expected a Sentry issue id or /issues/<id>/ URL")}let segments=url.pathname.split("/").filter(Boolean),issuesIndex=segments.lastIndexOf("issues"),issueId=issuesIndex>=0&&issuesIndex===segments.length-2?segments[issuesIndex+1]:void 0;if(!issueId||!SENTRY_ISSUE_ID_PATTERN.test(issueId))throw new Error("Expected a Sentry issue id or /issues/<id>/ URL");return issueId}function collectTraceIds(value,candidates,depth=0){if(!(depth>32)){if(typeof value=="string"){TRACE_ID_PATTERN.test(value.trim())&&candidates.add(value.trim().toLowerCase());return}if(Array.isArray(value)){for(let item of value)collectTraceIds(item,candidates,depth+1);return}if(typeof value=="object"&&value!==null)for(let item of Object.values(value))collectTraceIds(item,candidates,depth+1)}}function normalizeTempoTraceReference(reference){let trimmed=reference.trim();if(TRACE_ID_PATTERN.test(trimmed))return trimmed.toLowerCase();let url;try{url=new URL(trimmed)}catch{throw new Error("Expected an exact 32-character trace id or a Grafana trace URL")}let candidates=new Set;for(let segment of url.pathname.split("/"))collectTraceIds(segment,candidates);for(let value of url.searchParams.values()){collectTraceIds(value,candidates);try{collectTraceIds(JSON.parse(value),candidates)}catch{continue}}if(candidates.size!==1)throw new Error(candidates.size===0?"Grafana URL did not contain a trace id":"Grafana URL contained multiple trace ids");return[...candidates][0]}var SENTRY_ISSUE_ID_PATTERN,TRACE_ID_PATTERN,init_references2=__esm({"../../packages/api-contracts/dist/esm/ops/references.js"(){"use strict";SENTRY_ISSUE_ID_PATTERN=/^[a-zA-Z0-9-]{1,100}$/,TRACE_ID_PATTERN=/^[a-fA-F0-9]{32}$/;__name(normalizeSentryIssueReference,"normalizeSentryIssueReference");__name(collectTraceIds,"collectTraceIds");__name(normalizeTempoTraceReference,"normalizeTempoTraceReference")}});import{z as z24}from"zod";function parseWhere(values){if(!(!values||values.length===0))return Object.fromEntries(values.map(value=>{let separator=value.indexOf("=");if(separator<1)throw new Error("--where expects key=value");return[value.slice(0,separator),value.slice(separator+1)]}))}var issue,logFilters,observeCommands,init_observe=__esm({"../../packages/api-contracts/dist/esm/ops/commands/observe.js"(){"use strict";init_args();init_references2();init_types();init_shared();issue=z24.string().trim().min(1).max(500).describe("Sentry issue id or issue URL");__name(parseWhere,"parseWhere");logFilters={project:opsArgs.project,where:z24.array(z24.string().min(3).max(500)).optional().describe("Structured field filter key=value; repeatable"),contains:z24.string().min(1).max(500).optional().describe("Plain-text line filter"),limit:opsArgs.limit.max(1e3).default(100),reason:opsArgs.reason,output:opsArgs.output.optional()},observeCommands=[{id:"observe.logs.query",summary:"Query a project's production logs in a time window",permission:"ops:logs:read",effect:"read",input:z24.object({...logFilters,since:opsArgs.since,until:opsArgs.until.optional()}),request:__name(input=>({method:"POST",path:"/logs/query",body:compact({projectId:input.project,from:time2(input.since),to:time2(input.until)??new Date().toISOString(),limit:input.limit,contains:input.contains,where:parseWhere(input.where),reason:input.reason})}),"request")},{id:"observe.logs.around",summary:"Read a project's production logs a few minutes either side of a moment",permission:"ops:logs:read",effect:"read",input:z24.object({...logFilters,at:z24.iso.datetime({offset:!0}).describe("The moment to center on"),minutes:z24.coerce.number().int().min(1).max(120).default(5).describe("Minutes before and after")}),request:__name(input=>{let at2=Date.parse(input.at);return{method:"POST",path:"/logs/query",body:compact({projectId:input.project,from:new Date(at2-input.minutes*6e4).toISOString(),to:new Date(at2+input.minutes*6e4).toISOString(),limit:input.limit,contains:input.contains,where:parseWhere(input.where),reason:input.reason})}},"request")},{id:"observe.traces.get",summary:"Read one Grafana Tempo trace (id or Grafana URL) for a project",permission:"ops:traces:read",effect:"read",input:z24.object({trace:z24.string().trim().min(1).max(4e3).describe("32-character trace id or Grafana trace URL"),project:opsArgs.project,since:opsArgs.since,until:opsArgs.until.optional(),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/traces/${normalizeTempoTraceReference(input.trace)}`,body:{projectId:input.project,from:resolveOpsTime(input.since),to:time2(input.until)??new Date().toISOString(),reason:input.reason}}),"request")},{id:"observe.sentry.issues",summary:"Search Sentry issues, for one project or every project",permission:"ops:sentry:read",effect:"read",input:z24.object({project:opsArgs.project.optional(),search:z24.string().trim().min(1).max(500).optional().describe('Sentry search, e.g. "is:unresolved"'),period:z24.enum(["1h","24h","7d","14d","30d","90d"]).optional().describe("Stats period (default 14d)"),sort:z24.enum(["date","new","freq","user","trends"]).optional(),limit:opsArgs.limit.max(100).optional(),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/sentry/issues",body:compact({projectId:input.project,query:input.search,statsPeriod:input.period,sort:input.sort,limit:input.limit,reason:input.reason})}),"request")},{id:"observe.sentry.issue",summary:"Read one Sentry issue",permission:"ops:sentry:read",effect:"read",input:z24.object({issue,reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/sentry/issues/${seg(normalizeSentryIssueReference(input.issue))}`,body:{reason:input.reason}}),"request")},{id:"observe.sentry.event",summary:"Read one full Sentry event",permission:"ops:sentry:read",effect:"read",input:z24.object({event:z24.string().trim().min(1).max(100).describe("Sentry event id"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/sentry/events/${seg(input.event)}`,body:{reason:input.reason}}),"request")},{id:"observe.sentry.latest-event",summary:"Read the latest full event of a Sentry issue",permission:"ops:sentry:read",effect:"read",input:z24.object({issue,reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/sentry/issues/${seg(normalizeSentryIssueReference(input.issue))}/events/latest`,body:{reason:input.reason}}),"request")},{id:"observe.sentry.resolve",summary:"Mark a Sentry issue resolved",permission:"ops:sentry:write",effect:"write",risk:"low",input:z24.object({issue})},{id:"observe.posthog.milestones",summary:"Count a project's PostHog lifecycle milestones (create, deploy, first publish) in a window",permission:"ops:posthog:read",effect:"read",input:z24.object({project:opsArgs.project,since:opsArgs.since,until:opsArgs.until.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:"/posthog/milestones",body:{projectId:input.project,from:resolveOpsTime(input.since),to:time2(input.until)??new Date().toISOString(),reason:input.reason}}),"request")}]}});import{z as z25}from"zod";var orgCommands,init_org=__esm({"../../packages/api-contracts/dist/esm/ops/commands/org.js"(){"use strict";init_organization_features_dto();init_args();init_types();init_shared();orgCommands=[{id:"org.get",summary:"Show an organization: plan, members, projects and subscription summary",permission:"ops:organizations:read",effect:"read",input:z25.object({org:opsArgs.org,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/organizations/${seg(input.org)}`,query:{reason:input.reason}}),"request")},{id:"org.features.list",summary:"List an organization's features and any staff overrides",permission:"ops:customers:read",effect:"read",input:z25.object({org:opsArgs.org}),request:__name(input=>({method:"GET",path:`/organizations/${seg(input.org)}/features`}),"request")},{id:"org.features.set",summary:"Force an organization feature on or off, or clear the override",permission:"ops:organization:features:write",effect:"write",risk:"low",humanOnly:!0,input:z25.object({org:opsArgs.org,feature:z25.enum(ORGANIZATION_FEATURES).describe("Feature name"),state:z25.enum(["on","off","default"]).describe("on, off, or default to clear the override")})},{id:"org.takedown",summary:"Take every project of an organization off Fimo domains and block publishing",permission:"ops:organizations:write",effect:"write",risk:"high",humanOnly:!0,input:z25.object({org:opsArgs.org})},{id:"org.restore",summary:"Lift an organization takedown",permission:"ops:organizations:write",effect:"write",risk:"high",humanOnly:!0,input:z25.object({org:opsArgs.org})},{id:"org.delete",summary:"Delete an organization and everything it owns permanently",permission:"ops:organizations:write",effect:"write",risk:"high",humanOnly:!0,input:z25.object({org:opsArgs.org})},{id:"org.credits.topup",summary:"Grant credits to an organization, free or as a recorded purchase",permission:"ops:credits:write",effect:"write",risk:"high",humanOnly:!0,input:z25.object({org:opsArgs.org,credits:z25.coerce.number().int().positive().describe("Number of credits"),type:z25.enum(["free","purchase"]).default("free"),amountCents:z25.coerce.number().int().positive().optional().describe("Amount paid, required for a purchase"),expiresAt:z25.iso.datetime({offset:!0}).optional().describe("When the credits expire"),message:z25.string().trim().optional().describe("Note shown with the grant")})},{id:"org.credits.burn-zombies",summary:"Burn credits held by abandoned (zombie) holds of one organization since a date",permission:"ops:credits:write",effect:"write",risk:"high",humanOnly:!0,input:z25.object({org:opsArgs.org,since:opsArgs.since})}]}});import{z as z26}from"zod";var OPS_PLATFORM_DASHBOARDS,platformCommands,init_platform=__esm({"../../packages/api-contracts/dist/esm/ops/commands/platform.js"(){"use strict";init_args();init_types();init_shared();OPS_PLATFORM_DASHBOARDS=["agents","money","projects","automation","growth","platform","usage","stats"],platformCommands=[{id:"platform.metrics",summary:"Read an admin dashboard as data: agents, money, projects, automation, growth, platform, usage or stats",permission:"ops:platform:read",effect:"read",input:z26.object({dashboard:z26.enum(OPS_PLATFORM_DASHBOARDS),since:opsArgs.since.default("7d"),until:opsArgs.until.optional()}),request:__name(input=>({method:"GET",path:"/platform/metrics",query:compact({dashboard:input.dashboard,since:time2(input.since),until:time2(input.until)})}),"request")},{id:"platform.pool.status",summary:"Show the warm sandbox pool: size, target, and projects waiting in it",permission:"ops:platform:read",effect:"read",input:z26.object({}),request:__name(()=>({method:"GET",path:"/platform/pool"}),"request")},{id:"platform.pool.refill",summary:"Top the warm sandbox pool up to its target size",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({})},{id:"platform.pool.flush",summary:"Delete warm sandboxes from the pool, all of them or only the listed ones (new projects start cold until it refills)",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({pooled:z26.array(z26.uuid()).min(1).max(500).optional().describe("Only these pooled project ids; omit to flush all")})},{id:"platform.maintenance.status",summary:"Show whether maintenance mode is on and its message",permission:"ops:platform:read",effect:"read",input:z26.object({}),request:__name(()=>({method:"GET",path:"/platform/maintenance"}),"request")},{id:"platform.maintenance.enable",summary:"Turn maintenance mode on: Studio shows the message and refuses work",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({message:z26.string().max(500).optional().describe("Message shown to users")})},{id:"platform.maintenance.disable",summary:"Turn maintenance mode off",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({})},{id:"platform.maintenance.message",summary:"Change the maintenance message without toggling maintenance mode",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({message:z26.string().max(500).describe("Message shown to users")})},{id:"platform.sync-all",summary:"Re-sync every project's database records from its repository",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({})},{id:"platform.sync-tenant-schemas",summary:"Apply pending tenant schema migrations to every project database",permission:"ops:platform:write",effect:"write",risk:"high",humanOnly:!0,input:z26.object({})},{id:"platform.integrations.replay",summary:"Replay one failed inbound integration event",permission:"ops:platform:write",effect:"write",risk:"low",input:z26.object({event:z26.string().trim().min(1).max(255).describe("Inbound event id")})},{id:"platform.onboardings.list",summary:"List site onboardings (start from an existing website) with their status",permission:"ops:platform:read",effect:"read",input:z26.object({status:z26.string().trim().min(1).max(64).optional(),since:opsArgs.since.optional(),limit:opsArgs.limit.max(200).default(50),cursor:opsArgs.cursor.optional()}),request:__name(input=>({method:"GET",path:"/platform/onboardings",query:compact({status:input.status,since:time2(input.since),limit:input.limit,cursor:input.cursor})}),"request")},{id:"platform.onboardings.get",summary:"Show one project's site onboarding: questions, answers, refusal and timeline",permission:"ops:platform:read",effect:"read",input:z26.object({project:opsArgs.project,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/platform/onboardings/${seg(input.project)}`,query:{reason:input.reason}}),"request")},{id:"platform.onboardings.lift-refusal",summary:"Lift a site onboarding's Terms refusal so the project can continue",permission:"ops:platform:write",effect:"write",risk:"low",input:z26.object({project:opsArgs.project})},{id:"platform.unclaimed.list",summary:"List unclaimed projects (created without an account) and their claim state",permission:"ops:platform:read",effect:"read",input:z26.object({since:opsArgs.since.optional(),limit:opsArgs.limit.max(200).default(50),cursor:opsArgs.cursor.optional()}),request:__name(input=>({method:"GET",path:"/platform/unclaimed",query:compact({since:time2(input.since),limit:input.limit,cursor:input.cursor})}),"request")},{id:"platform.resources.resolve",summary:"Resolve any id, URL, email or domain to the Fimo record it names",permission:"ops:platform:read",effect:"read",input:z26.object({query:z26.string().trim().min(1).max(512).describe("Id, URL, email or domain")}),request:__name(input=>({method:"GET",path:"/platform/resources/resolve",query:{q:input.query}}),"request"),cli:{positional:"query"}}]}});import{z as z27}from"zod";function files(project,action,env){return`/projects/${seg(project)}/files/${action}?projectEnv=${seg(env)}`}var envMain,projectCommands,init_project=__esm({"../../packages/api-contracts/dist/esm/ops/commands/project.js"(){"use strict";init_args();init_types();init_shared();envMain=opsArgs.env.default("main");__name(files,"files");projectCommands=[{id:"project.get",summary:"Inspect a project: owner, environments, domains, publications, recent runs and logs",permission:"ops:project:read",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,since:opsArgs.since.default("24h"),limit:opsArgs.limit.max(500).default(100).describe("Maximum log entries")}),request:__name(input=>({method:"GET",path:`/projects/${seg(input.project)}/inspect`,query:{projectEnv:input.env,hours:Math.min(168,opsHoursSince(input.since)),logLimit:input.limit}}),"request")},{id:"project.snapshot",summary:"Download a zip snapshot of a project's source and content",permission:"ops:project:snapshot",effect:"read",input:z27.object({project:opsArgs.project,reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/projects/${seg(input.project)}/snapshot`,body:{reason:input.reason}}),"request")},{id:"project.chat",summary:"Read a project's agent chat transcript (the most recently active chat unless --thread is set)",permission:"ops:project:chat:read",effect:"read",input:z27.object({project:opsArgs.project,thread:z27.uuid().optional().describe("One chat or routine run thread id"),env:opsArgs.env.optional().describe("Only turns that targeted this environment"),since:opsArgs.since.optional(),until:opsArgs.until.optional(),limit:opsArgs.limit.max(200).default(100),cursor:opsArgs.cursor.optional(),full:z27.boolean().default(!1).describe("Include tool inputs, outputs and other message parts"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/projects/${seg(input.project)}/chat/messages`,body:compact({projectEnv:input.env,threadId:input.thread,from:time2(input.since),to:time2(input.until),limit:input.limit,cursor:input.cursor,slim:!input.full,reason:input.reason})}),"request")},{id:"project.files.read",summary:"Read one source file from a project environment",permission:"ops:project:snapshot",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,path:z27.string().trim().min(1).max(1024).describe("File path relative to the project root"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:files(input.project,"read",input.env),body:{path:input.path,reason:input.reason}}),"request")},{id:"project.files.glob",summary:"List source file paths in a project environment",permission:"ops:project:snapshot",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,pattern:z27.string().min(1).max(300).optional().describe("Glob pattern, e.g. src/**/*.tsx"),limit:opsArgs.limit.max(2e3).default(2e3),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:files(input.project,"glob",input.env),body:compact({pattern:input.pattern,limit:input.limit,reason:input.reason})}),"request")},{id:"project.files.grep",summary:"Search source files in a project environment with a regular expression",permission:"ops:project:snapshot",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,pattern:z27.string().min(1).max(200).describe("Regular expression"),include:z27.string().min(1).max(300).optional().describe("Only paths matching this glob"),caseInsensitive:z27.boolean().default(!1),limit:opsArgs.limit.max(200).default(100).describe("Maximum matches"),reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:files(input.project,"grep",input.env),body:compact({pattern:input.pattern,include:input.include,caseInsensitive:input.caseInsensitive,maxMatches:input.limit,reason:input.reason})}),"request")},{id:"project.files.package-manager",summary:"Report which package manager a project declares and which lockfiles it has",permission:"ops:project:snapshot",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,reason:opsArgs.reason}),request:__name(input=>({method:"POST",path:files(input.project,"package-manager",input.env),body:{reason:input.reason}}),"request")},{id:"project.files.write",summary:"Create or replace one source file in a project environment (commits to its branch)",permission:"ops:project:operate",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project,env:envMain,path:z27.string().trim().min(1).max(1024).describe("File path relative to the project root"),content:z27.string().max(256*1024).describe("The exact desired file contents"),overwrite:z27.boolean().default(!1).describe("Allow replacing an existing file")}),cli:{fileArgs:["content"]}},{id:"project.runtime.bump",summary:"Pin the project's fimo runtime packages to an exact version, install, and restart the dev server",permission:"ops:project:operate",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project,env:envMain,version:z27.string().trim().min(1).max(64).describe("Exact target version, e.g. 0.11.0")})},{id:"project.preview.restart",summary:"Restart the project's preview dev server",permission:"ops:project:operate",effect:"write",risk:"low",humanOnly:!0,input:z27.object({project:opsArgs.project,env:envMain})},{id:"project.publish",summary:"Publish the customer's site on their behalf. Only when a Fimo admin explicitly asks for it; never on an agent's own initiative",permission:"ops:project:publish",effect:"write",risk:"high",humanOnly:!0,consent:!0,input:z27.object({project:opsArgs.project,env:opsArgs.env.optional().describe("Source environment; defaults to the project's publish source")})},{id:"project.domain.refresh",summary:"Refresh a custom domain's provider and SSL state",permission:"ops:project:operate",effect:"write",risk:"low",humanOnly:!0,input:z27.object({project:opsArgs.project,domain:z27.uuid().describe("Project domain id")})},{id:"project.migrations.dry-run",summary:"Plan a source migration for one project without changing it",permission:"ops:project:read",effect:"read",input:z27.object({project:opsArgs.project,env:envMain,migration:z27.string().trim().min(1).max(120).optional().describe("Migration id (default: the current one)"),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/migrations/projects/${seg(input.project)}/dry-run`,body:compact({migrationId:input.migration,projectEnv:input.env,reason:input.reason})}),"request")},{id:"project.sync",summary:"Re-sync a project's database records from its repository",permission:"ops:project:operate",effect:"write",risk:"low",input:z27.object({project:opsArgs.project})},{id:"project.thumbnail.regenerate",summary:"Regenerate a project's dashboard thumbnail",permission:"ops:project:operate",effect:"write",risk:"low",input:z27.object({project:opsArgs.project,type:z27.enum(["dev","published"]).default("dev").describe("dev (the preview) or published (the live site)")})},{id:"project.version.restore",summary:"Restore a project environment to an earlier version (overwrites the current state)",permission:"ops:project:admin",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project,env:envMain,version:z27.string().trim().min(1).max(255).describe("Version id to restore")})},{id:"project.takedown",summary:"Take a project off Fimo domains and block it from publishing",permission:"ops:project:admin",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project})},{id:"project.restore",summary:"Lift a project takedown so it can serve and publish again",permission:"ops:project:admin",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project})},{id:"project.transfer",summary:"Move a project to another organization",permission:"ops:project:admin",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project,toOrg:opsArgs.org.describe("Destination organization id")})},{id:"project.delete",summary:"Delete a project and its resources permanently",permission:"ops:project:admin",effect:"write",risk:"high",humanOnly:!0,input:z27.object({project:opsArgs.project})}]}});import{z as z28}from"zod";var SUPPORT_REPORT_CATEGORIES,SupportReportCategorySchema,SUPPORT_REPORT_STATUSES,SupportReportStatusSchema,SupportReportSourceSchema,SupportReportDeliveryStatusSchema,SUPPORT_REPORT_LINK_KINDS,SupportReportLinkKindSchema,SupportReportEventKindSchema,SupportReportActorKindSchema,SupportReportTagSchema,SupportReportHttpUrlSchema,SupportReportContextInputSchema,CreateSupportReportInputSchema,SupportReportListQuerySchema,UpdateSupportReportInputSchema,CreateSupportReportMessageInputSchema,CreateSupportReportLinkInputSchema,SupportReportActorDTOSchema,SupportReportLinkDTOSchema,SupportReportLinkDTO,SupportReportEventDTOSchema,SupportReportEventDTO,SupportReportSummaryDTOSchema,SupportReportSummaryDTO,SupportReportDetailDTOSchema,SupportReportDetailDTO,SupportReportListDTOSchema,SupportReportListDTO,CreateSupportReportResultDTOSchema,CreateSupportReportResultDTO,init_support_report_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/support-report.dto.js"(){"use strict";init_create_dto();SUPPORT_REPORT_CATEGORIES=[{value:"account_billing",label:"Account & billing"},{value:"project_issues",label:"Project issues"},{value:"ai_prompt_output_quality",label:"AI prompt & output quality"},{value:"roles_access_collaboration",label:"Roles, access & collaboration"},{value:"code_technical_questions",label:"Code & technical questions"},{value:"others",label:"Other"}],SupportReportCategorySchema=z28.enum(SUPPORT_REPORT_CATEGORIES.map(category=>category.value)),SUPPORT_REPORT_STATUSES=["new","in_progress","waiting","resolved","duplicate","irrelevant","ignored"],SupportReportStatusSchema=z28.enum(SUPPORT_REPORT_STATUSES),SupportReportSourceSchema=z28.enum(["app","cli","agent"]),SupportReportDeliveryStatusSchema=z28.enum(["pending","delivered","failed"]),SUPPORT_REPORT_LINK_KINDS=["linear","pylon","project","sentry","grafana","other"],SupportReportLinkKindSchema=z28.enum(SUPPORT_REPORT_LINK_KINDS),SupportReportEventKindSchema=z28.enum(["report_created","report_updated","message","link_added","link_removed","delivery"]),SupportReportActorKindSchema=z28.enum(["user","agent","system"]),SupportReportTagSchema=z28.string().trim().min(1).max(50),SupportReportHttpUrlSchema=z28.url({protocol:/^https?$/}).max(2e3),SupportReportContextInputSchema=z28.object({organization:z28.object({id:z28.string().trim().min(1).max(255),name:z28.string().trim().max(240).optional()}),project:z28.object({id:z28.uuid(),name:z28.string().trim().max(240).optional(),createdAt:z28.coerce.date().optional()}).optional(),environment:z28.string().trim().max(255).optional(),clientVersion:z28.string().trim().max(64).optional()}),CreateSupportReportInputSchema=z28.object({message:z28.string().trim().min(1).max(2e4),category:SupportReportCategorySchema,source:SupportReportSourceSchema.default("cli"),context:SupportReportContextInputSchema}),SupportReportListQuerySchema=z28.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),source:SupportReportSourceSchema.optional(),tag:SupportReportTagSchema.optional(),query:z28.string().trim().max(200).optional(),limit:z28.coerce.number().int().min(1).max(100).default(50),offset:z28.coerce.number().int().min(0).default(0)}),UpdateSupportReportInputSchema=z28.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),tags:z28.array(SupportReportTagSchema).max(20).optional(),duplicateOfReportId:z28.uuid().nullable().optional(),note:z28.string().trim().min(1).max(2e4).optional()}).refine(input=>Object.values(input).some(value=>value!==void 0),{message:"At least one report change is required"}),CreateSupportReportMessageInputSchema=z28.object({message:z28.string().trim().min(1).max(2e4)}),CreateSupportReportLinkInputSchema=z28.object({kind:SupportReportLinkKindSchema,label:z28.string().trim().min(1).max(240),url:SupportReportHttpUrlSchema,externalId:z28.string().trim().max(240).optional()}),SupportReportActorDTOSchema=z28.object({kind:SupportReportActorKindSchema,id:z28.string().nullable(),name:z28.string().nullable()}),SupportReportLinkDTOSchema=z28.object({id:z28.uuid(),kind:SupportReportLinkKindSchema,label:z28.string(),url:SupportReportHttpUrlSchema,externalId:z28.string().nullable(),addedBy:SupportReportActorDTOSchema,createdAt:z28.coerce.date()}),SupportReportLinkDTO=createDTO(SupportReportLinkDTOSchema),SupportReportEventDTOSchema=z28.object({id:z28.uuid(),kind:SupportReportEventKindSchema,body:z28.string().nullable(),metadata:z28.record(z28.string(),z28.unknown()),actor:SupportReportActorDTOSchema,createdAt:z28.coerce.date()}),SupportReportEventDTO=createDTO(SupportReportEventDTOSchema),SupportReportSummaryDTOSchema=z28.object({id:z28.uuid(),status:SupportReportStatusSchema,category:SupportReportCategorySchema,tags:z28.array(z28.string()),source:SupportReportSourceSchema,message:z28.string(),reporter:z28.object({id:z28.string().nullable(),name:z28.string().nullable(),email:z28.string().nullable()}),organization:z28.object({id:z28.string().nullable(),name:z28.string()}),project:z28.object({id:z28.uuid().nullable(),name:z28.string()}).nullable(),assignee:SupportReportActorDTOSchema.nullable(),delivery:z28.object({status:SupportReportDeliveryStatusSchema,pylonIssueId:z28.string().nullable(),pylonIssueUrl:SupportReportHttpUrlSchema.nullable(),error:z28.string().nullable(),deliveredAt:z28.coerce.date().nullable()}).nullable(),duplicateOfReportId:z28.uuid().nullable(),resolvedAt:z28.coerce.date().nullable(),createdAt:z28.coerce.date(),updatedAt:z28.coerce.date()}),SupportReportSummaryDTO=createDTO(SupportReportSummaryDTOSchema),SupportReportDetailDTOSchema=SupportReportSummaryDTOSchema.extend({environment:z28.string().nullable(),clientVersion:z28.string().nullable(),links:z28.array(SupportReportLinkDTOSchema),events:z28.array(SupportReportEventDTOSchema)}),SupportReportDetailDTO=createDTO(SupportReportDetailDTOSchema),SupportReportListDTOSchema=z28.object({reports:z28.array(SupportReportSummaryDTOSchema),total:z28.number().int().nonnegative(),statusCounts:z28.object({new:z28.number().int().nonnegative(),in_progress:z28.number().int().nonnegative(),waiting:z28.number().int().nonnegative(),resolved:z28.number().int().nonnegative(),duplicate:z28.number().int().nonnegative(),irrelevant:z28.number().int().nonnegative(),ignored:z28.number().int().nonnegative()}),limit:z28.number().int().positive(),offset:z28.number().int().nonnegative()}),SupportReportListDTO=createDTO(SupportReportListDTOSchema),CreateSupportReportResultDTOSchema=z28.object({id:z28.uuid(),deliveryStatus:SupportReportDeliveryStatusSchema,message:z28.string()}),CreateSupportReportResultDTO=createDTO(CreateSupportReportResultDTOSchema)}});import{z as z29}from"zod";var report,pylonIssue,supportCommands,init_support=__esm({"../../packages/api-contracts/dist/esm/ops/commands/support.js"(){"use strict";init_support_report_dto();init_ops();init_args();init_types();init_shared();report=z29.uuid().describe("Support report id"),pylonIssue=OpsPylonIssueIdSchema.describe("Pylon issue id"),supportCommands=[{id:"support.reports.list",summary:"List Fimo support reports, newest first",permission:"ops:support:read",effect:"read",input:z29.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),source:SupportReportSourceSchema.optional(),tag:z29.string().trim().min(1).max(50).optional(),search:z29.string().trim().min(1).max(200).optional().describe("Text search over the report"),limit:opsArgs.limit.max(200).default(50),offset:z29.coerce.number().int().min(0).default(0),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"GET",path:"/support/reports",query:compact({reason:input.reason,status:input.status,category:input.category,source:input.source,tag:input.tag,query:input.search,limit:input.limit,offset:input.offset})}),"request")},{id:"support.reports.get",summary:"Read one support report with its messages, links and context",permission:"ops:support:read",effect:"read",input:z29.object({report,reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"GET",path:`/support/reports/${seg(input.report)}`,query:{reason:input.reason}}),"request")},{id:"support.reports.claim",summary:"Claim a support report (mark it in progress), optionally with a note",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({report,note:z29.string().trim().min(1).max(2e4).optional()}),cli:{fileArgs:["note"]}},{id:"support.reports.update",summary:"Change a support report's status, category, tags or duplicate link, optionally with a note",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({report,status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),tags:z29.array(z29.string().trim().min(1).max(50)).max(20).optional(),duplicateOf:z29.uuid().nullable().optional().describe("Report id this one duplicates; null clears it"),note:z29.string().trim().min(1).max(2e4).optional()}),cli:{fileArgs:["note"]}},{id:"support.reports.note",summary:"Add an internal message to a support report",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({report,message:z29.string().trim().min(1).max(2e4)}),cli:{fileArgs:["message"]}},{id:"support.reports.link",summary:"Link a support report to a Linear issue, Pylon ticket, project, Sentry issue or other URL",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({report,kind:SupportReportLinkKindSchema,label:z29.string().trim().min(1).max(240),url:z29.url({protocol:/^https?$/}).max(2e3),externalId:z29.string().trim().min(1).max(255).optional()})},{id:"support.reports.unlink",summary:"Remove a link from a support report",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({report,link:z29.uuid().describe("Link id")})},{id:"support.intake",summary:"Show the support intake receipt: reports received and delivered in a window (max 7 days)",permission:"ops:support:read",effect:"read",input:z29.object({since:opsArgs.since,until:opsArgs.until.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/support/intake/status",query:{since:time2(input.since),until:time2(input.until)??new Date().toISOString(),reason:input.reason}}),"request")},{id:"support.pylon.list",summary:"List Pylon support tickets in a window (max 7 days)",permission:"ops:support:read",effect:"read",input:z29.object({since:opsArgs.since,until:opsArgs.until.optional(),state:z29.enum(["open","closed","all"]).default("open"),limit:opsArgs.limit.max(100).default(50),cursor:opsArgs.cursor.optional(),reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"GET",path:"/support/pylon/issues",query:compact({since:time2(input.since),until:time2(input.until)??new Date().toISOString(),state:input.state,limit:input.limit,cursor:input.cursor,reason:input.reason})}),"request")},{id:"support.pylon.thread",summary:"Read the full message thread of a Pylon ticket",permission:"ops:support:read",effect:"read",input:z29.object({issue:pylonIssue,reason:opsArgs.reason,output:opsArgs.output.optional()}),request:__name(input=>({method:"POST",path:`/support/issues/${seg(input.issue)}/thread`,body:{reason:input.reason}}),"request")},{id:"support.pylon.resolve",summary:"Close a Pylon ticket",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({issue:pylonIssue})},{id:"support.pylon.note",summary:"Add an internal note to a Pylon ticket (not visible to the customer)",permission:"ops:support:write",effect:"write",risk:"low",input:z29.object({issue:pylonIssue,message:z29.string().trim().min(1).max(5e3)}),cli:{fileArgs:["message"]}}]}});import{z as z30}from"zod";var userCommands,init_user=__esm({"../../packages/api-contracts/dist/esm/ops/commands/user.js"(){"use strict";init_args();init_types();init_shared();userCommands=[{id:"user.get",summary:"Show a user: profile, role, organizations, recent sessions and usage",permission:"ops:users:read",effect:"read",input:z30.object({user:opsArgs.user,reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:`/users/${seg(input.user)}`,query:{reason:input.reason}}),"request")},{id:"user.sessions",summary:"List sign-in sessions, for one user or across the platform",permission:"ops:users:read",effect:"read",input:z30.object({user:opsArgs.user.optional(),active:z30.boolean().optional().describe("Only sessions that have not expired or been revoked"),limit:opsArgs.limit.max(200).default(50),cursor:opsArgs.cursor.optional(),reason:opsArgs.reason}),request:__name(input=>({method:"GET",path:"/sessions",query:compact({userId:input.user,active:input.active,limit:input.limit,cursor:input.cursor,reason:input.reason})}),"request")},{id:"user.session.revoke",summary:"Revoke one sign-in session",permission:"ops:users:write",effect:"write",risk:"low",humanOnly:!0,input:z30.object({session:z30.string().trim().min(1).max(255).describe("Session id")})}]}});import{z as z31}from"zod";var evidence,versions,detectionQueries,watchCommands,init_watch=__esm({"../../packages/api-contracts/dist/esm/ops/commands/watch.js"(){"use strict";init_ops();init_args();init_types();init_shared();evidence=z31.array(z31.record(z31.string(),z31.unknown())).max(100),versions=z31.array(z31.string().trim().min(1).max(120)).max(100),detectionQueries=z31.array(z31.string().trim().min(1).max(2e3)).max(50),watchCommands=[{id:"watch.list",summary:"List watched projects and why each is watched",permission:"ops:customers:read",effect:"read",input:z31.object({}),request:__name(()=>({method:"GET",path:"/customers"}),"request")},{id:"watch.add",summary:"Watch a project (or update why it is watched)",permission:"ops:customers:write",effect:"write",risk:"low",input:z31.object({project:opsArgs.project,importance:z31.string().trim().min(1).max(1e3).describe("Why this project is operationally important"),owner:opsArgs.user.optional().describe("Owner user id"),framework:z31.string().trim().max(120).optional(),packageManager:z31.enum(["npm","pnpm","yarn","bun"]).optional(),notes:z31.string().trim().max(5e3).optional()})},{id:"watch.remove",summary:"Stop watching a project",permission:"ops:customers:write",effect:"write",risk:"low",input:z31.object({project:opsArgs.project})},{id:"watch.validations.list",summary:"List validation runs recorded for a watched project",permission:"ops:validations:read",effect:"read",input:z31.object({project:opsArgs.project}),request:__name(input=>({method:"GET",path:`/customers/${seg(input.project)}/validations`}),"request")},{id:"watch.validations.record",summary:"Record the outcome of validating a release, migration or change against a watched project",permission:"ops:validations:write",effect:"write",risk:"low",input:z31.object({project:opsArgs.project,change:z31.string().trim().min(1).max(500).describe("Release, migration or change that was validated"),outcome:OpsValidationOutcomeSchema,summary:z31.string().trim().min(1).max(1e4),evidence:evidence.default([])}),cli:{fileArgs:["evidence"]}},{id:"watch.investigations.list",summary:"List open and recent investigations",permission:"ops:investigations:read",effect:"read",input:z31.object({}),request:__name(()=>({method:"GET",path:"/investigations"}),"request")},{id:"watch.investigations.create",summary:"Open an investigation into a problem on a project",permission:"ops:investigations:write",effect:"write",risk:"low",input:z31.object({project:opsArgs.project,title:z31.string().trim().min(1).max(240),userReport:z31.string().trim().max(1e4).optional().describe("The customer's own words")})},{id:"watch.investigations.update",summary:"Update an investigation's status, hypothesis, outcome or evidence",permission:"ops:investigations:write",effect:"write",risk:"low",input:z31.object({investigation:z31.uuid().describe("Investigation id"),status:OpsInvestigationStatusSchema.optional(),hypothesis:z31.string().trim().max(1e4).optional(),outcome:z31.string().trim().max(1e4).optional(),evidence:evidence.optional()}),cli:{fileArgs:["evidence"]}},{id:"watch.known-issues.list",summary:"List known issues and their detection queries",permission:"ops:known-issues:read",effect:"read",input:z31.object({}),request:__name(()=>({method:"GET",path:"/known-issues"}),"request")},{id:"watch.known-issues.create",summary:"Record a known issue with how to detect it and any workaround",permission:"ops:known-issues:write",effect:"write",risk:"low",input:z31.object({fingerprint:z31.string().trim().min(1).max(240),title:z31.string().trim().min(1).max(240),description:z31.string().trim().min(1).max(1e4),affectedVersions:versions.default([]),detectionQueries:detectionQueries.default([]),fixedVersion:z31.string().trim().min(1).max(64).optional(),workaround:z31.string().trim().min(1).max(1e4).optional(),status:OpsKnownIssueStatusSchema.default("open")}),cli:{fileArgs:["detectionQueries"]}},{id:"watch.known-issues.update",summary:"Update a known issue",permission:"ops:known-issues:write",effect:"write",risk:"low",input:z31.object({knownIssue:z31.uuid().describe("Known issue id"),title:z31.string().trim().min(1).max(240).optional(),description:z31.string().trim().min(1).max(1e4).optional(),affectedVersions:versions.optional(),detectionQueries:detectionQueries.optional(),fixedVersion:z31.string().trim().min(1).max(64).optional(),workaround:z31.string().trim().min(1).max(1e4).optional(),status:OpsKnownIssueStatusSchema.optional()}),cli:{fileArgs:["detectionQueries"]}}]}});var OPS_COMMANDS,BY_ID,OPS_OPERATION_IDS,init_commands=__esm({"../../packages/api-contracts/dist/esm/ops/commands/index.js"(){"use strict";init_agent();init_agent();init_assistant();init_billing();init_core();init_health();init_merge();init_monitor();init_monitor();init_notify();init_observe();init_org();init_platform();init_platform();init_project();init_support();init_user();init_watch();OPS_COMMANDS=[...coreCommands,...projectCommands,...orgCommands,...userCommands,...mergeCommands,...agentCommands,...healthCommands,...billingCommands,...platformCommands,...observeCommands,...supportCommands,...watchCommands,...monitorCommands,...notifyCommands,...assistantCommands],BY_ID=new Map(OPS_COMMANDS.map(command=>[command.id,command])),OPS_OPERATION_IDS=OPS_COMMANDS.filter(command=>command.effect==="write").map(command=>command.id)}});import{z as z32}from"zod";function getChatFormOptionLabels(body){switch(body.type){case"choices":return body.actions.map(action=>action.label);case"cards":return body.items.map(item=>item.title);case"table":return body.rows.map(row2=>row2.cells[0]??"");case"assets":return body.items.map(item=>item.label??item.alt);case"capabilities":return body.items.map(item=>item.label);case"text":return[]}}var BlockSayActionSchema,BlockActionSchema,BlockAppActionSchema,BlockBaseSchema,ChoicesBlockSchema,TableRowTargetSchema,TableBlockSchema,CardsBlockSchema,EntryBlockSchema,AssetsBlockSchema,CalloutBlockSchema,StatBlockSchema,ChartBlockSchema,AgentBlockSchema,ChatDisplayBlockSchema,TextBlockSchema,ChatFormStepIdSchema,CapabilityRequestSchema,CapabilitiesBlockSchema,ChatFormBodySchema,ChatFormStepSchema,CHAT_FORM_INTERNAL_NOTE_MAX,FormBlockSchema,ChatBlockSchema,ChatBlockToolInputSchema,ChatFormAnswerItemSchema,ChatFormAnswerMetadataSchema,QUESTION_FORM_CONTRACT_VERSION,QuestionFormSnapshotSchema,QuestionFormAnswerSnapshotSchema,ChatFormResponseSchema,init_chat_block=__esm({"../../packages/api-contracts/dist/esm/types/chat-block.js"(){"use strict";BlockSayActionSchema=z32.object({kind:z32.literal("say"),label:z32.string().trim().min(1).max(40,"Button labels must be 40 characters or fewer."),description:z32.string().min(1).max(240).optional(),message:z32.string().trim().min(1,"Every say button needs the sentence the user is saying by clicking.").max(2e3),style:z32.enum(["primary","default","ghost"]).optional()}),BlockActionSchema=BlockSayActionSchema,BlockAppActionSchema=z32.discriminatedUnion("command",[z32.object({kind:z32.literal("app"),command:z32.literal("publish")}).strict(),z32.object({kind:z32.literal("app"),command:z32.literal("connect"),integrationKey:z32.string().trim().min(1).max(80)}).strict()]),BlockBaseSchema=z32.object({fallback:z32.string().trim().min(1,"Every block needs a fallback line for clients that cannot render it.").max(500),title:z32.string().min(1).max(80).optional()}),ChoicesBlockSchema=BlockBaseSchema.extend({type:z32.literal("choices"),text:z32.string().max(500).optional(),actions:z32.array(BlockActionSchema).min(2,"A choices block needs 2 to 4 buttons.").max(4,"A choices block needs 2 to 4 buttons.")}),TableRowTargetSchema=z32.discriminatedUnion("kind",[z32.object({kind:z32.literal("entry"),collection:z32.string().min(1).max(80),entryId:z32.string().min(1).max(120)}),z32.object({kind:z32.literal("asset"),assetId:z32.string().min(1).max(120)}),z32.object({kind:z32.literal("url"),url:z32.url({protocol:/^https$/}).max(2e3)}),z32.object({kind:z32.literal("routine"),routineId:z32.string().min(1).max(120)})]),TableBlockSchema=BlockBaseSchema.extend({type:z32.literal("table"),columns:z32.array(z32.object({label:z32.string().min(1).max(24)})).min(2).max(4),rows:z32.array(z32.object({cells:z32.array(z32.string().max(80)).min(2).max(4),target:TableRowTargetSchema.optional()})).min(1).max(8)}).superRefine((table,ctx)=>{table.rows.forEach((row2,index)=>{row2.cells.length!==table.columns.length&&ctx.addIssue({code:"custom",path:["rows",index,"cells"],message:`Every table row needs exactly ${table.columns.length} cells, one for each column.`})})}),CardsBlockSchema=BlockBaseSchema.extend({type:z32.literal("cards"),layout:z32.enum(["rail","stack"]).optional(),items:z32.array(z32.object({title:z32.string().min(1).max(60),subtitle:z32.string().min(1).max(120).optional(),imageUrl:z32.url({protocol:/^https$/}).max(2e3).optional(),action:BlockSayActionSchema.optional()})).min(2).max(6)}),EntryBlockSchema=BlockBaseSchema.extend({type:z32.literal("entry"),label:z32.string().min(1).max(80),collection:z32.string().min(1).max(80),entryId:z32.string().min(1).max(120),path:z32.string().min(1).max(120).optional()}),AssetsBlockSchema=BlockBaseSchema.extend({type:z32.literal("assets"),items:z32.array(z32.object({url:z32.url({protocol:/^https$/}).max(2e3),alt:z32.string().min(1).max(120),label:z32.string().min(1).max(60).optional()})).min(1).max(6)}),CalloutBlockSchema=BlockBaseSchema.extend({type:z32.literal("callout"),title:z32.string().min(1).max(80),text:z32.string().min(1).max(240),action:BlockAppActionSchema}).strict(),StatBlockSchema=BlockBaseSchema.extend({type:z32.literal("stat"),items:z32.array(z32.object({label:z32.string().min(1).max(24),value:z32.string().min(1).max(16),delta:z32.string().min(1).max(12).optional(),tone:z32.enum(["up","down","flat"]).optional()})).min(1).max(4)}),ChartBlockSchema=BlockBaseSchema.extend({type:z32.literal("chart"),unit:z32.string().min(1).max(12).optional(),points:z32.array(z32.object({label:z32.string().min(1).max(12),value:z32.number().finite().min(0).max(1e9)})).min(2).max(12)}),AgentBlockSchema=BlockBaseSchema.extend({type:z32.literal("agent"),agentId:z32.string().uuid(),view:z32.enum(["compact","full"]).optional()}),ChatDisplayBlockSchema=z32.discriminatedUnion("type",[ChoicesBlockSchema,TableBlockSchema,CardsBlockSchema,EntryBlockSchema,AssetsBlockSchema,CalloutBlockSchema,StatBlockSchema,ChartBlockSchema]),TextBlockSchema=BlockBaseSchema.extend({type:z32.literal("text"),placeholder:z32.string().min(1).max(120).optional(),multiline:z32.boolean().optional()}).strict(),ChatFormStepIdSchema=z32.string().regex(/^[a-z0-9][a-z0-9_-]{0,39}$/,"Step ids are lowercase letters, digits, hyphen, or underscore (max 40)."),CapabilityRequestSchema=z32.object({id:ChatFormStepIdSchema,token:z32.string().regex(/^[a-z][a-z0-9_]*:[a-z][a-z0-9_]*(?::[a-z][a-z0-9_]*)?$/,"Capability tokens are verb:noun[:qualifier]."),label:z32.string().trim().min(1).max(60),reason:z32.string().trim().min(1).max(240)}).strict(),CapabilitiesBlockSchema=BlockBaseSchema.extend({type:z32.literal("capabilities"),items:z32.array(CapabilityRequestSchema).min(1).max(6)}).strict().superRefine((block,ctx)=>{let duplicate=__name(values=>new Set(values).size!==values.length,"duplicate");duplicate(block.items.map(item=>item.id))&&ctx.addIssue({code:"custom",path:["items"],message:"Every capability request needs its own id."}),duplicate(block.items.map(item=>item.token))&&ctx.addIssue({code:"custom",path:["items"],message:"Ask for each capability token once."}),duplicate(block.items.map(item=>item.label))&&ctx.addIssue({code:"custom",path:["items"],message:"Every capability request needs a distinct label."})}),ChatFormBodySchema=z32.discriminatedUnion("type",[ChoicesBlockSchema,TableBlockSchema,CardsBlockSchema,AssetsBlockSchema,TextBlockSchema,CapabilitiesBlockSchema]);__name(getChatFormOptionLabels,"getChatFormOptionLabels");ChatFormStepSchema=z32.object({id:ChatFormStepIdSchema.optional(),question:z32.string().min(1).max(500),header:z32.string().min(1).max(25),body:ChatFormBodySchema,multiSelect:z32.boolean().optional(),recommended:z32.string().min(1).max(80).optional()}).superRefine((step,ctx)=>{let labels2=getChatFormOptionLabels(step.body);labels2.some(label=>!label.trim())&&ctx.addIssue({code:"custom",path:["body"],message:"Every form option needs a visible label."}),new Set(labels2).size!==labels2.length&&ctx.addIssue({code:"custom",path:["body"],message:"Every form option needs a unique label."}),step.recommended&&!labels2.includes(step.recommended)&&ctx.addIssue({code:"custom",path:["recommended"],message:"The recommended option must match a visible option label."}),step.body.type==="capabilities"&&step.multiSelect===!1&&ctx.addIssue({code:"custom",path:["multiSelect"],message:"A capabilities step is always multi-select: selected is approved, unselected is denied."})}).transform(step=>({...step,multiSelect:step.multiSelect??step.body.type==="capabilities"})),CHAT_FORM_INTERNAL_NOTE_MAX=1e3,FormBlockSchema=BlockBaseSchema.extend({type:z32.literal("form"),steps:z32.array(ChatFormStepSchema).min(1).max(4),internalNote:z32.string().trim().min(1).max(CHAT_FORM_INTERNAL_NOTE_MAX).optional()}),ChatBlockSchema=z32.discriminatedUnion("type",[ChoicesBlockSchema,TableBlockSchema,CardsBlockSchema,EntryBlockSchema,AssetsBlockSchema,CalloutBlockSchema,StatBlockSchema,ChartBlockSchema,AgentBlockSchema,FormBlockSchema]),ChatBlockToolInputSchema=z32.object({block:ChatBlockSchema}),ChatFormAnswerItemSchema=z32.object({stepId:ChatFormStepIdSchema.optional(),header:z32.string().min(1).max(25),question:z32.string().min(1).max(500),answer:z32.string().min(1),selectedLabels:z32.array(z32.string().min(1).max(120)).max(8),freeText:z32.string(),skipped:z32.boolean()}),ChatFormAnswerMetadataSchema=z32.object({toolCallId:z32.string().max(255).optional(),shortTitle:z32.string().max(80).optional(),questions:z32.array(ChatFormAnswerItemSchema).max(4)}),QUESTION_FORM_CONTRACT_VERSION=1,QuestionFormSnapshotSchema=z32.object({version:z32.literal(QUESTION_FORM_CONTRACT_VERSION),block:FormBlockSchema}).strict(),QuestionFormAnswerSnapshotSchema=z32.object({version:z32.literal(QUESTION_FORM_CONTRACT_VERSION),answer:ChatFormAnswerMetadataSchema}).strict(),ChatFormResponseSchema=ChatFormAnswerMetadataSchema.extend({toolCallId:z32.string().min(1).max(255),partial:z32.boolean().optional()})}});import{z as z33}from"zod";var AdminTargetSchema,AdminToneSchema,AdminStatusSchema,AdminLinkSchema,AdminActionSchema,BlockBaseSchema2,AdminRecordBlockSchema,AdminCardsBlockSchema,AdminTableBlockSchema,AdminTimelineBlockSchema,AdminStatsBlockSchema,AdminExcerptBlockSchema,AdminMediaBlockSchema,AdminActionsBlockSchema,AdminHandoffBlockSchema,AdminChatBlockSchema,AdminChatBlockToolInputSchema,init_admin_chat_block=__esm({"../../packages/api-contracts/dist/esm/types/admin-chat-block.js"(){"use strict";init_chat_block();AdminTargetSchema=z33.union([z33.string().regex(/^\/(?!\/)[^\s]*$/,"Admin paths start with a single slash, e.g. /projects/<id>.").max(500),z33.url({protocol:/^https$/}).max(2e3)]),AdminToneSchema=z33.enum(["ok","warn","bad","neutral"]),AdminStatusSchema=z33.object({label:z33.string().trim().min(1).max(24),tone:AdminToneSchema}),AdminLinkSchema=z33.object({label:z33.string().trim().min(1).max(24),target:AdminTargetSchema}),AdminActionSchema=z33.discriminatedUnion("kind",[BlockSayActionSchema,z33.object({kind:z33.literal("open"),label:z33.string().trim().min(1).max(32),target:AdminTargetSchema}).strict(),z33.object({kind:z33.literal("op"),label:z33.string().trim().min(1).max(32),operation:z33.string().min(1).max(80),input:z33.record(z33.string(),z33.unknown())}).strict(),z33.object({kind:z33.literal("impersonate"),label:z33.string().trim().min(1).max(32),userId:z33.string().min(1).max(120)}).strict(),z33.object({kind:z33.literal("studio"),label:z33.string().trim().min(1).max(32),projectId:z33.string().min(1).max(120)}).strict()]),BlockBaseSchema2=z33.object({fallback:z33.string().trim().min(1,"Every block needs a fallback line for clients that cannot render it.").max(500),title:z33.string().min(1).max(80).optional()}),AdminRecordBlockSchema=BlockBaseSchema2.extend({type:z33.literal("record"),kind:z33.string().trim().min(1).max(24),name:z33.string().trim().min(1).max(80),id:z33.string().min(1).max(120).optional(),status:AdminStatusSchema.optional(),fields:z33.array(z33.object({label:z33.string().trim().min(1).max(24),value:z33.string().min(1).max(80)})).max(4,"A record shows at most 4 fields.").optional(),links:z33.array(AdminLinkSchema).max(2,"A record shows at most 2 links.").optional(),actions:z33.array(AdminActionSchema).max(3).optional()}),AdminCardsBlockSchema=BlockBaseSchema2.extend({type:z33.literal("cards"),items:z33.array(z33.object({name:z33.string().trim().min(1).max(60),subtitle:z33.string().min(1).max(80).optional(),status:AdminStatusSchema.optional(),imageUrl:z33.url({protocol:/^https$/}).max(2e3).optional(),target:AdminTargetSchema.optional()})).min(2).max(6)}),AdminTableBlockSchema=BlockBaseSchema2.extend({type:z33.literal("table"),columns:z33.array(z33.object({label:z33.string().min(1).max(24)})).min(2).max(3,"A table shows at most 3 columns."),rows:z33.array(z33.object({cells:z33.array(z33.string().max(80)).min(2).max(3),tone:AdminToneSchema.optional(),target:AdminTargetSchema.optional()})).min(1).max(8)}).superRefine((table,ctx)=>{table.rows.forEach((row2,index)=>{row2.cells.length!==table.columns.length&&ctx.addIssue({code:"custom",path:["rows",index,"cells"],message:`Every table row needs exactly ${table.columns.length} cells, one for each column.`})})}),AdminTimelineBlockSchema=BlockBaseSchema2.extend({type:z33.literal("timeline"),events:z33.array(z33.object({at:z33.string().trim().min(1).max(16),label:z33.string().trim().min(1).max(80),detail:z33.string().min(1).max(80).optional(),tone:AdminToneSchema,target:AdminTargetSchema.optional()})).min(2).max(6)}),AdminStatsBlockSchema=BlockBaseSchema2.extend({type:z33.literal("stats"),items:z33.array(z33.object({label:z33.string().min(1).max(24),value:z33.string().min(1).max(16),delta:z33.string().min(1).max(12).optional()})).min(1).max(4)}),AdminExcerptBlockSchema=BlockBaseSchema2.extend({type:z33.literal("excerpt"),source:z33.string().trim().min(1).max(60),link:AdminTargetSchema.optional(),content:z33.discriminatedUnion("kind",[z33.object({kind:z33.literal("lines"),lines:z33.array(z33.object({text:z33.string().max(200),highlight:z33.boolean().optional()})).min(1).max(5,"An excerpt shows at most 5 lines.")}),z33.object({kind:z33.literal("message"),author:z33.string().trim().min(1).max(60),at:z33.string().max(24).optional(),text:z33.string().trim().min(1).max(600)})])}),AdminMediaBlockSchema=BlockBaseSchema2.extend({type:z33.literal("media"),items:z33.array(z33.object({url:z33.url({protocol:/^https$/}).max(2e3),alt:z33.string().min(1).max(120),label:z33.string().min(1).max(60).optional()})).min(1).max(6)}),AdminActionsBlockSchema=BlockBaseSchema2.extend({type:z33.literal("actions"),actions:z33.array(AdminActionSchema).min(1).max(3)}),AdminHandoffBlockSchema=BlockBaseSchema2.extend({type:z33.literal("handoff"),prompt:z33.string().trim().min(1).max(4e3)}),AdminChatBlockSchema=z33.discriminatedUnion("type",[AdminRecordBlockSchema,AdminCardsBlockSchema,AdminTableBlockSchema,AdminTimelineBlockSchema,AdminStatsBlockSchema,ChartBlockSchema,AdminExcerptBlockSchema,AdminMediaBlockSchema,ChoicesBlockSchema,AdminActionsBlockSchema,FormBlockSchema,AdminHandoffBlockSchema]),AdminChatBlockToolInputSchema=z33.object({block:AdminChatBlockSchema})}});import{z as z34}from"zod";var CHAT_PORTRAIT_SHAPES,CHAT_PORTRAIT_EYES,CHAT_PORTRAIT_MOUTHS,CHAT_PORTRAIT_COLORS,ChatPortraitSchema,init_chat_portrait=__esm({"../../packages/api-contracts/dist/esm/types/chat-portrait.js"(){"use strict";CHAT_PORTRAIT_SHAPES=["pebble","bean","cloud","drop","potato","mochi","bun","pillow"],CHAT_PORTRAIT_EYES=["dot","caret","ring","shut","small","squint"],CHAT_PORTRAIT_MOUTHS=["smile","grin","o","w"],CHAT_PORTRAIT_COLORS=["red","orange","amber","lime","emerald","teal","sky","blue","indigo","violet","fuchsia","pink"],ChatPortraitSchema=z34.object({shape:z34.enum(CHAT_PORTRAIT_SHAPES),eyes:z34.enum(CHAT_PORTRAIT_EYES),mouth:z34.enum(CHAT_PORTRAIT_MOUTHS),color:z34.enum(CHAT_PORTRAIT_COLORS)})}});import{z as z35}from"zod";function isIanaTimezone(value){try{return new Intl.DateTimeFormat("en-US",{timeZone:value}),!0}catch{return!1}}var ChatRoutineCronSchema,ChatRoutineTimezoneSchema,ChatRoutineScheduleSchema,ChatRoutineNameSchema,ChatRoutineInstructionsSchema,ChatRoutineDescriptionSchema,ChatRoutineModelSchema,ChatRoutineWaitMinutesSchema,ChatRoutineEventTriggerDTOSchema,ChatRoutineEventTriggerInputSchema,ChatRoutineTriggersDTOSchema,ChatRoutineRunOutcomeSchema,ChatRoutineReportSchema,ChatRoutineDTOSchema,ChatRoutineListDTOSchema,AgentHoursUsageDTOSchema,ChatRoutineCreateSchema,ChatRoutineUpdateSchema,ChatRoutineRefusalReasonSchema,ChatRoutineRefusalDTOSchema,ChatRoutineRunStatusSchema,ChatRoutineRunTriggerSchema,ChatRoutineRunStartedBySchema,ChatRoutineRunDTOSchema,ChatRoutineRunListDTOSchema,ChatRoutineRunRequestSchema,ChatRoutineRunOutcomeDTOSchema,init_chat_routine_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/chat-routine.dto.js"(){"use strict";ChatRoutineCronSchema=z35.string().trim().max(64).regex(/^\S+(?: \S+){4}$/,"A schedule is a five-field cron expression");__name(isIanaTimezone,"isIanaTimezone");ChatRoutineTimezoneSchema=z35.string().trim().min(1).max(64).refine(isIanaTimezone,"Unknown timezone"),ChatRoutineScheduleSchema=z35.object({cron:ChatRoutineCronSchema,timezone:ChatRoutineTimezoneSchema}),ChatRoutineNameSchema=z35.string().trim().min(1).max(120),ChatRoutineInstructionsSchema=z35.string().trim().min(1).max(2e4),ChatRoutineDescriptionSchema=z35.string().trim().min(1).max(500),ChatRoutineModelSchema=z35.string().trim().min(1).max(120),ChatRoutineWaitMinutesSchema=z35.number().int().min(0).max(120),ChatRoutineEventTriggerDTOSchema=z35.object({text:z35.string(),title:z35.string(),explanation:z35.string(),watches:z35.array(z35.object({url:z35.string(),health:z35.enum(["ok","needs_repair","blocked","unstable"]),lastCheckedAt:z35.string().nullable()})).optional()}),ChatRoutineEventTriggerInputSchema=z35.object({text:z35.string().trim().min(1).max(500)}),ChatRoutineTriggersDTOSchema=z35.object({manual:z35.literal(!0),schedule:ChatRoutineScheduleSchema.nullable(),event:ChatRoutineEventTriggerDTOSchema.nullable()}),ChatRoutineRunOutcomeSchema=z35.enum(["quiet","reported","decision","incomplete","failed","running"]),ChatRoutineReportSchema=z35.object({message:z35.string().trim().min(1).max(2e4),decision:z35.boolean().optional(),incomplete:z35.boolean().optional()}).refine(report2=>!(report2.decision===!0&&report2.incomplete===!0),{message:"A run that could not check asks for no decision: set incomplete or decision, not both."}),ChatRoutineDTOSchema=z35.object({id:z35.string().uuid(),threadId:z35.string().uuid(),runThreadId:z35.string().uuid(),name:z35.string(),description:z35.string().nullable(),instructions:z35.string(),template:z35.object({key:z35.string()}).nullable(),triggers:ChatRoutineTriggersDTOSchema,model:z35.string(),modelIsDefault:z35.boolean(),waitMinutes:ChatRoutineWaitMinutesSchema,paused:z35.boolean(),nextRunAt:z35.string().nullable(),lastRunAt:z35.string().nullable(),lastOutcome:ChatRoutineRunOutcomeSchema.nullable(),outOfAgentHoursUntil:z35.string().nullable(),createdAt:z35.string(),updatedAt:z35.string()}),ChatRoutineListDTOSchema=z35.object({routines:z35.array(ChatRoutineDTOSchema)}),AgentHoursUsageDTOSchema=z35.object({usedMs:z35.number().int().min(0),includedMs:z35.number().int().min(0),periodStart:z35.string(),periodEnd:z35.string(),stopsAtIncluded:z35.boolean(),canStart:z35.boolean(),canPayOverage:z35.boolean(),overageRateMicrosPerHour:z35.number().int().nullable(),billedMs:z35.number().int().min(0),billedMicros:z35.number().int().min(0)}),ChatRoutineCreateSchema=z35.object({name:ChatRoutineNameSchema,description:ChatRoutineDescriptionSchema.nullable().optional(),instructions:ChatRoutineInstructionsSchema,schedule:ChatRoutineScheduleSchema.nullable().optional(),event:ChatRoutineEventTriggerInputSchema.nullable().optional(),model:ChatRoutineModelSchema.nullable().optional(),waitMinutes:ChatRoutineWaitMinutesSchema.optional()}),ChatRoutineUpdateSchema=z35.object({name:ChatRoutineNameSchema,description:ChatRoutineDescriptionSchema.nullable(),instructions:ChatRoutineInstructionsSchema,schedule:ChatRoutineScheduleSchema.nullable(),event:ChatRoutineEventTriggerInputSchema.nullable(),model:ChatRoutineModelSchema.nullable(),waitMinutes:ChatRoutineWaitMinutesSchema,paused:z35.boolean()}).partial().refine(update=>Object.values(update).some(value=>value!==void 0),"Change at least one field"),ChatRoutineRefusalReasonSchema=z35.enum(["routine_cadence_too_frequent","routine_schedule_invalid","routine_owner_not_agent","routine_trigger_unsupported","routine_model_unknown","routine_needs_pro","routine_is_default"]),ChatRoutineRefusalDTOSchema=z35.object({message:z35.string(),reason:ChatRoutineRefusalReasonSchema}),ChatRoutineRunStatusSchema=z35.enum(["queued","running","finished","failed","cancelled"]),ChatRoutineRunTriggerSchema=z35.enum(["schedule","hand","event"]),ChatRoutineRunStartedBySchema=z35.object({kind:z35.enum(["person","agent"]),name:z35.string().nullable()}),ChatRoutineRunDTOSchema=z35.object({messageId:z35.string().uuid(),invocationId:z35.string().uuid().nullable(),startedAt:z35.string(),trigger:ChatRoutineRunTriggerSchema,startedBy:ChatRoutineRunStartedBySchema.nullable(),status:ChatRoutineRunStatusSchema,outcome:ChatRoutineRunOutcomeSchema.nullable(),summary:z35.string().nullable(),events:z35.number().int().min(1),durationMs:z35.number().int().min(0).nullable(),credits:z35.number().int().min(0).nullable()}),ChatRoutineRunListDTOSchema=z35.object({runs:z35.array(ChatRoutineRunDTOSchema)}),ChatRoutineRunRequestSchema=z35.object({message:z35.string().trim().min(1).max(2e4).optional()}),ChatRoutineRunOutcomeDTOSchema=z35.object({kind:z35.enum(["published","queued","replay","streaming","busy","refused"]),messageId:z35.string().uuid().nullable()})}});import{z as z36}from"zod";var PROJECT_CHAT_MANUAL_MODEL_IDS,ProjectChatManualModelIdSchema,ProjectDTOSchema,ProjectDTO,UpdateProjectSettingsRequestSchema,ProjectWithPlanDTOSchema,ProjectWithPlanDTO,ProjectSummaryDTOSchema,ProjectSummaryDTO,ProjectUserDTOSchema,ProjectUserDTO,ProjectFileDTOSchema,ProjectFileDTO,ProjectChatMessageRole,ProjectMessageBaseSchema,MessageUserMetadataSchema,ProjectMessagePublicDTOSchema,ProjectMessagePublicDTO,ProjectMessageDTOSchema,ProjectVersionDTOSchema,ProjectVersionDTO,ProjectHistoryUsageDTOSchema,ProjectVersionPageDTOSchema,ProjectVersionPageDTO,ProjectHistorySummaryDTOSchema,ProjectHistorySummaryDTO,ProjectDocumentContentDTOSchema,ProjectDocumentContentDTO,ProjectListResponseSchema,ProjectVersionResponseSchema,ProjectVersionPageResponseSchema,ProjectHistorySummaryResponseSchema,VersionMutationResponseSchema,PublishUpgradeRequiredSchema,ProjectLatestPublicationAttemptSchema,ProjectPublicationStateDTOSchema,ProjectPublicationStateDTO,PublishProjectRequestSchema,PublicationMutationDTOSchema,PublicationMutationDTO,ProjectPublicationStateResponseSchema,PublicationMutationResponseSchema,ProjectResponseSchema,ProjectWithPlanResponseSchema,init_project_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project.dto.js"(){"use strict";init_chat_block();init_common();init_env();init_create_dto();init_response();PROJECT_CHAT_MANUAL_MODEL_IDS=["anthropic/claude-opus-5.5","anthropic/claude-opus-5","anthropic/claude-sonnet-5.5","anthropic/claude-sonnet-5","anthropic/claude-fable-5","anthropic/claude-haiku-5.5","openai/gpt-5.6-luna","openai/gpt-5.6-terra","openai/gpt-5.6-sol","openai/gpt-6-astra","openai/gpt-6.1-sol","openai/gpt-6-sol","openai/gpt-6-luna","xai/grok-4.6","google/gemini-3.1-pro-preview","google/gemini-3.8-flash","google/gemini-3.7-flash","google/gemini-3.6-flash","google/gemini-3.5-flash-lite","zai/glm-5.2","zai/glm-5.3-flash","deepseek/deepseek-v4-pro","minimax/minimax-m3","moonshotai/kimi-k3"],ProjectChatManualModelIdSchema=z36.enum(PROJECT_CHAT_MANUAL_MODEL_IDS),ProjectDTOSchema=BaseEntitySchema.extend({name:z36.string(),displayName:z36.string().nullable(),subdomain:z36.string().nullable().optional(),subdomainUpdatedAt:z36.date().nullable().optional(),organizationId:z36.string().nullable(),createdBy:z36.string().nullable(),defaultBranch:BranchSchema.default(DEFAULT_BRANCH),productionSourceBranch:BranchSchema.default(DEFAULT_BRANCH),enabledChatModels:z36.array(ProjectChatManualModelIdSchema).nullable().default(null),status:ProjectStatusSchema,creationStatus:z36.string(),thumbnailUrl:z36.string().nullable(),publishedThumbnailUrl:z36.string().nullable(),category:z36.string().nullable(),snapshotUrl:z36.string().startsWith("/").optional(),appUrl:z36.string().nullable(),lastPublishedAt:z36.coerce.date(),databaseQuotaIncidentId:z36.uuid().nullable().optional(),databaseQuotaLastObservedAt:z36.coerce.date().nullable().optional()}),ProjectDTO=createDTO(ProjectDTOSchema),UpdateProjectSettingsRequestSchema=z36.object({name:z36.string().optional(),enabledChatModels:z36.array(ProjectChatManualModelIdSchema).optional(),productionSourceBranch:BranchSchema.optional(),syncConfig:z36.boolean().optional()}).strict(),ProjectWithPlanDTOSchema=ProjectDTOSchema.extend({planTier:z36.string().nullable()}),ProjectWithPlanDTO=createDTO(ProjectWithPlanDTOSchema),ProjectSummaryDTOSchema=z36.object({id:z36.uuid(),name:z36.string(),displayName:z36.string().nullable(),thumbnailUrl:z36.string().nullable(),category:z36.string().nullable()}),ProjectSummaryDTO=createDTO(ProjectSummaryDTOSchema),ProjectUserDTOSchema=z36.object({id:z36.string(),name:z36.string(),avatar:z36.string().nullable(),color:z36.object({bg:z36.string(),text:z36.string()})}),ProjectUserDTO=createDTO(ProjectUserDTOSchema),ProjectFileDTOSchema=z36.object({path:z36.string(),content:z36.string()}),ProjectFileDTO=createDTO(ProjectFileDTOSchema),ProjectChatMessageRole=z36.enum(["user","assistant","system"]),ProjectMessageBaseSchema=z36.object({id:z36.string(),messageId:z36.string(),versionId:z36.string().nullable(),role:ProjectChatMessageRole,parts:z36.array(z36.any()),createdAt:z36.coerce.date()}),MessageUserMetadataSchema=z36.object({id:z36.string(),name:z36.string().nullable().optional(),image:z36.string().nullable().optional()}).nullable().optional(),ProjectMessagePublicDTOSchema=ProjectMessageBaseSchema.extend({credits:z36.number(),metadata:z36.object({user:MessageUserMetadataSchema,changeManifest:z36.array(z36.any()).optional(),questionAnswer:ChatFormAnswerMetadataSchema.optional()}).nullable().optional()}),ProjectMessagePublicDTO=createDTO(ProjectMessagePublicDTOSchema),ProjectMessageDTOSchema=ProjectMessagePublicDTOSchema,ProjectVersionDTOSchema=z36.object({versionId:z36.uuid(),commitHash:z36.string(),name:z36.string(),description:z36.string().nullable(),kind:z36.enum(["manual","agent","restore-safety","deploy","merge","content","legacy"]),createdAt:CommonSchemas.timestamp,expiresAt:CommonSchemas.timestamp}),ProjectVersionDTO=createDTO(ProjectVersionDTOSchema),ProjectHistoryUsageDTOSchema=z36.object({versionCount:z36.number().int().nonnegative(),snapshotBytes:z36.number().int().nonnegative()}),ProjectVersionPageDTOSchema=createCursorPageDataSchema(ProjectVersionDTOSchema),ProjectVersionPageDTO=createDTO(ProjectVersionPageDTOSchema),ProjectHistorySummaryDTOSchema=z36.object({usage:ProjectHistoryUsageDTOSchema,retentionDays:z36.number().int().positive()}),ProjectHistorySummaryDTO=createDTO(ProjectHistorySummaryDTOSchema),ProjectDocumentContentDTOSchema=z36.object({content:z36.string()}),ProjectDocumentContentDTO=createDTO(ProjectDocumentContentDTOSchema),ProjectListResponseSchema=createResponseSchema(z36.array(ProjectDTOSchema)),ProjectVersionResponseSchema=createResponseSchema(ProjectVersionDTOSchema),ProjectVersionPageResponseSchema=createCursorPaginatedResponseSchema(ProjectVersionDTOSchema),ProjectHistorySummaryResponseSchema=createResponseSchema(ProjectHistorySummaryDTOSchema),VersionMutationResponseSchema=createResponseSchema(z36.object({success:z36.boolean(),message:z36.string().optional(),warning:z36.string().optional(),durationMs:z36.number().int().nonnegative().optional()})),PublishUpgradeRequiredSchema=z36.object({code:z36.literal("PUBLISH_UPGRADE_REQUIRED"),message:z36.string(),currentVersion:z36.number().int().positive(),targetVersion:z36.literal(4)}),ProjectLatestPublicationAttemptSchema=z36.object({publicationId:z36.uuid(),status:z36.enum(["queued","building","published","failed","canceled"]),failureCode:z36.string().nullable(),sourceBranch:z36.string(),createdAt:CommonSchemas.timestamp,finishedAt:CommonSchemas.timestamp.nullable()}),ProjectPublicationStateDTOSchema=z36.object({isPublished:z36.boolean(),publishedAt:CommonSchemas.timestamp.nullable(),publishedVersion:z36.string().nullable(),upgradeRequired:PublishUpgradeRequiredSchema.nullish(),hasActiveRelease:z36.boolean().optional(),latestAttempt:ProjectLatestPublicationAttemptSchema.nullish()}),ProjectPublicationStateDTO=createDTO(ProjectPublicationStateDTOSchema),PublishProjectRequestSchema=z36.object({label:z36.string().trim().min(1).max(120).optional(),notes:z36.string().max(2e4).optional()}).strict(),PublicationMutationDTOSchema=z36.object({success:z36.boolean(),message:z36.string().optional(),publishedAt:CommonSchemas.timestamp.optional(),firstPublish:z36.boolean(),publicationId:z36.string().optional(),url:z36.string().nullable().optional()}),PublicationMutationDTO=createDTO(PublicationMutationDTOSchema),ProjectPublicationStateResponseSchema=createResponseSchema(ProjectPublicationStateDTOSchema),PublicationMutationResponseSchema=createResponseSchema(PublicationMutationDTOSchema),ProjectResponseSchema=createResponseSchema(ProjectDTOSchema),ProjectWithPlanResponseSchema=createResponseSchema(ProjectWithPlanDTOSchema)}});import{z as z37}from"zod";var ChatMessageListDTOSchema,ChatMessagesPageDTOSchema,ChatLiveTurnDTOSchema,ChatLiveTurnStateDTOSchema,ChatLiveTurnStateDTO,ChatMessageAuthorDTOSchema,ChatThreadMessageDTOSchema,ChatQueuedMessageDTOSchema,ChatAttentionDTOSchema,ChatThreadMessagesPageDTOSchema,ChatReplayOutcomeDTOSchema,ChatQueuedOutcomeDTOSchema,ChatBusyOutcomeDTOSchema,ChatRefusedOutcomeDTOSchema,ChatNonStreamingOutcomeDTOSchema,ProjectChatKindSchema,ProjectChatCreatableKindSchema,ProjectChatRoutinesDTOSchema,ProjectChatDescriptionSchema,ProjectChatInstructionsSchema,ProjectChatDTOSchema,ProjectChatListDTOSchema,ProjectChatCreatedDTOSchema,ProjectChatTitleSchema,ProjectChatCreateSchema,ProjectChatUpdateSchema,ChatTemplateRoutineScheduleDTOSchema,ChatTemplateRoutineDTOSchema,ChatTemplateDTOSchema,ChatTemplateListDTOSchema,ProjectChatStateSchema,ChatMessageListResponseSchema,ChatMessagesPageResponseSchema,init_chat_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/chat.dto.js"(){"use strict";init_chat_portrait();init_create_dto();init_response();init_chat_routine_dto();init_organization_features_dto();init_project_dto();ChatMessageListDTOSchema=z37.array(ProjectMessageDTOSchema),ChatMessagesPageDTOSchema=z37.object({items:z37.array(ProjectMessagePublicDTOSchema),nextCursor:z37.string().nullable()}),ChatLiveTurnDTOSchema=z37.object({invocationId:z37.string(),step:z37.enum(["preparing","working","compacting","merging"]),startedAt:z37.string(),continuesInvocationId:z37.string().nullable().optional()}),ChatLiveTurnStateDTOSchema=z37.object({threadId:z37.string().nullable(),liveTurn:ChatLiveTurnDTOSchema.nullable()}),ChatLiveTurnStateDTO=createDTO(ChatLiveTurnStateDTOSchema),ChatMessageAuthorDTOSchema=z37.object({kind:z37.enum(["person","agent","routine","system"]),id:z37.string().nullable()}),ChatThreadMessageDTOSchema=z37.object({id:z37.string(),role:z37.enum(["user","assistant"]),parts:z37.array(z37.unknown()),metadata:z37.record(z37.string(),z37.unknown()).nullable(),versionId:z37.string().nullable().optional(),createdAt:z37.date().transform(value=>value.toISOString()),providerMessageId:z37.string().nullable().optional(),author:ChatMessageAuthorDTOSchema,invocationId:z37.string().nullable().optional(),invocationStatus:z37.string().nullable().optional(),invocationTerminalReason:z37.string().nullable().optional()}),ChatQueuedMessageDTOSchema=z37.object({id:z37.string(),parts:z37.array(z37.unknown()),metadata:z37.record(z37.string(),z37.unknown()).nullable(),providerMessageId:z37.string().nullable().optional(),author:ChatMessageAuthorDTOSchema,failed:z37.boolean(),queuedAt:z37.date().transform(value=>value.toISOString())}),ChatAttentionDTOSchema=z37.object({type:z37.literal("merge_conflict"),merge:z37.object({mergeId:z37.string().uuid(),projectId:z37.string(),fromBranch:z37.string(),toBranch:z37.string()}),publishAfterMerge:z37.boolean()}),ChatThreadMessagesPageDTOSchema=z37.object({threadId:z37.string().nullable(),title:z37.string().nullable(),messages:z37.array(ChatThreadMessageDTOSchema),nextCursor:z37.string().nullable(),liveTurn:ChatLiveTurnDTOSchema.nullable().optional(),attention:ChatAttentionDTOSchema.nullable().optional(),queue:z37.array(ChatQueuedMessageDTOSchema).optional(),queuePaused:z37.boolean().optional(),queueWaitUntil:z37.string().nullable().optional()}),ChatReplayOutcomeDTOSchema=z37.object({kind:z37.literal("replay"),threadId:z37.string(),userMessageId:z37.string()}),ChatQueuedOutcomeDTOSchema=z37.object({kind:z37.literal("queued"),threadId:z37.string(),userMessageId:z37.string(),blockingRootId:z37.string().optional()}),ChatBusyOutcomeDTOSchema=z37.object({kind:z37.literal("busy"),threadId:z37.string(),userMessageId:z37.string(),blockingRootId:z37.string().optional()}),ChatRefusedOutcomeDTOSchema=z37.object({kind:z37.literal("refused"),threadId:z37.string(),userMessageId:z37.string(),refusedInvocationId:z37.string(),terminalReason:z37.string()}),ChatNonStreamingOutcomeDTOSchema=z37.discriminatedUnion("kind",[ChatReplayOutcomeDTOSchema,ChatQueuedOutcomeDTOSchema,ChatBusyOutcomeDTOSchema,ChatRefusedOutcomeDTOSchema]),ProjectChatKindSchema=z37.enum(["chat","agent","routine"]),ProjectChatCreatableKindSchema=z37.enum(["chat","agent"]),ProjectChatRoutinesDTOSchema=z37.object({quietRuns:z37.number().int().nonnegative(),since:z37.string().nullable(),lastOutcome:ChatRoutineRunOutcomeSchema.nullable(),lastRunAt:z37.string().nullable(),nextRunAt:z37.string().nullable(),wakesOnChanges:z37.boolean()}),ProjectChatDescriptionSchema=z37.string().trim().max(2e3),ProjectChatInstructionsSchema=z37.string().trim().max(8e3),ProjectChatDTOSchema=z37.object({id:z37.string().uuid(),kind:ProjectChatKindSchema,title:z37.string().nullable(),description:z37.string().nullable(),instructions:z37.string().nullable(),liveAt:z37.string().nullable(),template:z37.string().nullable(),parentThreadId:z37.string().uuid().nullable(),routines:ProjectChatRoutinesDTOSchema.nullable(),createdAt:z37.string(),lastMessageAt:z37.string().nullable(),preview:z37.string().nullable(),running:z37.boolean(),awaitingAnswer:z37.boolean(),unread:z37.boolean(),pinned:z37.boolean(),archived:z37.boolean(),muted:z37.boolean(),portrait:ChatPortraitSchema.nullable()}),ProjectChatListDTOSchema=z37.object({chats:z37.array(ProjectChatDTOSchema)}),ProjectChatCreatedDTOSchema=z37.object({id:z37.string().uuid()}),ProjectChatTitleSchema=z37.string().trim().min(1).max(120),ProjectChatCreateSchema=z37.object({id:z37.string().uuid(),portrait:ChatPortraitSchema,kind:ProjectChatCreatableKindSchema,title:ProjectChatTitleSchema,description:ProjectChatDescriptionSchema,template:z37.string().min(1).max(64),timezone:ChatRoutineTimezoneSchema,setup:z37.literal(!0),locale:z37.string().trim().min(2).max(16)}).partial().refine(create=>create.template===void 0||create.kind===void 0&&create.title===void 0&&create.description===void 0,"A template brings its own kind, title and description").refine(create=>create.setup===void 0||create.kind==="agent","Only an agent is set up in its chat"),ProjectChatUpdateSchema=z37.object({title:ProjectChatTitleSchema,description:ProjectChatDescriptionSchema,instructions:ProjectChatInstructionsSchema,portrait:ChatPortraitSchema}).partial().refine(update=>update.title!==void 0||update.description!==void 0||update.instructions!==void 0||update.portrait!==void 0,"Set a title, a description, instructions or a portrait"),ChatTemplateRoutineScheduleDTOSchema=z37.object({cron:z37.string()}),ChatTemplateRoutineDTOSchema=z37.object({name:z37.string(),description:z37.string(),instructions:z37.string(),schedule:ChatTemplateRoutineScheduleDTOSchema.nullable(),plans:z37.array(AgentPlanSchema)}),ChatTemplateDTOSchema=z37.object({id:z37.string(),name:z37.string(),summary:z37.string(),description:z37.string(),greeting:z37.string(),starters:z37.array(z37.string()),portrait:ChatPortraitSchema,plans:z37.array(AgentPlanSchema),routines:z37.array(ChatTemplateRoutineDTOSchema)}),ChatTemplateListDTOSchema=z37.object({templates:z37.array(ChatTemplateDTOSchema)}),ProjectChatStateSchema=z37.object({read:z37.boolean(),pinned:z37.boolean(),archived:z37.boolean(),muted:z37.boolean()}).partial().refine(state=>Object.keys(state).length>0,"Set at least one of read, pinned, archived or muted"),ChatMessageListResponseSchema=createResponseSchema(ChatMessageListDTOSchema),ChatMessagesPageResponseSchema=createResponseSchema(ChatMessagesPageDTOSchema)}});import{z as z38}from"zod";var ADMIN_ASSISTANT_BASE_PATH,ADMIN_ASSISTANT_PATHS,ADMIN_ASSISTANT_MESSAGE_MAX_CHARS,ADMIN_ASSISTANT_FORM_NOTE_MAX_CHARS,ADMIN_ASSISTANT_REQUEST_MAX_BYTES,AdminAssistantFormResponseSchema,AdminAssistantOutgoingMessageSchema,AdminAssistantSendRequestSchema,AdminAssistantSendOutcomeSchema,AdminAssistantStreamHeadSchema,AdminAssistantThreadSummarySchema,AdminAssistantThreadListQuerySchema,AdminAssistantThreadListResponseSchema,AdminAssistantThreadResponseSchema,AdminAssistantLiveTurnResponseSchema,AdminAssistantAbortResponseSchema,AdminAssistantThreadUpdateSchema,AdminAssistantThreadDeleteResponseSchema,init_admin_assistant=__esm({"../../packages/api-contracts/dist/esm/types/admin-assistant.js"(){"use strict";init_chat_dto();init_chat_block();ADMIN_ASSISTANT_BASE_PATH="/api/ops/assistant",ADMIN_ASSISTANT_PATHS={chat:`${ADMIN_ASSISTANT_BASE_PATH}/chat`,threads:`${ADMIN_ASSISTANT_BASE_PATH}/threads`,thread:__name(threadId=>`${ADMIN_ASSISTANT_BASE_PATH}/threads/${encodeURIComponent(threadId)}`,"thread"),live:__name(threadId=>`${ADMIN_ASSISTANT_BASE_PATH}/threads/${encodeURIComponent(threadId)}/live`,"live"),stream:__name(threadId=>`${ADMIN_ASSISTANT_BASE_PATH}/threads/${encodeURIComponent(threadId)}/stream`,"stream"),abort:__name(threadId=>`${ADMIN_ASSISTANT_BASE_PATH}/threads/${encodeURIComponent(threadId)}/abort`,"abort")},ADMIN_ASSISTANT_MESSAGE_MAX_CHARS=2e4,ADMIN_ASSISTANT_FORM_NOTE_MAX_CHARS=4e3,ADMIN_ASSISTANT_REQUEST_MAX_BYTES=256*1024,AdminAssistantFormResponseSchema=ChatFormResponseSchema.extend({questions:z38.array(ChatFormAnswerItemSchema.extend({answer:z38.string().min(1).max(ADMIN_ASSISTANT_FORM_NOTE_MAX_CHARS+1200),freeText:z38.string().max(ADMIN_ASSISTANT_FORM_NOTE_MAX_CHARS)})).max(4)}),AdminAssistantOutgoingMessageSchema=z38.object({id:z38.string().min(1).max(255).regex(/^(app|e2e):/,"Message ids from a client start with app:"),text:z38.string().max(ADMIN_ASSISTANT_MESSAGE_MAX_CHARS)}).strict(),AdminAssistantSendRequestSchema=z38.object({threadId:z38.string().uuid().optional(),message:AdminAssistantOutgoingMessageSchema,formResponse:AdminAssistantFormResponseSchema.optional()}).strict().superRefine((body,context)=>{body.message.text.trim().length===0&&!body.formResponse&&context.addIssue({code:"custom",path:["message","text"],message:"A message cannot be empty."})}),AdminAssistantSendOutcomeSchema=z38.discriminatedUnion("kind",[z38.object({kind:z38.literal("replay"),threadId:z38.string(),userMessageId:z38.string()}),z38.object({kind:z38.literal("queued"),threadId:z38.string(),userMessageId:z38.string(),blockingRootId:z38.string().optional()}),z38.object({kind:z38.literal("busy"),threadId:z38.string(),userMessageId:z38.string(),blockingRootId:z38.string().optional()}),z38.object({kind:z38.literal("refused"),threadId:z38.string(),userMessageId:z38.string(),refusedInvocationId:z38.string(),terminalReason:z38.string()})]),AdminAssistantStreamHeadSchema=z38.object({kind:z38.literal("turn"),threadId:z38.string(),userMessageId:z38.string(),invocationId:z38.string()}),AdminAssistantThreadSummarySchema=z38.object({id:z38.string().uuid(),title:z38.string().nullable(),lastMessageAt:z38.string().nullable(),createdAt:z38.string()}),AdminAssistantThreadListQuerySchema=z38.object({q:z38.string().trim().max(200).optional(),cursor:z38.string().max(500).optional(),limit:z38.coerce.number().int().min(1).max(100).optional()}),AdminAssistantThreadListResponseSchema=z38.object({threads:z38.array(AdminAssistantThreadSummarySchema),nextCursor:z38.string().nullable()}),AdminAssistantThreadResponseSchema=z38.object({thread:AdminAssistantThreadSummarySchema.extend({createdBy:z38.string().nullable()}),messages:z38.array(ChatThreadMessageDTOSchema),liveTurn:ChatLiveTurnDTOSchema.nullable()}),AdminAssistantLiveTurnResponseSchema=z38.object({threadId:z38.string().nullable(),liveTurn:ChatLiveTurnDTOSchema.nullable()}),AdminAssistantAbortResponseSchema=z38.object({aborted:z38.boolean()}),AdminAssistantThreadUpdateSchema=z38.object({title:ProjectChatTitleSchema}).strict(),AdminAssistantThreadDeleteResponseSchema=z38.object({deleted:z38.literal(!0)})}});import{z as z39}from"zod";function normalizeStoredBlock(block){if(typeof block!="object"||block===null||Array.isArray(block))return block;let{type,...rest}=block;if(typeof type!="string")return block;let target=LEGACY_BLOCK_TYPES[type];return target?target==="viz"?{...rest,type:target,kind:"bar"}:{...rest,type:target}:block}function normalizeStoredBlocks(blocks){return Array.isArray(blocks)?blocks.map(normalizeStoredBlock):blocks}function normalizeStoredDocument(document){if(typeof document!="object"||document===null||Array.isArray(document))return document;let source=document;return{...source,brief:normalizeStoredBlocks(source.brief),details:normalizeStoredBlocks(source.details)}}function derivedBlockBody(block){let lines=[];switch(block.type){case"text":lines.push(block.text);break;case"metric":for(let item of block.items)lines.push([`${item.value}${item.unit??""}`,item.label].join(" \u2014 ")),item.note&&lines.push(item.note);break;case"viz":lines.push(block.points.map(point=>`${point.label}: ${formatReportValue(point.value,block.unit)}`).join(", ")),block.caption&&lines.push(block.caption);break;case"list":for(let item of block.items)lines.push([item.label,item.heading].filter(Boolean).join(" \u2014 ")),item.body&&lines.push(item.body),item.evidence&&lines.push(item.evidence);break;case"table":lines.push(block.columns.map(column=>column.label).join(" | "));for(let row2 of block.rows)lines.push(row2.cells.map(cell=>cell.text).join(" | "));block.caption&&lines.push(block.caption);break;case"media":lines.push(block.alt),block.caption&&lines.push(block.caption);break;case"links":for(let item of block.items)lines.push([`${item.label}: ${item.url}`,item.description].filter(Boolean).join(" \u2014 "));break;case"code":lines.push(block.code),block.caption&&lines.push(block.caption);break}return lines.join(`
|
|
5
5
|
`)}function reportSectionContentLength(blocks){return blocks.reduce((total,block)=>total+(block.title?.length??0)+derivedBlockBody(block).length+(block.fallback?.length??0),0)}function formatReportNumber(value){return Number.isInteger(value)?String(value):String(Number(value.toFixed(2)))}function formatReportValue(value,unit){let formatted=formatReportNumber(value);return unit?`${formatted}${new RegExp("^\\p{L}","u").test(unit)?" ":""}${unit}`:formatted}var REPORT_TITLE_MAX_CHARS,REPORT_BRIEF_MAX_BLOCKS,REPORT_DETAILS_MAX_BLOCKS,REPORT_BRIEF_MAX_CHARS,REPORT_DETAILS_MAX_CHARS,REPORT_TEXT_MAX_CHARS,REPORT_CODE_MAX_CHARS,REPORT_TONES,ReportToneSchema,blockCommon,ReportTextBlockSchema,ReportMetricBlockSchema,REPORT_VIZ_KINDS,ReportVizKindSchema,ReportVizBlockSchema,ReportListBlockSchema,ReportTableBlockSchema,ReportMediaBlockSchema,ReportLinksBlockSchema,ReportCodeBlockSchema,ReportBlockSchema,ReportDocumentSchema,ReportBriefSchema,LEGACY_BLOCK_TYPES,StoredReportBriefSchema,StoredReportDocumentSchema,init_agent_report=__esm({"../../packages/api-contracts/dist/esm/types/agent-report.js"(){"use strict";REPORT_TITLE_MAX_CHARS=120,REPORT_BRIEF_MAX_BLOCKS=6,REPORT_DETAILS_MAX_BLOCKS=40,REPORT_BRIEF_MAX_CHARS=4e3,REPORT_DETAILS_MAX_CHARS=48e3,REPORT_TEXT_MAX_CHARS=4e3,REPORT_CODE_MAX_CHARS=8e3,REPORT_TONES=["critical","warning","info","neutral"],ReportToneSchema=z39.enum(REPORT_TONES),blockCommon={title:z39.string().trim().min(1).max(120).optional(),fallback:z39.string().trim().min(1).max(600).optional()},ReportTextBlockSchema=z39.object({type:z39.literal("text"),...blockCommon,text:z39.string().trim().min(1).max(REPORT_TEXT_MAX_CHARS)}).strict().describe("Short connective context or a conclusion with no better structure. Never a multi-item dump."),ReportMetricBlockSchema=z39.object({type:z39.literal("metric"),...blockCommon,items:z39.array(z39.object({value:z39.string().trim().min(1).max(24),unit:z39.string().trim().min(1).max(12).optional(),label:z39.string().trim().min(1).max(160),note:z39.string().trim().min(1).max(300).optional()}).strict()).min(1).max(3),spark:z39.array(z39.number().finite()).min(2).max(24).optional()}).strict().describe("1-3 numbers that materially communicate state, scale, or success. Do not promote incidental counts."),REPORT_VIZ_KINDS=["bar","line","area","composition"],ReportVizKindSchema=z39.enum(REPORT_VIZ_KINDS),ReportVizBlockSchema=z39.object({type:z39.literal("viz"),...blockCommon,kind:ReportVizKindSchema.describe("bar: compare named quantities. line/area: change across an ordered sequence. composition: parts of one whole."),unit:z39.string().trim().min(1).max(12).optional(),points:z39.array(z39.object({label:z39.string().trim().min(1).max(24),value:z39.number().finite(),highlight:z39.boolean().optional()}).strict()).min(2).max(24),caption:z39.string().trim().min(1).max(600).optional()}).strict().describe("Only when comparison, relationship, distribution, persistence, or change over time is itself the point. Never decorative.").superRefine((block,ctx)=>{block.points.filter(point=>point.highlight).length>1&&ctx.addIssue({code:"custom",path:["points"],message:"Highlight at most one point."}),block.kind==="composition"&&block.points.forEach((point,index)=>{point.value<0&&ctx.addIssue({code:"custom",path:["points",index,"value"],message:"A composition holds parts of one whole, so every value must be zero or more."})})}),ReportListBlockSchema=z39.object({type:z39.literal("list"),...blockCommon,items:z39.array(z39.object({tone:ReportToneSchema.optional(),label:z39.string().trim().min(1).max(24).optional(),heading:z39.string().trim().min(1).max(160).describe("The human-visible result, action, or consequence, readable on its own."),body:z39.string().trim().min(1).max(1200).optional().describe("One short explanation of why it matters."),evidence:z39.string().trim().min(1).max(600).optional().describe("Exact supporting proof: paths, keys, literal values, compact measurements.")}).strict()).min(1).max(12)}).strict().describe("Ranked items sharing one hierarchy: findings, recommendations, steps, sources, or a single callout. heading = human consequence, body = why it matters, evidence = the technical proof. Do not repeat the report title."),ReportTableBlockSchema=z39.object({type:z39.literal("table"),...blockCommon,columns:z39.array(z39.object({label:z39.string().trim().min(1).max(32)}).strict()).min(1).max(6),rows:z39.array(z39.object({cells:z39.array(z39.object({text:z39.string().trim().max(160),tone:ReportToneSchema.optional()}).strict()).min(1).max(6)}).strict()).min(1).max(40),caption:z39.string().trim().min(1).max(600).optional()}).strict().describe("Repeated entities sharing the same attributes. Use instead of parallel prose.").superRefine((block,ctx)=>{block.rows.forEach((row2,index)=>{row2.cells.length!==block.columns.length&&ctx.addIssue({code:"custom",path:["rows",index,"cells"],message:`Every row needs exactly ${block.columns.length} cells, one per column.`})})}),ReportMediaBlockSchema=z39.object({type:z39.literal("media"),...blockCommon,assetId:z39.uuid(),alt:z39.string().trim().min(1).max(300),caption:z39.string().trim().min(1).max(600).optional()}).strict().describe("Only visual or recorded evidence, or a media deliverable: a before/after, a layout defect, a generated asset. Never decoration."),ReportLinksBlockSchema=z39.object({type:z39.literal("links"),...blockCommon,items:z39.array(z39.object({label:z39.string().trim().min(1).max(120),url:z39.url({protocol:/^https$/}).max(2e3),description:z39.string().trim().min(1).max(300).optional()}).strict()).min(1).max(8)}).strict().describe("A destination, evidence source, or next action worth opening."),ReportCodeBlockSchema=z39.object({type:z39.literal("code"),...blockCommon,language:z39.string().regex(/^[a-z0-9+#-]{1,20}$/,"A language is a short lowercase token, e.g. ts, json, bash.").optional(),code:z39.string().min(1).max(REPORT_CODE_MAX_CHARS),caption:z39.string().trim().min(1).max(600).optional()}).strict().describe("An exact snippet that is decisive evidence. Never a log dump."),ReportBlockSchema=z39.discriminatedUnion("type",[ReportTextBlockSchema,ReportMetricBlockSchema,ReportListBlockSchema,ReportTableBlockSchema,ReportVizBlockSchema,ReportMediaBlockSchema,ReportLinksBlockSchema,ReportCodeBlockSchema]),ReportDocumentSchema=z39.object({title:z39.string().trim().min(1).max(REPORT_TITLE_MAX_CHARS),brief:z39.array(ReportBlockSchema).min(1).max(REPORT_BRIEF_MAX_BLOCKS),details:z39.array(ReportBlockSchema).max(REPORT_DETAILS_MAX_BLOCKS)}).strict().superRefine((document,ctx)=>{let brief=reportSectionContentLength(document.brief);brief>REPORT_BRIEF_MAX_CHARS&&ctx.addIssue({code:"custom",path:["brief"],message:`The brief holds ${brief} characters of content; keep it under ${REPORT_BRIEF_MAX_CHARS}. Move evidence into details.`});let details=reportSectionContentLength(document.details);details>REPORT_DETAILS_MAX_CHARS&&ctx.addIssue({code:"custom",path:["details"],message:`The details hold ${details} characters of content; the limit is ${REPORT_DETAILS_MAX_CHARS}.`})}),ReportBriefSchema=z39.array(ReportBlockSchema).min(1).max(REPORT_BRIEF_MAX_BLOCKS),LEGACY_BLOCK_TYPES={findings:"list",series:"viz",image:"media"};__name(normalizeStoredBlock,"normalizeStoredBlock");__name(normalizeStoredBlocks,"normalizeStoredBlocks");__name(normalizeStoredDocument,"normalizeStoredDocument");StoredReportBriefSchema=z39.preprocess(normalizeStoredBlocks,ReportBriefSchema),StoredReportDocumentSchema=z39.preprocess(normalizeStoredDocument,ReportDocumentSchema);__name(derivedBlockBody,"derivedBlockBody");__name(reportSectionContentLength,"reportSectionContentLength");__name(formatReportNumber,"formatReportNumber");__name(formatReportValue,"formatReportValue")}});import{z as z40}from"zod";var FIMO_CONFIG_PATH,LEGACY_FIMO_CONFIG_PATHS,ALL_FIMO_CONFIG_PATHS,FimoFrameworkSchema,FimoRuntimeCommandsSchema,FimoRuntimeConfigSchema,FimoHostingConditionSchema,conditionFields,FimoHostingRewriteSchema,FimoHostingRedirectSchema,FimoHostingHeaderSchema,FimoHostingConfigSchema,FimoAppConfigSchema,init_fimo_config=__esm({"../../packages/api-contracts/dist/esm/types/fimo-config.js"(){"use strict";FIMO_CONFIG_PATH=".fimo/config.json",LEGACY_FIMO_CONFIG_PATHS=["fimo-config.json","fimo.config.json"],ALL_FIMO_CONFIG_PATHS=[FIMO_CONFIG_PATH,...LEGACY_FIMO_CONFIG_PATHS],FimoFrameworkSchema=z40.enum(["astro","nextjs","nuxtjs","react-router","remix","sveltekit","vite","vue"]),FimoRuntimeCommandsSchema=z40.object({dev:z40.string().trim().min(1).optional(),build:z40.string().trim().min(1).optional(),install:z40.string().trim().min(1).optional()}).strict(),FimoRuntimeConfigSchema=z40.object({framework:FimoFrameworkSchema.optional(),outputDirectory:z40.string().trim().min(1).optional(),commands:FimoRuntimeCommandsSchema.optional()}).strict(),FimoHostingConditionSchema=z40.object({type:z40.enum(["header","cookie","query","host"]),key:z40.string().min(1).optional(),value:z40.string().min(1).optional()}).strict().superRefine((condition,context)=>{if(condition.type==="host"){condition.key!==void 0&&context.addIssue({code:"custom",path:["key"],message:"A host condition takes no key."}),condition.value===void 0&&context.addIssue({code:"custom",path:["value"],message:"A host condition needs a value."});return}condition.key===void 0&&context.addIssue({code:"custom",path:["key"],message:`A ${condition.type} condition needs the key it matches on.`})}),conditionFields={has:z40.array(FimoHostingConditionSchema).min(1).optional(),missing:z40.array(FimoHostingConditionSchema).min(1).optional()},FimoHostingRewriteSchema=z40.object({source:z40.string().min(1),destination:z40.string().min(1),...conditionFields}),FimoHostingRedirectSchema=z40.object({source:z40.string().min(1),destination:z40.string().min(1),permanent:z40.boolean().optional(),statusCode:z40.union([z40.literal(301),z40.literal(302),z40.literal(307),z40.literal(308)]).optional(),...conditionFields}),FimoHostingHeaderSchema=z40.object({source:z40.string().min(1),headers:z40.array(z40.object({key:z40.string().min(1),value:z40.string()})).min(1),...conditionFields}),FimoHostingConfigSchema=z40.object({rewrites:z40.array(FimoHostingRewriteSchema).optional(),redirects:z40.array(FimoHostingRedirectSchema).optional(),headers:z40.array(FimoHostingHeaderSchema).optional(),cleanUrls:z40.boolean().optional(),trailingSlash:z40.boolean().optional()}).strict(),FimoAppConfigSchema=z40.object({runtime:FimoRuntimeConfigSchema.optional(),hosting:FimoHostingConfigSchema.optional()}).passthrough().superRefine((config,context)=>{Object.hasOwn(config,"framework")&&context.addIssue({code:"custom",path:["framework"],message:"Use runtime.framework instead of the top-level framework field."})})}});function isEntryParamBinding(binding){return binding!==void 0&&(binding.type??"entry")==="entry"}function pageRouteParamNames(path50){return[...path50.matchAll(/:([^/*]+)\*?/g)].map(match=>match[1])}function pageContentParamNames(path50,params){return pageRouteParamNames(path50).filter(param=>!LOCALE_PARAM_NAME.test(param)&¶ms?.[param]?.type!=="external")}function parsePageParamExpression(expression){let match=PARAM_EXPRESSION.exec(expression);return match?{param:match[1],field:match[2]}:null}function fieldValue(entry,fieldPath){let value=entry;for(let segment of fieldPath.split(".")){if(!value||typeof value!="object"||Array.isArray(value))return;value=value[segment]}return value}function queryValue(value){if(Array.isArray(value))return value.map(queryValue);if(value&&typeof value=="object"){let record=value;return typeof record.id=="string"?record.id:Object.fromEntries(Object.entries(record).map(([key,item])=>[key,queryValue(item)]))}return value===void 0?null:value}function resolveValue(value,params){if(typeof value=="string"&&value.startsWith("$params.")){let parsed=parsePageParamExpression(value);if(!parsed)return{ok:!1,error:{code:"PAGE_PARAM_FIELD_EMPTY",expression:value,param:"",field:""}};let{param,field}=parsed,entry=params[param];if(!entry)return{ok:!1,error:{code:"PAGE_PARAM_NOT_SELECTED",expression:value,param,field}};let resolved=fieldValue(entry,field);return resolved==null||resolved===""?{ok:!1,error:{code:"PAGE_PARAM_FIELD_EMPTY",expression:value,param,field}}:{ok:!0,value:queryValue(resolved)}}if(Array.isArray(value)){let resolved=[];for(let item of value){let result=resolveValue(item,params);if(!result.ok)return result;resolved.push(result.value)}return{ok:!0,value:resolved}}if(value&&typeof value=="object"){let resolved={};for(let[key,item]of Object.entries(value)){let result=resolveValue(item,params);if(!result.ok)return result;resolved[key]=result.value}return{ok:!0,value:resolved}}return{ok:!0,value}}function resolvePageSourceQuery(query={},params){let resolved=resolveValue(query,params);return resolved.ok?{ok:!0,query:resolved.value}:resolved}function pageSourceParamExpressions(value){return typeof value=="string"?value.startsWith("$params.")?[value]:[]:Array.isArray(value)?value.flatMap(pageSourceParamExpressions):value&&typeof value=="object"?Object.values(value).flatMap(pageSourceParamExpressions):[]}var LOCALE_PARAM_NAME,PARAM_EXPRESSION,init_page_sources=__esm({"../../packages/api-contracts/dist/esm/types/page-sources.js"(){"use strict";__name(isEntryParamBinding,"isEntryParamBinding");LOCALE_PARAM_NAME=/^(locale|lang|language)$/i;__name(pageRouteParamNames,"pageRouteParamNames");__name(pageContentParamNames,"pageContentParamNames");PARAM_EXPRESSION=/^\$params\.([A-Za-z_][\w-]*)\.([A-Za-z_][\w.-]*)$/;__name(parsePageParamExpression,"parsePageParamExpression");__name(fieldValue,"fieldValue");__name(queryValue,"queryValue");__name(resolveValue,"resolveValue");__name(resolvePageSourceQuery,"resolvePageSourceQuery");__name(pageSourceParamExpressions,"pageSourceParamExpressions")}});var init_project_files=__esm({"../../packages/api-contracts/dist/esm/types/project-files.js"(){"use strict"}});import{z as z41}from"zod";var ProjectBranchStatusSchema,ProjectBranchKindSchema,ProjectBranchDTOSchema,ProjectBranchDTO,ResolvedBranchEnvironmentDTOSchema,ProjectBranchListItemDTOSchema,ProjectBranchListItemDTO,CreateProjectBranchRequestInputSchema,CreateProjectBranchRequestSchema,SyncProjectBranchRequestSchema,ProjectBranchResponseSchema,ProjectBranchesListResponseSchema,BranchSurfaceDiffSchema,BranchDiffResultSchema,BranchDiffResultDTO,init_project_env_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-env.dto.js"(){"use strict";init_common();init_env();init_environment();init_create_dto();init_response();ProjectBranchStatusSchema=z41.enum(["provisioning","active","deleted"]),ProjectBranchKindSchema=z41.enum(["user","agent-session"]),ProjectBranchDTOSchema=BaseEntitySchema.extend({projectId:z41.uuid(),branch:BranchSchema.optional(),status:ProjectBranchStatusSchema,kind:ProjectBranchKindSchema,parentBranch:BranchSchema.nullable().optional(),createdBy:z41.string().nullable(),deletedAt:z41.coerce.date().nullable(),env:BranchSchema,parentEnv:BranchSchema.nullable()}),ProjectBranchDTO=createDTO(ProjectBranchDTOSchema),ResolvedBranchEnvironmentDTOSchema=z41.object({id:z41.union([z41.literal(PREVIEW_ENVIRONMENT_KEY),z41.uuid()]),name:z41.string()}),ProjectBranchListItemDTOSchema=ProjectBranchDTOSchema.extend({resolvedEnvironment:ResolvedBranchEnvironmentDTOSchema.nullable(),workSession:z41.object({sessionId:z41.uuid(),name:z41.string()}).optional()}),ProjectBranchListItemDTO=createDTO(ProjectBranchListItemDTOSchema),CreateProjectBranchRequestInputSchema=z41.object({branch:BranchSchema.optional(),parentBranch:BranchSchema.optional(),env:BranchSchema.optional(),parentEnv:BranchSchema.optional()}),CreateProjectBranchRequestSchema=CreateProjectBranchRequestInputSchema.superRefine((body,ctx)=>{body.branch===void 0&&body.env===void 0&&ctx.addIssue({code:"custom",path:["branch"],message:"branch is required"}),body.branch!==void 0&&body.env!==void 0&&body.branch!==body.env&&ctx.addIssue({code:"custom",path:["branch"],message:`branch '${body.branch}' and the deprecated env '${body.env}' disagree \u2014 send one, or send both with the same value`}),body.parentBranch!==void 0&&body.parentEnv!==void 0&&body.parentBranch!==body.parentEnv&&ctx.addIssue({code:"custom",path:["parentBranch"],message:`parentBranch '${body.parentBranch}' and the deprecated parentEnv '${body.parentEnv}' disagree \u2014 send one, or send both with the same value`})}).transform(body=>({branch:body.branch??body.env,parentBranch:body.parentBranch??body.parentEnv})),SyncProjectBranchRequestSchema=z41.object({from:BranchSchema.optional()}),ProjectBranchResponseSchema=createResponseSchema(ProjectBranchDTOSchema),ProjectBranchesListResponseSchema=createResponseSchema(z41.array(ProjectBranchListItemDTOSchema)),BranchSurfaceDiffSchema=z41.object({surface:z41.enum(["code","schemas","content","translations","assets","forms"]),status:z41.enum(["unchanged","changed","conflicting","missing-on-target"]),changedCount:z41.number().int().nonnegative(),conflictCount:z41.number().int().nonnegative()}),BranchDiffResultSchema=z41.object({fromBranch:BranchSchema.optional(),toBranch:BranchSchema.optional(),generatedAt:z41.coerce.date(),surfaces:z41.array(BranchSurfaceDiffSchema),fromEnv:BranchSchema,toEnv:BranchSchema}),BranchDiffResultDTO=createDTO(BranchDiffResultSchema)}});import{z as z42}from"zod";var ProjectEnvironmentBaseSchema,ProductionEnvironmentDTOSchema,PreviewEnvironmentDTOSchema,CustomProjectEnvironmentDTOSchema,ProjectEnvironmentDTOSchema,ProjectEnvironmentDTO,CreateProjectEnvironmentRequestSchema,ProjectEnvironmentsListResponseSchema,ProjectEnvironmentResponseSchema,DeleteProjectEnvironmentResultSchema,DeleteProjectEnvironmentResponseSchema,init_project_environment_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-environment.dto.js"(){"use strict";init_env();init_environment();init_create_dto();init_response();ProjectEnvironmentBaseSchema=z42.object({projectId:z42.uuid(),name:z42.string()}),ProductionEnvironmentDTOSchema=ProjectEnvironmentBaseSchema.extend({id:z42.literal(PRODUCTION_ENVIRONMENT_KEY),kind:z42.literal("production"),sourceBranch:BranchSchema,isPublished:z42.boolean(),url:z42.string().nullable()}),PreviewEnvironmentDTOSchema=ProjectEnvironmentBaseSchema.extend({id:z42.literal(PREVIEW_ENVIRONMENT_KEY),kind:z42.literal("preview"),matchedBranchCount:z42.number().int().nonnegative()}),CustomProjectEnvironmentDTOSchema=CustomEnvironmentSchema.extend({kind:z42.literal("custom"),matchedBranchCount:z42.number().int().nonnegative()}),ProjectEnvironmentDTOSchema=z42.discriminatedUnion("kind",[ProductionEnvironmentDTOSchema,PreviewEnvironmentDTOSchema,CustomProjectEnvironmentDTOSchema]),ProjectEnvironmentDTO=createDTO(ProjectEnvironmentDTOSchema),CreateProjectEnvironmentRequestSchema=CustomEnvironmentSchema.pick({name:!0,branchPatterns:!0,description:!0}).extend({description:z42.string().trim().max(255).nullable().optional().default(null)}),ProjectEnvironmentsListResponseSchema=createResponseSchema(z42.array(ProjectEnvironmentDTOSchema)),ProjectEnvironmentResponseSchema=createResponseSchema(ProjectEnvironmentDTOSchema),DeleteProjectEnvironmentResultSchema=z42.object({deletedId:z42.uuid()}),DeleteProjectEnvironmentResponseSchema=createResponseSchema(DeleteProjectEnvironmentResultSchema)}});import{z as z43}from"zod";var ProjectSecretsListQuerySchema,ProjectSecretWriteRequestSchema,CreateProjectSecretRequestSchema,DeleteProjectSecretQuerySchema,ProjectSecretMetadataDTOSchema,ProjectSecretMetadataDTO,ProjectVariableBaseSchema,ProjectVariableDTOSchema,ProjectVariableDTO,ProjectSecretsListResponseSchema,ProjectSecretResponseSchema,init_project_secret_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-secret.dto.js"(){"use strict";init_environment();init_create_dto();init_response();ProjectSecretsListQuerySchema=z43.object({kind:z43.enum(["variable","secret"]).optional(),environment:EnvironmentKeySchema}),ProjectSecretWriteRequestSchema=z43.object({kind:z43.enum(["variable","secret"]),value:z43.string(),environment:EnvironmentKeySchema}),CreateProjectSecretRequestSchema=ProjectSecretWriteRequestSchema.extend({key:z43.string().min(1).max(255),exposure:z43.enum(["public","private"]).optional()}),DeleteProjectSecretQuerySchema=z43.object({kind:z43.enum(["variable","secret"]),environment:EnvironmentKeySchema}),ProjectSecretMetadataDTOSchema=z43.object({id:z43.uuid(),projectId:z43.uuid(),key:z43.string(),kind:z43.literal("secret"),exposure:z43.literal("private"),environment:EnvironmentKeySchema,maskedValue:z43.string().optional(),createdAt:z43.date().transform(value=>value.toISOString()),updatedAt:z43.date().transform(value=>value.toISOString())}),ProjectSecretMetadataDTO=createDTO(ProjectSecretMetadataDTOSchema),ProjectVariableBaseSchema=z43.object({id:z43.uuid(),projectId:z43.uuid(),key:z43.string(),kind:z43.literal("variable"),environment:EnvironmentKeySchema,managed:z43.boolean(),createdAt:z43.date().transform(value=>value.toISOString()),updatedAt:z43.date().transform(value=>value.toISOString())}),ProjectVariableDTOSchema=z43.discriminatedUnion("exposure",[ProjectVariableBaseSchema.extend({exposure:z43.literal("public"),value:z43.string()}),ProjectVariableBaseSchema.extend({exposure:z43.literal("private"),maskedValue:z43.string().optional()})]),ProjectVariableDTO=createDTO(ProjectVariableDTOSchema),ProjectSecretsListResponseSchema=createResponseSchema(z43.array(ProjectSecretMetadataDTOSchema)),ProjectSecretResponseSchema=createResponseSchema(ProjectSecretMetadataDTOSchema)}});import{z as z44}from"zod";var ExportProjectResponseDTOSchema,ExportProjectResponseDTO,ImportProjectResultDTOSchema,ImportProjectResultDTO,ImportPreviewCountsDTOSchema,ImportPreviewSurfaceDTOSchema,ImportPreviewDTOSchema,ImportPreviewDTO,ImportPreviewResponseDTOSchema,ImportPreviewResponseDTO,init_project_import_export_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-import-export.dto.js"(){"use strict";init_create_dto();ExportProjectResponseDTOSchema=z44.object({success:z44.literal(!0),downloadUrl:z44.string(),expiresAt:z44.string(),fileSize:z44.number(),duration:z44.number()}),ExportProjectResponseDTO=createDTO(ExportProjectResponseDTOSchema),ImportProjectResultDTOSchema=z44.object({success:z44.literal(!0),projectId:z44.string(),projectName:z44.string(),displayName:z44.string(),projectUrl:z44.string(),duration:z44.number()}),ImportProjectResultDTO=createDTO(ImportProjectResultDTOSchema),ImportPreviewCountsDTOSchema=z44.object({contentTypes:z44.number(),entries:z44.number(),assets:z44.number(),translations:z44.number(),forms:z44.number(),codeFiles:z44.number(),assetFiles:z44.number()}),ImportPreviewSurfaceDTOSchema=z44.object({name:z44.string(),included:z44.boolean(),count:z44.number().optional(),note:z44.string().optional()}),ImportPreviewDTOSchema=z44.object({projectName:z44.string(),displayName:z44.string().nullable(),category:z44.string().nullable(),exportedAt:z44.string(),version:z44.string(),envScope:z44.enum(["main","tree"]),counts:ImportPreviewCountsDTOSchema,surfaces:z44.array(ImportPreviewSurfaceDTOSchema),fileSize:z44.number(),fileName:z44.string()}),ImportPreviewDTO=createDTO(ImportPreviewDTOSchema),ImportPreviewResponseDTOSchema=z44.object({success:z44.literal(!0),preview:ImportPreviewDTOSchema}),ImportPreviewResponseDTO=createDTO(ImportPreviewResponseDTOSchema)}});import{z as z45}from"zod";var SurfaceNameSchema,SURFACE_NAMES,SurfaceDeltaVerbSchema,SurfaceItemOriginSchema,SurfaceDeltaItemSchema,PerSurfaceDeltaSchema,CrossSurfaceFindingSchema,StatusReportSchema,StatusReportDTO,StatusReportResponseSchema,DiffReportSchema,DiffReportDTO,DiffReportResponseSchema,CodeFileDiffSchema,CodeFileDiffDTO,CodeFileDiffResponseSchema,CodeConflictBlobSchema,CodeConflictDetailSchema,CodeConflictDetailDTO,CodeConflictDetailResponseSchema,ContentEntrySnapshotSchema,ContentRowDiffSchema,ContentRowDiffDTO,ContentRowDiffResponseSchema,SchemaTypeSnapshotSchema,SchemaTypeDiffSchema,SchemaTypeDiffDTO,SchemaTypeDiffResponseSchema,AssetSnapshotSchema,AssetDiffSchema,AssetDiffDTO,AssetDiffResponseSchema,TranslationRowDiffSchema,TranslationRowDiffDTO,TranslationRowDiffResponseSchema,FormSchemaSnapshotSchema,FormSchemaDiffSchema,FormSchemaDiffDTO,FormSchemaDiffResponseSchema,CONFLICT_KINDS,ConflictKindSchema,ConflictTargetCommitSchema,ConflictSchema,FieldPickSchema,ConflictResolutionSchema,MergeResultSchema,MergeResultDTO,MergeResultResponseSchema,EngineStrategySchema,VendorStrategySchema,MergeStrategySchema,ResolvedStrategySchema,MergeRequestSchema,MergeInitiateResultSchema,MergeInitiateResultDTO,MergeInitiateResponseSchema,MergeConflictsHydrationSchema,MergeConflictsHydrationDTO,MergeConflictsHydrationResponseSchema,MergeResolveDraftRequestSchema,MergeResolveDraftResultSchema,MergeResolveDraftResultDTO,MergeResolveRequestSchema,MergeCancelRequestSchema,PublishReleaseRequestSchema,PublishReleaseResultSchema,PublishReleaseResultDTO,PublishReleaseResponseSchema,init_env_status_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/env-status.dto.js"(){"use strict";init_env();init_create_dto();init_response();SurfaceNameSchema=z45.enum(["code","schemas","content","translations","assets","forms"]),SURFACE_NAMES=["code","schemas","content","translations","assets","forms"],SurfaceDeltaVerbSchema=z45.enum(["added","removed","changed","conflict"]),SurfaceItemOriginSchema=z45.enum(["committed-ahead","local-uncommitted"]),SurfaceDeltaItemSchema=z45.object({verb:SurfaceDeltaVerbSchema,key:z45.string(),detail:z45.string().optional(),origin:SurfaceItemOriginSchema.optional(),meta:z45.record(z45.string(),z45.unknown()).optional()}),PerSurfaceDeltaSchema=z45.object({surface:SurfaceNameSchema,status:z45.enum(["ok","timed_out","failed","unchanged"]),durationMs:z45.number().int().nonnegative().optional(),changedCount:z45.number().int().nonnegative(),conflictCount:z45.number().int().nonnegative(),items:z45.array(SurfaceDeltaItemSchema).max(1e3).optional(),truncated:z45.boolean().optional(),error:z45.string().optional()}),CrossSurfaceFindingSchema=z45.object({id:z45.string(),kind:z45.string(),description:z45.string(),severity:z45.enum(["warning","error"]),source:z45.object({surface:SurfaceNameSchema,key:z45.string()}),target:z45.object({surface:SurfaceNameSchema,key:z45.string()}),actions:z45.array(z45.enum(["restore-target","fix-source","ignore"])).min(1)}),StatusReportSchema=z45.object({branch:BranchSchema.optional(),env:BranchSchema,vs:BranchSchema,syncState:z45.enum(["in-sync","ahead","behind","diverged","unknown"]),generatedAt:z45.coerce.date(),surfaces:z45.array(PerSurfaceDeltaSchema),agents:z45.array(z45.object({id:z45.string(),name:z45.string(),status:z45.enum(["active","paused","failed"]),lastRunAt:z45.coerce.date().nullable()})).optional(),crossSurface:z45.array(CrossSurfaceFindingSchema).optional()}),StatusReportDTO=createDTO(StatusReportSchema),StatusReportResponseSchema=createResponseSchema(StatusReportSchema),DiffReportSchema=z45.object({fromBranch:BranchSchema.optional(),toBranch:BranchSchema.optional(),fromEnv:BranchSchema,toEnv:BranchSchema,generatedAt:z45.coerce.date(),surfaces:z45.array(PerSurfaceDeltaSchema),crossSurface:z45.array(CrossSurfaceFindingSchema).optional(),fingerprint:z45.string()}),DiffReportDTO=createDTO(DiffReportSchema),DiffReportResponseSchema=createResponseSchema(DiffReportSchema),CodeFileDiffSchema=z45.object({path:z45.string(),state:z45.enum(["added","modified","deleted","renamed","copied","type_changed","unmerged","unknown"]),raw:z45.string(),additions:z45.number().int().nonnegative(),deletions:z45.number().int().nonnegative()}),CodeFileDiffDTO=createDTO(CodeFileDiffSchema),CodeFileDiffResponseSchema=createResponseSchema(CodeFileDiffSchema),CodeConflictBlobSchema=z45.object({oid:z45.string().optional(),content:z45.string().optional(),truncated:z45.boolean(),binary:z45.boolean()}),CodeConflictDetailSchema=z45.object({path:z45.string(),base:CodeConflictBlobSchema,ours:CodeConflictBlobSchema,theirs:CodeConflictBlobSchema,result:CodeConflictBlobSchema,sourceTipSha:z45.string(),targetTipSha:z45.string(),mergeBaseSha:z45.string().optional()}),CodeConflictDetailDTO=createDTO(CodeConflictDetailSchema),CodeConflictDetailResponseSchema=createResponseSchema(CodeConflictDetailSchema),ContentEntrySnapshotSchema=z45.object({id:z45.string(),slug:z45.string(),contentType:z45.string(),data:z45.record(z45.string(),z45.unknown()),updatedAt:z45.coerce.date()}),ContentRowDiffSchema=z45.object({collection:z45.string(),rowId:z45.string(),parent:ContentEntrySnapshotSchema.nullable(),child:ContentEntrySnapshotSchema.nullable()}),ContentRowDiffDTO=createDTO(ContentRowDiffSchema),ContentRowDiffResponseSchema=createResponseSchema(ContentRowDiffSchema),SchemaTypeSnapshotSchema=z45.object({name:z45.string(),label:z45.string(),isSingleton:z45.boolean(),fields:z45.record(z45.string(),z45.unknown())}),SchemaTypeDiffSchema=z45.object({typeName:z45.string(),parent:SchemaTypeSnapshotSchema.nullable(),child:SchemaTypeSnapshotSchema.nullable()}),SchemaTypeDiffDTO=createDTO(SchemaTypeDiffSchema),SchemaTypeDiffResponseSchema=createResponseSchema(SchemaTypeDiffSchema),AssetSnapshotSchema=z45.object({id:z45.string(),name:z45.string(),type:z45.enum(["file","folder"]),mimeType:z45.string().nullable(),storageKey:z45.string().nullable(),url:z45.string().nullable(),fileSize:z45.number().nullable(),width:z45.number().nullable(),height:z45.number().nullable(),altText:z45.string().nullable(),caption:z45.string().nullable(),createdAt:z45.coerce.date(),updatedAt:z45.coerce.date()}),AssetDiffSchema=z45.object({assetId:z45.string(),parent:AssetSnapshotSchema.nullable(),child:AssetSnapshotSchema.nullable()}),AssetDiffDTO=createDTO(AssetDiffSchema),AssetDiffResponseSchema=createResponseSchema(AssetDiffSchema),TranslationRowDiffSchema=z45.object({locale:z45.string(),key:z45.string(),parent:z45.string().nullable(),child:z45.string().nullable()}),TranslationRowDiffDTO=createDTO(TranslationRowDiffSchema),TranslationRowDiffResponseSchema=createResponseSchema(TranslationRowDiffSchema),FormSchemaSnapshotSchema=z45.object({formName:z45.string(),label:z45.string().nullable(),schemaFingerprint:z45.string(),fields:z45.record(z45.string(),z45.unknown()),settings:z45.record(z45.string(),z45.unknown()).optional()}),FormSchemaDiffSchema=z45.object({formName:z45.string(),parent:FormSchemaSnapshotSchema.nullable(),child:FormSchemaSnapshotSchema.nullable()}),FormSchemaDiffDTO=createDTO(FormSchemaDiffSchema),FormSchemaDiffResponseSchema=createResponseSchema(FormSchemaDiffSchema),CONFLICT_KINDS=["merge-conflict","requires-manual-strategy","cross-surface-integrity","unique-conflict"],ConflictKindSchema=z45.enum(CONFLICT_KINDS),ConflictTargetCommitSchema=z45.object({sha:z45.string(),subject:z45.string(),body:z45.string().optional(),author:z45.string(),date:z45.string()}),ConflictSchema=z45.object({surface:SurfaceNameSchema,key:z45.string(),kind:ConflictKindSchema.optional(),description:z45.string(),parentValue:z45.unknown().optional(),childValue:z45.unknown().optional(),conflictingFields:z45.array(z45.string()).optional(),code:z45.object({path:z45.string(),unresolvable:z45.boolean().optional(),reason:z45.string().optional(),targetCommits:z45.array(ConflictTargetCommitSchema).optional()}).optional()}),FieldPickSchema=z45.object({field:z45.string(),choice:z45.enum(["parent","child","pick","ai-pick"]),pickedValue:z45.unknown().optional(),aiSessionId:z45.string().optional()}),ConflictResolutionSchema=z45.object({surface:SurfaceNameSchema,key:z45.string(),choice:z45.enum(["parent","child","pick"]),pickedValue:z45.unknown().optional(),fieldPicks:z45.array(FieldPickSchema).optional()}),MergeResultSchema=z45.object({ok:z45.boolean(),mergeId:z45.string().uuid(),fromBranch:BranchSchema.optional(),toBranch:BranchSchema.optional(),fromEnv:BranchSchema,toEnv:BranchSchema,applied:z45.array(z45.object({surface:SurfaceNameSchema,count:z45.number().int().nonnegative()})),conflicts:z45.array(ConflictSchema).optional(),summary:z45.string().optional()}),MergeResultDTO=createDTO(MergeResultSchema),MergeResultResponseSchema=createResponseSchema(MergeResultSchema),EngineStrategySchema=z45.enum(["ff-only","auto","theirs","ours","manual"]),VendorStrategySchema=z45.enum(["ff_only","ff_prefer","merge"]),MergeStrategySchema=z45.object({engine:EngineStrategySchema.optional(),vendor:VendorStrategySchema.optional(),squash:z45.boolean().optional()}),ResolvedStrategySchema=z45.object({engine:EngineStrategySchema,vendor:VendorStrategySchema,squash:z45.boolean()}),MergeRequestSchema=z45.object({from:BranchSchema,allowDirectMerge:z45.boolean().optional(),strategy:MergeStrategySchema.optional()}),MergeInitiateResultSchema=z45.object({mergeId:z45.string().uuid(),streamUrl:z45.string(),strategy:ResolvedStrategySchema,acceptedAt:z45.coerce.date()}),MergeInitiateResultDTO=createDTO(MergeInitiateResultSchema),MergeInitiateResponseSchema=createResponseSchema(MergeInitiateResultSchema),MergeConflictsHydrationSchema=z45.object({mergeId:z45.string().uuid(),fromEnv:BranchSchema,toEnv:BranchSchema,status:z45.enum(["in_progress","complete","failed","rolled_back","conflicts"]),strategy:ResolvedStrategySchema,conflicts:z45.array(ConflictSchema),draftResolutions:z45.array(ConflictResolutionSchema),lastEditedBy:z45.string().nullable(),lastEditedAt:z45.coerce.date().nullable(),initiator:z45.object({userId:z45.string().nullable(),role:z45.string().nullable(),agentName:z45.string().nullable()})}),MergeConflictsHydrationDTO=createDTO(MergeConflictsHydrationSchema),MergeConflictsHydrationResponseSchema=createResponseSchema(MergeConflictsHydrationSchema),MergeResolveDraftRequestSchema=z45.object({resolutions:z45.array(ConflictResolutionSchema)}),MergeResolveDraftResultSchema=z45.object({mergeId:z45.string().uuid(),draftResolutions:z45.array(ConflictResolutionSchema),lastEditedAt:z45.coerce.date(),lastEditedBy:z45.string()}),MergeResolveDraftResultDTO=createDTO(MergeResolveDraftResultSchema),MergeResolveRequestSchema=z45.object({mergeId:z45.string().uuid(),resolutions:z45.array(ConflictResolutionSchema)}),MergeCancelRequestSchema=z45.object({mergeId:z45.string().uuid()}),PublishReleaseRequestSchema=z45.object({version:z45.string().regex(/^v?\d+\.\d+\.\d+(-[\w.]+)?$/,"Use semver (v1.4.2 / 1.4.2 / 1.4.2-rc.1)"),notes:z45.string().max(2e4).optional()}),PublishReleaseResultSchema=z45.object({releaseTag:z45.string(),sha:z45.string(),publishedAt:z45.coerce.date()}),PublishReleaseResultDTO=createDTO(PublishReleaseResultSchema),PublishReleaseResponseSchema=createResponseSchema(PublishReleaseResultSchema)}});import{z as z46}from"zod";var AgentSessionStatusSchema,AgentSessionReviewPublicationSchema,AgentSessionReviewSummarySchema,AgentSessionReviewSummaryDTO,AgentSessionReviewPayloadSchema,AgentSessionReviewPayloadDTO,AgentSessionReviewPayloadResponseSchema,SessionErrorCodeSchema,init_agent_session_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-session.dto.js"(){"use strict";init_create_dto();init_response();init_env_status_dto();AgentSessionStatusSchema=z46.enum(["planned","running","finished","cancelled","errored"]),AgentSessionReviewPublicationSchema=z46.enum(["pending","merged","conflict","not_published"]),AgentSessionReviewSummarySchema=z46.object({capturedAt:z46.coerce.date(),fingerprint:z46.string().min(1).max(256),counts:z46.object({code:z46.number().int().nonnegative(),content:z46.number().int().nonnegative(),schemas:z46.number().int().nonnegative(),labels:z46.number().int().nonnegative(),assets:z46.number().int().nonnegative().optional()}),publication:AgentSessionReviewPublicationSchema,mergeId:z46.uuid().nullable()}),AgentSessionReviewSummaryDTO=createDTO(AgentSessionReviewSummarySchema),AgentSessionReviewPayloadSchema=z46.object({diff:DiffReportSchema,code:z46.array(CodeFileDiffSchema.extend({raw:z46.string().max(24576)})).max(200),schemas:z46.array(SchemaTypeDiffSchema).max(200),content:z46.array(z46.object({key:z46.string().min(1).max(512),collection:z46.string().min(1).max(256),slug:z46.string().max(512).optional(),verb:z46.enum(["added","modified","deleted"]),fields:z46.array(z46.object({name:z46.string().min(1).max(256),before:z46.unknown().optional(),after:z46.unknown().optional()})).max(20)})).max(200),labels:z46.array(z46.object({key:z46.string().min(1).max(512),locale:z46.string().min(1).max(64).optional(),before:z46.unknown().nullable(),after:z46.unknown().nullable()})).max(200),assets:z46.array(z46.object({key:z46.string().min(1).max(512),name:z46.string().min(1).max(512),verb:z46.enum(["added","modified","deleted"]),before:AssetSnapshotSchema.nullable(),after:AssetSnapshotSchema.nullable()})).max(200).default([])}),AgentSessionReviewPayloadDTO=createDTO(AgentSessionReviewPayloadSchema),AgentSessionReviewPayloadResponseSchema=createResponseSchema(AgentSessionReviewPayloadSchema),SessionErrorCodeSchema=z46.enum(["invalid_session_transition","session_not_found","capability_snapshot_invalid","checkpoint_restore_failed","cost_ceiling_invalid"])}});import{z as z47}from"zod";var AgentBranchClassificationSchema,AgentBranchDecidedPathSchema,WorkSessionReviewSchema,RequestWorkSessionReviewSchema,WorkSessionReviewResultSchema,AgentBranchProposalDTOSchema,AgentBranchProposalDTO,DecideProposalRequestSchema,AgentBranchProposalResponseSchema,AgentBranchProposalsListResponseSchema,DecideProposalConflictResponseSchema,init_agent_proposal_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-proposal.dto.js"(){"use strict";init_create_dto();init_response();init_env_status_dto();AgentBranchClassificationSchema=z47.enum(["trivial","structural"]),AgentBranchDecidedPathSchema=z47.enum(["auto-merge","review-merged","review-discarded"]),WorkSessionReviewSchema=z47.object({sessionId:z47.uuid(),branch:z47.string().min(1),targetBranch:z47.string().min(1),revision:z47.string().min(1),fingerprint:z47.string().min(1),source:z47.enum(["studio","slack","mcp"]),threadId:z47.uuid().nullable(),invocationId:z47.uuid().nullable(),conversationBranch:z47.string().nullable(),capturedAt:z47.string(),surfaces:z47.array(PerSurfaceDeltaSchema).optional(),counts:z47.record(z47.string(),z47.number().int().nonnegative())}),RequestWorkSessionReviewSchema=z47.strictObject({sessionId:z47.uuid(),summary:z47.string().trim().min(1).max(240),targetBranch:z47.string().trim().min(1).optional()}),WorkSessionReviewResultSchema=z47.object({requested:z47.literal(!0),alreadyRequested:z47.boolean(),reviewId:z47.uuid(),reviewUrl:z47.url(),status:z47.literal("pending"),sessionId:z47.uuid(),branch:z47.string(),targetBranch:z47.string(),revision:z47.string(),savedRevision:z47.string(),fingerprint:z47.string(),visibility:z47.literal("user-visible"),retention:z47.literal("durable"),expiresAt:z47.null(),merged:z47.literal(!1),published:z47.literal(!1),links:z47.object({preview:z47.url(),changes:z47.url(),conversation:z47.url().nullable()})}),AgentBranchProposalDTOSchema=z47.object({id:z47.uuid(),envId:z47.uuid(),sessionId:z47.uuid().nullable(),skillName:z47.string().min(1),classification:AgentBranchClassificationSchema,rationale:z47.string().nullable(),summary:z47.string().nullable(),surfaceDeltas:z47.record(z47.string(),z47.unknown()),review:WorkSessionReviewSchema.optional(),createdAt:z47.coerce.date(),decidedAt:z47.coerce.date().nullable(),decidedPath:AgentBranchDecidedPathSchema.nullable(),decidedBy:z47.string().nullable()}),AgentBranchProposalDTO=createDTO(AgentBranchProposalDTOSchema),DecideProposalRequestSchema=z47.object({path:z47.enum(["review-merged","review-discarded"])}),AgentBranchProposalResponseSchema=createResponseSchema(AgentBranchProposalDTOSchema),AgentBranchProposalsListResponseSchema=createResponseSchema(z47.array(AgentBranchProposalDTOSchema)),DecideProposalConflictResponseSchema=z47.object({code:z47.literal("merge_conflict"),message:z47.string(),conflicts:z47.record(z47.string(),z47.number().int().nonnegative())})}});import{z as z48}from"zod";var AGENT_QUESTION_STATES,AgentQuestionStateSchema,AgentQuestionFormSchema,AgentQuestionAskSchema,AgentQuestionRequestSchema,AgentQuestionSchema,AgentQuestionResponseSchema,RunAgentQuestionResponseSchema,AgentQuestionAttentionSchema,OpenAgentQuestionsResponseSchema,AnswerAgentQuestionResultSchema,AnswerAgentQuestionResponseSchema,init_agent_question_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-question.dto.js"(){"use strict";init_chat_block();init_response();AGENT_QUESTION_STATES=["open","answered","expired","cancelled","superseded"],AgentQuestionStateSchema=z48.enum(AGENT_QUESTION_STATES),AgentQuestionFormSchema=FormBlockSchema.extend({title:z48.string().trim().min(1).max(80)}).superRefine((form,ctx)=>{(!form.steps.every(step=>step.id)||new Set(form.steps.map(step=>step.id)).size!==form.steps.length)&&ctx.addIssue({code:"custom",path:["steps"],message:"Every question step needs its own stable id."})}),AgentQuestionAskSchema=z48.object({description:z48.string().trim().min(1).max(240),block:AgentQuestionFormSchema}).strict(),AgentQuestionRequestSchema=AgentQuestionAskSchema.extend({version:z48.literal(QUESTION_FORM_CONTRACT_VERSION),sessionIds:z48.array(z48.uuid()).optional()}),AgentQuestionSchema=z48.object({id:z48.uuid(),projectId:z48.uuid(),threadId:z48.uuid(),invocationId:z48.uuid(),agentKey:z48.string().min(1).max(120),anchorEnv:z48.string().min(1).max(64),retainedEnv:z48.string().min(1).max(64),state:AgentQuestionStateSchema,request:AgentQuestionRequestSchema,answer:QuestionFormAnswerSnapshotSchema.nullable(),answeredByUserId:z48.string().min(1).nullable(),continuationInvocationId:z48.uuid().nullable(),askedAt:z48.coerce.date(),expiresAt:z48.coerce.date(),closedAt:z48.coerce.date().nullable()}),AgentQuestionResponseSchema=createResponseSchema(AgentQuestionSchema),RunAgentQuestionResponseSchema=createResponseSchema(AgentQuestionSchema.nullable()),AgentQuestionAttentionSchema=z48.object({questionId:z48.uuid(),invocationId:z48.uuid(),askedAt:z48.coerce.date()}),OpenAgentQuestionsResponseSchema=createResponseSchema(z48.array(AgentQuestionAttentionSchema)),AnswerAgentQuestionResultSchema=z48.object({question:AgentQuestionSchema,continuationInvocationId:z48.uuid(),deduped:z48.boolean()}),AnswerAgentQuestionResponseSchema=createResponseSchema(AnswerAgentQuestionResultSchema)}});import{z as z49}from"zod";var IntegrationAuthModeSchema,IntegrationAuthKindSchema,IntegrationCredentialInputSchema,IntegrationCredentialUsageSchema,IntegrationToolEffectSchema,ProjectIntegrationCredentialStatusSchema,IntegrationAuthModeDTOSchema,IntegrationCredentialDefinitionDTOSchema,IntegrationToolDefinitionDTOSchema,IntegrationRecipeDTOSchema,IntegrationInfoDTOSchema,IntegrationInfoDTO,ProjectIntegrationStatusDTOSchema,ProjectIntegrationStatusDTO,ProjectIntegrationInstallationDTOSchema,ProjectIntegrationInstallationDTO,EnableProjectIntegrationRequestSchema,SwitchProjectIntegrationAuthRequestSchema,OrganizationIntegrationConnectionStatusSchema,OrganizationIntegrationConnectionDTOSchema,OrganizationIntegrationConnectionDTO,ProjectIntegrationConnectionDTOSchema,ProjectIntegrationConnectionDTO,McpHeaderNameSchema,McpHeaderDefinitionSchema,McpSecretMapSchema,ConnectOrganizationIntegrationRequestSchema,ProjectIntegrationReturnPathSchema,IntegrationCustomIdentitySchema,ConnectProjectIntegrationRequestSchema,McpIntegrationAuthSchema,McpIntegrationSetupAuthSchema,AddProjectMcpIntegrationRequestSchema,AddProjectMcpIntegrationResponseBaseSchema,AddProjectMcpIntegrationResponseSchema,ReusableMcpServerAuthKindSchema,ReusableMcpServerDTOSchema,ReusableMcpServerDTO,SearchReusableMcpServersQuerySchema,ReuseProjectMcpIntegrationRequestSchema,LinearOAuthApplicationDistributionSchema,OrganizationLinearAppDTOSchema,OrganizationLinearAppDTO,CreateManagedLinearAppRequestSchema,UpdateManagedLinearAppRequestSchema,StartManagedLinearConnectRequestSchema,StartProjectIntegrationConnectResponseSchema,StartProjectIntegrationConnectResponseDTO,ProjectIntegrationConnectResponseSchema,BindProjectChannelRequestSchema,ListProjectChannelsQuerySchema,SearchProjectChannelsQuerySchema,ProjectChannelBindingDTOSchema,ProjectChannelBindingDTO,ProjectChannelCandidateAvailabilitySchema,ProjectChannelCandidateDTOSchema,ProjectChannelCandidateDTO,FirecrawlScrapeFormatsSchema,FirecrawlScrapeToolInputSchema,FirecrawlSearchToolInputSchema,FirecrawlDeveloperSearchToolInputSchema,FirecrawlResearchSearchToolInputSchema,FirecrawlResearchPaperToolInputSchema,FirecrawlResearchRelatedToolInputSchema,FirecrawlMapToolInputSchema,FirecrawlCrawlToolInputSchema,FirecrawlMonitorScheduleInputSchema,FirecrawlMonitorScrapeOptionsInputSchema,FirecrawlMonitorTargetInputSchema,FirecrawlMonitorCreateToolInputSchema,FirecrawlMonitorUpdateToolInputSchema,FirecrawlMonitorIdToolInputSchema,FirecrawlMonitorCheckToolInputSchema,RunProjectIntegrationToolRequestSchema,ProjectIntegrationToolRunUsageSchema,ProjectIntegrationToolRunBillingSchema,FirecrawlScrapeToolOutputSchema,FirecrawlSearchToolOutputSchema,FirecrawlResearchPaperSchema,FirecrawlResearchPassageSchema,FirecrawlDeveloperSearchToolOutputSchema,FirecrawlResearchSearchToolOutputSchema,FirecrawlResearchPaperToolOutputSchema,FirecrawlResearchRelatedToolOutputSchema,FirecrawlMapToolOutputSchema,FirecrawlCrawlToolOutputSchema,FirecrawlMonitorScheduleOutputSchema,FirecrawlMonitorTargetOutputSchema,FirecrawlMonitorOutputSchema,FirecrawlMonitorCheckOutputSchema,FirecrawlMonitorListToolOutputSchema,FirecrawlMonitorDetailToolOutputSchema,FirecrawlMonitorDeleteToolOutputSchema,FirecrawlMonitorChecksToolOutputSchema,FirecrawlMonitorCheckDetailToolOutputSchema,FirecrawlToolKeySchema,FirecrawlToolOutputSchema,ProjectIntegrationToolRunBaseSchema,ProjectIntegrationToolRunDTOSchema,ProjectIntegrationToolRunDTO,IntegrationsListResponseSchema,IntegrationInfoResponseSchema,ProjectIntegrationStatusResponseSchema,ProjectIntegrationInstallationResponseSchema,ProjectIntegrationToolRunResponseSchema,StartProjectIntegrationConnectResponseResponseSchema,OrganizationIntegrationConnectionResponseSchema,ProjectIntegrationConnectionsResponseSchema,ProjectIntegrationConnectResponseResponseSchema,AddProjectMcpIntegrationResponseResponseSchema,ReusableMcpServersResponseSchema,ProjectChannelBindingResponseSchema,ProjectChannelBindingsResponseSchema,ProjectChannelCandidatesResponseSchema,init_integration_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/integration.dto.js"(){"use strict";init_create_dto();init_response();IntegrationAuthModeSchema=z49.enum(["fimo","personal","oauth"]),IntegrationAuthKindSchema=z49.enum(["oauth","api_key","bot_token","basic"]),IntegrationCredentialInputSchema=z49.enum(["secret_text"]),IntegrationCredentialUsageSchema=z49.enum(["http_bearer","api_key"]),IntegrationToolEffectSchema=z49.enum(["read","write","delete","financial"]),ProjectIntegrationCredentialStatusSchema=z49.enum(["not_required","missing","configured"]),IntegrationAuthModeDTOSchema=z49.object({mode:IntegrationAuthModeSchema,label:z49.string().min(1),description:z49.string().min(1)}),IntegrationCredentialDefinitionDTOSchema=z49.object({id:z49.string().min(1),label:z49.string().min(1),input:IntegrationCredentialInputSchema,usage:IntegrationCredentialUsageSchema,required:z49.boolean()}),IntegrationToolDefinitionDTOSchema=z49.object({key:z49.string().min(1),name:z49.string().min(1),description:z49.string().min(1),effect:IntegrationToolEffectSchema,input:z49.record(z49.string(),z49.unknown()).optional()}),IntegrationRecipeDTOSchema=z49.object({title:z49.string().min(1),description:z49.string().min(1),command:z49.string().min(1).optional()}),IntegrationInfoDTOSchema=z49.object({key:z49.string().min(1),name:z49.string().min(1),summary:z49.string().min(1),type:z49.enum(["native","mcp"]).optional(),url:z49.string().url().optional(),defaultAuthMode:IntegrationAuthModeSchema.nullable().optional(),authModes:z49.array(IntegrationAuthModeDTOSchema),credentials:z49.array(IntegrationCredentialDefinitionDTOSchema),tools:z49.array(IntegrationToolDefinitionDTOSchema),liveToolsStatus:z49.enum(["available","unavailable"]).optional(),connectionCapabilities:z49.object({customIdentityCreation:z49.boolean()}).optional(),recipes:z49.array(IntegrationRecipeDTOSchema)}),IntegrationInfoDTO=createDTO(IntegrationInfoDTOSchema),ProjectIntegrationStatusDTOSchema=z49.object({projectId:z49.uuid(),integrationKey:z49.string().min(1),name:z49.string().min(1),summary:z49.string().min(1),installed:z49.boolean(),enabled:z49.boolean(),setupState:z49.enum(["setup_required","ready","attention"]),authMode:IntegrationAuthModeSchema.nullable(),authModeLabel:z49.string().nullable(),connectionId:z49.uuid().nullable().optional(),connectionAlias:z49.string().min(1).nullable().optional(),connectionStatus:z49.enum(["active","revoked","disconnected"]).nullable(),credentialStatus:ProjectIntegrationCredentialStatusSchema,configuredCredentials:z49.array(z49.string()),installedAt:z49.coerce.date().nullable(),updatedAt:z49.coerce.date().nullable()}),ProjectIntegrationStatusDTO=createDTO(ProjectIntegrationStatusDTOSchema),ProjectIntegrationInstallationDTOSchema=z49.object({id:z49.uuid(),projectId:z49.uuid(),integrationKey:z49.string().min(1),enabled:z49.boolean(),authMode:IntegrationAuthModeSchema,authModeLabel:z49.string(),connectionId:z49.uuid().nullable().optional(),connectionAlias:z49.string().min(1).nullable().optional(),credentialStatus:ProjectIntegrationCredentialStatusSchema,configuredCredentials:z49.array(z49.string()),createdAt:z49.coerce.date(),updatedAt:z49.coerce.date()}),ProjectIntegrationInstallationDTO=createDTO(ProjectIntegrationInstallationDTOSchema),EnableProjectIntegrationRequestSchema=z49.object({authMode:IntegrationAuthModeSchema.optional(),connectionAlias:z49.string().min(1).optional()}),SwitchProjectIntegrationAuthRequestSchema=z49.object({authMode:IntegrationAuthModeSchema}),OrganizationIntegrationConnectionStatusSchema=z49.enum(["active","revoked","disconnected"]),OrganizationIntegrationConnectionDTOSchema=z49.object({id:z49.uuid(),organizationId:z49.string().min(1),integrationKey:z49.string().min(1),registrationId:z49.uuid().nullable(),alias:z49.string().min(1),authKind:IntegrationAuthKindSchema,externalAccountId:z49.string().min(1),externalAccountName:z49.string().nullable(),externalBotUserId:z49.string().nullable(),status:OrganizationIntegrationConnectionStatusSchema,scopes:z49.array(z49.string()),connectedAt:z49.coerce.date(),updatedAt:z49.coerce.date()}),OrganizationIntegrationConnectionDTO=createDTO(OrganizationIntegrationConnectionDTOSchema),ProjectIntegrationConnectionDTOSchema=OrganizationIntegrationConnectionDTOSchema.extend({granted:z49.boolean(),isDefault:z49.boolean()}),ProjectIntegrationConnectionDTO=createDTO(ProjectIntegrationConnectionDTOSchema),McpHeaderNameSchema=z49.string().trim().min(1).max(120).regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,"Header name is invalid."),McpHeaderDefinitionSchema=z49.object({name:McpHeaderNameSchema}),McpSecretMapSchema=z49.record(McpHeaderNameSchema,z49.string().min(1)),ConnectOrganizationIntegrationRequestSchema=z49.object({alias:z49.string().min(1).max(120).optional(),token:z49.string().min(1).optional(),secrets:McpSecretMapSchema.optional(),rotate:z49.boolean().optional()}).superRefine((value,ctx)=>{value.token&&value.secrets&&ctx.addIssue({code:"custom",path:["token"],message:"Provide either one token or a complete MCP secret map."})}),ProjectIntegrationReturnPathSchema=z49.string().min(1).max(500).refine(value=>value.startsWith("/app/")&&!value.startsWith("//"),"Return path must be inside the Fimo app."),IntegrationCustomIdentitySchema=z49.object({displayName:z49.string().trim().min(1).max(35),backgroundColor:z49.string().regex(/^#[0-9a-fA-F]{6}$/).optional(),iconUrl:z49.string().url().max(2048).optional()}),ConnectProjectIntegrationRequestSchema=z49.discriminatedUnion("mode",[z49.object({mode:z49.literal("personal"),alias:z49.string().min(1).max(120),token:z49.string().min(1).optional(),secrets:McpSecretMapSchema.optional(),rotate:z49.boolean().optional()}),z49.object({mode:z49.literal("oauth"),returnTo:ProjectIntegrationReturnPathSchema.optional(),reconnect:z49.boolean().optional(),registrationId:z49.uuid().optional(),customIdentity:IntegrationCustomIdentitySchema.optional()})]).superRefine((value,ctx)=>{value.mode==="oauth"&&value.registrationId&&value.customIdentity&&ctx.addIssue({code:"custom",path:["registrationId"],message:"Choose an existing app identity or create a custom one, not both."}),value.mode==="personal"&&!!value.token==!!value.secrets&&ctx.addIssue({code:"custom",path:["token"],message:"Provide either one token or a complete MCP secret map."})}),McpIntegrationAuthSchema=z49.enum(["none","bearer","header"]),McpIntegrationSetupAuthSchema=z49.union([z49.literal("auto"),McpIntegrationAuthSchema]),AddProjectMcpIntegrationRequestSchema=z49.object({type:z49.literal("mcp"),name:z49.string().trim().min(1).max(120),url:z49.string().url(),auth:McpIntegrationSetupAuthSchema.default("auto"),returnTo:ProjectIntegrationReturnPathSchema.optional(),headers:z49.array(McpHeaderDefinitionSchema).min(1).max(20).optional(),secrets:McpSecretMapSchema.optional(),headerName:McpHeaderNameSchema.optional(),token:z49.string().min(1).optional(),integrationId:z49.string().min(2).max(80).optional()}).superRefine((value,ctx)=>{let protocol;try{protocol=new URL(value.url).protocol}catch{return}protocol!=="https:"&&ctx.addIssue({code:"custom",path:["url"],message:"MCP servers must use HTTPS."});let hasSingleHeader=!!(value.headerName||value.token),hasHeaderBundle=!!(value.headers||value.secrets);if(value.auth==="auto"&&(hasSingleHeader||hasHeaderBundle)&&ctx.addIssue({code:"custom",path:["auth"],message:"Automatic authentication does not accept manual credentials."}),value.auth==="none"&&(hasSingleHeader||hasHeaderBundle)&&ctx.addIssue({code:"custom",path:["auth"],message:"Public MCP servers cannot define credentials."}),value.auth==="bearer"&&(value.token||ctx.addIssue({code:"custom",path:["token"],message:"Bearer authentication requires a token."}),(value.headerName||value.headers||value.secrets)&&ctx.addIssue({code:"custom",path:["headers"],message:"Custom headers only apply to header authentication."})),value.auth!=="header")return;if(hasSingleHeader&&hasHeaderBundle){ctx.addIssue({code:"custom",path:["headers"],message:"Use either the single-header fields or headers with a complete secret map."});return}if(hasSingleHeader){value.headerName||ctx.addIssue({code:"custom",path:["headerName"],message:"Custom header authentication needs a header name."}),value.token||ctx.addIssue({code:"custom",path:["token"],message:"Header authentication requires a complete header value."});return}if(!value.headers){ctx.addIssue({code:"custom",path:["headers"],message:"Header authentication needs at least one header."});return}let normalizedNames=value.headers.map(header=>header.name.toLowerCase());if(new Set(normalizedNames).size!==normalizedNames.length&&ctx.addIssue({code:"custom",path:["headers"],message:"MCP header names must be unique."}),!value.secrets){ctx.addIssue({code:"custom",path:["secrets"],message:"Header authentication needs a complete secret map."});return}let secretNames=Object.keys(value.secrets).map(name=>name.toLowerCase());if(new Set(secretNames).size!==secretNames.length){ctx.addIssue({code:"custom",path:["secrets"],message:"MCP secret names must be unique."});return}let expected=new Set(normalizedNames),actual=new Set(secretNames);(expected.size!==actual.size||[...expected].some(name=>!actual.has(name)))&&ctx.addIssue({code:"custom",path:["secrets"],message:"The MCP secret map must exactly cover the configured headers."})}),AddProjectMcpIntegrationResponseBaseSchema=z49.object({integrationKey:z49.string().min(1),status:ProjectIntegrationStatusDTOSchema,info:IntegrationInfoDTOSchema}),AddProjectMcpIntegrationResponseSchema=z49.discriminatedUnion("mode",[AddProjectMcpIntegrationResponseBaseSchema.extend({mode:z49.literal("connected")}),AddProjectMcpIntegrationResponseBaseSchema.extend({mode:z49.literal("oauth"),connectUrl:z49.string().url(),expiresAt:z49.coerce.date()})]),ReusableMcpServerAuthKindSchema=z49.enum(["none","bearer","header","oauth"]),ReusableMcpServerDTOSchema=z49.object({id:z49.uuid(),name:z49.string().min(1),host:z49.string().min(1),authKind:ReusableMcpServerAuthKindSchema,sourceProjectName:z49.string().min(1),availability:z49.enum(["available","unavailable"])}),ReusableMcpServerDTO=createDTO(ReusableMcpServerDTOSchema),SearchReusableMcpServersQuerySchema=z49.object({query:z49.string().trim().max(120).optional()}),ReuseProjectMcpIntegrationRequestSchema=z49.object({serverId:z49.uuid()}),LinearOAuthApplicationDistributionSchema=z49.enum(["private","public"]),OrganizationLinearAppDTOSchema=z49.object({id:z49.uuid(),displayName:z49.string().min(1),description:z49.string().nullable(),iconUrl:z49.string().nullable(),distribution:LinearOAuthApplicationDistributionSchema,status:z49.enum(["active","revoked","disconnected"]),connectionIds:z49.array(z49.uuid()),createdAt:z49.coerce.date(),updatedAt:z49.coerce.date()}),OrganizationLinearAppDTO=createDTO(OrganizationLinearAppDTOSchema),CreateManagedLinearAppRequestSchema=z49.object({appName:z49.string().trim().min(2).max(80),description:z49.string().trim().max(1e3).optional(),iconUrl:z49.string().url().max(2048).optional()}),UpdateManagedLinearAppRequestSchema=CreateManagedLinearAppRequestSchema.partial().refine(input=>Object.keys(input).length>0,"At least one Linear app field is required."),StartManagedLinearConnectRequestSchema=z49.object({projectId:z49.uuid(),registrationId:z49.uuid(),returnTo:ProjectIntegrationReturnPathSchema.optional()}),StartProjectIntegrationConnectResponseSchema=z49.object({integrationKey:z49.string().min(1),connectUrl:z49.string().url(),expiresAt:z49.coerce.date()}),StartProjectIntegrationConnectResponseDTO=createDTO(StartProjectIntegrationConnectResponseSchema),ProjectIntegrationConnectResponseSchema=z49.discriminatedUnion("mode",[z49.object({mode:z49.literal("personal"),integrationKey:z49.string().min(1),connection:OrganizationIntegrationConnectionDTOSchema}),z49.object({mode:z49.literal("oauth"),integrationKey:z49.string().min(1),connectUrl:z49.string().url(),expiresAt:z49.coerce.date()})]),BindProjectChannelRequestSchema=z49.object({ref:z49.string().min(1),connectionAlias:z49.string().min(1).optional(),agentName:z49.string().min(1).max(160).nullable().optional(),force:z49.boolean().optional()}),ListProjectChannelsQuerySchema=z49.object({integrationKey:z49.string().min(1)}),SearchProjectChannelsQuerySchema=z49.object({integrationKey:z49.string().min(1),connectionAlias:z49.string().min(1),query:z49.string().max(160).optional()}),ProjectChannelBindingDTOSchema=z49.object({id:z49.uuid(),projectId:z49.uuid(),integrationKey:z49.string().min(1),connectionId:z49.uuid(),externalWorkspaceId:z49.string().min(1),externalChannelId:z49.string().min(1),externalChannelName:z49.string().nullable(),agentName:z49.string().nullable(),enabled:z49.boolean(),createdAt:z49.coerce.date(),updatedAt:z49.coerce.date()}),ProjectChannelBindingDTO=createDTO(ProjectChannelBindingDTOSchema),ProjectChannelCandidateAvailabilitySchema=z49.enum(["available","selected","used_by_project","unavailable"]),ProjectChannelCandidateDTOSchema=z49.object({id:z49.string().min(1),name:z49.string().min(1),visibility:z49.enum(["public","private"]),availability:ProjectChannelCandidateAvailabilitySchema,projectName:z49.string().min(1).nullable(),canMove:z49.boolean()}),ProjectChannelCandidateDTO=createDTO(ProjectChannelCandidateDTOSchema),FirecrawlScrapeFormatsSchema=z49.object({markdown:z49.boolean().optional(),summary:z49.boolean().optional(),links:z49.boolean().optional(),branding:z49.boolean().optional(),images:z49.boolean().optional(),html:z49.union([z49.literal("cleaned"),z49.literal("raw"),z49.boolean()]).optional(),json:z49.union([z49.boolean(),z49.object({prompt:z49.string().min(1).max(1e4),schema:z49.record(z49.string(),z49.unknown()).optional()})]).optional()}).default({markdown:!0}),FirecrawlScrapeToolInputSchema=z49.object({url:z49.string().url(),formats:FirecrawlScrapeFormatsSchema,onlyMainContent:z49.boolean().optional(),timeoutMs:z49.number().int().positive().max(12e4).optional(),waitForMs:z49.number().int().min(0).max(3e4).optional(),maxAgeMs:z49.number().int().min(0).optional(),minAgeMs:z49.number().int().min(0).optional(),storeInCache:z49.boolean().optional(),proxy:z49.enum(["basic","enhanced","auto"]).optional(),mobile:z49.boolean().optional(),location:z49.object({country:z49.string().regex(/^[A-Za-z]{2}$/,"Country must be a two-letter code."),languages:z49.array(z49.string().min(1).max(35)).min(1).max(10).optional()}).optional()}),FirecrawlSearchToolInputSchema=z49.object({query:z49.string().min(1),maxResults:z49.number().int().positive().max(20).optional(),sources:z49.array(z49.enum(["web","news","images"])).min(1).max(3).optional(),categories:z49.array(z49.enum(["github","research","pdf"])).min(1).max(3).optional(),includeDomains:z49.array(z49.string().min(1).max(253)).min(1).max(100).optional(),excludeDomains:z49.array(z49.string().min(1).max(253)).min(1).max(100).optional(),timeRange:z49.enum(["hour","day","week","month","year"]).optional(),location:z49.string().min(1).max(160).optional(),country:z49.string().regex(/^[A-Za-z]{2}$/,"Country must be a two-letter code.").optional(),highlights:z49.boolean().optional(),timeoutMs:z49.number().int().positive().max(12e4).optional()}).refine(value=>!(value.includeDomains&&value.excludeDomains),{message:"Choose includeDomains or excludeDomains, not both."}),FirecrawlDeveloperSearchToolInputSchema=z49.object({query:z49.string().min(1).max(500),maxResults:z49.number().int().min(1).max(100).optional(),types:z49.array(z49.enum(["doc","issue","pull_request","readme"])).min(1).max(4).optional(),repos:z49.array(z49.string().min(1).max(512)).min(1).max(20).optional(),sources:z49.array(z49.string().min(1).max(512)).min(1).max(20).optional(),passages:z49.number().int().min(1).max(5).optional(),skills:z49.literal("only").optional(),language:z49.string().min(1).optional(),topic:z49.string().min(1).optional(),license:z49.string().min(1).optional(),minStars:z49.number().int().min(0).optional(),maxStars:z49.number().int().min(0).optional(),archived:z49.boolean().optional(),fork:z49.boolean().optional()}).refine(value=>value.minStars===void 0||value.maxStars===void 0||value.minStars<=value.maxStars,{message:"minStars must not exceed maxStars."}),FirecrawlResearchSearchToolInputSchema=z49.object({query:z49.string().min(1).max(500),maxResults:z49.number().int().min(1).max(500).optional(),authors:z49.array(z49.string().min(1)).min(1).optional(),categories:z49.array(z49.string().min(1)).min(1).optional(),from:z49.iso.date().optional(),to:z49.iso.date().optional()}),FirecrawlResearchPaperToolInputSchema=z49.object({paperId:z49.string().min(1).max(512),query:z49.string().min(1).max(500).optional(),maxPassages:z49.number().int().min(1).max(50).optional()}).refine(value=>value.query!==void 0||value.maxPassages===void 0,{message:"maxPassages requires query."}),FirecrawlResearchRelatedToolInputSchema=z49.object({paperId:z49.string().min(1).max(512),intent:z49.string().min(1).max(500),mode:z49.enum(["similar","citers","references"]).optional(),maxResults:z49.number().int().min(1).max(500).optional(),rerank:z49.boolean().optional(),anchors:z49.array(z49.string().min(1).max(512)).min(1).optional()}),FirecrawlMapToolInputSchema=z49.object({url:z49.string().url(),search:z49.string().min(1).optional(),limit:z49.number().int().positive().max(200).optional(),includeSubdomains:z49.boolean().optional(),timeoutMs:z49.number().int().positive().max(12e4).optional()}),FirecrawlCrawlToolInputSchema=z49.object({url:z49.string().url(),limit:z49.number().int().positive().max(20).optional(),formats:FirecrawlScrapeFormatsSchema,onlyMainContent:z49.boolean().optional(),timeoutMs:z49.number().int().positive().max(12e4).optional()}),FirecrawlMonitorScheduleInputSchema=z49.object({text:z49.string().min(1).max(200).optional(),cron:z49.string().min(1).max(120).optional(),timezone:z49.string().min(1).max(80).optional()}).refine(value=>!!(value.text||value.cron),"Firecrawl monitor schedule needs text or cron."),FirecrawlMonitorScrapeOptionsInputSchema=z49.object({formats:FirecrawlScrapeFormatsSchema.optional(),onlyMainContent:z49.boolean().optional(),timeoutMs:z49.number().int().positive().max(12e4).optional(),waitForMs:z49.number().int().min(0).max(3e4).optional(),maxAgeMs:z49.number().int().min(0).optional(),minAgeMs:z49.number().int().min(0).optional(),storeInCache:z49.boolean().optional(),proxy:z49.enum(["basic","enhanced","auto"]).optional(),mobile:z49.boolean().optional(),location:z49.object({country:z49.string().regex(/^[A-Za-z]{2}$/,"Country must be a two-letter code."),languages:z49.array(z49.string().min(1).max(35)).min(1).max(10).optional()}).optional()}).optional(),FirecrawlMonitorTargetInputSchema=z49.union([z49.object({type:z49.enum(["scrape","crawl"]).default("scrape"),urls:z49.array(z49.string().url()).min(1).max(50),scrapeOptions:FirecrawlMonitorScrapeOptionsInputSchema}),z49.object({type:z49.literal("search"),queries:z49.array(z49.string().min(1).max(256)).min(1).max(12),searchWindow:z49.enum(["5m","15m","1h","6h","24h","7d"]).optional(),maxResults:z49.number().int().min(1).max(50).optional(),includeDomains:z49.array(z49.string().min(1).max(253)).min(1).max(50).optional(),excludeDomains:z49.array(z49.string().min(1).max(253)).min(1).max(50).optional()}).refine(value=>!(value.includeDomains&&value.excludeDomains),{message:"Choose includeDomains or excludeDomains, not both."})]),FirecrawlMonitorCreateToolInputSchema=z49.object({name:z49.string().min(1).max(256),schedule:FirecrawlMonitorScheduleInputSchema,targets:z49.array(FirecrawlMonitorTargetInputSchema).min(1).max(50),goal:z49.string().min(1).max(2e3).optional(),judgeEnabled:z49.boolean().optional(),retentionDays:z49.number().int().min(1).max(365).optional(),notification:z49.object({email:z49.object({enabled:z49.boolean().default(!0),recipients:z49.array(z49.string().email()).min(1).max(20),includeDiffs:z49.boolean().optional()}).optional()}).optional()}).refine(value=>!value.targets.some(target=>target.type==="search")||value.judgeEnabled===!1||!!value.goal,{message:"Search monitor targets require goal unless judgeEnabled is false."}),FirecrawlMonitorUpdateToolInputSchema=z49.object({monitorId:z49.string().uuid(),name:z49.string().min(1).max(256).optional(),schedule:FirecrawlMonitorScheduleInputSchema.optional(),targets:z49.array(FirecrawlMonitorTargetInputSchema).min(1).max(50).optional(),goal:z49.string().min(1).max(2e3).optional(),judgeEnabled:z49.boolean().optional(),retentionDays:z49.number().int().min(1).max(365).optional(),status:z49.enum(["active","paused"]).optional()}).refine(value=>Object.keys(value).some(key=>key!=="monitorId"),"Monitor update needs a changed field."),FirecrawlMonitorIdToolInputSchema=z49.object({monitorId:z49.string().uuid()}),FirecrawlMonitorCheckToolInputSchema=FirecrawlMonitorIdToolInputSchema.extend({checkId:z49.string().uuid()}),RunProjectIntegrationToolRequestSchema=z49.object({tool:z49.string().min(1),input:z49.record(z49.string(),z49.unknown()),connectionAlias:z49.string().min(1).optional(),approval:z49.string().min(1).max(4e3).optional()}),ProjectIntegrationToolRunUsageSchema=z49.object({provider:z49.string().min(1),providerCredits:z49.number().nonnegative().optional(),providerCostUsd:z49.number().nonnegative().optional(),requests:z49.number().int().nonnegative().optional()}),ProjectIntegrationToolRunBillingSchema=z49.object({credits:z49.number().int().nonnegative()}),FirecrawlScrapeToolOutputSchema=z49.object({url:z49.string(),provider:z49.literal("firecrawl"),title:z49.string().optional(),statusCode:z49.number().optional(),markdown:z49.string().optional(),summary:z49.string().optional(),links:z49.array(z49.string()).optional(),images:z49.array(z49.string()).optional(),html:z49.string().optional(),json:z49.unknown().optional(),branding:z49.record(z49.string(),z49.unknown()).optional(),warning:z49.string().optional()}),FirecrawlSearchToolOutputSchema=z49.object({query:z49.string(),provider:z49.literal("firecrawl"),warning:z49.string().optional(),results:z49.array(z49.object({title:z49.string(),url:z49.string(),snippet:z49.string().optional(),content:z49.string().optional(),score:z49.number().optional(),publishedAt:z49.string().optional()}))}),FirecrawlResearchPaperSchema=z49.object({paperId:z49.string(),primaryId:z49.string().optional(),ids:z49.record(z49.string(),z49.array(z49.string())).optional(),title:z49.string().optional(),abstract:z49.string().optional(),score:z49.number().optional()}).passthrough(),FirecrawlResearchPassageSchema=z49.object({text:z49.string(),score:z49.number().optional()}).passthrough(),FirecrawlDeveloperSearchToolOutputSchema=z49.object({provider:z49.literal("firecrawl"),results:z49.array(z49.object({id:z49.string(),type:z49.string().min(1).optional(),url:z49.string(),title:z49.string().optional(),passages:z49.array(z49.object({text:z49.string()}).passthrough())}).passthrough()),coverage:z49.record(z49.string(),z49.string()).optional(),reranked:z49.boolean().optional(),repos:z49.array(z49.record(z49.string(),z49.unknown())).optional(),sources:z49.array(z49.record(z49.string(),z49.unknown())).optional()}),FirecrawlResearchSearchToolOutputSchema=z49.object({provider:z49.literal("firecrawl"),results:z49.array(FirecrawlResearchPaperSchema)}),FirecrawlResearchPaperToolOutputSchema=z49.object({provider:z49.literal("firecrawl"),paper:z49.record(z49.string(),z49.unknown()),paperId:z49.string().optional(),query:z49.string().optional(),passages:z49.array(FirecrawlResearchPassageSchema).optional()}),FirecrawlResearchRelatedToolOutputSchema=z49.object({provider:z49.literal("firecrawl"),results:z49.array(FirecrawlResearchPaperSchema),poolSize:z49.number().int().nonnegative(),truncated:z49.boolean(),note:z49.string().nullable().optional()}),FirecrawlMapToolOutputSchema=z49.object({url:z49.string(),provider:z49.literal("firecrawl"),count:z49.number(),links:z49.array(z49.object({url:z49.string(),title:z49.string().optional(),description:z49.string().optional()}))}),FirecrawlCrawlToolOutputSchema=z49.object({url:z49.string(),provider:z49.literal("firecrawl"),total:z49.number(),pages:z49.array(z49.object({url:z49.string(),title:z49.string().optional(),statusCode:z49.number().optional(),markdown:z49.string().optional(),summary:z49.string().optional(),links:z49.array(z49.string()).optional(),images:z49.array(z49.string()).optional(),html:z49.string().optional(),warning:z49.string().optional()})),warning:z49.string().optional()}),FirecrawlMonitorScheduleOutputSchema=z49.object({cron:z49.string().optional(),text:z49.string().optional(),timezone:z49.string().optional()}).passthrough(),FirecrawlMonitorTargetOutputSchema=z49.object({id:z49.string().optional(),type:z49.enum(["scrape","crawl","search"]).optional(),urls:z49.array(z49.string()).optional(),queries:z49.array(z49.string()).optional(),searchWindow:z49.string().optional(),maxResults:z49.number().optional(),includeDomains:z49.array(z49.string()).optional(),excludeDomains:z49.array(z49.string()).optional(),scrapeOptions:z49.record(z49.string(),z49.unknown()).optional()}).passthrough(),FirecrawlMonitorOutputSchema=z49.object({id:z49.string(),name:z49.string(),status:z49.string().optional(),schedule:FirecrawlMonitorScheduleOutputSchema.optional(),nextRunAt:z49.string().nullable().optional(),lastRunAt:z49.string().nullable().optional(),currentCheckId:z49.string().nullable().optional(),targets:z49.array(FirecrawlMonitorTargetOutputSchema).optional(),goal:z49.string().nullable().optional(),judgeEnabled:z49.boolean().optional(),estimatedCreditsPerMonth:z49.number().optional(),createdAt:z49.string().optional(),updatedAt:z49.string().optional()}).passthrough(),FirecrawlMonitorCheckOutputSchema=z49.object({id:z49.string(),monitorId:z49.string(),scheduledFor:z49.string().nullable().optional(),startedAt:z49.string().nullable().optional(),finishedAt:z49.string().nullable().optional(),estimatedCredits:z49.number().nullable().optional(),reservedCredits:z49.number().nullable().optional(),actualCredits:z49.number().nullable().optional(),billingStatus:z49.string().nullable().optional(),summary:z49.object({totalPages:z49.number().optional(),same:z49.number().optional(),changed:z49.number().optional(),new:z49.number().optional(),removed:z49.number().optional(),error:z49.number().optional()}).passthrough().optional(),error:z49.string().nullable().optional(),createdAt:z49.string().optional(),updatedAt:z49.string().optional()}).passthrough(),FirecrawlMonitorListToolOutputSchema=z49.object({provider:z49.literal("firecrawl"),monitors:z49.array(FirecrawlMonitorOutputSchema)}),FirecrawlMonitorDetailToolOutputSchema=z49.object({provider:z49.literal("firecrawl"),monitor:FirecrawlMonitorOutputSchema}),FirecrawlMonitorDeleteToolOutputSchema=z49.object({provider:z49.literal("firecrawl"),monitorId:z49.string(),deleted:z49.boolean()}),FirecrawlMonitorChecksToolOutputSchema=z49.object({provider:z49.literal("firecrawl"),monitorId:z49.string(),checks:z49.array(FirecrawlMonitorCheckOutputSchema)}),FirecrawlMonitorCheckDetailToolOutputSchema=z49.object({provider:z49.literal("firecrawl"),monitorId:z49.string(),check:FirecrawlMonitorCheckOutputSchema,next:z49.string().optional()}),FirecrawlToolKeySchema=z49.enum(["search","developer.search","research.search","research.paper","research.related","scrape","map","crawl","monitor.create","monitor.update","monitor.list","monitor.get","monitor.pause","monitor.resume","monitor.delete","monitor.run","monitor.checks","monitor.check"]),FirecrawlToolOutputSchema=z49.union([FirecrawlSearchToolOutputSchema,FirecrawlDeveloperSearchToolOutputSchema,FirecrawlResearchSearchToolOutputSchema,FirecrawlResearchPaperToolOutputSchema,FirecrawlResearchRelatedToolOutputSchema,FirecrawlMapToolOutputSchema,FirecrawlCrawlToolOutputSchema,FirecrawlScrapeToolOutputSchema,FirecrawlMonitorListToolOutputSchema,FirecrawlMonitorDetailToolOutputSchema,FirecrawlMonitorDeleteToolOutputSchema,FirecrawlMonitorChecksToolOutputSchema,FirecrawlMonitorCheckDetailToolOutputSchema]),ProjectIntegrationToolRunBaseSchema=z49.object({projectId:z49.uuid(),integrationKey:z49.string().min(1),tool:z49.string().min(1),connectionAlias:z49.string().min(1).nullable().optional(),output:z49.record(z49.string(),z49.unknown()),executedAt:z49.coerce.date()}),ProjectIntegrationToolRunDTOSchema=z49.discriminatedUnion("authMode",[ProjectIntegrationToolRunBaseSchema.extend({authMode:z49.literal("fimo"),billing:ProjectIntegrationToolRunBillingSchema,usage:z49.undefined().optional()}),ProjectIntegrationToolRunBaseSchema.extend({authMode:z49.literal("personal"),usage:ProjectIntegrationToolRunUsageSchema.optional(),billing:z49.undefined().optional()}),ProjectIntegrationToolRunBaseSchema.extend({authMode:z49.literal("oauth"),usage:ProjectIntegrationToolRunUsageSchema.optional(),billing:z49.undefined().optional()})]),ProjectIntegrationToolRunDTO=createDTO(ProjectIntegrationToolRunDTOSchema),IntegrationsListResponseSchema=createResponseSchema(z49.array(ProjectIntegrationStatusDTOSchema)),IntegrationInfoResponseSchema=createResponseSchema(IntegrationInfoDTOSchema),ProjectIntegrationStatusResponseSchema=createResponseSchema(ProjectIntegrationStatusDTOSchema),ProjectIntegrationInstallationResponseSchema=createResponseSchema(ProjectIntegrationInstallationDTOSchema),ProjectIntegrationToolRunResponseSchema=createResponseSchema(ProjectIntegrationToolRunDTOSchema),StartProjectIntegrationConnectResponseResponseSchema=createResponseSchema(StartProjectIntegrationConnectResponseSchema),OrganizationIntegrationConnectionResponseSchema=createResponseSchema(OrganizationIntegrationConnectionDTOSchema),ProjectIntegrationConnectionsResponseSchema=createResponseSchema(z49.array(ProjectIntegrationConnectionDTOSchema)),ProjectIntegrationConnectResponseResponseSchema=createResponseSchema(ProjectIntegrationConnectResponseSchema),AddProjectMcpIntegrationResponseResponseSchema=createResponseSchema(AddProjectMcpIntegrationResponseSchema),ReusableMcpServersResponseSchema=createResponseSchema(z49.array(ReusableMcpServerDTOSchema)),ProjectChannelBindingResponseSchema=createResponseSchema(ProjectChannelBindingDTOSchema),ProjectChannelBindingsResponseSchema=createResponseSchema(z49.array(ProjectChannelBindingDTOSchema)),ProjectChannelCandidatesResponseSchema=createResponseSchema(z49.array(ProjectChannelCandidateDTOSchema))}});import{z as z50}from"zod";var IntegrationIdSchema,IntegrationScopeSchema,IntegrationOAuthSchema,IntegrationApiKeySchema,IntegrationProviderAuthSchema,IntegrationMcpAuthSchema,IntegrationAuthSchema,IntegrationRecipeSchema,IntegrationSettingSchema,IntegrationToolsSchema,IntegrationSkillSchema,IntegrationManifestSchema,IntegrationPermissionDTOSchema,IntegrationSettingDefinitionDTOSchema,IntegrationKindSchema,IntegrationSummaryDTOSchema,IntegrationAccountDTOSchema,IntegrationSiteDTOSchema,OrganizationIntegrationDTOSchema,ProjectIntegrationDTOSchema,IntegrationReturnPathSchema,StartIntegrationInstallRequestSchema,StartIntegrationInstallDTOSchema,AddOrganizationMcpServerDTOSchema,ConnectIntegrationKeyRequestSchema,ReplaceIntegrationServerCredentialsRequestSchema,UpdateIntegrationSiteRequestSchema,UpdateIntegrationSitesRequestSchema,UpdateProjectIntegrationSettingsRequestSchema,IntegrationSettingOptionDTOSchema,IntegrationToolMatchDTOSchema,ProjectIntegrationGuideDTOSchema,APPROVAL_TOKEN_MAX,REQUEST_TOKEN_MAX,RunIntegrationToolRequestSchema,IntegrationApprovalCallShape,IntegrationToolRunResultDTOSchema,IntegrationApprovalPreviewRequestSchema,IntegrationApprovalPreviewDTOSchema,RoutineIntegrationApprovalSchema,IntegrationApprovalDecisionSchema,DecideIntegrationApprovalRequestSchema,IntegrationApprovalDecisionDTOSchema,IntegrationAgentAccessDTOSchema,init_integration_catalog_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/integration-catalog.dto.js"(){"use strict";init_integration_dto();IntegrationIdSchema=z50.string().min(2).max(80).regex(/^[a-z0-9][a-z0-9-]*$/,"App ids use lowercase letters, digits and dashes."),IntegrationScopeSchema=z50.strictObject({scope:z50.string().min(1),reason:z50.string().min(1).max(200)}),IntegrationOAuthSchema=z50.strictObject({id:z50.string().min(1).max(40),label:z50.string().min(1).max(80),kind:z50.literal("oauth"),actor:z50.literal("user").default("user"),authorizationUrl:z50.url(),tokenUrl:z50.url(),revocationUrl:z50.url().optional(),userInfoUrl:z50.url().optional(),client:z50.strictObject({idEnv:z50.string().min(1),secretEnv:z50.string().min(1)}),authorizeParams:z50.record(z50.string(),z50.string()).default({}),scopes:z50.array(IntegrationScopeSchema).min(1)}),IntegrationApiKeySchema=z50.strictObject({id:z50.string().min(1).max(40),label:z50.string().min(1).max(80),kind:z50.literal("apiKey"),keyLabel:z50.string().min(1).max(80),placeholder:z50.string().min(1).max(40).optional(),helpUrl:z50.url()}),IntegrationProviderAuthSchema=z50.strictObject({id:z50.string().min(1).max(40),label:z50.string().min(1).max(80),kind:z50.literal("provider")}),IntegrationMcpAuthSchema=z50.strictObject({id:z50.string().min(1).max(40),label:z50.string().min(1).max(80),kind:z50.literal("mcp"),methods:z50.array(McpIntegrationSetupAuthSchema).min(1),scopes:z50.array(z50.string().min(1)).min(1).optional(),header:z50.object({name:z50.string().min(1).max(80),valuePrefix:z50.string().max(80)}).optional()}),IntegrationAuthSchema=z50.discriminatedUnion("kind",[IntegrationOAuthSchema,IntegrationApiKeySchema,IntegrationProviderAuthSchema,IntegrationMcpAuthSchema]),IntegrationRecipeSchema=z50.strictObject({title:z50.string().min(1).max(80),description:z50.string().min(1).max(300),command:z50.string().min(1).optional()}),IntegrationSettingSchema=z50.strictObject({type:z50.enum(["string","choice"]),label:z50.string().min(1).max(80),description:z50.string().min(1).max(300).optional(),required:z50.boolean().default(!1),optionsFrom:z50.strictObject({tool:z50.string().min(1)}).optional()}),IntegrationToolsSchema=z50.discriminatedUnion("source",[z50.strictObject({source:z50.literal("hosted")}),z50.strictObject({source:z50.literal("mcp"),url:z50.url()})]),IntegrationSkillSchema=z50.strictObject({name:z50.string().min(1).max(64),description:z50.string().min(1).max(300),content:z50.string().min(1)}),IntegrationManifestSchema=z50.strictObject({apiVersion:z50.literal(1),id:IntegrationIdSchema,version:z50.string().regex(/^\d+\.\d+\.\d+$/),listing:z50.strictObject({name:z50.string().min(1).max(60),description:z50.string().min(1).max(200),details:z50.string().min(1).max(1e3),icon:z50.string().min(1),category:z50.enum(["seo","ai-visibility","analytics","communication"]),publisher:z50.string().min(1).max(60),agentReads:z50.strictObject({label:z50.string().min(1).max(80),description:z50.string().min(1).max(200)}).optional()}),auth:z50.array(IntegrationAuthSchema).min(1),identity:z50.strictObject({label:z50.string().min(1)}).optional(),settings:z50.record(z50.string().regex(/^[a-zA-Z][a-zA-Z0-9]*$/),IntegrationSettingSchema).default({}),tools:IntegrationToolsSchema,skills:z50.array(IntegrationSkillSchema).default([]),recipes:z50.array(IntegrationRecipeSchema).default([])}),IntegrationPermissionDTOSchema=z50.object({scope:z50.string(),reason:z50.string()}),IntegrationSettingDefinitionDTOSchema=z50.object({key:z50.string(),type:z50.enum(["string","choice"]),label:z50.string(),description:z50.string().nullable(),required:z50.boolean(),hasOptions:z50.boolean()}),IntegrationKindSchema=z50.enum(["catalog","custom","builtIn"]),IntegrationSummaryDTOSchema=z50.object({id:z50.string(),kind:IntegrationKindSchema,integrationKey:z50.string(),host:z50.string().nullable(),apiKey:z50.object({label:z50.string(),placeholder:z50.string().nullable(),helpUrl:z50.string(),primary:z50.boolean()}).nullable(),mcp:z50.object({url:z50.string(),methods:z50.array(McpIntegrationSetupAuthSchema),header:z50.object({name:z50.string(),valuePrefix:z50.string()}).nullable()}).nullable(),name:z50.string(),description:z50.string(),details:z50.string(),icon:z50.string(),category:z50.string(),publisher:z50.string(),signInLabel:z50.string(),permissions:z50.array(IntegrationPermissionDTOSchema),readOnly:z50.boolean(),settings:z50.array(IntegrationSettingDefinitionDTOSchema)}),IntegrationAccountDTOSchema=z50.object({connectionId:z50.uuid(),alias:z50.string(),accountName:z50.string().nullable(),status:z50.enum(["active","revoked"]),authKind:z50.enum(["oauth","api_key"]),connectedAt:z50.coerce.date()}),IntegrationSiteDTOSchema=z50.object({projectId:z50.uuid(),projectName:z50.string(),enabled:z50.boolean(),granted:z50.boolean(),connectionId:z50.uuid().nullable(),settings:z50.record(z50.string(),z50.string()),missingSettings:z50.array(z50.string())}),OrganizationIntegrationDTOSchema=IntegrationSummaryDTOSchema.extend({installed:z50.boolean(),accounts:z50.array(IntegrationAccountDTOSchema),siteAccess:z50.enum(["all","selected"]),sites:z50.array(IntegrationSiteDTOSchema)}),ProjectIntegrationDTOSchema=IntegrationSummaryDTOSchema.extend({installed:z50.boolean(),enabled:z50.boolean(),granted:z50.boolean(),accountName:z50.string().nullable(),settingsValues:z50.record(z50.string(),z50.string()),missingSettings:z50.array(z50.string()),tools:z50.array(z50.object({key:z50.string(),name:z50.string(),description:z50.string(),effect:IntegrationToolEffectSchema}))}),IntegrationReturnPathSchema=z50.string().min(1).max(500).refine(value=>value.startsWith("/app/")&&!value.startsWith("//"),"Return path must be inside the Fimo app."),StartIntegrationInstallRequestSchema=z50.object({projectId:z50.uuid().optional(),returnTo:IntegrationReturnPathSchema.optional()}),StartIntegrationInstallDTOSchema=z50.object({connectUrl:z50.url().nullable(),expiresAt:z50.coerce.date().nullable()}),AddOrganizationMcpServerDTOSchema=StartIntegrationInstallDTOSchema.extend({integrationId:z50.string()}),ConnectIntegrationKeyRequestSchema=z50.object({key:z50.string().trim().min(1).max(500),projectId:z50.uuid().optional()}),ReplaceIntegrationServerCredentialsRequestSchema=z50.object({token:z50.string().min(1).max(8e3).optional(),secrets:McpSecretMapSchema.optional()}).refine(value=>!!value.token!=!!value.secrets,"Send either a token or the header values."),UpdateIntegrationSiteRequestSchema=z50.object({enabled:z50.boolean(),connectionId:z50.uuid().optional()}),UpdateIntegrationSitesRequestSchema=z50.object({access:z50.enum(["all","selected"]).optional(),projectIds:z50.array(z50.uuid()).max(1e3),connectionId:z50.uuid().optional()}),UpdateProjectIntegrationSettingsRequestSchema=z50.object({settings:z50.record(z50.string(),z50.string().max(500))}),IntegrationSettingOptionDTOSchema=z50.object({value:z50.string(),label:z50.string(),suggested:z50.boolean()}),IntegrationToolMatchDTOSchema=z50.object({integrationId:z50.string(),integrationName:z50.string(),key:z50.string(),name:z50.string(),description:z50.string(),effect:IntegrationToolEffectSchema,input:z50.record(z50.string(),z50.unknown())}),ProjectIntegrationGuideDTOSchema=z50.object({integrationId:z50.string(),name:z50.string(),description:z50.string(),content:z50.string()}),APPROVAL_TOKEN_MAX=4e3,REQUEST_TOKEN_MAX=32e3,RunIntegrationToolRequestSchema=z50.object({tool:z50.string().min(1).max(120),input:z50.record(z50.string(),z50.unknown()).default({}),approval:z50.string().min(1).max(APPROVAL_TOKEN_MAX).optional(),readOnly:z50.boolean().optional()}),IntegrationApprovalCallShape={integration:z50.object({id:z50.string(),name:z50.string()}),tool:z50.object({key:z50.string(),name:z50.string(),effect:IntegrationToolEffectSchema}),input:z50.record(z50.string(),z50.unknown()),reason:z50.string(),canAlwaysAllow:z50.boolean()},IntegrationToolRunResultDTOSchema=z50.discriminatedUnion("status",[z50.object({status:z50.literal("ok"),output:z50.record(z50.string(),z50.unknown())}),z50.object({status:z50.literal("approval_required"),request:z50.string(),approveUrl:z50.string(),...IntegrationApprovalCallShape}),z50.object({status:z50.literal("blocked"),reason:z50.string()})]),IntegrationApprovalPreviewRequestSchema=z50.object({request:z50.string().min(1).max(REQUEST_TOKEN_MAX)}),IntegrationApprovalPreviewDTOSchema=z50.object({...IntegrationApprovalCallShape,allowOnce:z50.boolean(),expiresAt:z50.coerce.date()}),RoutineIntegrationApprovalSchema=IntegrationApprovalPreviewDTOSchema.pick({integration:!0,tool:!0,reason:!0,canAlwaysAllow:!0,allowOnce:!0}).extend({request:z50.string()}),IntegrationApprovalDecisionSchema=z50.enum(["allow","always","decline"]),DecideIntegrationApprovalRequestSchema=z50.object({request:z50.string().min(1).max(REQUEST_TOKEN_MAX),decision:IntegrationApprovalDecisionSchema}),IntegrationApprovalDecisionDTOSchema=z50.object({decision:IntegrationApprovalDecisionSchema,approval:z50.string().optional(),resumed:z50.boolean().optional()}),IntegrationAgentAccessDTOSchema=z50.object({reads:z50.object({label:z50.string(),description:z50.string()}).nullable(),tools:z50.array(z50.object({tool:z50.string(),label:z50.string(),description:z50.string(),allowed:z50.boolean()}))})}});import{z as z51}from"zod";var SCHEDULE_NOTIFICATION_TOPICS,ScheduleNotificationTopicSchema,USER_MANAGED_NOTIFICATION_TOPICS,UserManagedNotificationTopicSchema,MAX_SCHEDULE_SUBSCRIBERS,ScheduleSubscriberDeliveryStateSchema,ScheduleSubscriberCandidateSchema,ScheduleNotificationSettingsSchema,ScheduleNotificationSettingsResponseSchema,UpdateScheduleSubscribersRequestSchema,UserNotificationPreferenceSchema,SCHEDULE_OPT_OUT_LINK_ACTIONS,ScheduleOptOutLinkActionSchema,SCHEDULE_OPT_OUT_ACTIONS,ScheduleOptOutActionSchema,ScheduleOptOutStateSchema,ScheduleOptOutResponseSchema,FollowedScheduleSchema,FollowedSchedulesSchema,FollowedSchedulesResponseSchema,init_schedule_notifications_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/schedule-notifications.dto.js"(){"use strict";init_response();SCHEDULE_NOTIFICATION_TOPICS=["schedule_health","schedule_compute_allowance"],ScheduleNotificationTopicSchema=z51.enum(SCHEDULE_NOTIFICATION_TOPICS),USER_MANAGED_NOTIFICATION_TOPICS=["schedule_health","schedule_compute_allowance","agent_runtime_allowance"],UserManagedNotificationTopicSchema=z51.enum(USER_MANAGED_NOTIFICATION_TOPICS),MAX_SCHEDULE_SUBSCRIBERS=5,ScheduleSubscriberDeliveryStateSchema=z51.enum(["deliverable","suppressed"]),ScheduleSubscriberCandidateSchema=z51.object({userId:z51.string().min(1),name:z51.string(),email:z51.string().min(1),subscribed:z51.boolean(),deliveryState:ScheduleSubscriberDeliveryStateSchema}),ScheduleNotificationSettingsSchema=z51.object({maxSubscribers:z51.number().int().positive(),subscriberCount:z51.number().int().nonnegative(),effectiveRecipientCount:z51.number().int().nonnegative(),currentUserSubscribed:z51.boolean(),candidates:z51.array(ScheduleSubscriberCandidateSchema).optional()}),ScheduleNotificationSettingsResponseSchema=createResponseSchema(ScheduleNotificationSettingsSchema),UpdateScheduleSubscribersRequestSchema=z51.object({userIds:z51.array(z51.string().min(1)).max(MAX_SCHEDULE_SUBSCRIBERS).refine(userIds=>new Set(userIds).size===userIds.length,"Follower ids must be unique.")}),UserNotificationPreferenceSchema=z51.object({topic:UserManagedNotificationTopicSchema,enabled:z51.boolean(),source:z51.enum(["default","explicit"])}),SCHEDULE_OPT_OUT_LINK_ACTIONS=["unfollow_schedule","disable_topic"],ScheduleOptOutLinkActionSchema=z51.enum(SCHEDULE_OPT_OUT_LINK_ACTIONS),SCHEDULE_OPT_OUT_ACTIONS=["unfollow_schedule","unfollow_all_schedules","disable_topic"],ScheduleOptOutActionSchema=z51.enum(SCHEDULE_OPT_OUT_ACTIONS),ScheduleOptOutStateSchema=z51.object({action:ScheduleOptOutActionSchema,topic:ScheduleNotificationTopicSchema,scheduleName:z51.string().nullable(),maskedEmail:z51.string().min(1),applied:z51.boolean(),expiresAt:z51.coerce.date()}),ScheduleOptOutResponseSchema=createResponseSchema(ScheduleOptOutStateSchema),FollowedScheduleSchema=z51.object({scheduleId:z51.string().min(1),scheduleName:z51.string(),projectId:z51.string().min(1),projectName:z51.string(),env:z51.string().min(1)}),FollowedSchedulesSchema=z51.object({schedules:z51.array(FollowedScheduleSchema)}),FollowedSchedulesResponseSchema=createResponseSchema(FollowedSchedulesSchema)}});import{z as z52}from"zod";var PROJECT_SECRET_KEY_PATTERN,PUBLIC_PROJECT_SECRET_PREFIX_PATTERN,RESERVED_PROJECT_SECRET_KEYS,ProjectSecretKeySchema,ProjectScheduleStatusSchema,ProjectScheduleDTOSchema,ProjectScheduleDTO,CreateProjectScheduleRequestSchema,UpdateProjectScheduleRequestSchema,ProjectScheduleRunStatusSchema,ProjectScheduleRunTriggerSchema,ProjectScheduleRunSecretSnapshotStateSchema,ProjectScheduleRunSecretResolutionSchema,ProjectSchedulePolicySchema,SchedulePolicyStateSchema,ProjectSchedulePlanSnapshotSchema,ProjectScheduleUsageSchema,ProjectScheduleRunDTOSchema,ProjectScheduleRunDTO,ProjectScheduleRunSecretSnapshotSchema,ProjectScheduleRunDetailDTOSchema,ProjectScheduleRunDetailDTO,RunProjectScheduleRequestSchema,ProjectScheduleRunsQuerySchema,ProjectScheduleResponseSchema,ProjectSchedulesListDataSchema,ProjectSchedulesListResponseSchema,ProjectSchedulesOverviewResponseSchema,ProjectScheduleDetailDataSchema,ProjectScheduleDetailResponseSchema,ProjectScheduleRunsPageSchema,ProjectScheduleRunsResponseSchema,ProjectScheduleRunResponseSchema,ProjectScheduleRunDetailResponseSchema,init_schedule_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/schedule.dto.js"(){"use strict";init_common();init_env();init_create_dto();init_response();init_schedule_notifications_dto();PROJECT_SECRET_KEY_PATTERN=/^[A-Z_][A-Z0-9_]*$/,PUBLIC_PROJECT_SECRET_PREFIX_PATTERN=/^(PUBLIC_|VITE_|NEXT_PUBLIC_|NUXT_PUBLIC_)/,RESERVED_PROJECT_SECRET_KEYS=new Set([...FIMO_MANAGED_PROJECT_ENV_KEYS,"FIMO_SCHEDULE_ID","FIMO_SCHEDULE_RUN_ID","FIMO_SCHEDULE_NAME"]),ProjectSecretKeySchema=z52.string().min(1).max(255).superRefine((key,context)=>{PROJECT_SECRET_KEY_PATTERN.test(key)?RESERVED_PROJECT_SECRET_KEYS.has(key)?context.addIssue({code:"custom",message:`Secret key '${key}' is managed by Fimo and cannot be stored in project secrets.`}):PUBLIC_PROJECT_SECRET_PREFIX_PATTERN.test(key)&&context.addIssue({code:"custom",message:`Secret key '${key}' uses a public variable prefix. Store public values with fimo vars instead.`}):context.addIssue({code:"custom",message:`Secret key '${key}' must be UPPER_SNAKE_CASE.`})}),ProjectScheduleStatusSchema=z52.enum(["ok","failed"]),ProjectScheduleDTOSchema=BaseEntitySchema.extend({projectId:z52.uuid(),env:z52.string().min(1),name:z52.string().min(1),cron:z52.string().min(1),command:z52.string().min(1),secretKeys:z52.array(z52.string().min(1)),enabled:z52.boolean(),lastRunAt:z52.coerce.date().nullable(),lastStatus:ProjectScheduleStatusSchema.nullable(),lastError:z52.string().nullable(),suspendedAt:z52.coerce.date().nullable().optional(),suspensionReason:z52.string().nullable().optional(),overPolicyReasons:z52.array(z52.string()).optional()}),ProjectScheduleDTO=createDTO(ProjectScheduleDTOSchema),CreateProjectScheduleRequestSchema=z52.object({name:z52.string().min(1).max(120),cron:z52.string().min(1).max(120),command:z52.string().min(1).max(500),secretKeys:z52.array(ProjectSecretKeySchema).default([]),enabled:z52.boolean().optional()}),UpdateProjectScheduleRequestSchema=z52.object({name:z52.string().min(1).max(120).optional(),cron:z52.string().min(1).max(120).optional(),command:z52.string().min(1).max(500).optional(),secretKeys:z52.array(ProjectSecretKeySchema).optional()}).refine(request=>Object.keys(request).length>0,"Pass at least one schedule field to update."),ProjectScheduleRunStatusSchema=z52.enum(["queued","running","succeeded","failed","skipped"]),ProjectScheduleRunTriggerSchema=z52.enum(["cron","ui","cli"]),ProjectScheduleRunSecretSnapshotStateSchema=z52.enum(["pending","resolved","failed"]),ProjectScheduleRunSecretResolutionSchema=z52.enum(["resolved","missing","deleted","recreated","rotated"]),ProjectSchedulePolicySchema=z52.object({maxRuns:z52.number().int().positive(),retentionDays:z52.number().int().positive().nullable(),outputRetentionDays:z52.number().int().positive(),maxOutputBytes:z52.number().int().positive()}),SchedulePolicyStateSchema=z52.enum(["ok","near_limit","exhausted","over_policy"]),ProjectSchedulePlanSnapshotSchema=z52.object({code:z52.enum(["Free","PAYG","Starter","Premium","Pro"]),source:z52.enum(["cached_subscription","free_fallback"]),activeSchedules:z52.object({used:z52.number().int().nonnegative(),limit:z52.number().int().nonnegative()}),minCadenceMinutes:z52.number().int().positive(),maxRunMs:z52.number().int().positive(),concurrency:z52.object({used:z52.number().int().nonnegative(),limit:z52.number().int().positive()}),compute:z52.object({settledMs:z52.number().int().nonnegative(),activeMs:z52.number().int().nonnegative(),reservedMs:z52.number().int().nonnegative().optional(),includedMs:z52.number().int().nonnegative(),remainingMs:z52.number().int().nonnegative(),resetsAt:z52.coerce.date()}),upgrade:z52.object({code:z52.literal("Pro"),activeSchedulesLimit:z52.number().int().positive(),minCadenceMinutes:z52.number().int().positive(),maxRunMs:z52.number().int().positive(),maxConcurrentRuns:z52.number().int().positive(),computeIncludedMs:z52.number().int().positive()}).optional(),state:SchedulePolicyStateSchema,overPolicyReasons:z52.array(z52.string())}),ProjectScheduleUsageSchema=z52.object({runCount:z52.number().int().nonnegative(),runsWithOutput:z52.number().int().nonnegative()}),ProjectScheduleRunDTOSchema=z52.object({id:z52.uuid(),scheduleId:z52.uuid(),projectId:z52.uuid(),env:z52.string().min(1),scheduleName:z52.string().min(1),command:z52.string().min(1),status:ProjectScheduleRunStatusSchema,trigger:ProjectScheduleRunTriggerSchema,triggeredBy:z52.object({id:z52.string().min(1),name:z52.string().min(1)}).nullable(),queuedAt:z52.coerce.date(),startedAt:z52.coerce.date().nullable(),finishedAt:z52.coerce.date().nullable(),exitCode:z52.number().int().nullable(),errorCode:z52.string().nullable(),error:z52.string().nullable(),outputBytes:z52.number().int().nonnegative(),outputTruncated:z52.boolean(),outputExpiresAt:z52.coerce.date().nullable(),metadataExpiresAt:z52.coerce.date().nullable()}),ProjectScheduleRunDTO=createDTO(ProjectScheduleRunDTOSchema),ProjectScheduleRunSecretSnapshotSchema=z52.object({state:ProjectScheduleRunSecretSnapshotStateSchema,capturedAt:z52.coerce.date().nullable(),items:z52.array(z52.object({key:z52.string().min(1),updatedAt:z52.coerce.date().nullable(),resolution:ProjectScheduleRunSecretResolutionSchema}))}),ProjectScheduleRunDetailDTOSchema=ProjectScheduleRunDTOSchema.extend({output:z52.string().nullable(),secretSnapshot:ProjectScheduleRunSecretSnapshotSchema}),ProjectScheduleRunDetailDTO=createDTO(ProjectScheduleRunDetailDTOSchema),RunProjectScheduleRequestSchema=z52.object({trigger:z52.enum(["ui","cli"])}),ProjectScheduleRunsQuerySchema=z52.object({limit:z52.coerce.number().int().min(1).max(100).default(25),cursor:z52.string().trim().min(1).optional(),status:ProjectScheduleRunStatusSchema.optional()}),ProjectScheduleResponseSchema=createResponseSchema(ProjectScheduleDTOSchema),ProjectSchedulesListDataSchema=z52.object({items:z52.array(ProjectScheduleDTOSchema),usage:ProjectScheduleUsageSchema,policy:ProjectSchedulePolicySchema,plan:ProjectSchedulePlanSnapshotSchema}),ProjectSchedulesListResponseSchema=createResponseSchema(z52.array(ProjectScheduleDTOSchema)),ProjectSchedulesOverviewResponseSchema=createResponseSchema(ProjectSchedulesListDataSchema),ProjectScheduleDetailDataSchema=z52.object({schedule:ProjectScheduleDTOSchema,usage:ProjectScheduleUsageSchema,policy:ProjectSchedulePolicySchema,plan:ProjectSchedulePlanSnapshotSchema,notifications:ScheduleNotificationSettingsSchema.optional()}),ProjectScheduleDetailResponseSchema=createResponseSchema(ProjectScheduleDetailDataSchema),ProjectScheduleRunsPageSchema=z52.object({items:z52.array(ProjectScheduleRunDTOSchema),nextCursor:z52.string().nullable(),usage:ProjectScheduleUsageSchema,policy:ProjectSchedulePolicySchema,plan:ProjectSchedulePlanSnapshotSchema}),ProjectScheduleRunsResponseSchema=createResponseSchema(ProjectScheduleRunsPageSchema),ProjectScheduleRunResponseSchema=createResponseSchema(ProjectScheduleRunDTOSchema),ProjectScheduleRunDetailResponseSchema=createResponseSchema(ProjectScheduleRunDetailDTOSchema)}});import{z as z53}from"zod";var WORK_NOTIFICATION_TOPICS,WorkNotificationTopicSchema,PUBLICATION_NOTIFICATION_TOPICS,NOTIFICATION_TOPICS,NotificationTopicSchema,NOTIFICATION_DELIVERY_CADENCES,NotificationDeliveryCadenceSchema,NOTIFICATION_CHANNELS,NotificationChannelSchema,NOTIFICATION_ACTOR_KINDS,NotificationActorKindSchema,NotificationActorSchema,NotificationSummarySchema,ReportBriefPayloadSchema,NotificationRunOutcomeSchema,NotificationRetainedReasonSchema,NotificationWorkSessionSchema,NotificationPayloadSchema,NotificationEnvelopeSchema,NotificationDeliveryStateSchema,NotificationDeliverySchema,NotificationPreferenceSchema,init_notification_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/notification.dto.js"(){"use strict";init_agent_report();WORK_NOTIFICATION_TOPICS=["agent_run_outcome","agent_retained_review","agent_conflict"],WorkNotificationTopicSchema=z53.enum(WORK_NOTIFICATION_TOPICS),PUBLICATION_NOTIFICATION_TOPICS=["publication_failed"],NOTIFICATION_TOPICS=[...WORK_NOTIFICATION_TOPICS,...PUBLICATION_NOTIFICATION_TOPICS,"database_quota_exceeded"],NotificationTopicSchema=z53.enum(NOTIFICATION_TOPICS),NOTIFICATION_DELIVERY_CADENCES=["immediate","daily","off"],NotificationDeliveryCadenceSchema=z53.enum(NOTIFICATION_DELIVERY_CADENCES),NOTIFICATION_CHANNELS=["email"],NotificationChannelSchema=z53.enum(NOTIFICATION_CHANNELS),NOTIFICATION_ACTOR_KINDS=["user","agent","system"],NotificationActorKindSchema=z53.enum(NOTIFICATION_ACTOR_KINDS),NotificationActorSchema=z53.discriminatedUnion("kind",[z53.object({kind:z53.literal("user"),userId:z53.string().min(1)}).strict(),z53.object({kind:z53.literal("agent"),agentKey:z53.string().min(1).max(120),agentId:z53.uuid().optional()}).strict(),z53.object({kind:z53.literal("system")}).strict()]),NotificationSummarySchema=z53.string().trim().min(1).max(1200),ReportBriefPayloadSchema={title:z53.string().trim().min(1).max(120).optional(),brief:StoredReportBriefSchema.optional()},NotificationRunOutcomeSchema=z53.enum(["completed","failed","cancelled"]),NotificationRetainedReasonSchema=z53.enum(["review","agent_requested","recovery"]),NotificationWorkSessionSchema=z53.object({sessionId:z53.uuid(),branch:z53.string().min(1),targetBranch:z53.string().min(1),revision:z53.string().min(1),fingerprint:z53.string().min(1)}),NotificationPayloadSchema=z53.discriminatedUnion("topic",[z53.object({topic:z53.literal("database_quota_exceeded"),incidentId:z53.uuid(),observedAt:z53.iso.datetime()}).strict(),z53.object({topic:z53.literal("agent_run_outcome"),threadId:z53.uuid(),invocationId:z53.uuid(),outcome:NotificationRunOutcomeSchema,summary:NotificationSummarySchema,...ReportBriefPayloadSchema}).strict(),z53.object({topic:z53.literal("agent_retained_review"),threadId:z53.uuid().optional(),invocationId:z53.uuid().optional(),proposalId:z53.uuid().optional(),workSession:NotificationWorkSessionSchema.optional(),reason:NotificationRetainedReasonSchema,summary:NotificationSummarySchema,...ReportBriefPayloadSchema}).strict(),z53.object({topic:z53.literal("agent_conflict"),mergeId:z53.uuid(),threadId:z53.uuid().optional(),invocationId:z53.uuid().optional(),summary:NotificationSummarySchema.optional(),...ReportBriefPayloadSchema}).strict(),z53.object({topic:z53.literal("publication_failed"),publicationId:z53.uuid(),sourceBranch:z53.string().trim().min(1).max(120),failureCode:z53.string().trim().min(1).max(64),failedAt:z53.iso.datetime(),firstPublication:z53.boolean()}).strict()]),NotificationEnvelopeSchema=z53.object({id:z53.uuid(),projectId:z53.uuid(),sourceKey:z53.string().min(1).max(255),actor:NotificationActorSchema,payloadVersion:z53.literal(1),payload:NotificationPayloadSchema,createdAt:z53.coerce.date()}),NotificationDeliveryStateSchema=z53.enum(["pending","deferred","sent","suppressed","failed"]),NotificationDeliverySchema=z53.object({id:z53.uuid(),notificationRecipientId:z53.uuid(),projectId:z53.uuid(),channel:NotificationChannelSchema,state:NotificationDeliveryStateSchema,attemptCount:z53.number().int().nonnegative(),nextAttemptAt:z53.coerce.date().nullable(),lastAttemptAt:z53.coerce.date().nullable(),sentAt:z53.coerce.date().nullable(),failureCode:z53.string().max(80).nullable(),createdAt:z53.coerce.date(),updatedAt:z53.coerce.date()}),NotificationPreferenceSchema=z53.object({topic:WorkNotificationTopicSchema,channel:z53.literal("email"),enabled:z53.boolean(),cadence:NotificationDeliveryCadenceSchema.exclude(["off"]),effectiveCadence:NotificationDeliveryCadenceSchema,source:z53.enum(["default","explicit"])})}});import{z as z54}from"zod";var NOTIFICATION_PREFERENCE_GROUPS,NotificationPreferenceGroupSchema,FIMO_TOGGLE_PREFERENCE_ENTRY_IDS,FimoTogglePreferenceEntryIdSchema,FIMO_DELIVERY_PREFERENCE_ENTRY_IDS,FimoDeliveryPreferenceEntryIdSchema,MARKETING_PREFERENCE_ENTRY_PREFIX,PreferenceSourceSchema,EmailNotificationProviderSyncSchema,EmailNotificationPreferenceSchema,PROVIDER_SUBSCRIPTION_PLACEMENTS,ProviderSubscriptionPlacementSchema,PROVIDER_SUBSCRIPTION_SEMANTIC_IDS,ProviderSubscriptionSemanticIdSchema,NotificationPreferenceEntrySchema,NotificationPreferenceCatalogSchema,NotificationPreferenceCatalogResponseSchema,NotificationPreferenceEntryResponseSchema,UpdateEmailNotificationPreferenceRequestSchema,EmailNotificationPreferenceResponseSchema,UpdateNotificationPreferenceEntryRequestSchema,init_notification_preference_catalog_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/notification-preference-catalog.dto.js"(){"use strict";init_response();init_notification_dto();NOTIFICATION_PREFERENCE_GROUPS=["work_review","publishing","schedule","marketing"],NotificationPreferenceGroupSchema=z54.enum(NOTIFICATION_PREFERENCE_GROUPS),FIMO_TOGGLE_PREFERENCE_ENTRY_IDS=["work_review.agent_conflict","publishing.publication_failed","schedule.schedule_health","schedule.schedule_compute_allowance","schedule.agent_runtime_allowance"],FimoTogglePreferenceEntryIdSchema=z54.enum(FIMO_TOGGLE_PREFERENCE_ENTRY_IDS),FIMO_DELIVERY_PREFERENCE_ENTRY_IDS=["work_review.agent_retained_review","work_review.agent_run_outcome"],FimoDeliveryPreferenceEntryIdSchema=z54.enum(FIMO_DELIVERY_PREFERENCE_ENTRY_IDS),MARKETING_PREFERENCE_ENTRY_PREFIX="marketing.",PreferenceSourceSchema=z54.enum(["default","explicit"]),EmailNotificationProviderSyncSchema=z54.enum(["synced","pending","unavailable"]),EmailNotificationPreferenceSchema=z54.object({enabled:z54.boolean(),source:PreferenceSourceSchema,providerSync:EmailNotificationProviderSyncSchema}).strict(),PROVIDER_SUBSCRIPTION_PLACEMENTS=["reports","product_news"],ProviderSubscriptionPlacementSchema=z54.enum(PROVIDER_SUBSCRIPTION_PLACEMENTS),PROVIDER_SUBSCRIPTION_SEMANTIC_IDS=["weekly_analytics"],ProviderSubscriptionSemanticIdSchema=z54.enum(PROVIDER_SUBSCRIPTION_SEMANTIC_IDS),NotificationPreferenceEntrySchema=z54.discriminatedUnion("kind",[z54.object({kind:z54.literal("toggle"),id:FimoTogglePreferenceEntryIdSchema,group:z54.enum(["work_review","publishing","schedule"]),enabled:z54.boolean(),source:PreferenceSourceSchema}).strict(),z54.object({kind:z54.literal("delivery"),id:FimoDeliveryPreferenceEntryIdSchema,group:z54.literal("work_review"),cadence:NotificationDeliveryCadenceSchema,source:PreferenceSourceSchema}).strict(),z54.object({kind:z54.literal("provider_subscription"),id:z54.string().startsWith(MARKETING_PREFERENCE_ENTRY_PREFIX),group:z54.literal("marketing"),name:z54.string(),description:z54.string().nullable(),placement:ProviderSubscriptionPlacementSchema,semanticId:ProviderSubscriptionSemanticIdSchema.nullable(),enabled:z54.boolean(),source:PreferenceSourceSchema}).strict()]),NotificationPreferenceCatalogSchema=z54.object({email:EmailNotificationPreferenceSchema,entries:z54.array(NotificationPreferenceEntrySchema),unavailableGroups:z54.array(NotificationPreferenceGroupSchema)}),NotificationPreferenceCatalogResponseSchema=createResponseSchema(NotificationPreferenceCatalogSchema),NotificationPreferenceEntryResponseSchema=createResponseSchema(NotificationPreferenceEntrySchema),UpdateEmailNotificationPreferenceRequestSchema=z54.object({enabled:z54.boolean()}).strict(),EmailNotificationPreferenceResponseSchema=createResponseSchema(EmailNotificationPreferenceSchema),UpdateNotificationPreferenceEntryRequestSchema=z54.discriminatedUnion("kind",[z54.object({kind:z54.literal("toggle"),enabled:z54.boolean()}).strict(),z54.object({kind:z54.literal("delivery"),cadence:NotificationDeliveryCadenceSchema}).strict(),z54.object({kind:z54.literal("provider_subscription"),enabled:z54.boolean()}).strict()])}});import{z as z55}from"zod";var DiffRefSchema,InlineSchema,SummaryBlockSchema,EnvDiffSummarySchema,EnvDiffSummaryResultSchema,EnvDiffSummaryResultDTO,EnvDiffSummaryResponseSchema,init_env_diff_summary_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/env-diff-summary.dto.js"(){"use strict";init_create_dto();init_response();init_env_status_dto();DiffRefSchema=z55.object({surface:SurfaceNameSchema,key:z55.string(),label:z55.string()}),InlineSchema=z55.object({text:z55.string(),ref:DiffRefSchema.optional()}),SummaryBlockSchema=z55.discriminatedUnion("type",[z55.object({type:z55.literal("paragraph"),content:z55.array(InlineSchema).max(24)}),z55.object({type:z55.literal("preview"),ref:DiffRefSchema,caption:z55.string().optional()}),z55.object({type:z55.literal("code"),code:z55.string(),lang:z55.string().optional(),caption:z55.string().optional()}),z55.object({type:z55.literal("risk"),level:z55.enum(["warning","error"]),content:z55.array(InlineSchema).max(24)}),z55.object({type:z55.literal("list"),items:z55.array(z55.array(InlineSchema).max(24)).max(8)})]),EnvDiffSummarySchema=z55.object({headline:z55.string(),blocks:z55.array(SummaryBlockSchema).max(15)}),EnvDiffSummaryResultSchema=z55.object({summary:EnvDiffSummarySchema,fingerprint:z55.string(),generatedAt:z55.coerce.date(),cached:z55.boolean().optional(),credits:z55.number().int().nonnegative().optional()}),EnvDiffSummaryResultDTO=createDTO(EnvDiffSummaryResultSchema),EnvDiffSummaryResponseSchema=createResponseSchema(EnvDiffSummaryResultSchema)}});import{z as z56}from"zod";var PROJECT_ANALYTICS_PRESETS,PROJECT_ANALYTICS_GROUP_BY_OPTIONS,ProjectDailyVisitorsDTOSchema,ProjectAnalyticsBreakdownItemDTOSchema,ProjectAnalyticsPageBreakdownItemDTOSchema,ProjectAnalyticsRangeDTOSchema,ProjectAnalyticsAnnotationDTOSchema,PROJECT_ANALYTICS_DEVICE_FILTERS,ProjectPageviewAnalyticsDTOSchema,PROJECT_ANALYTICS_TRACKING_STATES,ProjectAnalyticsTrackingStatusDTOSchema,ProjectPageviewAnalyticsDTO,ProjectAnalyticsTrackingStatusDTO,ProjectAnalyticsAnnotationDTO,init_project_analytics_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-analytics.dto.js"(){"use strict";init_create_dto();PROJECT_ANALYTICS_PRESETS=["today","yesterday","this_week","this_month","last_7_days","last_30_days","last_90_days","last_week","last_month","last_quarter","last_year","custom"],PROJECT_ANALYTICS_GROUP_BY_OPTIONS=["day","week","month","quarter"],ProjectDailyVisitorsDTOSchema=z56.object({date:z56.string(),visitors:z56.number().int().nonnegative()}),ProjectAnalyticsBreakdownItemDTOSchema=z56.object({key:z56.string(),visitors:z56.number().int().nonnegative(),pageviews:z56.number().int().nonnegative()}),ProjectAnalyticsPageBreakdownItemDTOSchema=z56.object({path:z56.string(),pageName:z56.string().nullable().optional(),visitors:z56.number().int().nonnegative(),pageviews:z56.number().int().nonnegative()}),ProjectAnalyticsRangeDTOSchema=z56.object({preset:z56.enum(PROJECT_ANALYTICS_PRESETS),requestedFrom:z56.string(),requestedTo:z56.string(),effectiveFrom:z56.string(),effectiveTo:z56.string(),isRetentionLimited:z56.boolean(),groupBy:z56.enum(PROJECT_ANALYTICS_GROUP_BY_OPTIONS)}),ProjectAnalyticsAnnotationDTOSchema=z56.object({date:z56.string(),content:z56.string(),updatedAt:z56.string(),updatedByUserId:z56.string()}),PROJECT_ANALYTICS_DEVICE_FILTERS=["bot","desktop","mobile","tablet"],ProjectPageviewAnalyticsDTOSchema=z56.object({range:ProjectAnalyticsRangeDTOSchema,deviceFilter:z56.enum(PROJECT_ANALYTICS_DEVICE_FILTERS).nullable(),visitors:z56.number().int().nonnegative(),pageviews:z56.number().int().nonnegative(),botPageviews:z56.number().int().nonnegative(),botVisitors:z56.number().int().nonnegative(),bounceRate:z56.number().min(0).max(100),viewsPerVisit:z56.number().nonnegative(),averageVisitDurationSeconds:z56.number().nonnegative(),visitorsSeries:z56.array(ProjectDailyVisitorsDTOSchema),topPages:z56.array(ProjectAnalyticsPageBreakdownItemDTOSchema),topBrowsers:z56.array(ProjectAnalyticsBreakdownItemDTOSchema),topDevices:z56.array(ProjectAnalyticsBreakdownItemDTOSchema),topBots:z56.array(ProjectAnalyticsBreakdownItemDTOSchema),topAiAssistants:z56.array(ProjectAnalyticsBreakdownItemDTOSchema),topCountries:z56.array(ProjectAnalyticsBreakdownItemDTOSchema),topSources:z56.array(ProjectAnalyticsBreakdownItemDTOSchema),annotations:z56.array(ProjectAnalyticsAnnotationDTOSchema)}),PROJECT_ANALYTICS_TRACKING_STATES=["observed","waiting","unavailable"],ProjectAnalyticsTrackingStatusDTOSchema=z56.object({state:z56.enum(PROJECT_ANALYTICS_TRACKING_STATES),lastEventAt:z56.string().nullable()}),ProjectPageviewAnalyticsDTO=createDTO(ProjectPageviewAnalyticsDTOSchema),ProjectAnalyticsTrackingStatusDTO=createDTO(ProjectAnalyticsTrackingStatusDTOSchema),ProjectAnalyticsAnnotationDTO=createDTO(ProjectAnalyticsAnnotationDTOSchema)}});import{z as z57}from"zod";var ProjectInviteDTOSchema,ProjectInviteDTO,CreatedProjectInviteDTOSchema,CreatedProjectInviteDTO,AcceptedProjectInviteDTOSchema,AcceptedProjectInviteDTO,init_project_invite_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-invite.dto.js"(){"use strict";init_common();init_create_dto();ProjectInviteDTOSchema=z57.object({id:z57.string(),email:z57.email(),roleKey:ProjectRoleKeySchema,status:ProjectInviteStatusSchema,expiresAt:z57.coerce.date(),createdAt:z57.coerce.date(),inviterUserId:z57.string()}),ProjectInviteDTO=createDTO(ProjectInviteDTOSchema),CreatedProjectInviteDTOSchema=z57.object({id:z57.string(),token:z57.string()}),CreatedProjectInviteDTO=createDTO(CreatedProjectInviteDTOSchema),AcceptedProjectInviteDTOSchema=z57.object({success:z57.boolean(),projectId:z57.string().optional()}),AcceptedProjectInviteDTO=createDTO(AcceptedProjectInviteDTOSchema)}});import{z as z58}from"zod";var PublicUserDTOSchema,PublicUserDTO,ReferralCountCTOSchema,ReferralCountCTO,ReferralSummaryCTOSchema,ReferralSummaryCTO,AuthenticatedUserDTOSchema,AuthenticatedUserDTO,AuthenticatedUserResponseSchema,ReferralCountResponseSchema,ReferralSummaryResponseSchema,init_user_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/user.dto.js"(){"use strict";init_create_dto();init_response();PublicUserDTOSchema=z58.object({id:z58.string(),name:z58.string(),image:z58.string().nullable()}),PublicUserDTO=createDTO(PublicUserDTOSchema),ReferralCountCTOSchema=z58.object({count:z58.int()}),ReferralCountCTO=createDTO(ReferralCountCTOSchema),ReferralSummaryCTOSchema=z58.object({counts:z58.object({signed_up:z58.int(),activated:z58.int()}),credits:z58.object({total:z58.int(),earned:z58.int()})}),ReferralSummaryCTO=createDTO(ReferralSummaryCTOSchema),AuthenticatedUserDTOSchema=PublicUserDTOSchema.extend({email:z58.email(),emailVerified:z58.boolean(),createdAt:z58.coerce.date(),updatedAt:z58.coerce.date()}),AuthenticatedUserDTO=createDTO(AuthenticatedUserDTOSchema),AuthenticatedUserResponseSchema=createResponseSchema(AuthenticatedUserDTOSchema),ReferralCountResponseSchema=createResponseSchema(ReferralCountCTOSchema),ReferralSummaryResponseSchema=createResponseSchema(ReferralSummaryCTOSchema)}});import{z as z59}from"zod";var ProjectAccessItemDTOSchema,ProjectAccessItemDTO,PROJECT_PERMISSION_KEYS,ProjectPermissionKeySchema,ProjectPermissionsDTOSchema,ProjectPermissionsDTO,ProjectAccessDTOSchema,ProjectAccessDTO,AccessMutationResponseSchema,InviteAcceptResponseSchema,init_project_access_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-access.dto.js"(){"use strict";init_common();init_create_dto();init_response();init_project_invite_dto();init_user_dto();ProjectAccessItemDTOSchema=z59.object({id:z59.string(),principalType:ProjectPrincipalTypeSchema,principalId:z59.string().nullable(),roleKey:ProjectRoleKeySchema,createdAt:z59.coerce.date(),expiresAt:z59.coerce.date().nullable(),user:PublicUserDTOSchema.nullable(),organizationAdmin:z59.boolean().default(!1)}),ProjectAccessItemDTO=createDTO(ProjectAccessItemDTOSchema),PROJECT_PERMISSION_KEYS=["project:read","project:manage","project:publish","project:unpublish","project:duplicate","project:export","project:import","project:transfer","project:delete","acl:read","acl:grant","member:read","member:change-role","invite:read","invite:send","invite:revoke","asset:read","asset:upload","asset:manage","asset:delete","asset:generate","code:view","code:edit","content:view","knowledge:view","knowledge:edit","content:edit","chat:read","chat:prompt","history:view","history:manage","comment:read","comment:create","comment:delete","branch:create","environment:create","integration:manage","integration:run","sync:github","webhook:read","webhook:manage","schedule:read","schedule:manage","preview:view","realtime:connect","analytics:view","logs:view","domain:manage","agent:run"],ProjectPermissionKeySchema=z59.enum(PROJECT_PERMISSION_KEYS),ProjectPermissionsDTOSchema=z59.object({role:ProjectRoleKeyWithSystemSchema.nullable(),permissions:z59.record(z59.string(),z59.boolean())}),ProjectPermissionsDTO=createDTO(ProjectPermissionsDTOSchema),ProjectAccessDTOSchema=z59.object({access:z59.array(ProjectAccessItemDTOSchema),invites:z59.array(ProjectInviteDTOSchema),organization:z59.object({name:z59.string().nullable(),logo:z59.string().nullable()}).nullable()}),ProjectAccessDTO=createDTO(ProjectAccessDTOSchema),AccessMutationResponseSchema=createResponseSchema(z59.object({success:z59.boolean()})),InviteAcceptResponseSchema=createResponseSchema(z59.object({success:z59.boolean(),projectId:z59.uuid()}))}});import{z as z60}from"zod";var PublicationStateDTOSchema,PublicationStateDTO,init_publication_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/publication.dto.js"(){"use strict";init_common();init_create_dto();PublicationStateDTOSchema=z60.object({publicationStatus:PublicationStatusSchema,appUrl:z60.string().nullable(),lastPublishedAt:z60.string().nullable()}),PublicationStateDTO=createDTO(PublicationStateDTOSchema)}});import{z as z61}from"zod";var BranchHostedPreviewStatusSchema,BranchHostedPreviewSchema,init_hosted_preview_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/hosted-preview.dto.js"(){"use strict";init_env();BranchHostedPreviewStatusSchema=z61.enum(["queued","building","ready","failed"]),BranchHostedPreviewSchema=z61.object({branch:BranchSchema,revision:z61.string().min(1).max(64).nullable(),generation:z61.string().min(1).max(64),status:BranchHostedPreviewStatusSchema,url:z61.url().nullable()})}});import{z as z62}from"zod";var PreviewUpgradeRequiredSchema,PreviewBridgePackageSchema,PreviewBridgeCapabilitySchema,SandboxSessionDTOSchema,SandboxSessionDTO,SandboxSessionResponseSchema,PreviewInstallApprovalTargetSchema,PreviewInstallRepairSchema,SandboxSessionInstallPolicyErrorSchema,PreviewStartFailureSchema,SandboxPullPhaseSchema,SandboxPullFailureCodeSchema,SandboxPullFailureSchema,PreviewInstallPolicyApprovalRequestSchema,PreviewInstallPolicyApprovalEventSchema,init_sandbox_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/sandbox.dto.js"(){"use strict";init_create_dto();init_response();PreviewUpgradeRequiredSchema=z62.object({code:z62.literal("PREVIEW_UPGRADE_REQUIRED"),message:z62.string(),currentVersion:z62.number().int().positive(),targetVersion:z62.literal(4)}),PreviewBridgePackageSchema=z62.object({name:z62.string().min(1),version:z62.string().min(1)}),PreviewBridgeCapabilitySchema=z62.object({integrated:z62.boolean(),packages:z62.array(PreviewBridgePackageSchema)}),SandboxSessionDTOSchema=z62.object({url:z62.url(),expiresAt:z62.iso.datetime().nullable(),source:z62.enum(["sandbox","hosted"]).optional(),previewBridge:PreviewBridgeCapabilitySchema.optional()}),SandboxSessionDTO=createDTO(SandboxSessionDTOSchema),SandboxSessionResponseSchema=createResponseSchema(SandboxSessionDTOSchema),PreviewInstallApprovalTargetSchema=z62.object({name:z62.string().min(1),locator:z62.string().min(1).optional(),source:z62.enum(["registry","tarball","unsupported"])}).refine(target=>target.source==="tarball"==(target.locator!==void 0),{message:"locator is present exactly when source is tarball"}),PreviewInstallRepairSchema=z62.object({kind:z62.literal("dependency_build_scripts_blocked"),packageManager:z62.enum(["pnpm","yarn","bun"]),packages:z62.array(z62.string()),targets:z62.array(PreviewInstallApprovalTargetSchema).optional(),configFile:z62.string(),approvalKey:z62.string(),command:z62.string().optional(),approval:z62.object({id:z62.uuid()}).optional()}),SandboxSessionInstallPolicyErrorSchema=z62.object({code:z62.literal("PREVIEW_INSTALL_POLICY_BLOCKED"),message:z62.string(),repair:PreviewInstallRepairSchema}),PreviewStartFailureSchema=z62.object({code:z62.literal("PREVIEW_START_FAILED"),message:z62.string(),logTail:z62.array(z62.string()).optional(),logTailTruncated:z62.boolean().optional()}),SandboxPullPhaseSchema=z62.enum(["acquire","pull","sync-env","install","restart","readiness"]),SandboxPullFailureCodeSchema=z62.enum(["sync_failed","readiness_failed","install_policy_blocked"]),SandboxPullFailureSchema=z62.object({message:z62.string(),code:SandboxPullFailureCodeSchema.optional().catch(void 0),phase:SandboxPullPhaseSchema.optional().catch(void 0),exitCode:z62.number().int().optional().catch(void 0),logTail:z62.array(z62.string()).optional().catch(void 0),logTailTruncated:z62.boolean().optional().catch(void 0),repair:PreviewInstallRepairSchema.optional().catch(void 0)}),PreviewInstallPolicyApprovalRequestSchema=z62.object({approvalId:z62.uuid()}),PreviewInstallPolicyApprovalEventSchema=z62.discriminatedUnion("type",[z62.object({type:z62.literal("progress"),step:z62.enum(["approval","install","restart","readiness"]),message:z62.string()}),z62.object({type:z62.literal("approved")}),z62.object({type:z62.literal("complete")}),z62.object({type:z62.literal("error"),code:z62.enum(["stale_approval","approval_failed","install_failed","restart_failed"]),message:z62.string()})])}});import{z as z63}from"zod";var OrganizationDTOSchema,OrganizationDTO,MemberUserDTOSchema,OrganizationMemberDTOSchema,OrganizationMemberDTO,OrganizationProjectCapacityDTOSchema,OrganizationProjectCapacityDTO,init_organization_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/organization.dto.js"(){"use strict";init_common();init_create_dto();OrganizationDTOSchema=BaseEntitySchema.extend({name:z63.string(),slug:z63.string().nullable(),logo:z63.string().nullable(),metadata:z63.record(z63.string(),z63.unknown()).nullable()}),OrganizationDTO=createDTO(OrganizationDTOSchema),MemberUserDTOSchema=z63.object({id:z63.string(),name:z63.string(),email:z63.email(),image:z63.string().nullable()}),OrganizationMemberDTOSchema=z63.object({id:z63.string(),userId:z63.string(),organizationId:z63.string(),role:OrganizationRoleSchema,user:MemberUserDTOSchema,createdAt:z63.coerce.date()}),OrganizationMemberDTO=createDTO(OrganizationMemberDTOSchema),OrganizationProjectCapacityDTOSchema=z63.object({canCreateProject:z63.boolean()}),OrganizationProjectCapacityDTO=createDTO(OrganizationProjectCapacityDTOSchema)}});import{z as z64}from"zod";var CancellationReasonCodeSchema,CancellationFeedbackDTOSchema,CancellationFeedbackDTO,PlanMigrationAcceptDTOSchema,PlanMigrationPreviewDTOSchema,PlanMigrationPreviewDTO,PlanMigrationStateSchema,PlanMigrationOfferDTOSchema,PlanMigrationOfferDTO,AiCreditsEntitlementSchema,EntitlementsDTOSchema,MediaStorageUsageDTOSchema,MediaStorageUsageDTO,PendingPlanChangeDTOSchema,AutomaticSpendStopDTOSchema,HostingOverageStatusDTOSchema,HostingOverageStatusDTO,UpdateHostingOverageRequestSchema,SubscriptionDTOSchema,SubscriptionDTO,DailyCreditsStatusSchema,CreditBalanceDTOSchema,CreditBalanceDTO,MinimalCreditBalanceDTOSchema,MinimalCreditBalanceDTO,ProjectCreditBucketsDTOSchema,ProjectDailyCreditAllowanceDTOSchema,ProjectCreditBalanceDTOSchema,ProjectCreditBalanceDTO,AutoRefillConfigDTOSchema,AutoRefillConfigDTO,UpdateAutoRefillDTOSchema,OptionalSpendRefusalSchema,CreditPurchasePricingDTOSchema,CreditPurchasePricingDTO,PurchaseCreditsDTOSchema,SuccessfulPurchaseDTOSchema,SuccessfulPurchaseDTO,PortalDTOSchema,PortalDTO,PaymentRecoveryInvoiceDTOSchema,PaymentRecoveryDTOSchema,PaymentRecoveryDTO,CreditBalanceResponseSchema,MinimalCreditBalanceResponseSchema,ProjectCreditBalanceResponseSchema,AutoRefillConfigResponseSchema,CreditPurchasePricingResponseSchema,SuccessfulPurchaseResponseSchema,SubscriptionResponseSchema,EntitlementsResponseSchema,PortalResponseSchema,PaymentRecoveryResponseSchema,init_billing_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/billing.dto.js"(){"use strict";init_common();init_create_dto();init_response();CancellationReasonCodeSchema=z64.enum(["just_testing","too_expensive","not_using_enough","missing_features","bug_or_technical_issue","switching_to_another_tool","closing_or_pausing_business","other"]),CancellationFeedbackDTOSchema=z64.object({reason:CancellationReasonCodeSchema,details:z64.string().trim().max(1e3).nullable().optional().transform(value=>value||null)}).superRefine((value,ctx)=>{value.reason==="other"&&!value.details&&ctx.addIssue({code:z64.ZodIssueCode.custom,message:"Details are required when selecting other.",path:["details"]})}),CancellationFeedbackDTO=createDTO(CancellationFeedbackDTOSchema),PlanMigrationAcceptDTOSchema=z64.object({offerVersion:z64.string().trim().min(1),unusedPremiumCreditAmount:z64.number().int().nonnegative(),amountDueNow:z64.number().int().nonnegative(),renewsOn:z64.string()}),PlanMigrationPreviewDTOSchema=z64.object({currency:z64.string().trim().min(1),unusedPremiumCreditAmount:z64.number().int().nonnegative(),amountDueNow:z64.number().int().nonnegative(),startsAt:z64.string(),renewsAt:z64.string(),nextRenewalAmount:z64.number().int().nonnegative()}),PlanMigrationPreviewDTO=createDTO(PlanMigrationPreviewDTOSchema),PlanMigrationStateSchema=z64.enum(["legacy_active","notified","accepting","accepted","declining","free","expired","canceled"]),PlanMigrationOfferDTOSchema=z64.object({id:z64.string(),organizationId:z64.string(),legacySubscriptionId:z64.string(),offeredPlanCode:z64.string(),offeredPlanName:z64.string(),offeredPriceAmount:z64.number(),offeredCurrency:z64.string(),offerVersion:z64.string(),state:PlanMigrationStateSchema,checkoutToken:z64.string().nullable(),deadlineAt:z64.string(),transitions:z64.array(z64.object({event:z64.string(),fromState:PlanMigrationStateSchema,toState:PlanMigrationStateSchema,createdAt:z64.string()}))}),PlanMigrationOfferDTO=createDTO(PlanMigrationOfferDTOSchema),AiCreditsEntitlementSchema=z64.object({included:z64.number().optional(),unitPrice:z64.number().optional(),dailyCap:z64.number().nullable().optional()}),EntitlementsDTOSchema=z64.object({ai_credits:AiCreditsEntitlementSchema.optional(),analytics:z64.object({retentionDays:z64.number().int().positive(),canUseExtendedDateRanges:z64.boolean()}).optional(),history:z64.object({retentionDays:z64.number().int().positive()}).optional(),members:z64.object({canInvite:z64.boolean(),maxMembers:z64.number().int().positive().nullable()}).optional(),projects:z64.object({maxProjects:z64.number().int().positive().nullable()}).optional(),domains:z64.object({canUseCustomDomains:z64.boolean(),maxDomains:z64.number().int().nonnegative().nullable()}).optional(),media_storage:z64.object({limitBytes:z64.number().int().nonnegative()}).optional()}),MediaStorageUsageDTOSchema=z64.object({usedBytes:z64.number().int().nonnegative().nullable(),limitBytes:z64.number().int().nonnegative().nullable(),state:z64.enum(["ready","unavailable"]),measuredAt:z64.iso.datetime().nullable()}),MediaStorageUsageDTO=createDTO(MediaStorageUsageDTOSchema),PendingPlanChangeDTOSchema=z64.object({toPlanCode:TemplateCodeSchema,effectiveAt:z64.string(),scheduledAt:z64.string().nullable()}),AutomaticSpendStopDTOSchema=z64.object({fromPlanCode:TemplateCodeSchema,toPlanCode:TemplateCodeSchema,cutoffAt:z64.string(),spendStopped:z64.boolean(),settlementEndsAt:z64.string()}),HostingOverageStatusDTOSchema=z64.object({state:z64.enum(["ready","unavailable"]),planCode:z64.string(),overageAvailable:z64.boolean(),overageEnabled:z64.boolean(),monthlyCapUsd:z64.number().int().positive().nullable(),periodStart:z64.iso.datetime().nullable(),periodEnd:z64.iso.datetime().nullable(),usedBytes:z64.number().nonnegative().nullable(),includedBytes:z64.number().nonnegative().nullable(),overageBytes:z64.number().nonnegative(),currentOverageAmountMicros:z64.number().nonnegative().nullable(),totalExtraUsageAmountMicros:z64.number().nonnegative().nullable(),currency:z64.string().nullable(),status:z64.enum(["ok","near_limit","paused"])}),HostingOverageStatusDTO=createDTO(HostingOverageStatusDTOSchema),UpdateHostingOverageRequestSchema=z64.object({enabled:z64.boolean(),monthlyCapUsd:z64.number().int().positive().max(1e6).optional()}).refine(value=>!value.enabled||value.monthlyCapUsd!==void 0,{message:"Enabling extra usage requires a monthly budget"}),SubscriptionDTOSchema=z64.object({id:z64.string(),external_id:z64.string(),customerId:z64.string(),planId:z64.string(),planCode:z64.union([TemplateCodeSchema,z64.literal("Unknown")]),currentPeriod:z64.object({start:z64.string(),end:z64.string().nullable()}),cancelAt:z64.string().nullable(),pendingPlanChange:PendingPlanChangeDTOSchema.nullable(),automaticSpendStop:AutomaticSpendStopDTOSchema.nullable(),entitlements:EntitlementsDTOSchema,currency:z64.string(),nextPaymentAt:z64.string().nullable(),baseAmount:z64.number().nullable()}),SubscriptionDTO=createDTO(SubscriptionDTOSchema),DailyCreditsStatusSchema=z64.object({totalCap:z64.number(),dailyCap:z64.number(),usedTotal:z64.number()}),CreditBalanceDTOSchema=z64.object({total:z64.number(),base:z64.number(),dailyBase:z64.number(),purchases:z64.number(),awards:z64.number(),daily:DailyCreditsStatusSchema.optional()}),CreditBalanceDTO=createDTO(CreditBalanceDTOSchema),MinimalCreditBalanceDTOSchema=z64.object({total:z64.number(),nearLimit:z64.boolean(),canChat:z64.boolean(),daily:DailyCreditsStatusSchema.optional()}),MinimalCreditBalanceDTO=createDTO(MinimalCreditBalanceDTOSchema),ProjectCreditBucketsDTOSchema=z64.object({dailyFreeAvailable:z64.number(),monthlyAvailable:z64.number(),purchasedAvailable:z64.number(),awardedAvailable:z64.number()}),ProjectDailyCreditAllowanceDTOSchema=z64.object({periodCap:z64.number(),dailyGrant:z64.number(),usedThisPeriod:z64.number(),remainingThisPeriod:z64.number()}),ProjectCreditBalanceDTOSchema=z64.object({projectId:z64.uuid(),organizationId:z64.string(),balance:z64.object({totalAvailable:z64.number(),nearLimit:z64.boolean(),canUseAi:z64.boolean(),buckets:ProjectCreditBucketsDTOSchema}),allowances:z64.object({dailyCredits:ProjectDailyCreditAllowanceDTOSchema.nullable()})}),ProjectCreditBalanceDTO=createDTO(ProjectCreditBalanceDTOSchema),AutoRefillConfigDTOSchema=z64.discriminatedUnion("enabled",[z64.object({enabled:z64.literal(!0),thresholdUsd:z64.number().nonnegative(),refillAmountUsd:z64.number().nonnegative()}),z64.object({enabled:z64.literal(!1),thresholdUsd:z64.number().nonnegative().nullable(),refillAmountUsd:z64.null()})]),AutoRefillConfigDTO=createDTO(AutoRefillConfigDTOSchema),UpdateAutoRefillDTOSchema=z64.discriminatedUnion("enabled",[z64.object({enabled:z64.literal(!0),thresholdUsd:z64.number().min(.01).multipleOf(.01),refillAmountUsd:z64.number().min(.01).multipleOf(.01),expectedRateToken:z64.string().trim().min(1).max(40)}).strict(),z64.object({enabled:z64.literal(!1),thresholdUsd:z64.number().min(.01).multipleOf(.01),expectedRateToken:z64.string().trim().min(1).max(40).optional()}).strict()]),OptionalSpendRefusalSchema=z64.enum(["no_subscription","plan_cannot_fund","pending_plan_exit"]),CreditPurchasePricingDTOSchema=z64.object({planCode:z64.union([TemplateCodeSchema,z64.literal("Unknown")]).nullable(),canPurchase:z64.boolean(),refusalReason:OptionalSpendRefusalSchema.nullable(),creditsPerDollar:z64.number().int().positive(),minAmountUsd:z64.number().positive(),maxAmountUsd:z64.number().positive(),rateToken:z64.string().nullable()}),CreditPurchasePricingDTO=createDTO(CreditPurchasePricingDTOSchema),PurchaseCreditsDTOSchema=z64.object({amountUsd:z64.number(),idempotencyKey:z64.string().trim().min(8).max(120),expectedRateToken:z64.string().trim().min(1).max(40)}).strict(),SuccessfulPurchaseDTOSchema=z64.object({invoiceId:z64.string(),newBalance:z64.int(),creditCount:z64.int(),amountUsd:z64.number(),creditsPerDollar:z64.int()}),SuccessfulPurchaseDTO=createDTO(SuccessfulPurchaseDTOSchema),PortalDTOSchema=z64.object({url:z64.string()}),PortalDTO=createDTO(PortalDTOSchema),PaymentRecoveryInvoiceDTOSchema=z64.object({id:z64.string(),number:z64.string().nullable(),status:z64.string(),amountDue:z64.int(),currency:z64.string(),issuedAt:z64.string().nullable(),hostedInvoiceUrl:z64.string().nullable()}),PaymentRecoveryDTOSchema=z64.discriminatedUnion("status",[z64.object({status:z64.literal("eligible"),checkedAt:z64.string()}),z64.object({status:z64.literal("recovery_required"),checkedAt:z64.string(),invoice:PaymentRecoveryInvoiceDTOSchema,outstandingCount:z64.int().min(1)}),z64.object({status:z64.literal("unavailable"),checkedAt:z64.string(),reason:z64.enum(["provider_error","truncated","unattempted","foreign_invoice","unknown_status"])})]),PaymentRecoveryDTO=createDTO(PaymentRecoveryDTOSchema),CreditBalanceResponseSchema=createResponseSchema(CreditBalanceDTOSchema),MinimalCreditBalanceResponseSchema=createResponseSchema(MinimalCreditBalanceDTOSchema),ProjectCreditBalanceResponseSchema=createResponseSchema(ProjectCreditBalanceDTOSchema),AutoRefillConfigResponseSchema=createResponseSchema(AutoRefillConfigDTOSchema),CreditPurchasePricingResponseSchema=createResponseSchema(CreditPurchasePricingDTOSchema),SuccessfulPurchaseResponseSchema=createResponseSchema(SuccessfulPurchaseDTOSchema),SubscriptionResponseSchema=createResponseSchema(SubscriptionDTOSchema),EntitlementsResponseSchema=createResponseSchema(EntitlementsDTOSchema),PortalResponseSchema=createResponseSchema(PortalDTOSchema),PaymentRecoveryResponseSchema=createResponseSchema(PaymentRecoveryDTOSchema)}});import{z as z65}from"zod";var PaymentMethodDTOSchema,PaymentMethodDTO,init_payment_method_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/payment-method.dto.js"(){"use strict";init_create_dto();PaymentMethodDTOSchema=z65.object({brand:z65.string(),last4:z65.string(),exp:z65.string(),isDefault:z65.boolean()}),PaymentMethodDTO=createDTO(PaymentMethodDTOSchema)}});import{z as z66}from"zod";var FieldDefinitionSchema,SchemaFieldPathSchema,SchemaMigrationOperationSchema,ContentTypeI18nSchema,ContentFieldGroupSchema,ContentTypeDTOSchema,ContentTypeDTO,SchemaDTOSchema,SchemaDTO,EntryDTOSchema,EntryDTO,PaginatedEntriesDTOSchema,PaginatedEntriesDTO,EntryCountDTOSchema,EntryCountDTO,EntryCountsDTOSchema,EntryCountsDTO,EntryTranslationGapDTOSchema,EntryTranslationGapDTO,EntryTranslationGapResponseSchema,ContentTypeResponseSchema,ContentTypeListResponseSchema,SchemaResponseSchema,EntryResponseSchema,EntryListResponseSchema,MAX_BULK_ENTRIES,entryWhereScalarSchema,entryWhereOperatorSchema,nestedEntryWhereSchema,EntryWhereSchema,EntryMutationBodySchema,entryIdsSchema,EntrySqlQueryRequestSchema,BulkCreateEntriesRequestSchema,BulkUpdateEntriesRequestSchema,BulkDeleteEntriesRequestSchema,EntrySqlQueryResponseSchema,EntrySqlQueryResponseDTO,BulkCreateEntriesResponseSchema,BulkCreateEntriesResponseDTO,BulkUpdateEntriesResponseSchema,BulkUpdateEntriesResponseDTO,BulkDeleteEntriesResponseSchema,BulkDeleteEntriesResponseDTO,init_content_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/content.dto.js"(){"use strict";init_common();init_content_fields();init_create_dto();init_response();FieldDefinitionSchema=ContentFieldDefinitionSchema,SchemaFieldPathSchema=z66.string().superRefine((path50,ctx)=>{let segments=path50.split(".");(segments.length===0||segments.some(segment=>!CONTENT_FIELD_NAME_PATTERN.test(segment)))&&ctx.addIssue({code:"custom",message:"Field paths must use dot-separated field or block variant names."})}),SchemaMigrationOperationSchema=z66.object({type:z66.literal("renameField"),contentType:z66.string().regex(CONTENT_TYPE_NAME_PATTERN),from:SchemaFieldPathSchema,to:SchemaFieldPathSchema}).strict(),ContentTypeI18nSchema=z66.object({enabled:z66.boolean()}).strict(),ContentFieldGroupSchema=z66.object({id:z66.string().regex(CONTENT_FIELD_NAME_PATTERN),label:z66.string().min(1).max(255),default:z66.boolean().optional()}).strict(),ContentTypeDTOSchema=z66.object({id:z66.string(),name:z66.string(),label:z66.string(),isSingleton:z66.boolean(),i18n:ContentTypeI18nSchema,groups:z66.array(ContentFieldGroupSchema).default([]),fields:z66.record(z66.string(),FieldDefinitionSchema),createdAt:z66.string(),updatedAt:z66.string()}),ContentTypeDTO=createDTO(ContentTypeDTOSchema),SchemaDTOSchema=z66.object({contentTypes:z66.array(ContentTypeDTOSchema)}),SchemaDTO=createDTO(SchemaDTOSchema),EntryDTOSchema=z66.object({id:z66.string(),entryId:z66.string(),documentId:z66.string(),slug:z66.string(),locale:z66.string().optional(),createdAt:z66.string(),updatedAt:z66.string(),__fimo:z66.object({contentType:z66.string()})}).passthrough(),EntryDTO=createDTO(EntryDTOSchema),PaginatedEntriesDTOSchema=z66.object({data:z66.array(EntryDTOSchema),meta:z66.object({limit:z66.number(),offset:z66.number(),total:z66.number(),hasMore:z66.boolean()})}),PaginatedEntriesDTO=createDTO(PaginatedEntriesDTOSchema),EntryCountDTOSchema=z66.object({contentType:z66.string(),count:z66.number()}),EntryCountDTO=createDTO(EntryCountDTOSchema),EntryCountsDTOSchema=z66.object({counts:z66.array(EntryCountDTOSchema)}),EntryCountsDTO=createDTO(EntryCountsDTOSchema),EntryTranslationGapDTOSchema=z66.object({count:z66.number().int().nonnegative(),sourceLocale:z66.string(),targetLocale:z66.string()}),EntryTranslationGapDTO=createDTO(EntryTranslationGapDTOSchema),EntryTranslationGapResponseSchema=createResponseSchema(EntryTranslationGapDTOSchema),ContentTypeResponseSchema=createResponseSchema(ContentTypeDTOSchema),ContentTypeListResponseSchema=createResponseSchema(z66.array(ContentTypeDTOSchema)),SchemaResponseSchema=createResponseSchema(SchemaDTOSchema),EntryResponseSchema=createResponseSchema(EntryDTOSchema),EntryListResponseSchema=createResponseSchema(z66.array(EntryDTOSchema)),MAX_BULK_ENTRIES=1e3,entryWhereScalarSchema=z66.union([z66.string(),z66.number(),z66.boolean(),z66.null()]),entryWhereOperatorSchema=z66.object({$eq:entryWhereScalarSchema.optional(),$ne:entryWhereScalarSchema.optional(),$gt:entryWhereScalarSchema.optional(),$gte:entryWhereScalarSchema.optional(),$lt:entryWhereScalarSchema.optional(),$lte:entryWhereScalarSchema.optional(),$in:z66.array(entryWhereScalarSchema).optional(),$nin:z66.array(entryWhereScalarSchema).optional(),$contains:z66.string().optional(),$startsWith:z66.string().optional(),$null:z66.boolean().optional()}).strict().refine(value=>Object.keys(value).length>0,{message:"Operator object cannot be empty"}),nestedEntryWhereSchema=z66.record(z66.string(),z66.union([entryWhereScalarSchema,entryWhereOperatorSchema])),EntryWhereSchema=z66.record(z66.string(),z66.union([entryWhereScalarSchema,entryWhereOperatorSchema,nestedEntryWhereSchema])),EntryMutationBodySchema=z66.object({data:z66.record(z66.string(),z66.unknown()),locale:z66.string().min(1).optional(),documentId:z66.uuid().optional()}),entryIdsSchema=z66.array(z66.uuid()).min(1).max(MAX_BULK_ENTRIES),EntrySqlQueryRequestSchema=z66.object({sql:z66.string().min(1)}),BulkCreateEntriesRequestSchema=z66.object({entries:z66.array(EntryMutationBodySchema).min(1).max(MAX_BULK_ENTRIES)}),BulkUpdateEntriesRequestSchema=z66.union([z66.object({ids:entryIdsSchema,body:EntryMutationBodySchema}),z66.object({where:EntryWhereSchema,body:EntryMutationBodySchema}),z66.object({updates:z66.array(z66.object({id:z66.uuid(),body:EntryMutationBodySchema})).min(1).max(MAX_BULK_ENTRIES)})]),BulkDeleteEntriesRequestSchema=z66.union([z66.object({ids:entryIdsSchema,locale:z66.string().min(1).optional()}),z66.object({where:EntryWhereSchema,locale:z66.string().min(1).optional()})]),EntrySqlQueryResponseSchema=z66.object({data:z66.array(z66.record(z66.string(),z66.unknown())),meta:z66.object({rowCount:z66.number().int().nonnegative(),truncated:z66.boolean()})}),EntrySqlQueryResponseDTO=createDTO(EntrySqlQueryResponseSchema),BulkCreateEntriesResponseSchema=z66.object({data:z66.array(EntryDTOSchema),meta:z66.object({created:z66.number().int().nonnegative()})}),BulkCreateEntriesResponseDTO=createDTO(BulkCreateEntriesResponseSchema),BulkUpdateEntriesResponseSchema=z66.object({data:z66.array(EntryDTOSchema),meta:z66.object({updated:z66.number().int().nonnegative(),missing:z66.array(z66.string())})}),BulkUpdateEntriesResponseDTO=createDTO(BulkUpdateEntriesResponseSchema),BulkDeleteEntriesResponseSchema=z66.object({data:z66.array(EntryDTOSchema),meta:z66.object({deleted:z66.number().int().nonnegative(),missing:z66.array(z66.string())})}),BulkDeleteEntriesResponseDTO=createDTO(BulkDeleteEntriesResponseSchema)}});import{z as z67}from"zod";var UniqueConflictSchema,UniqueConflictErrorSchema,init_unique_conflict_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/unique-conflict.dto.js"(){"use strict";UniqueConflictSchema=z67.object({index:z67.number().int().nonnegative(),contentType:z67.string(),field:z67.string(),value:z67.string(),against:z67.enum(["stored","batch"]),ownerDocumentId:z67.uuid().optional(),ownerIndex:z67.number().int().nonnegative().optional()}),UniqueConflictErrorSchema=z67.object({code:z67.literal("unique_conflict"),message:z67.string(),conflicts:z67.array(UniqueConflictSchema),truncated:z67.boolean().optional()})}});import{z as z68}from"zod";var UniqueConflictIssueSchema,SchemaTransitionIssueSchema,SchemaTransitionRejectedErrorSchema,init_schema_transition_rejected_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/schema-transition-rejected.dto.js"(){"use strict";UniqueConflictIssueSchema=z68.object({kind:z68.literal("unique_conflict"),contentType:z68.string(),field:z68.string(),value:z68.string(),documentCount:z68.number().int().positive(),documentIds:z68.array(z68.uuid()),documentIdsTruncated:z68.boolean().optional()}),SchemaTransitionIssueSchema=UniqueConflictIssueSchema,SchemaTransitionRejectedErrorSchema=z68.object({code:z68.literal("schema_transition_rejected"),message:z68.string(),issues:z68.array(SchemaTransitionIssueSchema),truncated:z68.boolean().optional()})}});import{z as z69}from"zod";var CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS,CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH,CmsContentTypeNameSchema,CmsFieldNameSchema,CmsCollectionOrderSchema,CmsFieldOrderSchema,CmsListSortSchema,CmsDisplayDefaultsDTOSchema,CmsDisplayDefaultsDTO,CmsCollectionOrderRequestSchema,CmsFieldOrderRequestSchema,CmsDisplayDefaultsResponseSchema,init_cms_display_defaults_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/cms-display-defaults.dto.js"(){"use strict";init_common();init_create_dto();init_response();CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS=200,CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH=255,CmsContentTypeNameSchema=z69.string().max(CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH).regex(CONTENT_TYPE_NAME_PATTERN),CmsFieldNameSchema=z69.string().max(CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH).regex(CONTENT_FIELD_NAME_PATTERN),CmsCollectionOrderSchema=z69.array(CmsContentTypeNameSchema).max(CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS),CmsFieldOrderSchema=z69.array(CmsFieldNameSchema).max(CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS),CmsListSortSchema=z69.object({field:CmsFieldNameSchema,direction:z69.enum(["asc","desc"])}),CmsDisplayDefaultsDTOSchema=z69.object({collectionOrder:CmsCollectionOrderSchema.nullable(),fieldOrders:z69.record(CmsContentTypeNameSchema,CmsFieldOrderSchema),listSorts:z69.record(CmsContentTypeNameSchema,CmsListSortSchema)}),CmsDisplayDefaultsDTO=createDTO(CmsDisplayDefaultsDTOSchema),CmsCollectionOrderRequestSchema=z69.object({order:CmsCollectionOrderSchema}),CmsFieldOrderRequestSchema=z69.object({order:CmsFieldOrderSchema}),CmsDisplayDefaultsResponseSchema=createResponseSchema(CmsDisplayDefaultsDTOSchema)}});import{z as z70}from"zod";var MIGRATION_SOURCE_PLATFORMS,MigrationSourcePlatformSchema,init_project_migration_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-migration.dto.js"(){"use strict";MIGRATION_SOURCE_PLATFORMS=["webflow","framer","squarespace","wix","carrd","wordpress","nextjs","astro","react-router","other","unknown"],MigrationSourcePlatformSchema=z70.enum(MIGRATION_SOURCE_PLATFORMS)}});import{z as z71}from"zod";var CLIENT_TRACKED_EVENTS,ClientTrackedEventSchema,TrackProjectEventRequestSchema,init_analytics_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/analytics.dto.js"(){"use strict";CLIENT_TRACKED_EVENTS=["didStartMigration","didEndMigration"],ClientTrackedEventSchema=z71.enum(CLIENT_TRACKED_EVENTS),TrackProjectEventRequestSchema=z71.object({event:ClientTrackedEventSchema,properties:z71.record(z71.string(),z71.unknown()).default({})})}});import{z as z72}from"zod";var AssetPathItemSchema,AssetDTOSchema,AssetDTO,AssetTreeNodeDTOSchema,AssetTreeNodeDTO,AssetResponseSchema,AssetListResponseSchema,MediaStorageLimitErrorSchema,AssetReferenceScopeSchema,ASSET_REFERENCE_IMPACT_FILE_LIMIT,AssetReferenceImpactRequestSchema,AssetReferenceImpactSelectionDTOSchema,AssetReferenceFindingDTOSchema,AssetReferenceScopeResultDTOSchema,AssetReferenceScopeResultDTO,AssetReferenceImpactEventDTOSchema,AssetReferenceImpactEventDTO,AssetReferenceReplacementRequestSchema,AssetReferenceReplacementResultSchema,AssetReferenceReplacementResponseSchema,AssetReferenceReplacementPreviewResponseSchema,AssetCodeReferenceReplacementResultSchema,AssetReferenceReplacementErrorCodeSchema,AssetReferenceReplacementErrorSchema,ASSET_REMOVAL_ASSET_LIMIT,AssetRemovalIntentSchema,ASSET_REPLACING_REMOVAL_INTENTS,isReplacingIntent,AssetRemovalRequestSchema,AssetRemovalOperationDTOSchema,AssetRemovalOperationDTO,AssetRemovalScheduleResultDTOSchema,AssetRemovalScheduleResultDTO,AssetRemovalErrorCodeSchema,AssetRemovalErrorSchema,init_asset_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/asset.dto.js"(){"use strict";init_common();init_create_dto();init_response();AssetPathItemSchema=z72.object({id:z72.string(),name:z72.string()}),AssetDTOSchema=z72.object({id:z72.string(),name:z72.string(),type:AssetTypeSchema,originalFileName:z72.string().nullable(),parentId:z72.string().nullable(),mimeType:z72.string().nullable(),fileSize:z72.number().nullable(),url:z72.string().nullable(),storageKey:z72.string().nullable(),createdAt:z72.string(),updatedAt:z72.string(),altText:z72.string().nullable().optional(),caption:z72.string().nullable().optional(),aiCaption:z72.string().nullable().optional(),aiAltText:z72.string().nullable().optional(),aiTags:z72.array(z72.string()).nullable().optional(),aiPrimaryColor:z72.string().nullable().optional(),aiProcessingStatus:z72.string().nullable().optional(),width:z72.number().nullable().optional(),height:z72.number().nullable().optional(),path:z72.array(AssetPathItemSchema).optional(),hasChildren:z72.boolean().optional()}),AssetDTO=createDTO(AssetDTOSchema),AssetTreeNodeDTOSchema=AssetDTOSchema.extend({children:z72.lazy(()=>z72.array(AssetTreeNodeDTOSchema)).optional()}),AssetTreeNodeDTO=createDTO(AssetTreeNodeDTOSchema),AssetResponseSchema=createResponseSchema(AssetDTOSchema),AssetListResponseSchema=createResponseSchema(z72.array(AssetDTOSchema)),MediaStorageLimitErrorSchema=z72.object({error:z72.string(),code:z72.literal("media_storage_limit_exceeded"),usedBytes:z72.number().int().nonnegative(),limitBytes:z72.number().int().positive(),incomingBytes:z72.number().int().nonnegative()}),AssetReferenceScopeSchema=z72.enum(["current","main","live"]),ASSET_REFERENCE_IMPACT_FILE_LIMIT=50,AssetReferenceImpactRequestSchema=z72.object({assetIds:z72.array(z72.uuid()).min(1).max(ASSET_REFERENCE_IMPACT_FILE_LIMIT),scopes:z72.array(AssetReferenceScopeSchema).min(1).optional()}),AssetReferenceImpactSelectionDTOSchema=z72.object({totalFiles:z72.number().int().nonnegative(),checkedFiles:z72.number().int().nonnegative(),limit:z72.number().int().positive()}),AssetReferenceFindingDTOSchema=z72.object({assetId:z72.uuid(),entryId:z72.string(),documentId:z72.string(),contentType:z72.string(),locale:z72.string().nullable(),slug:z72.string(),fieldPath:z72.string()}),AssetReferenceScopeResultDTOSchema=z72.object({scope:AssetReferenceScopeSchema,label:z72.string(),state:z72.enum(["available","not-published","failed"]),coverage:z72.enum(["complete","partial","failed"]),referenceCount:z72.number().int().nonnegative().optional(),codeReferenceCount:z72.number().int().nonnegative().optional(),referencedAssetIds:z72.array(z72.uuid()).optional(),references:z72.array(AssetReferenceFindingDTOSchema),reason:z72.enum(["timeout","unavailable"]).optional()}),AssetReferenceScopeResultDTO=createDTO(AssetReferenceScopeResultDTOSchema),AssetReferenceImpactEventDTOSchema=z72.discriminatedUnion("type",[z72.object({type:z72.literal("selection"),data:AssetReferenceImpactSelectionDTOSchema}),z72.object({type:z72.literal("scope"),data:AssetReferenceScopeResultDTOSchema}),z72.object({type:z72.literal("complete")})]),AssetReferenceImpactEventDTO=createDTO(AssetReferenceImpactEventDTOSchema),AssetReferenceReplacementRequestSchema=z72.object({replacementAssetId:z72.uuid()}),AssetReferenceReplacementResultSchema=z72.object({referencesReplaced:z72.number().int().nonnegative(),entriesChanged:z72.number().int().nonnegative()}),AssetReferenceReplacementResponseSchema=createResponseSchema(AssetReferenceReplacementResultSchema),AssetReferenceReplacementPreviewResponseSchema=createResponseSchema(AssetReferenceReplacementResultSchema),AssetCodeReferenceReplacementResultSchema=z72.object({referencesReplaced:z72.number().int().nonnegative(),filesChanged:z72.number().int().nonnegative(),commitSha:z72.string().nullable()}),AssetReferenceReplacementErrorCodeSchema=z72.enum(["asset_replacement.self","asset_replacement.source_not_found","asset_replacement.replacement_not_found","asset_replacement.incompatible_media","asset_replacement.target_unavailable","asset_replacement.code_not_editable","asset_replacement.code_unavailable","asset_replacement.code_conflict","asset_replacement.code_too_many_files"]),AssetReferenceReplacementErrorSchema=z72.object({error:z72.string(),code:AssetReferenceReplacementErrorCodeSchema}),ASSET_REMOVAL_ASSET_LIMIT=200,AssetRemovalIntentSchema=z72.enum(["remove-from-branch","delete-from-project","replace-and-remove","replace-and-delete"]),ASSET_REPLACING_REMOVAL_INTENTS=["replace-and-remove","replace-and-delete"],isReplacingIntent=__name(intent=>ASSET_REPLACING_REMOVAL_INTENTS.includes(intent),"isReplacingIntent"),AssetRemovalRequestSchema=z72.object({intent:AssetRemovalIntentSchema,assetIds:z72.array(z72.uuid()).min(1).max(ASSET_REMOVAL_ASSET_LIMIT),replacementAssetId:z72.uuid().optional()}).refine(request=>isReplacingIntent(request.intent)===(request.replacementAssetId!==void 0),{message:"A replacement is required by the replace intents and rejected by the others",path:["replacementAssetId"]}).refine(request=>!isReplacingIntent(request.intent)||request.assetIds.length===1,{message:"A replacement applies to exactly one asset",path:["assetIds"]}),AssetRemovalOperationDTOSchema=z72.object({id:z72.uuid(),intent:AssetRemovalIntentSchema,assetIds:z72.array(z72.uuid()),replacementAssetId:z72.uuid().nullable(),expiresAt:z72.iso.datetime(),undoable:z72.boolean(),requestedByMe:z72.boolean()}),AssetRemovalOperationDTO=createDTO(AssetRemovalOperationDTOSchema),AssetRemovalScheduleResultDTOSchema=AssetRemovalOperationDTOSchema.extend({codeReplacement:AssetCodeReferenceReplacementResultSchema.optional()}),AssetRemovalScheduleResultDTO=createDTO(AssetRemovalScheduleResultDTOSchema),AssetRemovalErrorCodeSchema=z72.enum(["asset_removal.asset_not_found","asset_removal.replacement_not_found","asset_removal.already_finalized"]),AssetRemovalErrorSchema=z72.object({error:z72.string(),code:AssetRemovalErrorCodeSchema})}});import{z as z73}from"zod";var TranslationDTOSchema,TranslationDTO,init_translation_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/translation.dto.js"(){"use strict";init_create_dto();TranslationDTOSchema=z73.object({key:z73.string(),value:z73.string().optional(),defaultValue:z73.string(),locale:z73.string()}),TranslationDTO=createDTO(TranslationDTOSchema)}});import{z as z74}from"zod";var DocumentNodeDTOSchema,DocumentTreeDTOSchema,DocumentPathDTOSchema,DocumentPathDTO,DocumentTreeResponseSchema,DocumentPathResponseSchema,init_document_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/document.dto.js"(){"use strict";init_create_dto();init_response();DocumentNodeDTOSchema=z74.object({id:z74.string(),name:z74.string(),type:z74.enum(["file","folder"]),path:z74.string(),children:z74.lazy(()=>z74.array(DocumentNodeDTOSchema)).optional()}),DocumentTreeDTOSchema=z74.array(DocumentNodeDTOSchema),DocumentPathDTOSchema=z74.object({path:z74.string(),exists:z74.boolean(),type:z74.enum(["file","folder"]).optional()}),DocumentPathDTO=createDTO(DocumentPathDTOSchema),DocumentTreeResponseSchema=createResponseSchema(DocumentTreeDTOSchema),DocumentPathResponseSchema=createResponseSchema(DocumentPathDTOSchema)}});import{z as z75}from"zod";var FormFieldTypeSchema,FormFieldValidationSchema,FormFieldSchema,FormFieldsSchema,FormContentSchema,FormUpdateSchema,init_form_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/form.dto.js"(){"use strict";FormFieldTypeSchema=z75.enum(["text","email","textarea","number","phone","url","select","checkbox","date","hidden","file"]),FormFieldValidationSchema=z75.object({minLength:z75.number().optional(),maxLength:z75.number().optional(),min:z75.number().optional(),max:z75.number().optional(),pattern:z75.string().optional(),maxFileSize:z75.number().optional(),accept:z75.array(z75.string()).optional()}),FormFieldSchema=z75.object({type:FormFieldTypeSchema,label:z75.string(),placeholder:z75.string().optional(),required:z75.boolean().optional(),defaultValue:z75.string().optional(),options:z75.array(z75.string()).optional(),validation:FormFieldValidationSchema.optional()}),FormFieldsSchema=z75.record(z75.string(),FormFieldSchema),FormContentSchema=z75.object({name:z75.string().min(1).max(255),label:z75.string().min(1).max(255),fields:FormFieldsSchema}).strict(),FormUpdateSchema=FormContentSchema.partial().refine(update=>update.name!==void 0||update.label!==void 0||update.fields!==void 0,{message:"Pass at least one of name, label, or fields."})}});import{z as z76}from"zod";var AgentPatchSchema,AgentToolRoutineSchema,AgentToolErrorCodeSchema,AgentToolResultSchema,AgentInstructionAuthorSchema,AgentInstructionRevisionDTOSchema,AgentInstructionRevisionListDTOSchema,AgentInstructionRevisionListResponseSchema,AgentInstructionRestoreSchema,init_chat_agent_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/chat-agent.dto.js"(){"use strict";init_response();init_chat_routine_dto();init_chat_dto();AgentPatchSchema=z76.object({name:z76.string().trim().min(1).max(120).optional(),description:z76.string().trim().min(1).max(300).optional(),instructions:ProjectChatInstructionsSchema.pipe(z76.string().min(1)).optional(),live:z76.literal(!0).optional()}),AgentToolRoutineSchema=z76.object({id:z76.string(),name:z76.string(),schedule:ChatRoutineScheduleSchema.nullable(),trigger:z76.string().nullable()}),AgentToolErrorCodeSchema=z76.enum(["plan_required","not_allowed","default_agent","not_seen","invalid"]),AgentToolResultSchema=z76.discriminatedUnion("ok",[z76.object({ok:z76.literal(!0),agent:z76.object({id:z76.string(),name:z76.string(),live:z76.boolean(),routines:z76.array(AgentToolRoutineSchema)}),revisionId:z76.string().optional()}),z76.object({ok:z76.literal(!1),error:z76.string(),code:AgentToolErrorCodeSchema.optional()})]),AgentInstructionAuthorSchema=z76.object({kind:z76.enum(["person","agent"]),id:z76.string().nullable(),name:z76.string().nullable()}),AgentInstructionRevisionDTOSchema=z76.object({id:z76.string().uuid(),previous:z76.string().nullable(),instructions:z76.string().nullable(),author:AgentInstructionAuthorSchema,createdAt:z76.string()}),AgentInstructionRevisionListDTOSchema=z76.object({revisions:z76.array(AgentInstructionRevisionDTOSchema)}),AgentInstructionRevisionListResponseSchema=createResponseSchema(AgentInstructionRevisionListDTOSchema),AgentInstructionRestoreSchema=z76.object({revisionId:z76.string().uuid()})}});import{z as z77}from"zod";var UploadResultDTOSchema,UploadResultDTO,UploadResultResponseSchema,init_upload_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/upload.dto.js"(){"use strict";init_common();init_create_dto();init_response();UploadResultDTOSchema=z77.object({url:z77.string().url(),key:z77.string(),size:z77.number(),contentType:z77.string(),uploadedAt:CommonSchemas.timestamp}),UploadResultDTO=createDTO(UploadResultDTOSchema),UploadResultResponseSchema=createResponseSchema(UploadResultDTOSchema)}});import{z as z78}from"zod";var ServicePermissionsDTOSchema,ServicePermissionsDTO,ServicePermissionsResponseSchema,init_service_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/service.dto.js"(){"use strict";init_create_dto();init_response();ServicePermissionsDTOSchema=z78.object({canAccess:z78.boolean(),permissions:z78.record(z78.string(),z78.boolean()),role:z78.string().nullable()}),ServicePermissionsDTO=createDTO(ServicePermissionsDTOSchema),ServicePermissionsResponseSchema=createResponseSchema(ServicePermissionsDTOSchema)}});import{z as z79}from"zod";var OrganizationProjectsSearchQuerySchema,init_search_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/search.dto.js"(){"use strict";init_pagination();OrganizationProjectsSearchQuerySchema=PaginationQuerySchema.extend({q:z79.string().trim().default(""),sort:z79.enum(["recent","name","relevance"]).default("recent"),category:z79.string().optional()})}});import{z as z80}from"zod";var DomainStatusSchema,DomainSourceSchema,PaymentStatusSchema,DomainDTOSchema,DomainDTO,DomainSearchResultDTOSchema,DomainSearchResultDTO,DomainPricingDTOSchema,DomainPricingDTO,DomainContactSchema,DomainContactDTO,UpdateDomainContactsRequestSchema,SearchDomainsRequestSchema,CheckAvailabilityRequestSchema,DOMAIN_NAME_REGEX,DomainNameSchema,PurchaseDomainRequestSchema,UpdateDomainSettingsRequestSchema,RenewDomainRequestSchema,DomainResponseSchema,DomainListResponseSchema,DomainSearchResultListResponseSchema,DomainPricingResponseSchema,DomainContactResponseSchema,ContactVerificationStatusSchema,ContactVerificationStatusResponseSchema,init_registered_domain_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/registered-domain.dto.js"(){"use strict";init_common();init_create_dto();init_response();DomainStatusSchema=z80.enum(["pending_payment","registering","owned","registration_failed","payment_failed","expiring","expired"]),DomainSourceSchema=z80.enum(["fimo","external"]),PaymentStatusSchema=z80.enum(["pending","paid","failed","refunded"]),DomainDTOSchema=z80.object({id:z80.string().uuid(),domain:z80.string(),status:DomainStatusSchema,source:DomainSourceSchema,registrationDate:CommonSchemas.timestamp.nullable(),expirationDate:CommonSchemas.timestamp.nullable(),autoRenew:z80.boolean(),price:z80.number().int().nullable(),renewalPrice:z80.number().int().nullable(),paymentStatus:PaymentStatusSchema.nullable(),checkoutUrl:z80.string().nullable(),failureReason:z80.string().nullable(),createdAt:CommonSchemas.timestamp,updatedAt:CommonSchemas.timestamp}),DomainDTO=createDTO(DomainDTOSchema),DomainSearchResultDTOSchema=z80.object({domain:z80.string(),available:z80.boolean(),premium:z80.boolean(),price:z80.number().nullable(),renewalPrice:z80.number().nullable(),purchaseType:z80.string().nullable()}),DomainSearchResultDTO=createDTO(DomainSearchResultDTOSchema),DomainPricingDTOSchema=z80.object({domain:z80.string(),price:z80.number().nullable(),renewalPrice:z80.number().nullable(),premium:z80.boolean(),allowedYears:z80.array(z80.number().int().positive())}),DomainPricingDTO=createDTO(DomainPricingDTOSchema),DomainContactSchema=z80.object({firstName:z80.string().max(100),lastName:z80.string().max(100),companyName:z80.string().max(100).optional(),address1:z80.string().max(255),address2:z80.string().max(255).optional(),city:z80.string().max(100),state:z80.string().max(100),zip:z80.string().max(20),country:z80.string().max(2),phone:z80.string().max(30),email:z80.union([z80.string().email().max(255),z80.literal("")])}),DomainContactDTO=createDTO(DomainContactSchema),UpdateDomainContactsRequestSchema=z80.object({firstName:z80.string().min(1).max(100),lastName:z80.string().min(1).max(100),companyName:z80.string().max(100).optional(),address1:z80.string().min(1).max(255),address2:z80.string().max(255).optional(),city:z80.string().min(1).max(100),state:z80.string().min(1).max(100),zip:z80.string().min(1).max(20),country:z80.string().min(1).max(2),phone:z80.string().min(1).max(30),email:z80.string().email().max(255)}),SearchDomainsRequestSchema=z80.object({keyword:z80.string().min(1).max(100),tldFilter:z80.array(z80.string()).optional()}),CheckAvailabilityRequestSchema=z80.object({domains:z80.array(z80.string()).min(1).max(50)}),DOMAIN_NAME_REGEX=/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,DomainNameSchema=z80.string().min(1).max(255).regex(DOMAIN_NAME_REGEX,{message:"Invalid domain name"}),PurchaseDomainRequestSchema=z80.object({domain:DomainNameSchema,years:z80.number().int().min(1).max(10).optional().default(3),autoRenew:z80.boolean().optional().default(!0)}),UpdateDomainSettingsRequestSchema=z80.object({autoRenew:z80.boolean().optional()}),RenewDomainRequestSchema=z80.object({years:z80.number().int().min(1).max(10).optional().default(1),autoRenew:z80.boolean().optional().default(!0)}),DomainResponseSchema=createResponseSchema(DomainDTOSchema),DomainListResponseSchema=createResponseSchema(z80.array(DomainDTOSchema)),DomainSearchResultListResponseSchema=createResponseSchema(z80.array(DomainSearchResultDTOSchema)),DomainPricingResponseSchema=createResponseSchema(DomainPricingDTOSchema),DomainContactResponseSchema=createResponseSchema(DomainContactSchema.nullable()),ContactVerificationStatusSchema=z80.object({verified:z80.boolean(),email:z80.string().nullable(),verifyBy:z80.string().nullable()}),ContactVerificationStatusResponseSchema=createResponseSchema(ContactVerificationStatusSchema)}});import{z as z81}from"zod";var ProjectDomainStatusSchema,SSLStatusSchema,SSLValidationRecordSchema,SSLValidationErrorSchema,OwnershipVerificationSchema,ProjectDomainSSLDTOSchema,DomainProviderSchema,DomainTypeSchema,RedirectConfigSchema,ProjectDomainDTOSchema,ProjectDomainDTO,ProjectDomainListResponseSchema,ProjectDomainResponseSchema,AddProjectDomainRequestSchema,CheckProjectDomainHostnameReasonSchema,CheckProjectDomainHostnameResponseSchema,DeleteProjectDomainResponseSchema,init_project_domain_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-domain.dto.js"(){"use strict";init_common();init_create_dto();init_response();ProjectDomainStatusSchema=z81.enum(["pending","active","pending_validation","active_redeploying","moved","deleted","pending_deletion","pending_migration","pending_provisioned","test_pending","test_active","test_active_apex","test_blocked","test_failed","provisioned","blocked"]),SSLStatusSchema=z81.enum(["initializing","pending_validation","pending_issuance","pending_deployment","pending_expiration","expired","active","deleted","pending_cleanup","staging_deployment","staging_active","deactivating","inactive","backup_issued","holding_deployment"]),SSLValidationRecordSchema=z81.object({txtName:z81.string().nullable().optional(),txtValue:z81.string().nullable().optional(),httpUrl:z81.string().nullable().optional(),httpBody:z81.string().nullable().optional(),cname:z81.string().nullable().optional(),cnameTarget:z81.string().nullable().optional()}),SSLValidationErrorSchema=z81.object({message:z81.string()}),OwnershipVerificationSchema=z81.object({type:z81.string(),name:z81.string(),value:z81.string()}),ProjectDomainSSLDTOSchema=z81.object({status:z81.string(),method:z81.string().nullable(),type:z81.string().nullable(),validationRecords:z81.array(SSLValidationRecordSchema).nullable().optional(),validationErrors:z81.array(SSLValidationErrorSchema).nullable().optional()}),DomainProviderSchema=z81.enum(["cloudflare","saas_custom_domains"]),DomainTypeSchema=z81.enum(["subdomain","apex"]),RedirectConfigSchema=z81.object({type:z81.enum(["apex_to_www","www_to_apex"]),linkedDomainId:z81.string()}).nullable().optional(),ProjectDomainDTOSchema=z81.object({id:z81.string(),hostname:z81.string(),status:z81.string(),ssl:ProjectDomainSSLDTOSchema,ownershipVerification:z81.array(OwnershipVerificationSchema).nullable().optional(),cnameTarget:z81.string(),scdCnameTarget:z81.string().optional(),apexTargets:z81.array(z81.string()),dnsAutoConfigured:z81.boolean(),createdAt:CommonSchemas.timestamp,provider:DomainProviderSchema,domainType:DomainTypeSchema,redirectConfig:RedirectConfigSchema,migrationStatus:z81.string().nullable().optional()}),ProjectDomainDTO=createDTO(ProjectDomainDTOSchema),ProjectDomainListResponseSchema=createResponseSchema(z81.array(ProjectDomainDTOSchema)),ProjectDomainResponseSchema=createResponseSchema(ProjectDomainDTOSchema),AddProjectDomainRequestSchema=z81.object({hostname:z81.hostname().regex(/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,{error:"Invalid hostname"}).refine(value=>!/\.fimo\.site$/i.test(value),{error:"This is a Fimo-owned domain. Edit your built-in URL instead."}),redirectToWww:z81.boolean().optional()}),CheckProjectDomainHostnameReasonSchema=z81.enum(["invalid_hostname","fimo_owned_hostname","reserved","taken_by_another_project","taken_by_this_project"]),CheckProjectDomainHostnameResponseSchema=createResponseSchema(z81.object({available:z81.boolean(),reason:CheckProjectDomainHostnameReasonSchema.optional()})),DeleteProjectDomainResponseSchema=createResponseSchema(z81.object({success:z81.boolean(),hostname:z81.string()}))}});import{z as z82}from"zod";var SUBDOMAIN_REGEX,SubdomainCheckReasonSchema,CheckProjectSubdomainResponseSchema,UpdateProjectSubdomainRequestSchema,UpdateProjectSubdomainErrorReasonSchema,UpdateProjectSubdomainResponseSchema,SubdomainSuggestionsQuerySchema,SubdomainSuggestionsResponseSchema,init_project_subdomain_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-subdomain.dto.js"(){"use strict";init_response();SUBDOMAIN_REGEX=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/,SubdomainCheckReasonSchema=z82.enum(["invalid_shape","reserved","taken_by_project","taken_by_legacy_custom_domain"]),CheckProjectSubdomainResponseSchema=createResponseSchema(z82.object({available:z82.boolean(),reason:SubdomainCheckReasonSchema.optional()})),UpdateProjectSubdomainRequestSchema=z82.object({slug:z82.string().min(1).max(63).regex(SUBDOMAIN_REGEX,{error:"Invalid subdomain shape"})}),UpdateProjectSubdomainErrorReasonSchema=z82.enum(["invalid_shape","reserved","taken_by_project","taken_by_legacy_custom_domain","kv_sync_failed","hosting_sync_failed"]),UpdateProjectSubdomainResponseSchema=createResponseSchema(z82.object({subdomain:z82.string(),subdomainUpdatedAt:z82.coerce.date()})),SubdomainSuggestionsQuerySchema=z82.object({base:z82.string().max(100).optional(),max:z82.coerce.number().int().min(1).max(10).optional()}),SubdomainSuggestionsResponseSchema=createResponseSchema(z82.object({suggestions:z82.array(z82.string())}))}});import{z as z83}from"zod";var PROJECT_TRANSFER_BLOCKER_CODES,ProjectTransferBlockerCodeSchema,ProjectTransferBlockerDTO,TransferProjectRequestSchema,ProjectTransferResultDTO,init_project_transfer_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-transfer.dto.js"(){"use strict";init_create_dto();PROJECT_TRANSFER_BLOCKER_CODES=["same_organization","concurrent_transfer","agent_work_in_flight","unsettled_agent_holds","unsettled_usage_ledger","project_integrations_present","source_registered_domain"],ProjectTransferBlockerCodeSchema=z83.enum(PROJECT_TRANSFER_BLOCKER_CODES),ProjectTransferBlockerDTO=createDTO(z83.object({code:ProjectTransferBlockerCodeSchema,message:z83.string(),count:z83.number().int().nonnegative().optional()})),TransferProjectRequestSchema=z83.object({targetOrganizationId:z83.string().min(1)}),ProjectTransferResultDTO=createDTO(z83.object({projectId:z83.string(),sourceOrganizationId:z83.string(),targetOrganizationId:z83.string(),movedThreads:z83.number().int().nonnegative(),revokedInvites:z83.number().int().nonnegative(),revokedGrants:z83.number().int().nonnegative(),preservedGrants:z83.number().int().nonnegative(),warnings:z83.array(z83.string())}))}});import{z as z84}from"zod";var PROJECT_TOKEN_PREFIX,MB2,UNCLAIMED_PLAN,UnclaimedLockedFeatureSchema,UNCLAIMED_CLAIM_STATES,UnclaimedClaimStateSchema,UNCLAIMED_PROJECT_ERROR_CODES,UnclaimedProjectErrorCodeSchema,ProvisionUnclaimedProjectRequestSchema,UnclaimedProjectLimitsSchema,UnclaimedProjectClaimSchema,ProvisionUnclaimedProjectResponseDTO,UnclaimedClaimStatusDTO,UnclaimedClaimSecretSchema,UnclaimedClaimStatusRequestSchema,UnclaimedClaimStatesRequestSchema,UnclaimedClaimStatesResponseDTO,ClaimUnclaimedProjectRequestSchema,ClaimUnclaimedProjectResultDTO,ProjectTokenSelfDTO,init_unclaimed_project_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/unclaimed-project.dto.js"(){"use strict";init_create_dto();init_project_dto();PROJECT_TOKEN_PREFIX="fimo_pt_",MB2=1e6,UNCLAIMED_PLAN={ttlHours:72,tokenTtlAfterClaimHours:24,media:{totalBytes:50*MB2,fileBytes:5*MB2,maxFiles:100,mimeTypes:["image/jpeg","image/png","image/webp","image/avif","image/gif"]},database:{storageBytes:100*MB2,computeSeconds:600*60,maxComputeUnits:.5},locked:{publish:"Publishing",subdomain:"A fimo.site address",custom_domains:"Custom domains",branches:"Extra Branches",environments:"Extra environments",asset_generation:"Generating images and videos",integrations:"Connecting integrations",invites:"Inviting people",schedules:"Schedules",agents:"Fimo agents",ai_credits:"AI features"}},UnclaimedLockedFeatureSchema=z84.enum(Object.keys(UNCLAIMED_PLAN.locked)),UNCLAIMED_CLAIM_STATES=["claimable","claimed","expired"],UnclaimedClaimStateSchema=z84.enum(UNCLAIMED_CLAIM_STATES),UNCLAIMED_PROJECT_ERROR_CODES=["project_unclaimed","unclaimed_limit_reached","unclaimed_deploy_limit","claim_not_claimable","claim_project_limit_reached","claim_target_organization_not_found","claim_target_organization_forbidden","claim_target_subscription_inactive","claim_blocked","project_token_required","unclaimed_media_limit"],UnclaimedProjectErrorCodeSchema=z84.enum(UNCLAIMED_PROJECT_ERROR_CODES),ProvisionUnclaimedProjectRequestSchema=z84.object({displayName:z84.string().trim().min(1).max(80),machineId:z84.string().trim().min(1).max(128).optional(),cliVersion:z84.string().trim().max(64).optional()}),UnclaimedProjectLimitsSchema=z84.object({ttlHours:z84.number().int().positive(),lockedFeatures:z84.array(UnclaimedLockedFeatureSchema),media:z84.object({totalBytes:z84.number().int().nonnegative(),fileBytes:z84.number().int().positive(),maxFiles:z84.number().int().nonnegative(),mimeTypes:z84.array(z84.string())}),database:z84.object({storageBytes:z84.number().int().positive(),computeSeconds:z84.number().int().positive(),maxComputeUnits:z84.number().positive()})}),UnclaimedProjectClaimSchema=z84.object({url:z84.string().url(),expiresAt:z84.coerce.date()}),ProvisionUnclaimedProjectResponseDTO=createDTO(z84.object({project:ProjectDTOSchema,token:z84.string(),claim:UnclaimedProjectClaimSchema,limits:UnclaimedProjectLimitsSchema})),UnclaimedClaimStatusDTO=createDTO(z84.object({state:UnclaimedClaimStateSchema,displayName:z84.string().nullable(),expiresAt:z84.coerce.date().nullable(),projectId:z84.string().nullable()})),UnclaimedClaimSecretSchema=z84.string().min(1).max(256),UnclaimedClaimStatusRequestSchema=z84.object({secret:UnclaimedClaimSecretSchema}),UnclaimedClaimStatesRequestSchema=z84.object({secrets:z84.array(UnclaimedClaimSecretSchema).min(1).max(20)}),UnclaimedClaimStatesResponseDTO=createDTO(z84.object({claims:z84.array(z84.object({state:UnclaimedClaimStateSchema,expiresAt:z84.coerce.date().nullable()}))})),ClaimUnclaimedProjectRequestSchema=z84.object({secret:UnclaimedClaimSecretSchema,organizationId:z84.string().min(1)}),ClaimUnclaimedProjectResultDTO=createDTO(z84.object({projectId:z84.string(),organizationId:z84.string()})),ProjectTokenSelfDTO=createDTO(z84.object({kind:z84.literal("project_token"),projectId:z84.string(),projectName:z84.string(),displayName:z84.string().nullable(),organizationId:z84.string().nullable(),organizationName:z84.string().nullable(),claimState:UnclaimedClaimStateSchema,expiresAt:z84.coerce.date().nullable(),tokenExpiresAt:z84.coerce.date().nullable()}))}});import{z as z85}from"zod";var ProjectLocaleCoverageSchema,ProjectLocaleStatsItemSchema,ProjectLocaleStatsSchema,ProjectLocaleStatsDTO,ProjectLocaleStatsResponseSchema,AddProjectLocaleRequestSchema,RemoveProjectLocaleParamsSchema,ProjectLocaleMutationSchema,ProjectLocaleMutationDTO,ProjectLocaleMutationResponseSchema,RemoveProjectLocaleSchema,RemoveProjectLocaleDTO,RemoveProjectLocaleResponseSchema,init_project_locale_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-locale.dto.js"(){"use strict";init_create_dto();init_response();ProjectLocaleCoverageSchema=z85.object({translated:z85.number().int().nonnegative(),total:z85.number().int().nonnegative()}),ProjectLocaleStatsItemSchema=z85.object({locale:z85.string(),isDefault:z85.boolean(),entries:ProjectLocaleCoverageSchema,labels:ProjectLocaleCoverageSchema}),ProjectLocaleStatsSchema=z85.object({defaultLocale:z85.string(),locales:z85.array(ProjectLocaleStatsItemSchema)}),ProjectLocaleStatsDTO=createDTO(ProjectLocaleStatsSchema),ProjectLocaleStatsResponseSchema=createResponseSchema(ProjectLocaleStatsSchema),AddProjectLocaleRequestSchema=z85.object({locale:z85.string().min(1).max(40)}),RemoveProjectLocaleParamsSchema=z85.object({locale:z85.string().min(1).max(40)}),ProjectLocaleMutationSchema=z85.object({locale:z85.string()}),ProjectLocaleMutationDTO=createDTO(ProjectLocaleMutationSchema),ProjectLocaleMutationResponseSchema=createResponseSchema(ProjectLocaleMutationSchema),RemoveProjectLocaleSchema=z85.object({locale:z85.string(),entriesDeleted:z85.number().int().nonnegative(),labelsDeleted:z85.number().int().nonnegative()}),RemoveProjectLocaleDTO=createDTO(RemoveProjectLocaleSchema),RemoveProjectLocaleResponseSchema=createResponseSchema(RemoveProjectLocaleSchema)}});import{z as z86}from"zod";function flag(key,description,options={}){return{name:key.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),key,description,type:options.type??"string",required:options.required??!1,...options.defaultValue!==void 0?{defaultValue:options.defaultValue}:{},...options.enumValues?{enumValues:[...options.enumValues]}:{},isArray:options.isArray??!1}}var GENERATION_QUALITIES,GENERATION_ASPECT_RATIOS,GENERATION_TASK_IDS,GenerationQualitySchema,GenerationTaskIdSchema,GENERATION_TASK_MANIFESTS,GenerationTaskEstimateDTOSchema,GenerationTaskEstimateDTO,init_generation_task_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/generation-task.dto.js"(){"use strict";init_create_dto();GENERATION_QUALITIES=["draft","standard","premium"],GENERATION_ASPECT_RATIOS=["1:1","16:9","9:16","4:3","3:4"],GENERATION_TASK_IDS=["image.generate","image.edit","image.remove-background","image.upscale","video.generate","video.animate","video.replace"],GenerationQualitySchema=z86.enum(GENERATION_QUALITIES),GenerationTaskIdSchema=z86.enum(GENERATION_TASK_IDS);__name(flag,"flag");GENERATION_TASK_MANIFESTS=[{id:"image.generate",modality:"image",operation:"generate",displayName:"Generate image",description:"Create an image from a prompt. Quality selects the appropriate generation route.",flags:[flag("prompt","Generation prompt",{required:!0}),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("aspectRatio","Output aspect ratio",{type:"enum",defaultValue:"1:1",enumValues:GENERATION_ASPECT_RATIOS})]},{id:"image.edit",modality:"image",operation:"edit",displayName:"Edit image",description:"Transform up to five source images using a natural-language instruction.",flags:[flag("prompt","Editing instruction",{required:!0}),flag("images","Source asset id or absolute URL; repeatable up to five times",{required:!0,isArray:!0}),flag("aspectRatio","Output aspect ratio",{type:"enum",defaultValue:"1:1",enumValues:GENERATION_ASPECT_RATIOS})]},{id:"image.remove-background",modality:"image",operation:"remove-background",displayName:"Remove image background",description:"Remove the background from one image and return a transparent cutout.",flags:[flag("image","Source asset id or absolute URL",{required:!0})]},{id:"image.upscale",modality:"image",operation:"upscale",displayName:"Upscale image",description:"Increase image resolution while preserving and optionally enhancing detail.",flags:[flag("image","Source asset id or absolute URL",{required:!0}),flag("targetMegapixels","Target resolution in megapixels",{type:"integer",defaultValue:4}),flag("outputFormat","Output image format",{type:"enum",defaultValue:"png",enumValues:["webp","jpg","png"]}),flag("enhanceDetails","Improve fine detail during upscaling",{type:"boolean",defaultValue:!0}),flag("enhanceRealism","Favor photorealistic detail reconstruction",{type:"boolean",defaultValue:!1})]},{id:"video.generate",modality:"video",operation:"generate",displayName:"Generate video",description:"Create a video from text or animate one source image. Loop closes the final frame back to the first.",flags:[flag("prompt","Generation and motion prompt",{required:!0}),flag("image","Optional source asset id or absolute URL"),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("aspectRatio","Output aspect ratio",{type:"enum",defaultValue:"16:9",enumValues:GENERATION_ASPECT_RATIOS}),flag("duration","Duration in seconds; loops support 3 to 20 seconds",{type:"integer",defaultValue:5}),flag("includeAudio","Generate audio with the video",{type:"boolean",defaultValue:!1}),flag("loop","Make the final frame return to the source image",{type:"boolean",defaultValue:!1})]},{id:"video.animate",modality:"video",operation:"animate",displayName:"Animate image from video",description:"Apply the motion and camera movement from a source video to a reference image.",flags:[flag("video","Motion source asset id or absolute URL",{required:!0}),flag("image","Subject reference asset id or absolute URL",{required:!0}),flag("prompt","Optional instruction for the animation"),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("duration","Source duration in seconds for cost calculation",{type:"integer",defaultValue:5}),flag("includeAudio","Keep audio in the generated video",{type:"boolean",defaultValue:!0})]},{id:"video.replace",modality:"video",operation:"replace",displayName:"Replace subjects in video",description:"Replace people in a source video with one to three reference identities while preserving motion.",flags:[flag("video","Source video asset id or absolute URL",{required:!0}),flag("images","Identity reference asset id or URL; repeatable up to three times",{required:!0,isArray:!0}),flag("prompt","Optional placement instruction"),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("duration","Source duration in seconds for cost calculation",{type:"integer",defaultValue:5}),flag("includeAudio","Keep audio in the generated video",{type:"boolean",defaultValue:!0})]}],GenerationTaskEstimateDTOSchema=z86.object({task:GenerationTaskIdSchema,quality:GenerationQualitySchema.optional(),costUsd:z86.number(),credits:z86.number().optional(),billingMode:z86.enum(["fimo-credits","provider-account"]).optional(),confidence:z86.enum(["exact","estimated","metered"]),basis:z86.string()}),GenerationTaskEstimateDTO=createDTO(GenerationTaskEstimateDTOSchema)}});import{z as z87}from"zod";var GenerateRequestBaseSchema,GenerateRequestDTOSchema,GenerateRequestDTO,GenerateResponseDataSchema,GenerateResponseDTO,GenerateResponseSchema,GenerateErrorSchema,init_generation_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/generation.dto.js"(){"use strict";init_create_dto();init_response();init_asset_dto();init_generation_task_dto();GenerateRequestBaseSchema=z87.object({options:z87.record(z87.string(),z87.unknown()),name:z87.string().optional(),parentId:z87.string().nullable().optional(),altText:z87.string().optional(),caption:z87.string().optional()}),GenerateRequestDTOSchema=GenerateRequestBaseSchema.extend({task:z87.string().min(1).optional(),model:z87.string().min(1).optional()}).superRefine((value,context)=>{!!value.task==!!value.model&&context.addIssue({code:"custom",message:"Provide exactly one of task or model",path:["task"]})}),GenerateRequestDTO=createDTO(GenerateRequestDTOSchema),GenerateResponseDataSchema=z87.object({jobId:z87.string(),status:z87.enum(["queued","running","completed","failed"]),asset:AssetDTOSchema.optional(),error:z87.string().nullable().optional(),credits:z87.number().optional(),costUsd:z87.number().optional(),billingMode:z87.enum(["fimo-credits","provider-account"]).optional(),task:GenerationTaskIdSchema.optional(),quality:GenerationQualitySchema.optional()}),GenerateResponseDTO=createDTO(GenerateResponseDataSchema),GenerateResponseSchema=createResponseSchema(GenerateResponseDataSchema),GenerateErrorSchema=z87.object({error:z87.string(),code:z87.enum(["unknown-task","unknown-model","options-invalid","source-invalid","task-routing-failed","generation-failed","provider-error","cost-limit-exceeded","cost-estimate-unavailable","unsupported-modality"]),availableTasks:z87.array(GenerationTaskIdSchema).optional(),availableModels:z87.array(z87.string()).optional(),issues:z87.array(z87.unknown()).optional()})}});import{z as z88}from"zod";var FlagTypeSchema,FlagSpecSchema,AssetModelPriceSchema,AssetModelDTOSchema,AssetModelDTO,AssetModelEstimateDTOSchema,AssetModelEstimateDTO,init_asset_model_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/asset-model.dto.js"(){"use strict";init_create_dto();FlagTypeSchema=z88.enum(["string","number","integer","boolean","enum","array","unknown"]),FlagSpecSchema=z88.object({name:z88.string(),key:z88.string(),description:z88.string(),type:FlagTypeSchema,required:z88.boolean(),defaultValue:z88.unknown().optional(),enumValues:z88.array(z88.string()).optional(),isArray:z88.boolean()}),AssetModelPriceSchema=z88.object({unitPrice:z88.number(),unit:z88.string(),confidence:z88.enum(["exact","estimated","metered"])}),AssetModelDTOSchema=z88.object({id:z88.string(),shortName:z88.string(),provider:z88.string(),source:z88.string(),modality:z88.enum(["image","video","audio"]),tags:z88.array(z88.string()),displayName:z88.string(),description:z88.string(),flags:z88.array(FlagSpecSchema),price:AssetModelPriceSchema.nullable()}),AssetModelDTO=createDTO(AssetModelDTOSchema),AssetModelEstimateDTOSchema=z88.object({model:z88.string(),costUsd:z88.number(),credits:z88.number(),billingMode:z88.enum(["fimo-credits","provider-account"]),confidence:z88.enum(["exact","estimated","metered"]),basis:z88.string()}),AssetModelEstimateDTO=createDTO(AssetModelEstimateDTOSchema)}});import{z as z89}from"zod";var UserTourDTOSchema,UserTourDTO,UserTourResponseSchema,UserTourListResponseSchema,init_tour_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/tour.dto.js"(){"use strict";init_create_dto();init_response();UserTourDTOSchema=z89.object({tourId:z89.string(),version:z89.string(),status:z89.string(),completedAt:z89.coerce.date()}),UserTourDTO=createDTO(UserTourDTOSchema),UserTourResponseSchema=createResponseSchema(UserTourDTOSchema),UserTourListResponseSchema=createResponseSchema(z89.array(UserTourDTOSchema))}});import{z as z90}from"zod";var OpsSentryIssueResolutionResponseSchema,OpsSentryIssueResolutionResponseDTO,OpsSentryIssueResolutionErrorResponseSchema,OpsSentryIssueResolutionErrorResponseDTO,init_ops_sentry_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/ops-sentry.dto.js"(){"use strict";init_ops();init_create_dto();OpsSentryIssueResolutionResponseSchema=z90.object({backendProfile:OpsBackendProfileSchema,provider:z90.literal("sentry"),issueId:OpsSentryIssueIdSchema,status:z90.literal("resolved")}),OpsSentryIssueResolutionResponseDTO=createDTO(OpsSentryIssueResolutionResponseSchema),OpsSentryIssueResolutionErrorResponseSchema=z90.object({backendProfile:OpsBackendProfileSchema,provider:z90.literal("sentry"),issueId:OpsSentryIssueIdSchema,resolved:z90.literal(!1),reason:z90.string()}),OpsSentryIssueResolutionErrorResponseDTO=createDTO(OpsSentryIssueResolutionErrorResponseSchema)}});import{z as z91}from"zod";var OpsProjectPackageManagerSummarySchema,OpsProjectPackageManagerSchema,OpsProjectPackageManagerDTO,init_ops_project_files_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/ops-project-files.dto.js"(){"use strict";init_ops();init_create_dto();OpsProjectPackageManagerSummarySchema=z91.object({packageManager:z91.string().trim().min(1).max(200).nullable(),trackedLockfiles:z91.array(z91.enum(OPS_PROJECT_PACKAGE_MANAGER_LOCKFILES)),sourceRevision:z91.string().trim().min(1)}),OpsProjectPackageManagerSchema=z91.object({target:z91.object({backendProfile:OpsBackendProfileSchema,projectId:z91.uuid(),projectEnv:z91.string().trim().min(1).max(255)}),...OpsProjectPackageManagerSummarySchema.shape}),OpsProjectPackageManagerDTO=createDTO(OpsProjectPackageManagerSchema)}});import{z as z92}from"zod";function uniqueRoutineNames(spec){let names=(spec.routines??[]).map(routine=>routine.name);return new Set(names).size===names.length}var OpsAgentChatRoutineSpecSchema,OpsAgentChatAgentSpecSchema,OpsAgentChatSpecObjectSchema,UNIQUE_ROUTINE_NAMES,OpsAgentChatSpecSchema,OpsAgentChatCreateInputSchema,OpsAgentChatOutcomeSchema,OpsAgentChatRoutineResultSchema,OpsAgentChatCreateResultSchema,init_ops_agent_chat_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/ops-agent-chat.dto.js"(){"use strict";init_ops();init_chat_routine_dto();OpsAgentChatRoutineSpecSchema=ChatRoutineCreateSchema.extend({schedule:ChatRoutineScheduleSchema.nullable(),paused:z92.boolean().optional()}).strict(),OpsAgentChatAgentSpecSchema=z92.union([z92.object({name:z92.string().trim().min(1).max(120),description:z92.string().trim().min(1).max(2e3)}).strict(),z92.object({template:z92.string().trim().min(1).max(64)}).strict()]),OpsAgentChatSpecObjectSchema=z92.object({agent:OpsAgentChatAgentSpecSchema,routines:z92.array(OpsAgentChatRoutineSpecSchema).max(50).optional()}).strict();__name(uniqueRoutineNames,"uniqueRoutineNames");UNIQUE_ROUTINE_NAMES={path:["routines"],message:"Routine names must be unique within one agent"},OpsAgentChatSpecSchema=OpsAgentChatSpecObjectSchema.refine(uniqueRoutineNames,UNIQUE_ROUTINE_NAMES),OpsAgentChatCreateInputSchema=OpsAgentChatSpecObjectSchema.extend({reason:z92.string().trim().min(1).max(1e3),dryRun:z92.boolean().optional()}).refine(uniqueRoutineNames,UNIQUE_ROUTINE_NAMES),OpsAgentChatOutcomeSchema=z92.enum(["created","existing","would_create"]),OpsAgentChatRoutineResultSchema=z92.object({id:z92.string().uuid().nullable(),name:z92.string(),schedule:ChatRoutineScheduleSchema.nullable(),nextRunAt:z92.string().nullable(),paused:z92.boolean(),outcome:z92.enum(["created","would_create"]),source:z92.enum(["spec","template"])}),OpsAgentChatCreateResultSchema=z92.object({target:z92.object({backendProfile:OpsBackendProfileSchema,projectId:z92.string().uuid()}),dryRun:z92.boolean(),applied:z92.boolean(),createdBy:z92.object({userId:z92.string()}),agent:z92.object({id:z92.string().uuid().nullable(),title:z92.string(),template:z92.string().nullable(),outcome:OpsAgentChatOutcomeSchema}),routines:z92.array(OpsAgentChatRoutineResultSchema),skipped:z92.array(z92.object({name:z92.string(),reason:z92.literal("routine_exists")})),refused:z92.array(z92.object({name:z92.string(),reason:ChatRoutineRefusalReasonSchema}))})}});import{z as z93}from"zod";var WEBHOOK_EVENT_TYPES,WebhookEventTypeSchema,WebhookEntryChangeActionSchema,WebhookEntryChangeReasonSchema,WebhookEnvironmentScopeSchema,WebhookEnvironmentSelectorSchema,EntryChangedWebhookEventDataSchema,FormSubmittedWebhookEventDataSchema,PublishStartedWebhookEventDataSchema,PublishSucceededWebhookEventDataSchema,PublishFailedWebhookEventDataSchema,PublishUnpublishedWebhookEventDataSchema,AnalyticsReportReadyWebhookEventDataSchema,MediaAssetWebhookEventDataSchema,MediaUploadedWebhookEventDataSchema,MediaUpdatedWebhookEventDataSchema,MediaDeletedWebhookEventDataSchema,DomainCreatedWebhookEventDataSchema,DomainDeletedWebhookEventDataSchema,LabelChangedWebhookEventDataSchema,LocaleCreatedWebhookEventDataSchema,LocaleDefaultChangedWebhookEventDataSchema,LocaleDeletedWebhookEventDataSchema,EnvironmentCreatedWebhookEventDataSchema,EnvironmentDeletedWebhookEventDataSchema,EnvironmentMergedWebhookEventDataSchema,BranchRestoredWebhookEventDataSchema,WebhookEventFamilySchema,WebhookDestinationKindSchema,WebhookHeaderValueInputSchema,WebhookHeaderInputSchema,WebhookHeaderDTOSchema,WebhookFilterSchema,JsonValueSchema,CreateProjectWebhookRequestSchema,UpdateProjectWebhookRequestSchema,TestProjectWebhookRequestSchema,WebhookDeliveryStatusSchema,ProjectWebhookDTOSchema,ProjectWebhookDTO,WebhookDeliveryDTOSchema,WebhookDeliveryDTO,WebhookDeliveriesPageSchema,WebhookDeliveryAttemptDTOSchema,WebhookDeliveryAttemptDTO,ProjectWebhookResponseSchema,ProjectWebhooksListResponseSchema,WebhookDeliveriesListResponseSchema,WebhookDeliveryAttemptsListResponseSchema,init_webhook_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/webhook.dto.js"(){"use strict";init_common();init_env();init_environment();init_create_dto();init_response();init_env_status_dto();init_project_domain_dto();WEBHOOK_EVENT_TYPES=["entry.changed","form.submitted","publish.started","publish.succeeded","publish.failed","publish.unpublished","analytics.report_ready","media.uploaded","media.updated","media.deleted","domain.created","domain.deleted","label.changed","locale.created","locale.default_changed","locale.deleted","environment.created","environment.deleted","environment.merged","branch.restored"],WebhookEventTypeSchema=z93.enum(WEBHOOK_EVENT_TYPES),WebhookEntryChangeActionSchema=z93.enum(["created","updated","deleted"]),WebhookEntryChangeReasonSchema=z93.enum(["entry_write","bulk_edit","environment_merge"]),WebhookEnvironmentScopeSchema=z93.enum(["main","all"]),WebhookEnvironmentSelectorSchema=z93.union([WebhookEnvironmentScopeSchema,EnvironmentKeySchema]),EntryChangedWebhookEventDataSchema=z93.object({reason:WebhookEntryChangeReasonSchema,operationId:z93.string().optional(),batch:z93.object({index:z93.number().int().positive(),total:z93.number().int().positive()}).optional(),changes:z93.array(z93.object({action:WebhookEntryChangeActionSchema,contentType:z93.string(),id:z93.string(),documentId:z93.string(),locale:z93.string().nullable()}))}),FormSubmittedWebhookEventDataSchema=z93.object({form:z93.object({id:z93.string(),label:z93.string()}),submission:z93.object({id:z93.string(),data:z93.record(z93.string(),z93.unknown()),submittedAt:z93.string()})}),PublishStartedWebhookEventDataSchema=z93.object({publication:z93.object({status:z93.literal("publishing"),startedAt:z93.string()})}),PublishSucceededWebhookEventDataSchema=z93.object({publication:z93.object({status:z93.literal("published"),url:z93.string(),publishedAt:z93.string(),firstPublish:z93.boolean()})}),PublishFailedWebhookEventDataSchema=z93.object({publication:z93.object({status:z93.literal("failed"),reason:z93.string()})}),PublishUnpublishedWebhookEventDataSchema=z93.object({publication:z93.object({previousUrl:z93.string(),unpublishedAt:z93.string()})}),AnalyticsReportReadyWebhookEventDataSchema=z93.object({report:z93.object({weekStart:z93.string(),weekEnd:z93.string(),pageviews:z93.number(),visitors:z93.number(),previousPageviews:z93.number(),previousVisitors:z93.number()})}),MediaAssetWebhookEventDataSchema=z93.object({id:z93.string().nullable(),name:z93.string().nullable(),type:z93.string(),mimeType:z93.string().nullable(),fileSize:z93.number().nullable()}),MediaUploadedWebhookEventDataSchema=z93.object({asset:MediaAssetWebhookEventDataSchema,operation:z93.literal("uploaded")}),MediaUpdatedWebhookEventDataSchema=z93.object({asset:MediaAssetWebhookEventDataSchema,operation:z93.literal("updated")}),MediaDeletedWebhookEventDataSchema=z93.object({asset:MediaAssetWebhookEventDataSchema,operation:z93.literal("deleted")}),DomainCreatedWebhookEventDataSchema=z93.object({domain:z93.object({id:z93.string(),hostname:z93.string(),status:ProjectDomainStatusSchema,sslStatus:SSLStatusSchema})}),DomainDeletedWebhookEventDataSchema=z93.object({domain:z93.object({id:z93.string(),hostname:z93.string()})}),LabelChangedWebhookEventDataSchema=z93.object({changes:z93.array(z93.object({action:z93.enum(["created","updated","deleted"]),key:z93.string(),locale:z93.string(),value:z93.string().nullable()}))}),LocaleCreatedWebhookEventDataSchema=z93.object({locale:z93.object({code:z93.string(),isDefault:z93.boolean()})}),LocaleDefaultChangedWebhookEventDataSchema=z93.object({locale:z93.object({code:z93.string(),previousCode:z93.string()})}),LocaleDeletedWebhookEventDataSchema=z93.object({locale:z93.object({code:z93.string(),entriesDeleted:z93.number().int().nonnegative(),labelsDeleted:z93.number().int().nonnegative()})}),EnvironmentCreatedWebhookEventDataSchema=z93.object({environment:z93.object({name:BranchSchema,parent:BranchSchema})}),EnvironmentDeletedWebhookEventDataSchema=z93.object({environment:z93.object({name:BranchSchema})}),EnvironmentMergedWebhookEventDataSchema=z93.object({merge:z93.object({id:z93.string(),from:BranchSchema,to:BranchSchema,applied:z93.array(z93.object({surface:SurfaceNameSchema,count:z93.number().int().nonnegative()}))})}),BranchRestoredWebhookEventDataSchema=z93.object({branch:z93.object({name:BranchSchema}),version:z93.object({versionId:z93.uuid(),name:z93.string()})}),WebhookEventFamilySchema=z93.enum(["entries","forms","publish","analytics","media","domains","labels","locales","environments"]),WebhookDestinationKindSchema=z93.enum(["custom","resend","github","slack"]),WebhookHeaderValueInputSchema=z93.discriminatedUnion("source",[z93.object({source:z93.literal("literal"),value:z93.string().min(1).max(4096).regex(/^[^\r\n]*$/)}),z93.object({source:z93.literal("secret"),key:z93.string().regex(/^[A-Z_][A-Z0-9_]*$/),prefix:z93.string().max(128).regex(/^[^\r\n]*$/).optional()})]),WebhookHeaderInputSchema=z93.object({name:z93.string().min(1).max(128),value:WebhookHeaderValueInputSchema}),WebhookHeaderDTOSchema=z93.object({name:z93.string(),source:z93.enum(["literal","secret"]),secretKey:z93.string().nullable(),secretPrefix:z93.string().nullable(),configured:z93.literal(!0)}),WebhookFilterSchema=z93.object({environment:WebhookEnvironmentSelectorSchema.optional(),formId:z93.string().min(1).max(255).optional(),mediaType:z93.enum(["image","video","audio","document","other"]).optional(),action:WebhookEntryChangeActionSchema.optional(),contentType:z93.string().min(1).max(255).optional(),locale:z93.string().min(1).max(120).optional()}),JsonValueSchema=z93.lazy(()=>z93.union([z93.string(),z93.number(),z93.boolean(),z93.null(),z93.array(JsonValueSchema),z93.record(z93.string(),JsonValueSchema)])),CreateProjectWebhookRequestSchema=z93.object({name:z93.string().trim().min(1).max(120),eventType:WebhookEventTypeSchema,url:z93.url(),enabled:z93.boolean().optional().default(!0),filter:WebhookFilterSchema.optional().default({}),headers:z93.array(WebhookHeaderInputSchema).max(20).optional().default([]),bodyTemplate:JsonValueSchema.nullable().optional().default(null),signingEnabled:z93.boolean().optional().default(!0)}),UpdateProjectWebhookRequestSchema=z93.object({name:z93.string().trim().min(1).max(120).optional(),eventType:WebhookEventTypeSchema.optional(),url:z93.url().optional(),enabled:z93.boolean().optional(),filter:WebhookFilterSchema.optional(),headers:z93.array(WebhookHeaderInputSchema).max(20).optional(),bodyTemplate:JsonValueSchema.nullable().optional(),signingEnabled:z93.boolean().optional()}),TestProjectWebhookRequestSchema=z93.object({eventType:WebhookEventTypeSchema.optional(),data:z93.record(z93.string(),JsonValueSchema).optional()}),WebhookDeliveryStatusSchema=z93.enum(["pending","delivering","retrying","succeeded","failed"]),ProjectWebhookDTOSchema=BaseEntitySchema.extend({projectId:z93.uuid(),name:z93.string(),eventType:WebhookEventTypeSchema,enabled:z93.boolean(),destination:z93.object({host:z93.string(),maskedUrl:z93.string(),kind:WebhookDestinationKindSchema}),filter:WebhookFilterSchema,headers:z93.array(WebhookHeaderDTOSchema),bodyTemplate:JsonValueSchema.nullable(),signingEnabled:z93.boolean(),lastDeliveryStatus:WebhookDeliveryStatusSchema.nullable(),lastDeliveryAt:z93.coerce.date().nullable(),deliveryStats24h:z93.object({succeeded:z93.number().int().nonnegative(),failed:z93.number().int().nonnegative()})}),ProjectWebhookDTO=createDTO(ProjectWebhookDTOSchema),WebhookDeliveryDTOSchema=BaseEntitySchema.extend({webhookId:z93.uuid(),projectId:z93.uuid(),env:BranchSchema,environment:EnvironmentKeySchema,branch:BranchSchema,eventId:z93.uuid(),eventType:WebhookEventTypeSchema,eventVersion:z93.number().int().positive(),test:z93.boolean(),status:WebhookDeliveryStatusSchema,attemptCount:z93.number().int().nonnegative(),responseStatus:z93.number().int().nullable(),lastErrorCode:z93.string().nullable(),lastErrorMessage:z93.string().nullable(),payloadAvailable:z93.boolean(),destination:z93.object({host:z93.string(),maskedUrl:z93.string(),kind:WebhookDestinationKindSchema}),requestHeaders:z93.array(WebhookHeaderDTOSchema),requestBodyExcerpt:z93.string().nullable(),qstashMessageId:z93.string().nullable(),deliveredAt:z93.coerce.date().nullable()}),WebhookDeliveryDTO=createDTO(WebhookDeliveryDTOSchema),WebhookDeliveriesPageSchema=z93.object({items:z93.array(WebhookDeliveryDTOSchema),pagination:z93.object({page:z93.number().int().positive(),limit:z93.number().int().positive(),total:z93.number().int().nonnegative(),totalPages:z93.number().int().positive(),hasMore:z93.boolean()}),stats:z93.object({total:z93.number().int().nonnegative(),succeeded:z93.number().int().nonnegative(),failed:z93.number().int().nonnegative()})}),WebhookDeliveryAttemptDTOSchema=z93.object({id:z93.uuid(),deliveryId:z93.uuid(),attempt:z93.number().int().positive(),status:z93.enum(["delivering","succeeded","failed"]),responseStatus:z93.number().int().nullable(),durationMs:z93.number().int().nonnegative(),responseExcerpt:z93.string().nullable(),errorCode:z93.string().nullable(),errorMessage:z93.string().nullable(),createdAt:z93.coerce.date()}),WebhookDeliveryAttemptDTO=createDTO(WebhookDeliveryAttemptDTOSchema),ProjectWebhookResponseSchema=createResponseSchema(ProjectWebhookDTOSchema),ProjectWebhooksListResponseSchema=createResponseSchema(z93.array(ProjectWebhookDTOSchema)),WebhookDeliveriesListResponseSchema=createResponseSchema(WebhookDeliveriesPageSchema),WebhookDeliveryAttemptsListResponseSchema=createResponseSchema(z93.array(WebhookDeliveryAttemptDTOSchema))}});import{z as z94}from"zod";var PreviewFeatureDTOSchema,PreviewFeatureDTO,init_preview_feature_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/preview-feature.dto.js"(){"use strict";init_create_dto();PreviewFeatureDTOSchema=z94.object({key:z94.literal("fimo-2"),enabled:z94.boolean(),dismissed:z94.boolean().default(!1),interacted:z94.boolean().default(!1)}),PreviewFeatureDTO=createDTO(PreviewFeatureDTOSchema)}});import{z as z95}from"zod";var SiteOnboardingStageSchema,SiteScanStatusSchema,SiteCloneStatusSchema,SiteRefusalCodeSchema,SiteRefusalSchema,SiteCheckGroupSchema,SiteScoreSchema,SITE_CHECKS,SiteCheckIdSchema,SiteCheckStatusSchema,SiteCheckEvidenceSchema,SiteCheckResultSchema,SiteReportGroupSchema,SiteReportSchema,SitePriceTierSchema,SiteTypeSchema,SiteTermsCategorySchema,SITE_QUESTION,SITE_QUESTIONS,SiteUnderstandingSchema,SiteSuggestionSchema,SiteInterviewSuggestionsSchema,SiteInterviewAnswerSchema,SiteInterviewSchema,AnswerSiteInterviewRequestSchema,SiteFixesReportSchema,SiteOnboardingResultSchema,StartSiteOnboardingRequestSchema,StartSiteOnboardingResponseSchema,SiteOnboardingRefusedResponseSchema,SiteOnboardingStateSchema,SiteOnboardingStateDTO,SiteOnboardingStateResponseSchema,RetrySiteOnboardingRequestSchema,SiteOnboardingOutcomeSchema,AdminSiteOnboardingsQuerySchema,AdminSiteOnboardingDTOSchema,AdminSiteOnboardingDTO,AdminSiteOnboardingsResponseSchema,AdminSiteOnboardingStatsSchema,AdminSiteOnboardingStatsResponseSchema,AdminSiteOnboardingDetailSchema,AdminSiteOnboardingDetailDTO,AdminSiteOnboardingDetailResponseSchema,init_site_onboarding_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/site-onboarding.dto.js"(){"use strict";init_create_dto();init_response();SiteOnboardingStageSchema=z95.enum(["scanning","interviewing","reporting","open","expired","refused"]),SiteScanStatusSchema=z95.enum(["running","done","failed"]),SiteCloneStatusSchema=z95.enum(["not_started","running","paused","finished","failed"]),SiteRefusalCodeSchema=z95.enum(["invalid","private","not_found","tls","unreachable","redirect","error_page","bot_wall"]),SiteRefusalSchema=z95.object({code:SiteRefusalCodeSchema,suggestedUrl:z95.string().nullable()}),SiteCheckGroupSchema=z95.enum(["discovery","indexing","ai_crawlers","rendering","metadata","content","speed"]),SiteScoreSchema=z95.enum(["seo","geo"]),SITE_CHECKS=[{id:"robots_txt",group:"discovery",scores:["seo","geo"],weight:2},{id:"sitemap",group:"discovery",scores:["seo","geo"],weight:2},{id:"sitemap_lastmod",group:"discovery",scores:["seo","geo"],weight:1},{id:"broken_links",group:"discovery",scores:["seo"],weight:2},{id:"internal_nofollow",group:"discovery",scores:["seo"],weight:1},{id:"blocked_from_crawling",group:"discovery",scores:["seo","geo"],weight:3,cap:{seo:20,geo:20}},{id:"status_4xx",group:"indexing",scores:["seo","geo"],weight:2,cap:{seo:10,geo:10}},{id:"status_5xx",group:"indexing",scores:["seo","geo"],weight:3,cap:{seo:10,geo:10}},{id:"https_to_http",group:"indexing",scores:["seo"],weight:1,cap:{seo:50}},{id:"canonical",group:"indexing",scores:["seo"],weight:1},{id:"noindex",group:"indexing",scores:["seo","geo"],weight:3,cap:{seo:20,geo:20}},{id:"hreflang",group:"indexing",scores:["seo"],weight:1},{id:"missing_page",group:"indexing",scores:["seo","geo"],weight:1,cap:{seo:80,geo:80}},{id:"ai_bots_robots",group:"ai_crawlers",scores:["geo"],weight:3,cap:{geo:30}},{id:"ai_bot_access",group:"ai_crawlers",scores:["geo"],weight:2,cap:{geo:40}},{id:"llms_txt",group:"ai_crawlers",scores:["geo"],weight:1},{id:"server_rendering",group:"rendering",scores:["geo"],weight:3},{id:"semantic_html",group:"rendering",scores:["seo","geo"],weight:2},{id:"markdown_pages",group:"rendering",scores:["geo"],weight:1},{id:"markdown_alternate",group:"rendering",scores:["geo"],weight:.5},{id:"markdown_index",group:"rendering",scores:["geo"],weight:.5},{id:"meta_title",group:"metadata",scores:["seo"],weight:2},{id:"meta_description",group:"metadata",scores:["seo"],weight:2},{id:"structured_data",group:"metadata",scores:["seo","geo"],weight:2},{id:"organization_schema",group:"metadata",scores:["geo"],weight:2},{id:"entity_links",group:"metadata",scores:["geo"],weight:1},{id:"metadata_completeness",group:"metadata",scores:["seo","geo"],weight:2},{id:"trust_pages",group:"metadata",scores:["geo"],weight:2},{id:"word_count",group:"content",scores:["seo","geo"],weight:2},{id:"text_ratio",group:"content",scores:["seo"],weight:1},{id:"h1",group:"content",scores:["seo"],weight:2},{id:"image_alt",group:"content",scores:["seo","geo"],weight:1},{id:"broken_images",group:"content",scores:["seo"],weight:1},{id:"empty_link_text",group:"content",scores:["seo","geo"],weight:1},{id:"page_load",group:"speed",scores:["seo"],weight:3},{id:"unminified_assets",group:"speed",scores:["seo"],weight:1}],SiteCheckIdSchema=z95.enum(SITE_CHECKS.map(check=>check.id)),SiteCheckStatusSchema=z95.enum(["pass","partial","fail","not_scored"]),SiteCheckEvidenceSchema=z95.record(z95.string(),z95.union([z95.string(),z95.number(),z95.boolean(),z95.array(z95.string())])),SiteCheckResultSchema=z95.object({id:SiteCheckIdSchema,status:SiteCheckStatusSchema,evidence:SiteCheckEvidenceSchema}),SiteReportGroupSchema=z95.object({id:SiteCheckGroupSchema,score:z95.number().int().min(0).max(100).nullable()}),SiteReportSchema=z95.object({siteUrl:z95.string(),scannedAt:z95.coerce.date(),seoScore:z95.number().int().min(0).max(100).nullable(),geoScore:z95.number().int().min(0).max(100).nullable(),groups:z95.array(SiteReportGroupSchema),checks:z95.array(SiteCheckResultSchema),blockers:z95.array(SiteCheckIdSchema).default([])}),SitePriceTierSchema=z95.enum(["budget","standard","premium","luxury"]),SiteTypeSchema=z95.enum(["business","non_profit","portfolio","hobby","personal"]),SiteTermsCategorySchema=z95.enum(["violence","child_harm","harassment","hate","self_harm","adult","deception","scam"]),SITE_QUESTION={id:"site",kind:"confirm"},SITE_QUESTIONS={business:[SITE_QUESTION,{id:"competitors",kind:"form",inputs:[{id:"names",kind:"choices",multiple:!0,allowOther:!0,options:"competitors"}]},{id:"positioning",kind:"form",inputs:[{id:"positioning",kind:"text",max:2e3}]},{id:"priceTier",kind:"form",inputs:[{id:"priceTier",kind:"choices",multiple:!1,allowOther:!1,options:SitePriceTierSchema.options}]}],non_profit:[SITE_QUESTION,{id:"action",kind:"form",inputs:[{id:"picks",kind:"choices",multiple:!1,allowOther:!0,options:["volunteer","donate","join","next_event"]}]},{id:"searches",kind:"form",inputs:[{id:"picks",kind:"choices",multiple:!0,allowOther:!0,options:"model"}]}],portfolio:[SITE_QUESTION,{id:"work",kind:"form",inputs:[{id:"picks",kind:"choices",multiple:!0,allowOther:!0,options:"model"}]},{id:"action",kind:"form",inputs:[{id:"picks",kind:"choices",multiple:!1,allowOther:!0,options:["book_call","request_quote","email","follow"]}]}],hobby:[SITE_QUESTION,{id:"return",kind:"form",inputs:[{id:"picks",kind:"choices",multiple:!0,allowOther:!0,options:["creations","tutorials","progress","tips"]}]},{id:"tone",kind:"form",inputs:[{id:"picks",kind:"choices",multiple:!1,allowOther:!1,options:["warm","expert","playful","calm"]}]}],personal:[SITE_QUESTION,{id:"remember",kind:"form",inputs:[{id:"picks",kind:"choices",multiple:!1,allowOther:!0,options:"model"}]},{id:"action",kind:"form",inputs:[{id:"picks",kind:"choices",multiple:!1,allowOther:!0,options:["read","contact","hire","follow"]}]}]},SiteUnderstandingSchema=z95.object({name:z95.string(),summary:z95.string(),audience:z95.string(),positioning:z95.string(),priceTier:SitePriceTierSchema,homepage:z95.string()}),SiteSuggestionSchema=z95.object({label:z95.string(),url:z95.string().nullable()}),SiteInterviewSuggestionsSchema=z95.record(z95.string(),z95.record(z95.string(),z95.array(SiteSuggestionSchema))),SiteInterviewAnswerSchema=z95.record(z95.string().max(50),z95.union([z95.string().trim().max(2e3),z95.array(z95.string().trim().min(1).max(200)).max(10)])),SiteInterviewSchema=z95.object({status:z95.enum(["waiting","drafting","ready","failed"]),siteType:SiteTypeSchema.nullable(),site:SiteUnderstandingSchema.nullable(),suggestions:SiteInterviewSuggestionsSchema,answers:z95.record(z95.string(),SiteInterviewAnswerSchema)}),AnswerSiteInterviewRequestSchema=z95.object({questionId:z95.string().min(1).max(50),answer:SiteInterviewAnswerSchema}),SiteFixesReportSchema=z95.object({fixes:z95.array(z95.object({checkId:SiteCheckIdSchema,status:z95.enum(["fixed","not_fixed","not_applicable"]),note:z95.string().trim().min(1).max(300)})).min(1).max(40)}),SiteOnboardingResultSchema=z95.object({fixes:SiteFixesReportSchema.nullable(),summary:z95.string().nullable()}),StartSiteOnboardingRequestSchema=z95.object({organizationId:z95.string().min(1),url:z95.string().trim().min(1).max(2048),locale:z95.string().trim().min(2).max(16).default("en")}),StartSiteOnboardingResponseSchema=createResponseSchema(z95.object({projectId:z95.string()})),SiteOnboardingRefusedResponseSchema=z95.object({error:z95.literal("site_refused"),refusal:SiteRefusalSchema}),SiteOnboardingStateSchema=z95.object({projectId:z95.string(),siteUrl:z95.string(),stage:SiteOnboardingStageSchema,scanStatus:SiteScanStatusSchema,cloneStatus:SiteCloneStatusSchema,cloneRetryAvailable:z95.boolean(),budgetExhausted:z95.boolean(),sponsored:z95.boolean(),cloneOutOfCredits:z95.boolean(),interview:SiteInterviewSchema.nullable(),cloneThreadId:z95.string().nullable(),welcomeThreadId:z95.string().nullable(),competitors:z95.array(z95.string()),report:SiteReportSchema.nullable(),reportExpiresAt:z95.coerce.date(),openedAt:z95.coerce.date().nullable(),bannerDismissed:z95.boolean()}),SiteOnboardingStateDTO=createDTO(SiteOnboardingStateSchema),SiteOnboardingStateResponseSchema=createResponseSchema(SiteOnboardingStateSchema.nullable()),RetrySiteOnboardingRequestSchema=z95.object({task:z95.enum(["interview","scan","clone"])}),SiteOnboardingOutcomeSchema=z95.enum(["finished","rebuilding","paused","failed","scan_failed","scanning","expired","refused","not_started"]),AdminSiteOnboardingsQuerySchema=z95.object({search:z95.string().trim().max(200).optional(),organizationId:z95.string().trim().min(1).max(200).optional(),startDate:z95.coerce.date().optional(),endDate:z95.coerce.date().optional(),outcomes:z95.string().optional().transform(value=>value?value.split(",").filter(Boolean):void 0).pipe(z95.array(SiteOnboardingOutcomeSchema).optional()),siteTypes:z95.string().optional().transform(value=>value?value.split(",").filter(Boolean):void 0).pipe(z95.array(SiteTypeSchema).optional()),page:z95.coerce.number().int().min(1).default(1),pageSize:z95.coerce.number().int().min(1).max(100).default(25)}),AdminSiteOnboardingDTOSchema=z95.object({projectId:z95.string(),projectName:z95.string(),organizationId:z95.string(),organizationName:z95.string().nullable(),ownerEmail:z95.string().nullable(),ownerName:z95.string().nullable(),siteUrl:z95.string(),stage:SiteOnboardingStageSchema,scanStatus:SiteScanStatusSchema,cloneStatus:SiteCloneStatusSchema,outcome:SiteOnboardingOutcomeSchema,sponsored:z95.boolean(),cloneRetries:z95.number(),siteType:SiteTypeSchema.nullable(),refusalCategory:SiteTermsCategorySchema.nullable(),interviewAnswers:z95.number(),interviewQuestions:z95.number().nullable(),seoScore:z95.number().nullable(),geoScore:z95.number().nullable(),spentUsd:z95.number(),budgetCapUsd:z95.number(),capReached:z95.boolean(),cloneSeconds:z95.number().nullable(),createdAt:z95.coerce.date(),openedAt:z95.coerce.date().nullable()}),AdminSiteOnboardingDTO=createDTO(AdminSiteOnboardingDTOSchema),AdminSiteOnboardingsResponseSchema=createResponseSchema(z95.object({onboardings:z95.array(AdminSiteOnboardingDTOSchema),page:z95.number(),limit:z95.number(),total:z95.number(),totalPages:z95.number()})),AdminSiteOnboardingStatsSchema=z95.object({total:z95.number(),outcomes:z95.record(SiteOnboardingOutcomeSchema,z95.number()),funnel:z95.object({started:z95.number(),confirmed:z95.number(),finished:z95.number(),opened:z95.number()}),bySiteType:z95.array(z95.object({siteType:SiteTypeSchema,total:z95.number(),finished:z95.number(),opened:z95.number()})),granularity:z95.enum(["hour","day"]),series:z95.array(z95.object({at:z95.coerce.date(),outcomes:z95.record(SiteOnboardingOutcomeSchema,z95.number())})),spentUsd:z95.object({total:z95.number(),average:z95.number().nullable()}),sponsored:z95.number(),paidByOrganization:z95.object({usd:z95.number(),credits:z95.number()}),capReached:z95.number(),cloneSeconds:z95.object({median:z95.number().nullable(),average:z95.number().nullable()})}),AdminSiteOnboardingStatsResponseSchema=createResponseSchema(AdminSiteOnboardingStatsSchema),AdminSiteOnboardingDetailSchema=z95.object({onboarding:AdminSiteOnboardingDTOSchema.extend({locale:z95.string(),cloneThreadId:z95.string().nullable(),paidByOrganizationUsd:z95.number()}),interview:SiteInterviewSchema.extend({invocationIds:z95.array(z95.string())}).nullable(),knowledgeWritten:z95.string().nullable(),knowledgeNow:z95.object({content:z95.string(),updatedAt:z95.coerce.date().nullable(),updatedBy:z95.string().nullable()}),report:SiteReportSchema.nullable()}),AdminSiteOnboardingDetailDTO=createDTO(AdminSiteOnboardingDetailSchema),AdminSiteOnboardingDetailResponseSchema=createResponseSchema(AdminSiteOnboardingDetailSchema)}});import{z as z96}from"zod";var SubscriptionStatusSchema,CreditBalanceBreakdownDTOSchema,CreditBalanceBreakdownDTO,SubscriptionPlanDTOSchema,SubscriptionPlanDTO,SubscriptionPaymentMethodDTOSchema,SubscriptionPaymentMethodDTO,SubscriptionPricingDTOSchema,SubscriptionPricingDTO,SubscriptionDetailsDTOSchema,SubscriptionDetailsDTO,CreditAlertDTOSchema,CreditAlertDTO,PlanAllocationDTOSchema,PlanAllocationDTO,LatestCancellationDTOSchema,LatestCancellationDTO,OrganizationSubscriptionDTOSchema,OrganizationSubscriptionDTO,BaseCreditTopupRequestSchema,FreeCreditTopupRequestSchema,PurchaseCreditTopupRequestSchema,CreditTopupRequestDTOSchema,CreditTopupRequestDTO,CreditTopupResponseDTOSchema,CreditTopupResponseDTO,init_subscription_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/subscription.dto.js"(){"use strict";init_common();init_create_dto();init_billing_dto();SubscriptionStatusSchema=z96.enum(["active","cancelled","draft","errored","paused","pending","voided"]),CreditBalanceBreakdownDTOSchema=z96.object({total:z96.number(),base:z96.number(),purchases:z96.number(),awards:z96.number()}),CreditBalanceBreakdownDTO=createDTO(CreditBalanceBreakdownDTOSchema),SubscriptionPlanDTOSchema=z96.object({id:z96.string(),name:z96.string()}),SubscriptionPlanDTO=createDTO(SubscriptionPlanDTOSchema),SubscriptionPaymentMethodDTOSchema=z96.object({type:z96.string(),brand:z96.string().nullable(),last4:z96.string().nullable(),expirationDate:z96.string().nullable()}),SubscriptionPaymentMethodDTO=createDTO(SubscriptionPaymentMethodDTOSchema),SubscriptionPricingDTOSchema=z96.object({currency:z96.string(),nextPaymentAmount:z96.number().nullable(),nextPaymentAt:z96.string().nullable(),billingInterval:z96.string().nullable(),totalAmount:z96.number().nullable(),discountAmount:z96.number().nullable()}),SubscriptionPricingDTO=createDTO(SubscriptionPricingDTOSchema),SubscriptionDetailsDTOSchema=z96.object({id:z96.string(),status:SubscriptionStatusSchema,plan:SubscriptionPlanDTOSchema.nullable(),currentPeriodStartedAt:z96.string().nullable(),currentPeriodEndsAt:z96.string().nullable(),renewsAt:z96.string().nullable(),cancelAt:z96.string().nullable(),renewAutomatically:z96.boolean(),pricing:SubscriptionPricingDTOSchema.nullable(),paymentMethod:SubscriptionPaymentMethodDTOSchema.nullable()}),SubscriptionDetailsDTO=createDTO(SubscriptionDetailsDTOSchema),CreditAlertDTOSchema=z96.object({type:z96.enum(["low_balance","critical_balance","approaching_limit"]),message:z96.string(),estimatedPromptsRemaining:z96.number().nullable(),avgCostPerPrompt:z96.number().nullable()}),CreditAlertDTO=createDTO(CreditAlertDTOSchema),PlanAllocationDTOSchema=z96.object({monthlyCredits:z96.number().nullable(),usedThisPeriod:z96.number(),remainingThisPeriod:z96.number()}),PlanAllocationDTO=createDTO(PlanAllocationDTOSchema),LatestCancellationDTOSchema=z96.object({organizationId:z96.string(),planCode:TemplateCodeSchema,reason:CancellationReasonCodeSchema,details:z96.string().nullable(),tenureDays:z96.number().int().nonnegative(),capturedAt:z96.string()}),LatestCancellationDTO=createDTO(LatestCancellationDTOSchema),OrganizationSubscriptionDTOSchema=z96.object({hasSubscription:z96.boolean(),subscription:SubscriptionDetailsDTOSchema.nullable(),credits:CreditBalanceBreakdownDTOSchema,planAllocation:PlanAllocationDTOSchema.nullable(),lowBalanceThreshold:z96.number().nullable(),alerts:z96.array(CreditAlertDTOSchema),portalUrl:z96.string().nullable(),latestCancellation:LatestCancellationDTOSchema.nullable()}),OrganizationSubscriptionDTO=createDTO(OrganizationSubscriptionDTOSchema),BaseCreditTopupRequestSchema=z96.object({creditCount:z96.number().int().positive(),expiresAt:z96.string().datetime().nullable().optional(),message:z96.string().nullable().optional()}),FreeCreditTopupRequestSchema=BaseCreditTopupRequestSchema.extend({type:z96.literal("free"),amountCents:z96.number().int().positive().nullable().optional()}),PurchaseCreditTopupRequestSchema=BaseCreditTopupRequestSchema.extend({type:z96.literal("purchase"),amountCents:z96.number().int().positive()}),CreditTopupRequestDTOSchema=z96.discriminatedUnion("type",[FreeCreditTopupRequestSchema,PurchaseCreditTopupRequestSchema]),CreditTopupRequestDTO=createDTO(CreditTopupRequestDTOSchema),CreditTopupResponseDTOSchema=z96.object({success:z96.boolean(),transactionId:z96.string().nullable(),newBalance:z96.number(),creditCount:z96.number(),type:z96.enum(["free","purchase"]),invoiceId:z96.string().nullable()}),CreditTopupResponseDTO=createDTO(CreditTopupResponseDTOSchema)}});import{z as z97}from"zod";var UsageSummaryDTOSchema,UsageSummaryDTO,UsageByProjectDTOSchema,UsageByProjectDTO,UsageByUserDTOSchema,UsageByUserDTO,UsageTimelineItemDTOSchema,UsageTimelineItemDTO,UsageByUserForProjectDTOSchema,UsageByUserForProjectDTO,ProjectUsageDetailDTOSchema,ProjectUsageDetailDTO,OrganizationUsageDTOSchema,OrganizationUsageDTO,init_usage_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/usage.dto.js"(){"use strict";init_create_dto();UsageSummaryDTOSchema=z97.object({totalCredits:z97.number(),totalCostUsd:z97.number(),totalMessages:z97.number(),avgCostPerMessage:z97.number(),periodStart:z97.string().nullable(),periodEnd:z97.string().nullable()}),UsageSummaryDTO=createDTO(UsageSummaryDTOSchema),UsageByProjectDTOSchema=z97.object({projectId:z97.string(),projectName:z97.string(),projectDisplayName:z97.string().nullable(),credits:z97.number(),costUsd:z97.number(),messages:z97.number(),percentage:z97.number()}),UsageByProjectDTO=createDTO(UsageByProjectDTOSchema),UsageByUserDTOSchema=z97.object({userId:z97.string(),userName:z97.string().nullable(),userEmail:z97.string().email().nullable(),credits:z97.number(),costUsd:z97.number(),messages:z97.number(),percentage:z97.number()}),UsageByUserDTO=createDTO(UsageByUserDTOSchema),UsageTimelineItemDTOSchema=z97.object({date:z97.string(),credits:z97.number(),costUsd:z97.number(),messages:z97.number()}),UsageTimelineItemDTO=createDTO(UsageTimelineItemDTOSchema),UsageByUserForProjectDTOSchema=z97.object({userId:z97.string(),userName:z97.string().nullable(),userEmail:z97.string().email().nullable(),credits:z97.number(),costUsd:z97.number(),messages:z97.number(),percentage:z97.number()}),UsageByUserForProjectDTO=createDTO(UsageByUserForProjectDTOSchema),ProjectUsageDetailDTOSchema=z97.object({projectId:z97.string(),projectName:z97.string(),projectDisplayName:z97.string().nullable(),summary:UsageSummaryDTOSchema,byUser:z97.array(UsageByUserForProjectDTOSchema),timeline:z97.array(UsageTimelineItemDTOSchema)}),ProjectUsageDetailDTO=createDTO(ProjectUsageDetailDTOSchema),OrganizationUsageDTOSchema=z97.object({summary:UsageSummaryDTOSchema,byProject:z97.array(UsageByProjectDTOSchema),byUser:z97.array(UsageByUserDTOSchema),timeline:z97.array(UsageTimelineItemDTOSchema)}),OrganizationUsageDTO=createDTO(OrganizationUsageDTOSchema)}});import{z as z98}from"zod";var TimeRangePresetSchema,SortOrderSchema,UsageAnalyticsQuerySchema,UsageOverviewSummaryDTOSchema,UsageOverviewSummaryDTO,UsageTimelinePointDTOSchema,UsageTimelinePointDTO,OrganizationUsageRowDTOSchema,OrganizationUsageRowDTO,UserUsageRowDTOSchema,UserUsageRowDTO,ProjectUsageRowDTOSchema,ProjectUsageRowDTO,UsageDistributionItemDTOSchema,UsageDistributionItemDTO,UsageHeatmapPointDTOSchema,UsageHeatmapPointDTO,UsageOverviewResponseDTOSchema,UsageOverviewResponseDTO,UsagePaginationDTOSchema,UsagePaginationDTO,UsageByOrganizationResponseDTOSchema,UsageByOrganizationResponseDTO,ExtendedUserUsageRowDTOSchema,ExtendedUserUsageRowDTO,UsageByUserResponseDTOSchema,UsageByUserResponseDTO,ExtendedProjectUsageRowDTOSchema,ExtendedProjectUsageRowDTO,UsageByProjectResponseDTOSchema,UsageByProjectResponseDTO,ExportFormatSchema,UsageExportQuerySchema,PeekUsageMetricsDTOSchema,PeekUsageMetricsDTO,OrganizationPeekDTOSchema,OrganizationPeekDTO,UserPeekDTOSchema,UserPeekDTO,ProjectPeekDTOSchema,ProjectPeekDTO,init_usage_analytics_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/usage-analytics.dto.js"(){"use strict";init_create_dto();TimeRangePresetSchema=z98.enum(["today","1d","7d","14d","30d","60d","90d"]),SortOrderSchema=z98.enum(["asc","desc"]),UsageAnalyticsQuerySchema=z98.object({startDate:z98.string().optional(),endDate:z98.string().optional(),preset:TimeRangePresetSchema.optional().default("30d"),page:z98.coerce.number().int().positive().default(1),limit:z98.coerce.number().int().positive().max(100).default(20),sortBy:z98.string().optional(),sortOrder:SortOrderSchema.optional().default("desc"),search:z98.string().optional(),activeOnly:z98.stringbool().optional().default(!0)}),UsageOverviewSummaryDTOSchema=z98.object({totalCredits:z98.number(),totalCostUsd:z98.number(),totalMessages:z98.number(),automatedMessages:z98.number(),avgCostPerMessage:z98.number(),avgCreditsPerMessage:z98.number(),periodStart:z98.string(),periodEnd:z98.string(),creditsChange:z98.number().nullable(),costChange:z98.number().nullable(),messagesChange:z98.number().nullable(),unattributedCredits:z98.number(),unattributedCostUsd:z98.number(),unattributedMessages:z98.number()}),UsageOverviewSummaryDTO=createDTO(UsageOverviewSummaryDTOSchema),UsageTimelinePointDTOSchema=z98.object({date:z98.string(),credits:z98.number(),costUsd:z98.number(),messages:z98.number()}),UsageTimelinePointDTO=createDTO(UsageTimelinePointDTOSchema),OrganizationUsageRowDTOSchema=z98.object({organizationId:z98.string(),organizationName:z98.string(),credits:z98.number(),costUsd:z98.number(),messages:z98.number(),percentage:z98.number(),userCount:z98.number(),projectCount:z98.number()}),OrganizationUsageRowDTO=createDTO(OrganizationUsageRowDTOSchema),UserUsageRowDTOSchema=z98.object({userId:z98.string(),userName:z98.string().nullable(),userEmail:z98.string().nullable(),userImage:z98.string().nullable(),organizationId:z98.string().nullable(),organizationName:z98.string().nullable(),credits:z98.number(),costUsd:z98.number(),messages:z98.number(),percentage:z98.number(),projectCount:z98.number()}),UserUsageRowDTO=createDTO(UserUsageRowDTOSchema),ProjectUsageRowDTOSchema=z98.object({projectId:z98.string(),projectName:z98.string(),projectDisplayName:z98.string().nullable(),organizationId:z98.string(),organizationName:z98.string(),credits:z98.number(),costUsd:z98.number(),messages:z98.number(),percentage:z98.number(),userCount:z98.number()}),ProjectUsageRowDTO=createDTO(ProjectUsageRowDTOSchema),UsageDistributionItemDTOSchema=z98.object({id:z98.string(),name:z98.string(),value:z98.number(),percentage:z98.number()}),UsageDistributionItemDTO=createDTO(UsageDistributionItemDTOSchema),UsageHeatmapPointDTOSchema=z98.object({day:z98.number(),hour:z98.number(),value:z98.number()}),UsageHeatmapPointDTO=createDTO(UsageHeatmapPointDTOSchema),UsageOverviewResponseDTOSchema=z98.object({summary:UsageOverviewSummaryDTOSchema,timeline:z98.array(UsageTimelinePointDTOSchema),topOrganizations:z98.array(OrganizationUsageRowDTOSchema),topUsers:z98.array(UserUsageRowDTOSchema),topProjects:z98.array(ProjectUsageRowDTOSchema),creditDistribution:z98.array(UsageDistributionItemDTOSchema),userDistribution:z98.array(UsageDistributionItemDTOSchema),heatmap:z98.array(UsageHeatmapPointDTOSchema)}),UsageOverviewResponseDTO=createDTO(UsageOverviewResponseDTOSchema),UsagePaginationDTOSchema=z98.object({page:z98.number(),limit:z98.number(),totalItems:z98.number(),totalPages:z98.number(),hasMore:z98.boolean()}),UsagePaginationDTO=createDTO(UsagePaginationDTOSchema),UsageByOrganizationResponseDTOSchema=z98.object({organizations:z98.array(OrganizationUsageRowDTOSchema),top:z98.array(OrganizationUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByOrganizationResponseDTO=createDTO(UsageByOrganizationResponseDTOSchema),ExtendedUserUsageRowDTOSchema=UserUsageRowDTOSchema.extend({organizationCount:z98.number()}),ExtendedUserUsageRowDTO=createDTO(ExtendedUserUsageRowDTOSchema),UsageByUserResponseDTOSchema=z98.object({users:z98.array(ExtendedUserUsageRowDTOSchema),top:z98.array(ExtendedUserUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByUserResponseDTO=createDTO(UsageByUserResponseDTOSchema),ExtendedProjectUsageRowDTOSchema=ProjectUsageRowDTOSchema.extend({ownerId:z98.string(),ownerName:z98.string().nullable(),ownerEmail:z98.string().nullable()}),ExtendedProjectUsageRowDTO=createDTO(ExtendedProjectUsageRowDTOSchema),UsageByProjectResponseDTOSchema=z98.object({projects:z98.array(ExtendedProjectUsageRowDTOSchema),top:z98.array(ExtendedProjectUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByProjectResponseDTO=createDTO(UsageByProjectResponseDTOSchema),ExportFormatSchema=z98.enum(["csv","json"]),UsageExportQuerySchema=UsageAnalyticsQuerySchema.extend({format:ExportFormatSchema.default("csv"),type:z98.enum(["overview","organizations","users","projects"]).default("overview")}),PeekUsageMetricsDTOSchema=z98.object({credits:z98.number(),costUsd:z98.number(),messages:z98.number()}),PeekUsageMetricsDTO=createDTO(PeekUsageMetricsDTOSchema),OrganizationPeekDTOSchema=z98.object({id:z98.string(),name:z98.string(),createdAt:z98.string(),memberCount:z98.number(),projectCount:z98.number(),usage:PeekUsageMetricsDTOSchema,recentActivity:z98.array(UsageTimelinePointDTOSchema)}),OrganizationPeekDTO=createDTO(OrganizationPeekDTOSchema),UserPeekDTOSchema=z98.object({id:z98.string(),name:z98.string().nullable(),email:z98.string(),image:z98.string().nullable(),createdAt:z98.string(),organizationCount:z98.number(),projectCount:z98.number(),usage:PeekUsageMetricsDTOSchema,recentActivity:z98.array(UsageTimelinePointDTOSchema)}),UserPeekDTO=createDTO(UserPeekDTOSchema),ProjectPeekDTOSchema=z98.object({id:z98.string(),name:z98.string(),displayName:z98.string().nullable(),createdAt:z98.string(),organizationId:z98.string(),organizationName:z98.string(),ownerId:z98.string(),ownerName:z98.string().nullable(),ownerEmail:z98.string().nullable(),usage:PeekUsageMetricsDTOSchema,recentActivity:z98.array(UsageTimelinePointDTOSchema)}),ProjectPeekDTO=createDTO(ProjectPeekDTOSchema)}});import{z as z99}from"zod";var SandboxProcessStatusSchema,PresetSandboxCommandSchema,ExecuteSandboxCommandRequestDTOSchema,ExecuteSandboxCommandRequestDTO,SandboxProcessInfoDTOSchema,SandboxProcessInfoDTO,SandboxProcessInfoResponseSchema,SandboxProcessListDTOSchema,SandboxProcessListDTO,SandboxProcessListResponseSchema,ExecuteSandboxCommandResponseDTOSchema,ExecuteSandboxCommandResponseDTO,PresetCommandResponseDTOSchema,PresetCommandResponseDTO,PresetCommandResponseSchema,init_sandbox_command_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/sandbox-command.dto.js"(){"use strict";init_env();init_create_dto();init_response();SandboxProcessStatusSchema=z99.enum(["running","completed","failed","stopped"]),PresetSandboxCommandSchema=z99.enum(["restart-dev-server","stop-dev-server","install-dependencies","reinstall-dependencies","build","typecheck"]),ExecuteSandboxCommandRequestDTOSchema=z99.object({command:z99.string().min(1).max(1e4),cwd:z99.string().optional(),projectBranch:BranchSchema.optional(),projectEnv:BranchSchema.optional(),env:z99.record(z99.string(),z99.string()).optional(),name:z99.string().optional(),waitForCompletion:z99.boolean().optional().default(!1)}).superRefine((value,ctx)=>{value.projectBranch!==void 0&&value.projectEnv!==void 0&&value.projectBranch!==value.projectEnv&&ctx.addIssue({code:"custom",path:["projectBranch"],message:"`projectBranch` and deprecated `projectEnv` must match when both are supplied"})}),ExecuteSandboxCommandRequestDTO=createDTO(ExecuteSandboxCommandRequestDTOSchema),SandboxProcessInfoDTOSchema=z99.object({identifier:z99.string(),status:SandboxProcessStatusSchema,command:z99.string().optional(),startedAt:z99.string().optional(),exitCode:z99.number().optional()}),SandboxProcessInfoDTO=createDTO(SandboxProcessInfoDTOSchema),SandboxProcessInfoResponseSchema=createResponseSchema(SandboxProcessInfoDTOSchema),SandboxProcessListDTOSchema=z99.object({processes:z99.array(SandboxProcessInfoDTOSchema)}),SandboxProcessListDTO=createDTO(SandboxProcessListDTOSchema),SandboxProcessListResponseSchema=createResponseSchema(SandboxProcessListDTOSchema),ExecuteSandboxCommandResponseDTOSchema=z99.object({processId:z99.string(),status:SandboxProcessStatusSchema}),ExecuteSandboxCommandResponseDTO=createDTO(ExecuteSandboxCommandResponseDTOSchema),PresetCommandResponseDTOSchema=z99.object({success:z99.boolean(),message:z99.string().optional()}),PresetCommandResponseDTO=createDTO(PresetCommandResponseDTOSchema),PresetCommandResponseSchema=createResponseSchema(PresetCommandResponseDTOSchema)}});import{z as z100}from"zod";var ADMIN_UNCLAIMED_STATES,AdminUnclaimedStateSchema,AdminUnclaimedProjectsQuerySchema,AdminUnclaimedProjectDTOSchema,AdminUnclaimedProjectDTO,AdminUnclaimedProjectsResponseSchema,ClaimOutcomesSchema,AdminUnclaimedProjectStatsSchema,AdminUnclaimedProjectStatsResponseSchema,init_unclaimed_projects_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/unclaimed-projects.dto.js"(){"use strict";init_create_dto();init_response();ADMIN_UNCLAIMED_STATES=["waiting","claiming","claimed","overdue","archived"],AdminUnclaimedStateSchema=z100.enum(ADMIN_UNCLAIMED_STATES),AdminUnclaimedProjectsQuerySchema=z100.object({search:z100.string().trim().max(200).optional(),startDate:z100.coerce.date().optional(),endDate:z100.coerce.date().optional(),states:z100.string().optional().transform(value=>value?value.split(",").filter(Boolean):void 0).pipe(z100.array(AdminUnclaimedStateSchema).optional()),cliVersions:z100.string().optional().transform(value=>value?value.split(",").filter(Boolean):void 0).pipe(z100.array(z100.string().max(64)).optional()),page:z100.coerce.number().int().min(1).default(1),pageSize:z100.coerce.number().int().min(1).max(100).default(25)}),AdminUnclaimedProjectDTOSchema=z100.object({projectId:z100.string(),displayName:z100.string().nullable(),state:AdminUnclaimedStateSchema,cliVersion:z100.string().nullable(),createdAt:z100.coerce.date(),expiresAt:z100.coerce.date(),claimedAt:z100.coerce.date().nullable(),claimedOrganizationId:z100.string().nullable(),claimedOrganizationName:z100.string().nullable(),claimedByEmail:z100.string().nullable(),projectExists:z100.boolean(),previewUrl:z100.string().nullable(),hostingCostUsd:z100.number().nullable()}),AdminUnclaimedProjectDTO=createDTO(AdminUnclaimedProjectDTOSchema),AdminUnclaimedProjectsResponseSchema=createResponseSchema(z100.object({projects:z100.array(AdminUnclaimedProjectDTOSchema),page:z100.number(),limit:z100.number(),total:z100.number(),totalPages:z100.number()})),ClaimOutcomesSchema=z100.object({total:z100.number(),claimed:z100.number(),archived:z100.number(),claimRate:z100.number().nullable(),medianTimeToClaimSeconds:z100.number().nullable()}),AdminUnclaimedProjectStatsSchema=ClaimOutcomesSchema.extend({states:z100.record(AdminUnclaimedStateSchema,z100.number()),averageTimeToClaimSeconds:z100.number().nullable(),byCliVersion:z100.array(ClaimOutcomesSchema.extend({cliVersion:z100.string().nullable()})),granularity:z100.enum(["hour","day"]),series:z100.array(z100.object({at:z100.coerce.date(),states:z100.record(AdminUnclaimedStateSchema,z100.number()),alive:z100.number(),hostingCostUsd:z100.number()})),hostingCostUsd:z100.number(),costPerProjectUsd:z100.number().nullable(),leftovers:z100.object({overdue:z100.number(),claiming:z100.number(),archivedNotDeleted:z100.number()})}),AdminUnclaimedProjectStatsResponseSchema=createResponseSchema(AdminUnclaimedProjectStatsSchema)}});import{z as z101}from"zod";var WorkSessionVisibilitySchema,SessionSetRetentionSchema,init_work_sessions=__esm({"../../packages/api-contracts/dist/esm/work-sessions.js"(){"use strict";WorkSessionVisibilitySchema=z101.enum(["internal","user-visible"]),SessionSetRetentionSchema=z101.object({additionalDays:z101.number().int().min(1).max(30)}).strict()}});import{z as z102}from"zod";var PROJECT_KNOWLEDGE_MAX_CHARACTERS,ProjectKnowledgeContentSchema,ProjectKnowledgeDTOSchema,ProjectKnowledgeUpdateSchema,ProjectKnowledgeResponseSchema,ProjectKnowledgeDraftDTOSchema,ProjectKnowledgeDraftResponseSchema,ProjectKnowledgeDraftStartSchema,init_project_knowledge_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-knowledge.dto.js"(){"use strict";init_response();PROJECT_KNOWLEDGE_MAX_CHARACTERS=1e4,ProjectKnowledgeContentSchema=z102.string().refine(value=>[...value].length<=PROJECT_KNOWLEDGE_MAX_CHARACTERS&&new TextEncoder().encode(value).length<=4e4,"Knowledge must contain at most 10,000 characters and 40 KB of UTF-8 text"),ProjectKnowledgeDTOSchema=z102.object({content:ProjectKnowledgeContentSchema,updatedAt:z102.string().nullable(),updatedBy:z102.string().nullable()}),ProjectKnowledgeUpdateSchema=z102.object({content:ProjectKnowledgeContentSchema}),ProjectKnowledgeResponseSchema=createResponseSchema(ProjectKnowledgeDTOSchema),ProjectKnowledgeDraftDTOSchema=z102.object({id:z102.uuid(),status:z102.enum(["queued","running","ready","failed"]),content:ProjectKnowledgeContentSchema.nullable(),error:z102.string().nullable()}),ProjectKnowledgeDraftResponseSchema=createResponseSchema(ProjectKnowledgeDraftDTOSchema.nullable()),ProjectKnowledgeDraftStartSchema=z102.object({idempotencyKey:z102.uuid()})}});import{z as z103}from"zod";var init_esm=__esm({"../../packages/api-contracts/dist/esm/index.js"(){"use strict";init_create_dto();init_response();init_pagination();init_common();init_attachments();init_asset_reading();init_env();init_environment();init_realtime();init_realtime_room();init_references();init_content_fields();init_audit_log();init_ops();init_args();init_commands();init_references2();init_types();init_chat_block();init_admin_chat_block();init_admin_assistant();init_chat_portrait();init_agent_report();init_fimo_config();init_page_sources();init_project_files();init_project_dto();init_project_env_dto();init_project_environment_dto();init_project_secret_dto();init_project_import_export_dto();init_agent_session_dto();init_agent_proposal_dto();init_agent_question_dto();init_integration_catalog_dto();init_integration_dto();init_schedule_dto();init_schedule_notifications_dto();init_notification_dto();init_notification_preference_catalog_dto();init_env_status_dto();init_env_diff_summary_dto();init_project_analytics_dto();init_project_access_dto();init_project_invite_dto();init_publication_dto();init_hosted_preview_dto();init_sandbox_dto();init_organization_dto();init_billing_dto();init_payment_method_dto();init_user_dto();init_content_dto();init_unique_conflict_dto();init_schema_transition_rejected_dto();init_cms_display_defaults_dto();init_project_migration_dto();init_analytics_dto();init_asset_dto();init_translation_dto();init_document_dto();init_form_dto();init_chat_dto();init_chat_routine_dto();init_chat_agent_dto();init_upload_dto();init_service_dto();init_search_dto();init_registered_domain_dto();init_project_domain_dto();init_project_subdomain_dto();init_project_transfer_dto();init_unclaimed_project_dto();init_project_locale_dto();init_generation_dto();init_generation_task_dto();init_asset_model_dto();init_tour_dto();init_support_report_dto();init_ops_chat_dto();init_ops_sentry_dto();init_ops_project_files_dto();init_ops_agent_chat_dto();init_webhook_dto();init_preview_feature_dto();init_site_onboarding_dto();init_subscription_dto();init_usage_dto();init_usage_analytics_dto();init_sandbox_command_dto();init_unclaimed_projects_dto();init_work_sessions();init_project_knowledge_dto();init_organization_features_dto();init_admin_monitoring_dto();init_platform();init_monitor();init_agent()}});var require_picocolors=__commonJS({"../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js"(exports2,module2){var p2=process||{},argv=p2.argv||[],env=p2.env||{},isColorSupported=!(env.NO_COLOR||argv.includes("--no-color"))&&(!!env.FORCE_COLOR||argv.includes("--color")||p2.platform==="win32"||(p2.stdout||{}).isTTY&&env.TERM!=="dumb"||!!env.CI),formatter=__name((open2,close,replace=open2)=>input=>{let string=""+input,index=string.indexOf(close,open2.length);return~index?open2+replaceClose(string,close,replace,index)+close:open2+string+close},"formatter"),replaceClose=__name((string,close,replace,index)=>{let result="",cursor=0;do result+=string.substring(cursor,index)+replace,cursor=index+close.length,index=string.indexOf(close,cursor);while(~index);return result+string.substring(cursor)},"replaceClose"),createColors=__name((enabled=isColorSupported)=>{let f=enabled?formatter:()=>String;return{isColorSupported:enabled,reset:f("\x1B[0m","\x1B[0m"),bold:f("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:f("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:f("\x1B[3m","\x1B[23m"),underline:f("\x1B[4m","\x1B[24m"),inverse:f("\x1B[7m","\x1B[27m"),hidden:f("\x1B[8m","\x1B[28m"),strikethrough:f("\x1B[9m","\x1B[29m"),black:f("\x1B[30m","\x1B[39m"),red:f("\x1B[31m","\x1B[39m"),green:f("\x1B[32m","\x1B[39m"),yellow:f("\x1B[33m","\x1B[39m"),blue:f("\x1B[34m","\x1B[39m"),magenta:f("\x1B[35m","\x1B[39m"),cyan:f("\x1B[36m","\x1B[39m"),white:f("\x1B[37m","\x1B[39m"),gray:f("\x1B[90m","\x1B[39m"),bgBlack:f("\x1B[40m","\x1B[49m"),bgRed:f("\x1B[41m","\x1B[49m"),bgGreen:f("\x1B[42m","\x1B[49m"),bgYellow:f("\x1B[43m","\x1B[49m"),bgBlue:f("\x1B[44m","\x1B[49m"),bgMagenta:f("\x1B[45m","\x1B[49m"),bgCyan:f("\x1B[46m","\x1B[49m"),bgWhite:f("\x1B[47m","\x1B[49m"),blackBright:f("\x1B[90m","\x1B[39m"),redBright:f("\x1B[91m","\x1B[39m"),greenBright:f("\x1B[92m","\x1B[39m"),yellowBright:f("\x1B[93m","\x1B[39m"),blueBright:f("\x1B[94m","\x1B[39m"),magentaBright:f("\x1B[95m","\x1B[39m"),cyanBright:f("\x1B[96m","\x1B[39m"),whiteBright:f("\x1B[97m","\x1B[39m"),bgBlackBright:f("\x1B[100m","\x1B[49m"),bgRedBright:f("\x1B[101m","\x1B[49m"),bgGreenBright:f("\x1B[102m","\x1B[49m"),bgYellowBright:f("\x1B[103m","\x1B[49m"),bgBlueBright:f("\x1B[104m","\x1B[49m"),bgMagentaBright:f("\x1B[105m","\x1B[49m"),bgCyanBright:f("\x1B[106m","\x1B[49m"),bgWhiteBright:f("\x1B[107m","\x1B[49m")}},"createColors");module2.exports=createColors();module2.exports.createColors=createColors}});function makePalette(enabled){return enabled?{success:import_picocolors.default.green,warn:import_picocolors.default.yellow,error:import_picocolors.default.red,hint:import_picocolors.default.cyan,dim:import_picocolors.default.dim,accent:import_picocolors.default.bold}:{success:identity,warn:identity,error:identity,hint:identity,dim:identity,accent:identity}}var import_picocolors,identity,init_colors=__esm({"../../packages/cli-kit/dist/colors.js"(){"use strict";import_picocolors=__toESM(require_picocolors(),1),identity=__name(s=>s,"identity");__name(makePalette,"makePalette")}});var SCHEMA_VERSION,init_types2=__esm({"../../packages/cli-kit/dist/types.js"(){"use strict";SCHEMA_VERSION=1}});function makeJsonRenderer(opts){let{stdout,stderr}=opts,pendingWarnings=[];function emit(stream,envelope){let warnings=[...pendingWarnings,...envelope.warnings??[]].filter((warning,index,all)=>all.indexOf(warning)===index);pendingWarnings=[],stream.write(`${JSON.stringify(warnings.length>0?{...envelope,warnings}:envelope)}
|
|
6
6
|
`)}__name(emit,"emit");function okEnvelope(event){let base={status:"ok",command:event.command,schema_version:1};switch(event.kind){case"message":{let data={headline:event.headline};return event.details&&(data.details=event.details),base.data=data,event.hint&&(base.hint=event.hint),event.warnings&&event.warnings.length>0&&(base.warnings=event.warnings),base}case"table":{let rows=event.rows.map(row2=>{let out={};for(let col of event.columns)out[col.key]=row2[col.key];return event.isActive?.(row2)===!0&&(out.__active=!0),out}),data={...event.jsonData,columns:event.columns.map(c2=>c2.key),rows};return event.headline&&(data.headline=event.headline),base.data=data,event.hint&&(base.hint=event.hint),base}case"kv":{let data={fields:event.fields};return event.headline&&(data.headline=event.headline),base.data=data,event.hint&&(base.hint=event.hint),base}case"script":return base.data={shell:event.shell,script:event.script},base;case"raw":{let field=event.field??"value";return base.data={[field]:event.value},base}case"result":return base.data=event.data,event.hint&&(base.hint=event.hint),event.warnings&&event.warnings.length>0&&(base.warnings=event.warnings),base}}return __name(okEnvelope,"okEnvelope"),{ok(event){emit(stdout,okEnvelope(event))},error(event){emit(stderr,{status:"error",command:event.command,schema_version:1,error:{code:event.code,message:event.message,...event.details?{details:event.details}:{},...event.hint?{hint:event.hint}:{}}})},warn(event){pendingWarnings.push(event.message)},info(event){let env={status:"ok",command:event.command,schema_version:1,data:{...event.jsonData,message:event.message}};event.hint&&(env.hint=event.hint),emit(stdout,env)}}}var init_renderer_json=__esm({"../../packages/cli-kit/dist/renderer-json.js"(){"use strict";__name(makeJsonRenderer,"makeJsonRenderer")}});function stripAnsi(input){return input.replace(OSC_PATTERN,"").replace(CSI_PATTERN,"")}function displayWidth(input){return stripAnsi(input).length}function padToWidth(input,target){let visible=displayWidth(input);return visible>=target?input:input+" ".repeat(target-visible)}var CSI_PATTERN,OSC_PATTERN,init_width=__esm({"../../packages/cli-kit/dist/width.js"(){"use strict";CSI_PATTERN=/\x1B\[[0-9;]*[A-Za-z]/g,OSC_PATTERN=/\x1B\][\s\S]*?(?:\x07|\x1B\\)/g;__name(stripAnsi,"stripAnsi");__name(displayWidth,"displayWidth");__name(padToWidth,"padToWidth")}});function makePrettyRenderer(opts){let{palette:palette2,symbols,context,stdout,stderr}=opts;function write(stream,line){stream.write(`${line}
|
|
7
7
|
`)}__name(write,"write");function renderMessage(event){if(write(stdout,`${palette2.success(symbols.ok)} ${event.headline}`),event.details&&renderAlignedFields(event.details," "),event.warnings)for(let w3 of event.warnings)write(stdout,` ${palette2.warn(symbols.warn)} ${w3}`);maybeHint(event.hint)}__name(renderMessage,"renderMessage");function renderAlignedFields(fields,indent){let keys=Object.keys(fields),longest=keys.reduce((m,k)=>Math.max(m,k.length),0);for(let k of keys){let value=fields[k];value!=null&&write(stdout,`${indent}${palette2.dim(`${k}:`.padEnd(longest+2))}${formatScalar(value)}`)}}__name(renderAlignedFields,"renderAlignedFields");function renderTable2(event){event.headline&&write(stdout,`${palette2.success(symbols.ok)} ${event.headline}`);let{columns,rows}=event;if(rows.length===0){write(stdout,palette2.dim(" (no rows)")),maybeHint(event.hint);return}let widths=columns.map(c2=>Math.max(displayWidth(c2.label),...rows.map(r=>displayWidth(String(r[c2.key]??""))))),header=columns.map((c2,i)=>padToWidth(c2.label,widths[i])).join(" ");write(stdout,` ${palette2.dim(header)}`);for(let row2 of rows){let active=event.isActive?.(row2)===!0,cells=columns.map((c2,i)=>{let raw=String(row2[c2.key]??""),padded=padToWidth(raw,widths[i]),role=event.cellStyle?.(row2,c2.key);return role?paintCell(padded,role):active?palette2.accent(padded):padded}),marker=active?palette2.success(symbols.active):" ";write(stdout,`${marker} ${cells.join(" ")}`)}maybeHint(event.hint)}__name(renderTable2,"renderTable");function paintCell(cell,role){switch(role){case"success":return palette2.success(cell);case"warn":return palette2.warn(cell);case"error":return palette2.error(cell);case"dim":return palette2.dim(cell);case"accent":return palette2.accent(cell)}}__name(paintCell,"paintCell");function renderKv(event){event.headline&&write(stdout,`${palette2.success(symbols.ok)} ${event.headline}`),renderAlignedFields(event.fields,""),maybeHint(event.hint)}__name(renderKv,"renderKv");function renderScript(event){stdout.write(event.script.endsWith(`
|
|
@@ -2735,10 +2735,10 @@ Run \`fimo integrations <command> --help\` for command-specific help.
|
|
|
2735
2735
|
...`}__name(trimContent,"trimContent");function trimSearchExcerpt(content2,maxLength=1200){if(content2.length<=maxLength)return content2;let candidate=content2.slice(0,maxLength+1),sentenceEnd=[...candidate.matchAll(/[.!?](?=\s|$)/g)].at(-1)?.index,cutoff=sentenceEnd!==void 0&&sentenceEnd>=maxLength*.6?sentenceEnd+1:maxLength;return`${candidate.slice(0,cutoff).trimEnd()}
|
|
2736
2736
|
...`}__name(trimSearchExcerpt,"trimSearchExcerpt");function resolveProjectId5(opts){if(opts.project)return opts.project;let cwd=resolveProjectCwd(opts.cwd);return loadProjectSettings(cwd).projectId}__name(resolveProjectId5,"resolveProjectId");function resolveOrganizationId(opts){if(opts.org)return opts.org;try{let cwd=resolveProjectCwd(opts.cwd),settings=loadProjectSettings(cwd);if(settings.organizationId)return settings.organizationId}catch{}let active=requireAccountCredentials(loadConfig()).activeOrganization?.id;if(active)return active;throw new Error("No organization found. Run inside a Fimo project, pass --org <id>, or run `fimo switch`.")}__name(resolveOrganizationId,"resolveOrganizationId");async function resolveConnectionToken(opts){if(opts.token)return opts.token;if(opts.tokenStdin)return readStdinValue2();assertInteractive("Pass --token-stdin or --token <value>.","integrations connect");let value=await bt({message:"Integration API token",validate:__name(input=>input?.trim().length?void 0:"token required","validate")});if(q(value))throw new Error("Cancelled.");return String(value)}__name(resolveConnectionToken,"resolveConnectionToken");async function readStdinValue2(){if(process.stdin.isTTY)throw new Error("Pass a value or pipe one with --stdin.");let chunks=[];for await(let chunk of process.stdin)chunks.push(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));return Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/,"")}__name(readStdinValue2,"readStdinValue");init_dist();init_auth();init_config();init_sdk_transport();init_project2();var EMAIL_RE=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,ORGANIZATION_ROLE_OPTIONS=[{value:"member",label:"Member",hint:"Can create sites and view members"},{value:"admin",label:"Admin",hint:"Can manage members, settings, and sites"},{value:"owner",label:"Owner",hint:"Full control over the organization"}],PROJECT_ROLE_OPTIONS=[{value:"view",label:"Can view",hint:"Read-only access to the site"},{value:"comment",label:"Can comment",hint:"Read-only access, kept for people who already hold it"},{value:"edit",label:"Can edit",hint:"Can edit code, content, assets, and use AI chat"},{value:"full",label:"Full access",hint:"Can manage settings, sharing, and publishing"}],SELECTABLE_PROJECT_ROLES=["view","edit","full"];async function inviteCommand(options){let cfg=loadConfig();requireAccountCredentials(cfg);let isPretty2=currentMode().format==="pretty";isPretty2&&mt("Invite a user to Fimo");let fimo=createCliFimoClient(cfg),target=await resolveInviteTarget(options.target);if(!target)return;if(target==="project"&&options.resend){ui.error({command:"invite",code:"RESEND_PROJECT_UNSUPPORTED",message:"`--resend` is only supported for organization invites."});return}let email=await resolveSingleEmail(options.email);if(!email)return;if(target==="organization"){let organization=await resolveOrganization2(fimo,options.org);if(!organization)return;let role2=await resolveOrganizationRole(options.role);if(!role2||(isPretty2&&wt(["Target: organization",`Organization: ${organization.name} (${organization.id})`,`Email: ${email}`,`Role: ${role2}`,options.resend?"Resend existing invite: yes":null].filter(Boolean).join(`
|
|
2737
2737
|
`),"Review invite"),!await confirmInvite(options.yes)))return;let sp2=spinner(options.resend?"Resending invitation":"Sending invitation");try{await fimo.execute("organizations.invite",{organizationId:organization.id,email,role:role2,resend:options.resend}),sp2.succeed(options.resend?"Invitation resent":"Invitation sent")}catch(error){throw rethrowCliAuthError(error,()=>sp2.fail("Authentication required")),sp2.fail(options.resend?"Failed to resend invitation":"Failed to send invitation"),error}ui.ok({command:"invite",headline:`${options.resend?"Resent":"Sent"} organization invite to ${email} for ${organization.name} as ${role2}.`,details:{target:"organization",organization_id:organization.id,organization_name:organization.name,email,role:role2,resent:options.resend===!0}});return}let project=await resolveProject2(fimo,options);if(!project)return;let role=await resolveProjectRole(options.role);if(!role||(isPretty2&&wt(["Target: project",`Project: ${formatProjectLabel(project)} (${project.id})`,`Email: ${email}`,`Access: ${role}`].join(`
|
|
2738
|
-
`),"Review invite"),!await confirmInvite(options.yes)))return;let sp=spinner("Sending invitation");try{await fimo.execute("projects.invite",{projectId:project.id,email,role}),sp.succeed("Invitation sent")}catch(error){throw rethrowCliAuthError(error,()=>sp.fail("Authentication required")),sp.fail("Failed to send invitation"),error}ui.ok({command:"invite",headline:`Sent site invite to ${email} for ${formatProjectLabel(project)} as ${role}.`,details:{target:"project",project_id:project.id,project_name:project.name,email,role}})}__name(inviteCommand,"inviteCommand");async function resolveInviteTarget(targetArg){if(targetArg){let normalized=normalizeTarget(targetArg);return normalized||(ui.error({command:"invite",code:"INVALID_TARGET",message:`Unsupported target "${targetArg}".`,hint:'Use "organization" or "project".'}),null)}let selected=await _t({message:"Where do you want to invite this user?",initialValue:"project",options:[{value:"project",label:"Site",hint:"Invite someone to collaborate on a single site"},{value:"organization",label:"Organization",hint:"Invite someone to join the organization"}]});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeTarget(String(selected))}__name(resolveInviteTarget,"resolveInviteTarget");async function resolveSingleEmail(emailArg){let initialValue=emailArg?.trim();if(initialValue){let normalized=normalizeEmail(initialValue);return normalized||(ui.error({command:"invite",code:"INVALID_EMAIL",message:"Enter a single valid email address."}),null)}let email=await Ot({message:"Who do you want to invite?",placeholder:"jane@acme.com",validate:__name(value=>validateEmailInput(String(value??"")),"validate")});return q(email)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeEmail(String(email))}__name(resolveSingleEmail,"resolveSingleEmail");async function resolveOrganization2(fimo,explicitOrganizationId){if(explicitOrganizationId){let{data:orgs3}=await fimo.execute("organizations.list",{}),organization=orgs3.find(org=>org.id===explicitOrganizationId);return organization||(ui.error({command:"invite",code:"ORGANIZATION_NOT_FOUND",message:`Organization ${explicitOrganizationId} was not found in your account.`}),null)}let creds=readCredentials(loadConfig());if(creds?.activeOrganization)return creds.activeOrganization;let{data:orgs2}=await fimo.execute("organizations.list",{});if(orgs2.length===0)return ui.error({command:"invite",code:"NO_ORGANIZATIONS",message:"No organization found for this account."}),null;if(orgs2.length===1)return orgs2[0];let selected=await _t({message:"Select an organization",options:orgs2.map(org=>({value:org.id,label:org.name,hint:org.slug}))});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):orgs2.find(org=>org.id===selected)??null}__name(resolveOrganization2,"resolveOrganization");async function resolveOrganizationRole(roleArg){if(roleArg){let normalized=normalizeOrganizationRole(roleArg);return normalized||(ui.error({command:"invite",code:"INVALID_ROLE",message:`Unsupported organization role "${roleArg}".`,hint:"Use member, admin, or owner."}),null)}let selected=await _t({message:"Select the organization role",initialValue:"member",options:ORGANIZATION_ROLE_OPTIONS});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeOrganizationRole(String(selected))}__name(resolveOrganizationRole,"resolveOrganizationRole");async function resolveProjectRole(roleArg){if(roleArg){let normalized=normalizeProjectRole(roleArg);return normalized||(ui.error({command:"invite",code:"INVALID_ROLE",message:`Unsupported site access "${roleArg}".`,hint:"Use view, edit, or full."}),null)}let selected=await _t({message:"Select the site access level",initialValue:"edit",options:PROJECT_ROLE_OPTIONS.filter(option=>SELECTABLE_PROJECT_ROLES.includes(option.value))});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeProjectRole(String(selected))}__name(resolveProjectRole,"resolveProjectRole");async function resolveProject2(fimo,options){if(options.project)return(await fimo.execute("projects.get",{projectId:options.project})).data;if(!options.org){let local=tryLoadLocalProject(options.cwd);if(local?.projectId)return(await fimo.execute("projects.get",{projectId:local.projectId})).data}let organization=await resolveOrganization2(fimo,options.org);if(!organization)return null;let{data:portableProjects}=await fimo.execute("projects.list",{organizationId:organization.id}),projects2=portableProjects;if(projects2.length===0)return ui.error({command:"invite",code:"NO_PROJECTS_IN_ORGANIZATION",message:`No sites found in ${organization.name}.`}),null;if(projects2.length===1)return projects2[0];let selected=await _t({message:"Select a site",options:projects2.map(project=>({value:project.id,label:formatProjectLabel(project),hint:project.id}))});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):projects2.find(project=>project.id===selected)??null}__name(resolveProject2,"resolveProject");async function confirmInvite(skipPrompt){if(skipPrompt)return!0;let confirmed=await ot2({message:"Send this invitation now?",initialValue:!0});return q(confirmed)||!confirmed?(ui.info({command:"invite",message:"Cancelled."}),!1):!0}__name(confirmInvite,"confirmInvite");function tryLoadLocalProject(cwdOption){let cwd=resolveProjectCwd(cwdOption);try{return loadProjectSettings(cwd)}catch{return null}}__name(tryLoadLocalProject,"tryLoadLocalProject");function normalizeTarget(value){let normalized=value.trim().toLowerCase();return normalized==="organization"||normalized==="org"?"organization":normalized==="project"?"project":null}__name(normalizeTarget,"normalizeTarget");function normalizeOrganizationRole(value){let normalized=value.trim().toLowerCase();return ORGANIZATION_ROLE_OPTIONS.find(option=>option.value===normalized)?.value??null}__name(normalizeOrganizationRole,"normalizeOrganizationRole");function normalizeProjectRole(value){let normalized=value.trim().toLowerCase();return PROJECT_ROLE_OPTIONS.find(option=>option.value===normalized)?.value??null}__name(normalizeProjectRole,"normalizeProjectRole");function validateEmailInput(value){if(!normalizeEmail(value))return"Enter a single valid email address"}__name(validateEmailInput,"validateEmailInput");function normalizeEmail(value){let tokens=value.trim().split(/[,\s]+/).filter(Boolean);if(tokens.length!==1)return null;let[email]=tokens,normalized=email.toLowerCase();return EMAIL_RE.test(normalized)?normalized:null}__name(normalizeEmail,"normalizeEmail");function formatProjectLabel(project){return project.displayName?.trim()||project.name}__name(formatProjectLabel,"formatProjectLabel");init_dist();init_config();init_sdk_transport();import{existsSync as existsSync14}from"node:fs";import fs36 from"node:fs/promises";import path35 from"node:path";init_project_context();init_project2();function scope(options){let projectId2=options.project;if(!projectId2){let cwd=resolveProjectCwd(options.cwd);projectId2=existsSync14(resolveProjectSettingsPath(cwd))?loadProjectSettings(cwd).projectId:process.env.FIMO_PROJECT_ID?.trim()}if(!projectId2)throw new NotInProjectError;return{projectId:projectId2,fimo:createCliFimoClient(loadConfig())}}__name(scope,"scope");function registerKnowledgeCommands(program2){let knowledge=program2.command("knowledge").description("Read and update shared site goals, brand guidance and rules"),scoped=__name(command=>command.option("--project <id>","Site id (defaults to the linked site)").option("-C, --cwd <dir>","Site directory"),"scoped");scoped(knowledge.command("get").description("Read site knowledge (shared across all Branches)")).action(async options=>{let{projectId:projectId2,fimo}=scope(options);await requireOperation("knowledge.get",{projectId:projectId2});let result=await fimo.execute("knowledge.get",{projectId:projectId2});ui.result({command:"knowledge get",data:result,render:__name(()=>result.content,"render")})}),scoped(knowledge.command("set").description("Save site knowledge from Markdown").option("--file <path>","Read Markdown from a UTF-8 file; use - for stdin").option("--stdin","Read Markdown from stdin")).action(knowledgeSetCommand)}__name(registerKnowledgeCommands,"registerKnowledgeCommands");async function knowledgeSetCommand(options){if(!options.file&&!options.stdin||options.file&&options.stdin){ui.error({command:"knowledge set",code:"KNOWLEDGE_INPUT_INVALID",message:"Pass exactly one of --file <path> or --stdin."});return}let{projectId:projectId2,fimo}=scope(options);await requireOperation("knowledge.update",{projectId:projectId2});let content2;if(options.stdin||options.file==="-"){if(process.stdin.isTTY){ui.error({command:"knowledge set",code:"KNOWLEDGE_INPUT_INVALID",message:"Pipe Markdown to stdin or use --file <path>."});return}let chunks=[],bytes=0;for await(let chunk of process.stdin){let buffer=Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk);if(bytes+=buffer.length,bytes>4e4){ui.error({command:"knowledge set",code:"KNOWLEDGE_INPUT_INVALID",message:"Knowledge exceeds the 40,000-byte input limit."});return}chunks.push(buffer)}content2=Buffer.concat(chunks).toString("utf8")}else{let filePath=path35.resolve(resolveProjectCwd(options.cwd),options.file);if((await fs36.stat(filePath)).size>4e4){ui.error({command:"knowledge set",code:"KNOWLEDGE_INPUT_INVALID",message:"Knowledge exceeds the 40,000-byte input limit."});return}content2=await fs36.readFile(filePath,"utf8")}if(Array.from(content2).length>1e4){ui.error({command:"knowledge set",code:"KNOWLEDGE_INPUT_INVALID",message:"Knowledge must contain at most 10,000 characters."});return}let result=await fimo.execute("knowledge.update",{projectId:projectId2,content:content2});ui.result({command:"knowledge set",data:result,render:__name(()=>"Saved site knowledge.","render")})}__name(knowledgeSetCommand,"knowledgeSetCommand");init_dist();import fs37 from"node:fs";import path36 from"node:path";init_project_context();init_project2();function renderPrettyJson7(data){return JSON.stringify(data,null,2)}__name(renderPrettyJson7,"renderPrettyJson");function dbLabelsRuntimeWarnings(cwd){let warning=getDbLabelsRuntimeWarning(resolveProjectCwd(cwd));return warning?[warning]:void 0}__name(dbLabelsRuntimeWarnings,"dbLabelsRuntimeWarnings");async function labelsListCommand(options,cmd){let{ctx,fimo}=await bootstrapProjectCommand(options,cmd);await requireOperation("i18n.list",{projectId:ctx.projectId,branch:ctx.branch});let{data:result}=await fimo.execute("labels.list",{projectId:ctx.projectId,branch:ctx.branch,locale:options.locale});ui.result({command:"labels list",data:result,render:__name(()=>renderPrettyJson7(result),"render")})}__name(labelsListCommand,"labelsListCommand");async function labelsSetCommand(key,valueArg,options,cmd){let{ctx,fimo}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.update",{projectId:ctx.projectId,branch:ctx.branch});let value=options.stdin?await readStdinValue3():options.value??valueArg??await readStdinValue3(),result=await fimo.execute("labels.set",{projectId:ctx.projectId,branch:ctx.branch,key,value,locale:options.locale});ui.result({command:"labels set",data:result,render:__name(()=>`Set ${key} (${result.locale})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsSetCommand,"labelsSetCommand");async function labelsSetManyCommand(options,cmd){let{ctx,fimo}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.update",{projectId:ctx.projectId,branch:ctx.branch});let records=readLabelRecords(options).map(({key,value,locale})=>({key,value,locale:locale??options.locale})),result=await fimo.execute("labels.setMany",{projectId:ctx.projectId,branch:ctx.branch,records});ui.result({command:"labels set-many",data:{...result,locale:options.locale??result.defaultLocale,labels:records.length},render:__name(()=>`Set ${records.length} label${records.length===1?"":"s"} (${result.locales.join(", ")})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsSetManyCommand,"labelsSetManyCommand");async function labelsDeleteCommand(key,options,cmd){let{ctx,fimo}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.delete",{projectId:ctx.projectId,branch:ctx.branch});let result=await fimo.execute("labels.delete",{projectId:ctx.projectId,branch:ctx.branch,key,locale:options.locale});ui.result({command:"labels delete",data:result,render:__name(()=>`Deleted ${key} (${result.locale})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsDeleteCommand,"labelsDeleteCommand");function readLabelRecords(options){if(options.file&&options.data)throw new Error("Pass either --file or --data, not both.");if(!options.file&&!options.data)throw new Error("Pass --file <path> or --data <json>.");let raw=options.data??readLabelFile(options),parsed=JSON.parse(raw);if(Array.isArray(parsed))return parsed.map(item=>{if(!item||typeof item!="object")throw new Error("Label arrays must contain objects with key and value fields.");let record=item;if(typeof record.key!="string")throw new Error("Each label record must include a string key.");let value=record.value??record.defaultValue;if(typeof value!="string")throw new Error(`Label ${record.key} must include a string value.`);let locale;if(record.locale!==void 0){if(typeof record.locale!="string")throw new Error(`Label ${record.key} has a non-string locale.`);locale=record.locale}return{key:record.key,value,locale}});if(!parsed||typeof parsed!="object")throw new Error("Labels JSON must be an object map or an array of { key, value } records.");return Object.entries(parsed).map(([key,value])=>{if(typeof value!="string")throw new Error(`Label ${key} must be a string.`);return{key,value}})}__name(readLabelRecords,"readLabelRecords");function readLabelFile(options){let projectRoot=resolveProjectCwd(options.cwd),filePath=path36.resolve(projectRoot,options.file);return fs37.readFileSync(filePath,"utf8")}__name(readLabelFile,"readLabelFile");async function readStdinValue3(){if(process.stdin.isTTY)throw new Error("Pass a label value or pipe one with --stdin.");let chunks=[];for await(let chunk of process.stdin)chunks.push(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));return Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/,"")}__name(readStdinValue3,"readStdinValue");import path39 from"node:path";init_esm();init_dist();init_local_runtime_env();init_auth();init_config();init_sdk_transport();init_project_services();import fs38 from"node:fs";import path37 from"node:path";init_config();init_project2();var BUILD_HOOKS={"react-router":[{files:["vite.config.ts","vite.config.mts","vite.config.js"],specifiers:["fimo-react-router/vite"],instruction:"add `fimo()` from `fimo-react-router/vite` to the Vite `plugins` array"}],vite:[{files:["vite.config.ts","vite.config.mts","vite.config.js"],specifiers:["fimo-react-router/vite","fimo-vite"],instruction:"add `fimo()` to the Vite `plugins` array, from `fimo-react-router/vite` in a React application or `fimo-vite` otherwise"}],astro:[{files:["astro.config.mjs","astro.config.ts","astro.config.js"],specifiers:["fimo-astro/config","fimo/astro/config"],instruction:"add `fimo()` from `fimo-astro/config` to `integrations`"}],nextjs:[{files:["next.config.ts","next.config.mjs","next.config.js"],specifiers:["fimo-next/config"],instruction:"wrap the exported config in `withFimo()` from `fimo-next/config`"}],sveltekit:[{files:["vite.config.ts","vite.config.js"],specifiers:["fimo-sveltekit/vite"],instruction:"add `fimo()` from `fimo-sveltekit/vite` to the Vite `plugins` array"},{files:["svelte.config.js","svelte.config.ts"],specifiers:["fimo-sveltekit/config"],instruction:"set `kit.adapter` to `fimo()` from `fimo-sveltekit/config`"}]};async function adoptApplication(targetDir){let detected=await detectProjectFramework(targetDir),framework=detected?.slug??null;if(!framework||!isTemplateFramework(framework)){let reason=detected?`${detected.name} is not a framework Fimo builds yet`:"No supported framework was detected here";return{framework,written:[],warnings:[`${reason} \u2014 linked without Fimo build setup. Supported: ${TEMPLATE_FRAMEWORKS.join(", ")}.`]}}let written=[],warnings=[],dependency=declareFimoDependency(targetDir);dependency==="written"?written.push("package.json"):dependency==="unreadable"&&warnings.push("Could not read package.json, so `fimo` was not added as a dependency. Add it yourself.");let config=recordRuntimeFramework(targetDir,framework);return config.written&&written.push(config.written),config.warning&&warnings.push(config.warning),warnings.push(...missingBuildHooks(targetDir,framework)),{framework,written,warnings}}__name(adoptApplication,"adoptApplication");function isTemplateFramework(slug){return TEMPLATE_FRAMEWORKS.includes(slug)}__name(isTemplateFramework,"isTemplateFramework");function declareFimoDependency(targetDir){let pkgPath=path37.join(targetDir,"package.json"),pkg;try{pkg=JSON.parse(fs38.readFileSync(pkgPath,"utf-8"))}catch{return"unreadable"}if(pkg.dependencies?.fimo||pkg.devDependencies?.fimo)return"unchanged";let pin=resolveFimoPin({devPackageRoot:CLI_ROOT});return pin?(pkg.dependencies=sortedKeys({...pkg.dependencies??{},fimo:pin}),fs38.writeFileSync(pkgPath,`${JSON.stringify(pkg,null,2)}
|
|
2738
|
+
`),"Review invite"),!await confirmInvite(options.yes)))return;let sp=spinner("Sending invitation");try{await fimo.execute("projects.invite",{projectId:project.id,email,role}),sp.succeed("Invitation sent")}catch(error){throw rethrowCliAuthError(error,()=>sp.fail("Authentication required")),sp.fail("Failed to send invitation"),error}ui.ok({command:"invite",headline:`Sent site invite to ${email} for ${formatProjectLabel(project)} as ${role}.`,details:{target:"project",project_id:project.id,project_name:project.name,email,role}})}__name(inviteCommand,"inviteCommand");async function resolveInviteTarget(targetArg){if(targetArg){let normalized=normalizeTarget(targetArg);return normalized||(ui.error({command:"invite",code:"INVALID_TARGET",message:`Unsupported target "${targetArg}".`,hint:'Use "organization" or "project".'}),null)}let selected=await _t({message:"Where do you want to invite this user?",initialValue:"project",options:[{value:"project",label:"Site",hint:"Invite someone to collaborate on a single site"},{value:"organization",label:"Organization",hint:"Invite someone to join the organization"}]});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeTarget(String(selected))}__name(resolveInviteTarget,"resolveInviteTarget");async function resolveSingleEmail(emailArg){let initialValue=emailArg?.trim();if(initialValue){let normalized=normalizeEmail(initialValue);return normalized||(ui.error({command:"invite",code:"INVALID_EMAIL",message:"Enter a single valid email address."}),null)}let email=await Ot({message:"Who do you want to invite?",placeholder:"jane@acme.com",validate:__name(value=>validateEmailInput(String(value??"")),"validate")});return q(email)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeEmail(String(email))}__name(resolveSingleEmail,"resolveSingleEmail");async function resolveOrganization2(fimo,explicitOrganizationId){if(explicitOrganizationId){let{data:orgs3}=await fimo.execute("organizations.list",{}),organization=orgs3.find(org=>org.id===explicitOrganizationId);return organization||(ui.error({command:"invite",code:"ORGANIZATION_NOT_FOUND",message:`Organization ${explicitOrganizationId} was not found in your account.`}),null)}let creds=readCredentials(loadConfig());if(creds?.activeOrganization)return creds.activeOrganization;let{data:orgs2}=await fimo.execute("organizations.list",{});if(orgs2.length===0)return ui.error({command:"invite",code:"NO_ORGANIZATIONS",message:"No organization found for this account."}),null;if(orgs2.length===1)return orgs2[0];let selected=await _t({message:"Select an organization",options:orgs2.map(org=>({value:org.id,label:org.name,hint:org.slug}))});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):orgs2.find(org=>org.id===selected)??null}__name(resolveOrganization2,"resolveOrganization");async function resolveOrganizationRole(roleArg){if(roleArg){let normalized=normalizeOrganizationRole(roleArg);return normalized||(ui.error({command:"invite",code:"INVALID_ROLE",message:`Unsupported organization role "${roleArg}".`,hint:"Use member, admin, or owner."}),null)}let selected=await _t({message:"Select the organization role",initialValue:"member",options:ORGANIZATION_ROLE_OPTIONS});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeOrganizationRole(String(selected))}__name(resolveOrganizationRole,"resolveOrganizationRole");async function resolveProjectRole(roleArg){if(roleArg){let normalized=normalizeProjectRole(roleArg);return normalized||(ui.error({command:"invite",code:"INVALID_ROLE",message:`Unsupported site access "${roleArg}".`,hint:"Use view, edit, or full."}),null)}let selected=await _t({message:"Select the site access level",initialValue:"edit",options:PROJECT_ROLE_OPTIONS.filter(option=>SELECTABLE_PROJECT_ROLES.includes(option.value))});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeProjectRole(String(selected))}__name(resolveProjectRole,"resolveProjectRole");async function resolveProject2(fimo,options){if(options.project)return(await fimo.execute("projects.get",{projectId:options.project})).data;if(!options.org){let local=tryLoadLocalProject(options.cwd);if(local?.projectId)return(await fimo.execute("projects.get",{projectId:local.projectId})).data}let organization=await resolveOrganization2(fimo,options.org);if(!organization)return null;let{data:portableProjects}=await fimo.execute("projects.list",{organizationId:organization.id}),projects2=portableProjects;if(projects2.length===0)return ui.error({command:"invite",code:"NO_PROJECTS_IN_ORGANIZATION",message:`No sites found in ${organization.name}.`}),null;if(projects2.length===1)return projects2[0];let selected=await _t({message:"Select a site",options:projects2.map(project=>({value:project.id,label:formatProjectLabel(project),hint:project.id}))});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):projects2.find(project=>project.id===selected)??null}__name(resolveProject2,"resolveProject");async function confirmInvite(skipPrompt){if(skipPrompt)return!0;let confirmed=await ot2({message:"Send this invitation now?",initialValue:!0});return q(confirmed)||!confirmed?(ui.info({command:"invite",message:"Cancelled."}),!1):!0}__name(confirmInvite,"confirmInvite");function tryLoadLocalProject(cwdOption){let cwd=resolveProjectCwd(cwdOption);try{return loadProjectSettings(cwd)}catch{return null}}__name(tryLoadLocalProject,"tryLoadLocalProject");function normalizeTarget(value){let normalized=value.trim().toLowerCase();return normalized==="organization"||normalized==="org"?"organization":normalized==="project"?"project":null}__name(normalizeTarget,"normalizeTarget");function normalizeOrganizationRole(value){let normalized=value.trim().toLowerCase();return ORGANIZATION_ROLE_OPTIONS.find(option=>option.value===normalized)?.value??null}__name(normalizeOrganizationRole,"normalizeOrganizationRole");function normalizeProjectRole(value){let normalized=value.trim().toLowerCase();return PROJECT_ROLE_OPTIONS.find(option=>option.value===normalized)?.value??null}__name(normalizeProjectRole,"normalizeProjectRole");function validateEmailInput(value){if(!normalizeEmail(value))return"Enter a single valid email address"}__name(validateEmailInput,"validateEmailInput");function normalizeEmail(value){let tokens=value.trim().split(/[,\s]+/).filter(Boolean);if(tokens.length!==1)return null;let[email]=tokens,normalized=email.toLowerCase();return EMAIL_RE.test(normalized)?normalized:null}__name(normalizeEmail,"normalizeEmail");function formatProjectLabel(project){return project.displayName?.trim()||project.name}__name(formatProjectLabel,"formatProjectLabel");init_dist();init_config();init_sdk_transport();import{existsSync as existsSync14}from"node:fs";import fs36 from"node:fs/promises";import path35 from"node:path";init_project_context();init_project2();function scope(options){let projectId2=options.project;if(!projectId2){let cwd=resolveProjectCwd(options.cwd);projectId2=existsSync14(resolveProjectSettingsPath(cwd))?loadProjectSettings(cwd).projectId:process.env.FIMO_PROJECT_ID?.trim()}if(!projectId2)throw new NotInProjectError;return{projectId:projectId2,fimo:createCliFimoClient(loadConfig())}}__name(scope,"scope");function registerKnowledgeCommands(program2){let knowledge=program2.command("knowledge").description("Read and update shared site goals, brand guidance and rules"),scoped=__name(command=>command.option("--project <id>","Site id (defaults to the linked site)").option("-C, --cwd <dir>","Site directory"),"scoped");scoped(knowledge.command("get").description("Read site knowledge (shared across all Branches)")).action(async options=>{let{projectId:projectId2,fimo}=scope(options);await requireOperation("knowledge.get",{projectId:projectId2});let result=await fimo.execute("knowledge.get",{projectId:projectId2});ui.result({command:"knowledge get",data:result,render:__name(()=>result.content,"render")})}),scoped(knowledge.command("set").description("Save site knowledge from Markdown").option("--file <path>","Read Markdown from a UTF-8 file; use - for stdin").option("--stdin","Read Markdown from stdin")).action(knowledgeSetCommand)}__name(registerKnowledgeCommands,"registerKnowledgeCommands");async function knowledgeSetCommand(options){if(!options.file&&!options.stdin||options.file&&options.stdin){ui.error({command:"knowledge set",code:"KNOWLEDGE_INPUT_INVALID",message:"Pass exactly one of --file <path> or --stdin."});return}let{projectId:projectId2,fimo}=scope(options);await requireOperation("knowledge.update",{projectId:projectId2});let content2;if(options.stdin||options.file==="-"){if(process.stdin.isTTY){ui.error({command:"knowledge set",code:"KNOWLEDGE_INPUT_INVALID",message:"Pipe Markdown to stdin or use --file <path>."});return}let chunks=[],bytes=0;for await(let chunk of process.stdin){let buffer=Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk);if(bytes+=buffer.length,bytes>4e4){ui.error({command:"knowledge set",code:"KNOWLEDGE_INPUT_INVALID",message:"Knowledge exceeds the 40,000-byte input limit."});return}chunks.push(buffer)}content2=Buffer.concat(chunks).toString("utf8")}else{let filePath=path35.resolve(resolveProjectCwd(options.cwd),options.file);if((await fs36.stat(filePath)).size>4e4){ui.error({command:"knowledge set",code:"KNOWLEDGE_INPUT_INVALID",message:"Knowledge exceeds the 40,000-byte input limit."});return}content2=await fs36.readFile(filePath,"utf8")}if(Array.from(content2).length>1e4){ui.error({command:"knowledge set",code:"KNOWLEDGE_INPUT_INVALID",message:"Knowledge must contain at most 10,000 characters."});return}let result=await fimo.execute("knowledge.update",{projectId:projectId2,content:content2});ui.result({command:"knowledge set",data:result,render:__name(()=>"Saved site knowledge.","render")})}__name(knowledgeSetCommand,"knowledgeSetCommand");init_dist();import fs37 from"node:fs";import path36 from"node:path";init_project_context();init_project2();function renderPrettyJson7(data){return JSON.stringify(data,null,2)}__name(renderPrettyJson7,"renderPrettyJson");function dbLabelsRuntimeWarnings(cwd){let warning=getDbLabelsRuntimeWarning(resolveProjectCwd(cwd));return warning?[warning]:void 0}__name(dbLabelsRuntimeWarnings,"dbLabelsRuntimeWarnings");async function labelsListCommand(options,cmd){let{ctx,fimo}=await bootstrapProjectCommand(options,cmd);await requireOperation("i18n.list",{projectId:ctx.projectId,branch:ctx.branch});let{data:result}=await fimo.execute("labels.list",{projectId:ctx.projectId,branch:ctx.branch,locale:options.locale});ui.result({command:"labels list",data:result,render:__name(()=>renderPrettyJson7(result),"render")})}__name(labelsListCommand,"labelsListCommand");async function labelsSetCommand(key,valueArg,options,cmd){let{ctx,fimo}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.update",{projectId:ctx.projectId,branch:ctx.branch});let value=options.stdin?await readStdinValue3():options.value??valueArg??await readStdinValue3(),result=await fimo.execute("labels.set",{projectId:ctx.projectId,branch:ctx.branch,key,value,locale:options.locale});ui.result({command:"labels set",data:result,render:__name(()=>`Set ${key} (${result.locale})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsSetCommand,"labelsSetCommand");async function labelsSetManyCommand(options,cmd){let{ctx,fimo}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.update",{projectId:ctx.projectId,branch:ctx.branch});let records=readLabelRecords(options).map(({key,value,locale})=>({key,value,locale:locale??options.locale})),result=await fimo.execute("labels.setMany",{projectId:ctx.projectId,branch:ctx.branch,records});ui.result({command:"labels set-many",data:{...result,locale:options.locale??result.defaultLocale,labels:records.length},render:__name(()=>`Set ${records.length} label${records.length===1?"":"s"} (${result.locales.join(", ")})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsSetManyCommand,"labelsSetManyCommand");async function labelsDeleteCommand(key,options,cmd){let{ctx,fimo}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.delete",{projectId:ctx.projectId,branch:ctx.branch});let result=await fimo.execute("labels.delete",{projectId:ctx.projectId,branch:ctx.branch,key,locale:options.locale});ui.result({command:"labels delete",data:result,render:__name(()=>`Deleted ${key} (${result.locale})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsDeleteCommand,"labelsDeleteCommand");function readLabelRecords(options){if(options.file&&options.data)throw new Error("Pass either --file or --data, not both.");if(!options.file&&!options.data)throw new Error("Pass --file <path> or --data <json>.");let raw=options.data??readLabelFile(options),parsed=JSON.parse(raw);if(Array.isArray(parsed))return parsed.map(item=>{if(!item||typeof item!="object")throw new Error("Label arrays must contain objects with key and value fields.");let record=item;if(typeof record.key!="string")throw new Error("Each label record must include a string key.");let value=record.value??record.defaultValue;if(typeof value!="string")throw new Error(`Label ${record.key} must include a string value.`);let locale;if(record.locale!==void 0){if(typeof record.locale!="string")throw new Error(`Label ${record.key} has a non-string locale.`);locale=record.locale}return{key:record.key,value,locale}});if(!parsed||typeof parsed!="object")throw new Error("Labels JSON must be an object map or an array of { key, value } records.");return Object.entries(parsed).map(([key,value])=>{if(typeof value!="string")throw new Error(`Label ${key} must be a string.`);return{key,value}})}__name(readLabelRecords,"readLabelRecords");function readLabelFile(options){let projectRoot=resolveProjectCwd(options.cwd),filePath=path36.resolve(projectRoot,options.file);return fs37.readFileSync(filePath,"utf8")}__name(readLabelFile,"readLabelFile");async function readStdinValue3(){if(process.stdin.isTTY)throw new Error("Pass a label value or pipe one with --stdin.");let chunks=[];for await(let chunk of process.stdin)chunks.push(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));return Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/,"")}__name(readStdinValue3,"readStdinValue");import path39 from"node:path";init_esm();init_dist();init_local_runtime_env();init_auth();init_config();init_sdk_transport();init_project_services();import fs38 from"node:fs";import path37 from"node:path";init_config();init_project2();var SETUP_REFERENCES={"react-router":"frameworks/react-router",vite:"frameworks/vite-react",astro:"frameworks/astro",nextjs:"frameworks/next",sveltekit:"frameworks/sveltekit"},BUILD_HOOKS={"react-router":[{files:["vite.config.ts","vite.config.mts","vite.config.js"],specifiers:["fimo-react-router/vite"],instruction:"add `fimo()` from `fimo-react-router/vite` to the Vite `plugins` array"}],vite:[{files:["vite.config.ts","vite.config.mts","vite.config.js"],specifiers:["fimo-react-router/vite","fimo-vite"],instruction:"add `fimo()` to the Vite `plugins` array, from `fimo-react-router/vite` in a React application or `fimo-vite` otherwise"}],astro:[{files:["astro.config.mjs","astro.config.ts","astro.config.js"],specifiers:["fimo-astro/config","fimo/astro/config"],instruction:"add `fimo()` from `fimo-astro/config` to `integrations`"}],nextjs:[{files:["next.config.ts","next.config.mjs","next.config.js"],specifiers:["fimo-next/config"],instruction:"wrap the exported config in `withFimo()` from `fimo-next/config`"}],sveltekit:[{files:["vite.config.ts","vite.config.js"],specifiers:["fimo-sveltekit/vite"],instruction:"add `fimo()` from `fimo-sveltekit/vite` to the Vite `plugins` array"},{files:["svelte.config.js","svelte.config.ts"],specifiers:["fimo-sveltekit/config"],instruction:"set `kit.adapter` to `fimo()` from `fimo-sveltekit/config`"}]};async function adoptApplication(targetDir){let detected=await detectProjectFramework(targetDir),framework=detected?.slug??null;if(!framework||!isTemplateFramework(framework)){let reason=detected?`${detected.name} is not a framework Fimo builds yet`:"No supported framework was detected here";return{framework,written:[],warnings:[`${reason} \u2014 linked without Fimo build setup. Supported: ${TEMPLATE_FRAMEWORKS.join(", ")}.`]}}let written=[],warnings=[],dependency=declareFimoDependency(targetDir);dependency==="written"?written.push("package.json"):dependency==="unreadable"&&warnings.push("Could not read package.json, so `fimo` was not added as a dependency. Add it yourself.");let config=recordRuntimeFramework(targetDir,framework);return config.written&&written.push(config.written),config.warning&&warnings.push(config.warning),warnings.push(...missingBuildHooks(targetDir,framework)),{framework,written,warnings}}__name(adoptApplication,"adoptApplication");function isTemplateFramework(slug){return TEMPLATE_FRAMEWORKS.includes(slug)}__name(isTemplateFramework,"isTemplateFramework");function declareFimoDependency(targetDir){let pkgPath=path37.join(targetDir,"package.json"),pkg;try{pkg=JSON.parse(fs38.readFileSync(pkgPath,"utf-8"))}catch{return"unreadable"}if(pkg.dependencies?.fimo||pkg.devDependencies?.fimo)return"unchanged";let pin=resolveFimoPin({devPackageRoot:CLI_ROOT});return pin?(pkg.dependencies=sortedKeys({...pkg.dependencies??{},fimo:pin}),fs38.writeFileSync(pkgPath,`${JSON.stringify(pkg,null,2)}
|
|
2739
2739
|
`),"written"):"unchanged"}__name(declareFimoDependency,"declareFimoDependency");function sortedKeys(deps){return Object.fromEntries(Object.entries(deps).sort(([a],[b])=>a.localeCompare(b)))}__name(sortedKeys,"sortedKeys");function recordRuntimeFramework(targetDir,framework){let configPath=resolveProjectConfigPath(targetDir),relative3=path37.relative(targetDir,configPath);if(!fs38.existsSync(configPath)){let fresh={runtime:{framework},version:"4"};return fs38.mkdirSync(path37.dirname(configPath),{recursive:!0}),fs38.writeFileSync(configPath,`${JSON.stringify(fresh,null,2)}
|
|
2740
2740
|
`),{written:relative3,warning:null}}let config;try{config=JSON.parse(fs38.readFileSync(configPath,"utf-8"))}catch{return{written:null,warning:`${relative3} is not valid JSON, so its runtime framework could not be verified or updated.`}}return config.runtime?.framework?{written:null,warning:config.runtime.framework===framework?null:`${relative3} declares runtime.framework as ${config.runtime.framework}, but the application was detected as ${framework}. Resolve the mismatch before deploying.`}:(config.runtime={...config.runtime,framework},fs38.writeFileSync(configPath,`${JSON.stringify(config,null,2)}
|
|
2741
|
-
`),{written:relative3,warning:null})}__name(recordRuntimeFramework,"recordRuntimeFramework");function missingBuildHooks(targetDir,framework){let warnings=[];for(let hook of BUILD_HOOKS[framework]){let file=hook.files.find(candidate=>fs38.existsSync(path37.join(targetDir,candidate)));if(!file){warnings.push(`This application has no ${hook.files[0]} \u2014 ${hook.instruction} when you add one.`);continue}let source=fs38.readFileSync(path37.join(targetDir,file),"utf-8");hook.specifiers.some(specifier=>source.includes(specifier))||warnings.push(`${file} does not use \`${hook.specifiers[0]}\` \u2014 ${hook.instruction}.`)}return warnings}__name(missingBuildHooks,"missingBuildHooks");init_branch_identity();init_local_runtime_env();import fs39 from"node:fs";import path38 from"node:path";import{parseEnv as parseEnv2}from"node:util";function removeSeededBranchResidue(targetDir,link){let removed=[],urlKeys=new Set(LOCAL_CONTENT_API_ENV_KEYS),selectorKeys=new Set(LOCAL_ENV_SELECTOR_KEYS);for(let file of[".env",".env.local"]){let filePath=path38.join(targetDir,file);if(!fs39.existsSync(filePath))continue;let original=fs39.readFileSync(filePath,"utf-8"),eol=original.includes(`\r
|
|
2741
|
+
`),{written:relative3,warning:null})}__name(recordRuntimeFramework,"recordRuntimeFramework");function missingBuildHooks(targetDir,framework){let warnings=[];for(let hook of BUILD_HOOKS[framework]){let file=hook.files.find(candidate=>fs38.existsSync(path37.join(targetDir,candidate)));if(!file){warnings.push(`This application has no ${hook.files[0]} \u2014 ${hook.instruction} when you add one.`);continue}let source=fs38.readFileSync(path37.join(targetDir,file),"utf-8");hook.specifiers.some(specifier=>source.includes(specifier))||warnings.push(`${file} does not use \`${hook.specifiers[0]}\` \u2014 ${hook.instruction}.`)}return warnings.length>0&&warnings.push(`For the full setup, run \`fimo skills get fimo-code --ref ${SETUP_REFERENCES[framework]}\`.`),warnings}__name(missingBuildHooks,"missingBuildHooks");init_branch_identity();init_local_runtime_env();import fs39 from"node:fs";import path38 from"node:path";import{parseEnv as parseEnv2}from"node:util";function removeSeededBranchResidue(targetDir,link){let removed=[],urlKeys=new Set(LOCAL_CONTENT_API_ENV_KEYS),selectorKeys=new Set(LOCAL_ENV_SELECTOR_KEYS);for(let file of[".env",".env.local"]){let filePath=path38.join(targetDir,file);if(!fs39.existsSync(filePath))continue;let original=fs39.readFileSync(filePath,"utf-8"),eol=original.includes(`\r
|
|
2742
2742
|
`)?`\r
|
|
2743
2743
|
`:`
|
|
2744
2744
|
`,kept=[],removedUrlHere=!1,lines=original.split(/\r?\n/),isSeededUrl=__name((key,value)=>urlKeys.has(key)&&isFimoMintedTenantUrl(value,link),"isSeededUrl");removedUrlHere=lines.some(line=>{let parsed=parseLine(line);return parsed!==null&&isSeededUrl(parsed.key,parsed.value)});for(let line of lines){let parsed=parseLine(line);if(parsed&&(isSeededUrl(parsed.key,parsed.value)||removedUrlHere&&selectorKeys.has(parsed.key))){removed.push({file,key:parsed.key,value:parsed.value});continue}kept.push(line)}if(kept.length!==lines.length){let content2=kept.join(eol);fs39.writeFileSync(filePath,content2)}}return removed}__name(removeSeededBranchResidue,"removeSeededBranchResidue");function parseLine(line){let[entry]=Object.entries(parseEnv2(line));return entry?{key:entry[0],value:entry[1]??""}:null}__name(parseLine,"parseLine");init_git_credential_setup();init_git();init_project_context();init_project2();function registerLinkCommand(program2){program2.command("link").description("Link the current application to a Fimo site, in place (repairs an existing link)").argument("[projectId]","Site ID to link (defaults to the linked site, else prompts)").option("--branch <name>","Branch to link (defaults to the current git branch, else main)").option("--relink","Replace an existing link to a different site").option("-C, --cwd <dir>","Application directory").action((projectId2,options,command)=>linkCommand(projectId2,{...options,branch:branchOverrideFromCommand(command)}))}__name(registerLinkCommand,"registerLinkCommand");async function linkCommand(projectIdArg,options={}){let targetDir=path39.resolve(options.cwd??process.cwd()),existingProjectId=findProjectRoot2(targetDir)===targetDir?readLinkedProjectId(targetDir):null;if(projectIdArg&&existingProjectId&&projectIdArg!==existingProjectId&&!options.relink){ui.error({command:"link",code:"PROJECT_ID_MISMATCH",message:`This application is already linked to site ${existingProjectId}, not ${projectIdArg}.`,hint:`Run \`fimo link ${projectIdArg} --relink\` to replace the existing link.`});return}if(options.branch&&!isValidBranch(options.branch)){ui.error({command:"link",code:"INVALID_ENV",message:`'${options.branch}' is not a valid Branch name.`});return}let cfg=loadConfig();requireAuth(cfg);let creds=readCredentials(cfg),fimo=createCliFimoClient(cfg),linkedProjectId2=projectIdArg??existingProjectId,resolved=linkedProjectId2?{projectId:linkedProjectId2,created:!1}:await resolveProjectId6(fimo,creds,targetDir);if(!resolved)return;let{projectId:projectId2,created}=resolved,fail2=__name((code2,message,retryBranch,hint)=>{let retry=retryCommand2(projectId2,targetDir,retryBranch);ui.error({command:"link",code:code2,message:created?`Created site ${projectId2}, but did not link it. ${message}`:message,hint:created?`Run \`${retry}\` to finish. Without the site id, \`fimo link\` creates another site.`:hint,details:created?{project_id:projectId2,project_created:!0,retry_command:retry}:void 0})},"fail"),project;try{project=(await fimo.execute("projects.get",{projectId:projectId2})).data}catch(error){fail2(error instanceof ApiRequestError&&error.status===404?"PROJECT_NOT_FOUND":"LINK_FAILED",`Could not read site ${projectId2}: ${errorMessage2(error)}`,options.branch,"Check the site id with `fimo projects list`.");return}let defaultBranch=project.defaultBranch??DEFAULT_BRANCH,branch=await resolveLinkBranch(targetDir,options.branch,defaultBranch),remote;try{remote=await createGitService(cfg,branch).getRemote(projectId2,branch)}catch(error){error instanceof ApiRequestError&&error.status===404?fail2("ENV_NOT_FOUND",`Site ${projectId2} has no Branch '${branch}'.`,defaultBranch,`Link an existing Branch: \`${retryCommand2(projectId2,targetDir,defaultBranch)}\`.`):fail2("LINK_FAILED",`Could not read site ${projectId2} (Branch '${branch}'): ${errorMessage2(error)}`,branch,"Check that the Branch exists with `fimo branch`.");return}let checkout=await setUpCheckout(targetDir,project,remote,cfg.apiUrl,defaultBranch).catch(error=>{if(!created)throw error;return fail2("LINK_FAILED",`Could not set up ${targetDir}: ${errorMessage2(error)}`,branch),null});if(!checkout)return;let{gitInitialized,adoption,removed}=checkout,runtime=resolveLocalRuntimeEnv({cwd:targetDir}),warnings=[...adoption.warnings];remote.tenantApiBaseUrl||warnings.push("The server did not return a tenant API base URL, so this checkout cannot derive Branch URLs on its own. Upgrade the Fimo backend, or set VITE_API_URL / NEXT_PUBLIC_FIMO_API_URL yourself.");let localBranch=await currentBranch2(targetDir).catch(()=>null);localBranch&&localBranch!==branch&&warnings.push(`Linked Branch '${branch}', but this checkout is on git branch '${localBranch}', and the local site follows the git branch. To work on '${branch}' locally, rename this branch (\`git branch -m ${shellArg(localBranch)} ${branch}\`) or switch to it (\`git switch ${branch}\`).`);let relinked=!!existingProjectId;ui.ok({command:"link",headline:relinked?`Repaired the link to '${project.displayName??project.name}' on Branch '${branch}'`:`Linked ${path39.basename(targetDir)} to '${project.displayName??project.name}' on Branch '${branch}'`,details:{project_id:projectId2,branch,env:branch,relinked,git_remote:"fimo",git_initialized:gitInitialized,framework:adoption.framework,fimo_setup:adoption.written,tenant_api_url:runtime?.tenantApiUrl??null,removed_env_lines:removed.map(entry=>`${entry.file}: ${entry.key}`)},hint:relinked?void 0:'Text typed in this app\'s code shows "Nothing to edit" in Fimo Studio. To make it editable, run `fimo skills get fimo-migration` and follow its source-backed path.',warnings:warnings.length>0?warnings:void 0})}__name(linkCommand,"linkCommand");async function setUpCheckout(targetDir,project,remote,apiUrl,defaultBranch){let gitInitialized=await ensureGitRepo(targetDir,defaultBranch);await ensureFimoRemote(targetDir,remote.url),writeLocalProjectFiles({targetDir,project,apiUrl,tenantApiBaseUrl:remote.tenantApiBaseUrl});let adoption=await adoptApplication(targetDir),removed=remote.tenantApiBaseUrl?removeSeededBranchResidue(targetDir,{projectId:project.id,tenantApiBaseUrl:remote.tenantApiBaseUrl}):[];return{gitInitialized,adoption,removed}}__name(setUpCheckout,"setUpCheckout");function retryCommand2(projectId2,targetDir,branch){return`fimo link ${shellArg(projectId2)} -C ${shellArg(targetDir)}${branch?` --branch ${shellArg(branch)}`:""}`}__name(retryCommand2,"retryCommand");function shellArg(value){return/^[\w./@:+-]+$/.test(value)?value:`'${value.replace(/'/g,"'\\''")}'`}__name(shellArg,"shellArg");function errorMessage2(error){return error instanceof Error?error.message:String(error)}__name(errorMessage2,"errorMessage");function readLinkedProjectId(targetDir){try{return loadProjectSettings(targetDir).projectId}catch{return null}}__name(readLinkedProjectId,"readLinkedProjectId");function noPrompt(){return currentMode().format==="json"||!isInteractive()}__name(noPrompt,"noPrompt");async function resolveProjectId6(fimo,creds,targetDir){if(!noPrompt()){let choice=await _t({message:"Which Fimo site should this application link to?",options:[{value:"new",label:"Create a new site"},{value:"existing",label:"Link an existing site"}]});if(q(choice))return ui.info({command:"link",message:"Cancelled."}),null;if(choice==="existing"){let picked=await selectProjectId({fimo,activeOrganizationId:creds?.activeOrganization?.id,message:"Which Fimo site should this application link to?"});switch(picked.status){case"selected":return{projectId:picked.projectId,created:!1};case"cancelled":return ui.info({command:"link",message:"Cancelled."}),null;case"empty":O2.step(`${picked.message} Creating one for this application.`);break;default:return ui.error({command:"link",code:picked.code,message:picked.message,hint:picked.hint}),null}}}return createProjectForApplication(fimo,targetDir)}__name(resolveProjectId6,"resolveProjectId");async function createProjectForApplication(fimo,targetDir){let organizationId;try{organizationId=await resolveOrganization(fimo,void 0,{nonInteractive:noPrompt()})}catch(error){if(!(error instanceof ScaffoldError))throw error;return error.code==="ORGANIZATION_SELECTION_CANCELLED"?(ui.info({command:"link",message:"Cancelled."}),null):(ui.error({command:"link",code:error.code,message:error.message,hint:error.code==="ORGANIZATION_REQUIRED"?"Run `fimo orgs switch --org <id-or-slug>` first, or pass a project id: `fimo link <projectId>`.":error.hint}),null)}let createSpinner=spinner("Creating Fimo site");try{let{data:project}=await fimo.execute("projects.create",{organizationId,displayName:path39.basename(targetDir)});return createSpinner.succeed(`Project ${project.displayName??project.name} created (${project.id})`),{projectId:project.id,created:!0}}catch(error){return createSpinner.fail("Project creation failed"),ui.error({command:"link",code:"PROJECT_CREATE_FAILED",message:explainCreateProjectError(error)}),null}}__name(createProjectForApplication,"createProjectForApplication");async function ensureGitRepo(targetDir,defaultBranch){if(await isGitRepo(targetDir))return!1;let gitSpinner=spinner("Initializing git repository");return await runGit(["init","-b",defaultBranch],targetDir),gitSpinner.succeed("Git initialized"),!0}__name(ensureGitRepo,"ensureGitRepo");async function resolveLinkBranch(targetDir,override,defaultBranch){if(override)return override;let branch=await currentBranch2(targetDir).catch(()=>null);return branch&&branch!=="HEAD"&&isValidBranch(branch)?branch:defaultBranch}__name(resolveLinkBranch,"resolveLinkBranch");init_dist();init_config();init_sdk_transport();init_project_services();init_branch_checkout();init_git_credential_setup();init_project_context();init_project2();function coverage(value){return`${value.translated}/${value.total}`}__name(coverage,"coverage");function localeLines(stats){return stats.map(item=>`${item.isDefault?"* ":" "}${item.locale.padEnd(12)} entries ${coverage(item.entries).padEnd(9)} labels ${coverage(item.labels)}`)}__name(localeLines,"localeLines");function renderLocaleStats(branch,stats){return[`Locales for ${branch}`,"",...localeLines(stats.locales)].join(`
|