@standards/schema 1.0.0-alpha.382 → 1.0.0-alpha.384
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/{all-BgYwavNm.d.mts → all-C9OPP-r1.d.ts} +10 -10
- package/dist/{all-DjdKldjX.d.ts → all-CYmW48oj.d.mts} +10 -10
- package/dist/api/index.d.mts +148 -85
- package/dist/api/index.d.ts +148 -85
- package/dist/api/index.js +1 -1
- package/dist/api/index.mjs +1 -1
- package/dist/{attributes-aTeqx6cK.d.mts → attributes-CZD_B0mZ.d.mts} +1 -1
- package/dist/{attributes-kAhQzg8-.d.ts → attributes-D35Lcoui.d.ts} +1 -1
- package/dist/{checkbox-n0YV1O13.d.ts → checkbox-CQRDh5tF.d.ts} +2 -2
- package/dist/{checkbox-BZvZOraX.d.mts → checkbox-D00iEidf.d.mts} +2 -2
- package/dist/{date-CxqDOhA0.d.mts → date-B9051Wxe.d.mts} +2 -2
- package/dist/{date-D007KyTI.d.ts → date-CQdP6Dxe.d.ts} +2 -2
- package/dist/{exceptions-DjPVyS-Q.d.mts → exceptions-DoP6VK0v.d.mts} +1 -0
- package/dist/{exceptions-DjPVyS-Q.d.ts → exceptions-DoP6VK0v.d.ts} +1 -0
- package/dist/exceptions.d.mts +1 -1
- package/dist/exceptions.d.ts +1 -1
- package/dist/exceptions.js +1 -1
- package/dist/exceptions.mjs +1 -1
- package/dist/{index-Bu9xF5Nq.d.ts → index-B3wdnfLl.d.mts} +7 -6
- package/dist/{index-DLO8JpnY.d.ts → index-BLXzRQr9.d.ts} +1 -1
- package/dist/{index-D7TEaPqX.d.ts → index-BS-60koN.d.mts} +104 -32
- package/dist/{index-BmNMneu3.d.mts → index-CH-Vc-pK.d.ts} +7 -6
- package/dist/{index-3HZjBOpj.d.mts → index-CSDAHifu.d.mts} +1 -1
- package/dist/{index-DwQWBzYJ.d.mts → index-CgEVJG3l.d.ts} +104 -32
- package/dist/{index-DPO5w-fC.d.mts → index-D0L0GHU0.d.mts} +3 -3
- package/dist/{index-CiTBL4gH.d.ts → index-E9rSexij.d.ts} +3 -3
- package/dist/index.d.mts +14 -14
- package/dist/index.d.ts +14 -14
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{number-DncH-WRO.d.ts → number-BwCSeK20.d.ts} +2 -2
- package/dist/{number-CgBxEbjI.d.mts → number-CisXUosg.d.mts} +2 -2
- package/dist/{objects-B4DgFZ82.d.ts → objects-CH22DJOx.d.ts} +16 -6
- package/dist/{objects-C9f6hFW_.d.mts → objects-DhKrQEo4.d.mts} +16 -6
- package/dist/record-operation-B7t5aXW3.js +2 -0
- package/dist/record-operation-DueJTyDh.mjs +2 -0
- package/dist/{text-DDoY_LcQ.d.ts → text-SkYUYEnE.d.ts} +2 -2
- package/dist/{text-DeUqCFp9.d.mts → text-Z1_WL8cd.d.mts} +2 -2
- package/dist/{utils-B7Dlrtnx.d.ts → utils-C_J_p_tL.d.ts} +1 -1
- package/dist/{utils-DbRMK8NI.d.mts → utils-CkcPS_M9.d.mts} +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/validation/all.d.mts +4 -4
- package/dist/validation/all.d.ts +4 -4
- package/dist/validation/all.js +1 -1
- package/dist/validation/all.mjs +1 -1
- package/dist/validation/complex/currency.d.mts +2 -2
- package/dist/validation/complex/currency.d.ts +2 -2
- package/dist/validation/complex/location.d.mts +2 -2
- package/dist/validation/complex/location.d.ts +2 -2
- package/dist/validation/complex/phone.d.mts +2 -2
- package/dist/validation/complex/phone.d.ts +2 -2
- package/dist/validation/complex/relation.d.mts +2 -2
- package/dist/validation/complex/relation.d.ts +2 -2
- package/dist/validation/complex/richtext.d.mts +2 -2
- package/dist/validation/complex/richtext.d.ts +2 -2
- package/dist/validation/complex/select.d.mts +2 -2
- package/dist/validation/complex/select.d.ts +2 -2
- package/dist/validation/complex/user.d.mts +2 -2
- package/dist/validation/complex/user.d.ts +2 -2
- package/dist/validation/computed/formula.d.mts +2 -2
- package/dist/validation/computed/formula.d.ts +2 -2
- package/dist/validation/computed/rollup.d.mts +2 -2
- package/dist/validation/computed/rollup.d.ts +2 -2
- package/dist/validation/config/index.d.mts +1 -1
- package/dist/validation/config/index.d.ts +1 -1
- package/dist/validation/core/index.d.mts +1 -1
- package/dist/validation/core/index.d.ts +1 -1
- package/dist/validation/object/index.d.mts +1 -1
- package/dist/validation/object/index.d.ts +1 -1
- package/dist/validation/primitives/checkbox.d.mts +1 -1
- package/dist/validation/primitives/checkbox.d.ts +1 -1
- package/dist/validation/primitives/date.d.mts +1 -1
- package/dist/validation/primitives/date.d.ts +1 -1
- package/dist/validation/primitives/number.d.mts +1 -1
- package/dist/validation/primitives/number.d.ts +1 -1
- package/dist/validation/primitives/text.d.mts +1 -1
- package/dist/validation/primitives/text.d.ts +1 -1
- package/dist/view-config.schema-BqO1hmWR.mjs +2 -0
- package/dist/view-config.schema-DVoE_g3g.js +2 -0
- package/package.json +2 -2
- package/dist/record-operation-BSXczk7v.js +0 -2
- package/dist/record-operation-C9oXHmfF.mjs +0 -2
- package/dist/view-config.schema-BQ9tU_9G.js +0 -2
- package/dist/view-config.schema-BmjCQJ51.mjs +0 -2
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
|
|
2
|
-
const e=require("./attribute-validators-WAoJbap5.js"),t=require("./exceptions.js");let n=require("zod"),r=require("@standards/constants");const i=[`completed`,`failed`,`cancelled`];function invalidSessionState(e){throw new t.SchemaError(e,t.SchemaErrorCode.INVARIANT_VIOLATION)}function assertSessionState(e){e.phase===`running`?e.runningTurnId===void 0&&invalidSessionState(`running session without runningTurnId`):e.runningTurnId!==void 0&&invalidSessionState(`runningTurnId present on a ${e.phase} session`),e.phase===`parked`?e.parkedOn===void 0&&invalidSessionState(`parked session without parkedOn`):e.parkedOn!==void 0&&invalidSessionState(`parkedOn present on a ${e.phase} session`),e.parkedOn===`human`?e.humanRequestIds===void 0&&invalidSessionState(`human-parked session without humanRequestIds`):e.humanRequestIds!==void 0&&invalidSessionState(`humanRequestIds present on a session not parked on a human`)}const a=[`createdAt`,`lastActivity`],ee=Object.freeze({mutation:`ask`,destructive:`ask`,outward:`ask`}),te=[`active`,`completed`,`abandoned`],o=[`openai`,`anthropic`,`google`,`spacexai`,`deepseek`,`moonshotai`,`alibaba`,`mistral`,`minimax`,`meta`,`zai`,`cursor`],s=[`standard`,`fast`],ne=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`],re=[`conversation`,`writing`,`coding`,`analysis`,`extraction`],ie=[`light`,`standard`,`heavy`],ae=[`manual`,`auto`],oe={interactive:{inputPerMillionUsd:5,outputPerMillionUsd:25},delegated:{inputPerMillionUsd:2,outputPerMillionUsd:12}},c=[`model`,`speed`,`reasoning`,`imageModel`,`routing`];function mergeSessionInferencePatch(e,t){let n={...e};for(let e of c){let r=t[e];r===null?delete n[e]:r!==void 0&&Object.assign(n,{[e]:r})}return t.model&&t.routing===void 0&&(n.routing=`manual`),n}function isRoutineActorMetadata(e){return e?.kind===`routine`}const se=[`octopus`,`clover`,`flower`,`triangle`,`square`,`blob`,`circle`,`drop`,`hexagon`,`pill`,`pebble`,`puddle`],ce=[`relaxed`,`neutral`];function agentDisplayName(e){return e.label?.trim()||e.name}const l=[`approval-requested`,`approval-responded`,`approval-dispatched`],u=[`streaming`,`running`,`pending`,...l];function isOpenToolPartState(e){return u.includes(e)}function isToolApprovalState(e){return l.includes(e)}const d=[`CREDITS_EXHAUSTED`];function isSystemPartCode(e){return typeof e==`string`&&d.includes(e)}function compareAgentSessionMessages(e,t){let n=e.createdAt.getTime()-t.createdAt.getTime();return n===0?e.id.localeCompare(t.id):n}function orderAgentSessionMessages(e){return[...e].sort(compareAgentSessionMessages)}const f=`agent-notification`;function isAgentNotificationMetadata(e){return e?.kind===f}const p=`agent-message`;function isAgentMessageMetadata(e){return e?.kind===p}const le=[`pending`,`in_progress`,`completed`,`blocked`],m=[`sandbox`,`web`,`image`,`memory`,`bulk`,`activity`,`orchestration`,`host`,`cloud-browser`,`notifications`],h=[`mcp`,`email.read`,`calendar.read`,`github`,`slack.read`,`slack.write`,`device`,`browser`,`browser-profile`],ue=[`definition`,`default`,`child`,`inline`],de=[`manual`,`name-asc`,`name-desc`,`date-desc`,`date-asc`],fe=[`reader`,`runner`,`editor`],g=[`reader`,`editor`],pe=[`manual`,`meeting_attendee`],me=new Set([`memory`,`skill`]);function parseRole(e,n){if(typeof n==`string`&&e.includes(n))return n;let r=`role must be one of: ${e.join(`, `)}`;throw new t.ValidationError(r,[{path:[`role`],message:r}])}function parseRecordAccessRole(e){return parseRole(g,e)}function parseAgentDefinitionAccessRole(e){return parseRole(fe,e)}function parsePageAccessRole(e){return parseRole(g,e)}function deriveViewerAccess(e,t){return e.visibility===`workspace`?`workspace`:e.ownedBy!==null&&t.includes(e.ownedBy)?`owner`:e.viewerGrant===`editor`?`editor`:e.viewerGrant===`runner`?`runner`:`reader`}const he=[`record`,`object`,`attribute`,`view`,`user`,`role`,`settings`,`file`,`agent`,`schema_source`,`tenant_invitation`,`api_key`],ge=`record.created,record.updated,record.deleted,record.restored,record.purged,record.access_changed,agent.access_changed,object.created,object.updated,object.deleted,attribute.created,attribute.updated,attribute.deleted,view.created,view.updated,view.deleted,schema_source.applied,schema_source.presented,schema_source.removed,user.created,user.invited,user.updated,user.deleted,user.login,user.logout,tenant_invitation.created,tenant_invitation.delivery_failed,tenant_invitation.resent,tenant_invitation.revoked,tenant_invitation.accepted,role.created,role.updated,role.deleted,role.assigned,role.revoked,api_key.detached,settings.updated,file.uploaded,file.updated,file.deleted`.split(`,`);function isAgentWrittenAuditEntry(e){return e.actorType===`agent`||typeof e.metadata?.agentSessionId==`string`}const _e=[`draft_schema`],_=`request_design_review`,v=`ask_questions`,y=`request_setup`,ve=new Set([v,_,y]),ye=new Set([v,y]),be=new Set([_]),xe=n.z.union([n.z.object({value:n.z.string(),label:n.z.string()}).strict(),n.z.object({values:n.z.array(n.z.string()),labels:n.z.array(n.z.string()),text:n.z.string().optional()}).strict(),n.z.object({text:n.z.string()}).strict()]),Se=n.z.object({skipped:n.z.boolean().describe(`True if the person skipped all questions`),answers:n.z.record(n.z.string(),xe).describe(`Map of question ID to the answer given, with each chosen option's value and label`)});function readAskQuestionsResult(e){let t=Se.safeParse(e);return t.success?t.data:null}function humanRequestKind(e){return e.approvalId==null?ye.has(e.name)?`question`:be.has(e.name)?`review`:null:`approval`}function isAwaitingHuman(e){return humanRequestKind(e)===null||e.state===`streaming`||!isOpenToolPartState(e.state)||e.result!==void 0||e.error!==void 0?!1:e.approvalId==null||e.state===`approval-requested`&&e.approved===void 0}function isBlocking(e){let t=humanRequestKind(e);return t===`review`?isOpenToolPartState(e.state):t===`approval`&&e.state===`approval-requested`&&e.approved===void 0}function humanRequestId(e){return e.approvalId??e.toolCallId}function openRequests(e,t){let n=t.blocking?isBlocking:isAwaitingHuman,r=[];for(let t of e)for(let e of t.parts??[])isToolRequestPart(e)&&n(e)&&r.push({part:e,id:humanRequestId(e),requestedAt:t.createdAt});return r}function isToolRequestPart(e){return e.type===`tool`}function isParkedOnHuman(e){return e?.phase===`parked`&&e.parkedOn===`human`}function recentActivityEntryKey(e){return e.kind===`record`?JSON.stringify([`record`,e.objectName,e.recordId]):JSON.stringify([`conversation`,`sessionId`in e?e.sessionId:e.session.id])}const Ce=`Notetaker`,we=/^\d{1,9}(\.\d{1,6})?$/,Te={meetingRecordingPolicy:`none`,meetingBotDisplayName:Ce,memoryPersonMonthlyLimitUsd:null,memoryTenantMonthlyLimitUsd:null},Ee=[`active`,`suspended`],De=[`architect`,`manual`,`auto`],Oe=[`panel`,`fullscreen`],ke=n.z.discriminatedUnion(`type`,[n.z.strictObject({type:n.z.literal(`record`),object:n.z.string().min(1),id:n.z.guid()}),n.z.strictObject({type:n.z.literal(`user`),id:n.z.guid()})]),Ae=n.z.strictObject({nodes:n.z.array(ke).min(1).max(50),limitPerNode:n.z.number().int().min(1).max(200).default(50)});function recordGraphNodeKey(e){return e.type===`record`?`record:${e.object}:${e.id}`:`user:${e.id}`}const je=`work`,Me=`/vercel/sandbox/${je}`,Ne=`/workspace`;function environmentWorkdir(e){return e?Me:Ne}const Pe=[{id:`claude-code`,label:`Claude Code`,provider:`anthropic`,apiKeyEnv:`ANTHROPIC_API_KEY`,models:[{id:`sonnet`,label:`Claude Sonnet`},{id:`opus`,label:`Claude Opus`},{id:`haiku`,label:`Claude Haiku`}],defaultModel:`sonnet`},{id:`codex`,label:`Codex`,provider:`openai`,apiKeyEnv:`OPENAI_API_KEY`,models:[{id:`gpt-6.1-sol`,label:`GPT-6.1 Sol`},{id:`gpt-6-luna`,label:`GPT-6 Luna`},{id:`gpt-6-astra`,label:`GPT-6 Astra`}],defaultModel:`gpt-6.1-sol`},{id:`cursor`,label:`Cursor`,provider:`cursor`,apiKeyEnv:`CURSOR_API_KEY`,models:[{id:`auto`,label:`Auto`,cliDefault:!0},{id:`composer-2.5`,label:`Composer 2.5`}],defaultModel:`auto`}],b=new Map(Pe.map(e=>[e.id,e]));function isEnvironmentHarnessId(e){return b.has(e)}function findEnvironmentHarness(e){return b.get(e)}function environmentHarness(e){let n=b.get(e);if(!n)throw new t.SchemaError(`Unknown harness "${e}"`,t.SchemaErrorCode.INVARIANT_VIOLATION);return n}function cliDefaultModelOf(e){return environmentHarness(e).models.find(e=>e.cliDefault)?.id}function compiledHarnessModels(e){let t=environmentHarness(e);return t.models.map(e=>({id:e.id,label:e.label,...e.id===t.defaultModel?{isDefault:!0}:{}}))}function harnessModelChoices(e,t){let{provider:n}=environmentHarness(e);return t.map(e=>({id:e.id,provider:n,label:e.label,...e.isDefault?{isDefault:!0}:{}}))}const x=[`search`,`query`,`read`,`write`,`delete`,`organize`,`copy`],S=[...x,`edit_content`],C=[...S,`ask_questions`,`compact_context`,`request_work_mode`,`write_todos`],w=[`browser_autopilot`,`browser_batch`,`browser_computer`,`browser_find`,`browser_form_input`,`browser_get_text`,`browser_javascript`,`browser_navigate`,`browser_read_page`,`browser_tabs`],Fe=[`record`,`document`,`file`,`skill`,`schema`,`guide`],T={memory:{kinds:[`memory`],capabilities:[],tools:[`propose_memory`]},bulk:{kinds:[],capabilities:[`bulk`],tools:[]},activity:{kinds:[],capabilities:[`activity`],tools:[]},"email.read":{kinds:[`email`,`thread`],capabilities:[`copy_email`],tools:[]},"calendar.read":{kinds:[`event`],capabilities:[`transcript`],tools:[]}},E={sandbox:{icon:`terminal`,tools:[`exec_command`,`publish_artifact`,`sandbox_validate_payload`]},web:{icon:`globe`,tools:[`read_webpage`,`web_search`]},image:{icon:`image`,tools:[`generate_image`]},memory:{icon:`book-open`,tools:T.memory.tools},bulk:{icon:`layers-two`,tools:T.bulk.tools},activity:{icon:`activity`,tools:T.activity.tools},orchestration:{icon:`git-branch`,tools:[`message_agent`,`spawn_agent`]},host:{icon:`wrench`,tools:[]},"cloud-browser":{icon:`globe`,tools:[`browser_launch`]},notifications:{icon:`bell`,tools:[`notify`]}},D={mcp:{icon:`puzzle`,tools:[]},"email.read":{icon:`envelope`,tools:T[`email.read`].tools},"calendar.read":{icon:`calendar`,tools:T[`calendar.read`].tools},github:{icon:`brand-github`,tools:[]},"slack.read":{icon:`brand-slack`,tools:[`slack_read`,`slack_find`,`slack_download_file`]},"slack.write":{icon:`brand-slack`,tools:[`slack_send`,`slack_react`,`slack_set_status`]},device:{icon:`desktop`,tools:[`exec_command`]},browser:{icon:`link`,tools:w},"browser-profile":{icon:`globe`,tools:[`browser_launch`,...w]}},Ie={sandbox:{kinds:[],capabilities:[],tools:E.sandbox.tools},web:{kinds:[],capabilities:[],tools:E.web.tools},image:{kinds:[],capabilities:[],tools:E.image.tools},memory:T.memory,bulk:T.bulk,activity:T.activity,orchestration:{kinds:[],capabilities:[],tools:E.orchestration.tools},host:{kinds:[],capabilities:[],tools:E.host.tools},"cloud-browser":{kinds:[],capabilities:[],tools:E[`cloud-browser`].tools},notifications:{kinds:[],capabilities:[],tools:E.notifications.tools},mcp:{kinds:[],capabilities:[],tools:D.mcp.tools},"email.read":T[`email.read`],"calendar.read":T[`calendar.read`],github:{kinds:[],capabilities:[],tools:D.github.tools},"slack.read":{kinds:[],capabilities:[],tools:D[`slack.read`].tools},"slack.write":{kinds:[],capabilities:[],tools:D[`slack.write`].tools},device:{kinds:[],capabilities:[],tools:D.device.tools},browser:{kinds:[],capabilities:[],tools:D.browser.tools},"browser-profile":{kinds:[],capabilities:[],tools:D[`browser-profile`].tools}},Le={schema:[`discard_architect_draft`,`draft_schema`,`get_architect_draft`,`get_schema_history`,`request_design_review`,`search_icons`],"agent-config":[`get_agents`,`upsert_agent`],setup:[`request_setup`],internal:[`load_toolset`]},Re=[...new Set([...C,...m.flatMap(e=>E[e].tools),...h.flatMap(e=>D[e].tools)])],ze={"email.read":[`gmail`,`outlook`],"calendar.read":[`google-calendar`,`outlook-calendar`]};function connectionGrantKindOf(e){return e===`google-calendar`||e===`outlook-calendar`?`calendar.read`:`email.read`}function connectionGrantKindsOf(e){switch(e){case`github`:return[`github`];case`slack`:return[`slack.read`,`slack.write`];default:return[connectionGrantKindOf(e)]}}const Be=[`activity`,`bulk`,`image`,`memory`,`orchestration`,`sandbox`,`web`],O=[`memory`],Ve=new Set([`sandbox`,`host`,`cloud-browser`]);function needsManageWhenUnattended(e){return Ve.has(e)||isResourceGrant(e)}function isNativeToolGroup(e){return m.includes(e)}function parseToolGroupGrant(e){if(isNativeToolGroup(e))return{type:`native`,group:e};let t=e.indexOf(`:`);if(t<=0)return null;let n=e.slice(0,t),r=e.slice(t+1);return r.length===0||!h.includes(n)?null:{type:`resource`,kind:n,id:r}}function grantKindOf(e){let t=parseToolGroupGrant(e);return t?.type===`resource`?t.kind:null}function isResourceGrant(e){return parseToolGroupGrant(e)?.type===`resource`}function resourceGrant(e,t){return`${e}:${t}`}function canonicalToolGroups(e){return[...new Set(e)].sort()}const k=[{key:`direct`,icon:`message`,color:`ink`,description:`A message a person wrote to this mailbox: a conversation, a question, a request, a reply.`},{key:`transactional`,icon:`credit-card`,color:`terra`,description:`An automated message about an account or an operation: receipt, invoice, payment, order, shipping, booking, password reset, security alert.`},{key:`notifications`,icon:`bell`,color:`ochre`,description:`An automated alert from a tool or a service: activity on GitHub, Slack, a calendar, a CRM, a monitoring system.`},{key:`newsletters`,icon:`book-open`,color:`stone`,description:`Editorial content the mailbox subscribed to: newsletters, digests, articles, community updates.`},{key:`marketing`,icon:`percentage`,color:`iris`,description:`Promotion or prospecting: offers, discounts, product announcements, cold sales outreach.`}],A={direct:{en:`Direct`,fr:`Direct`},transactional:{en:`Transactional`,fr:`Transactionnel`},notifications:{en:`Notifications`,fr:`Notifications`},newsletters:{en:`Newsletters`,fr:`Newsletters`},marketing:{en:`Marketing`,fr:`Marketing`}},j=`stone`,M=new Set([`gmail.com`,`googlemail.com`,`outlook.com`,`hotmail.com`,`live.com`,`msn.com`,`yahoo.com`,`yahoo.fr`,`icloud.com`,`me.com`,`mac.com`,`proton.me`,`protonmail.com`,`gmx.com`,`gmx.fr`,`orange.fr`,`wanadoo.fr`,`free.fr`,`laposte.net`,`sfr.fr`,`aol.com`]),He=new Set(k.map(e=>e.key)),Ue=new Set(Object.entries(A).flatMap(([e,t])=>[e,t.en,t.fr].map(e=>e.toLowerCase())));function isSystemEmailCategory(e){return He.has(e)}function isSystemEmailCategoryName(e){return Ue.has(e.trim().toLowerCase())}function isPublicMailDomain(e){return M.has(e.toLowerCase())}const N={maxConcurrentRuns:3,retryPolicy:{maxRetries:3,backoffMs:1e3,backoffMultiplier:2}};var AgentBuilder=class{constructor(e){if(!e.name||e.name.trim().length===0)throw new t.ValidationError(`Agent name is required`,[]);this.bp={name:e.name,system:!0,visibility:`workspace`,triggers:[]}}description(e){return this.bp.description=e,this}label(e){return this.bp.label=e,this}avatar(e){return this.bp.avatar={type:e.type,color:e.color,expression:e.expression??`relaxed`},this}starters(e){return e.length===0?delete this.bp.starters:this.bp.starters=[...e],this}systemPrompt(e){return this.bp.systemPrompt=e,this}model(e,t,n){return this.bp.model={provider:e,model:t,...n},this}toolGroups(e){let n=e.find(e=>!isNativeToolGroup(e));if(n!==void 0)throw new t.ToolGroupGrantError(t.SchemaErrorCode.AGENT_TOOL_GROUP_UNKNOWN,n,`Agent "${this.bp.name}": "${n}" is not a native tool group (blueprints cannot grant tenant resources)`);return this.bp.toolGroups=canonicalToolGroups(e),this}schedule(e){return this.bp.schedule={...e,enabled:e.enabled??!0},this}config(e){let t=this.bp.config??N,n=e.inference===void 0?t.inference:{...t.inference,...e.inference};return this.bp.config={...t,...e,...n===void 0?{}:{inference:n}},this}delegation(e){return Object.assign(this.bp,e),this}approval(e){return this.bp.approval={...ee,...this.bp.approval,...e},this}visibility(e){return this.bp.visibility=e,this}trigger(e,t,n){return this.bp.triggers.push({name:e,eventType:t,...n,enabled:n?.enabled??!0}),this}runtime(){return this.bp.system=!1,this}build(){if(!this.bp.systemPrompt)throw new t.ValidationError(`Agent "${this.bp.name}": systemPrompt is required`,[]);if(!this.bp.model)throw new t.ValidationError(`Agent "${this.bp.name}": model is required`,[]);if(this.bp.system&&this.bp.visibility===`private`)throw new t.ValidationError(`Agent "${this.bp.name}": system agents must use workspace visibility`,[]);return e.r(this.bp.triggers,e=>e.name,e=>new t.ValidationError(`Agent "${this.bp.name}": duplicate trigger name "${e}"`,[])),{...this.bp,visibility:this.bp.visibility??`workspace`,toolGroups:this.bp.toolGroups??[...O],config:this.bp.config??N,systemPrompt:this.bp.systemPrompt,model:this.bp.model}}};function agent(e){return new AgentBuilder(e)}const P={issue:{events:[`issues`],actions:[`opened`,`edited`,`closed`,`reopened`,`labeled`,`unlabeled`,`assigned`,`unassigned`,`milestoned`,`demilestoned`,`transferred`,`pinned`],conditions:[`label`,`issueLabels`,`assignees`,`milestone`,`issueType`,`text`]},pull_request:{events:[`pull_request`],actions:[`opened`,`ready_for_review`,`synchronize`,`review_requested`,`merged`,`closed`,`reopened`,`converted_to_draft`,`labeled`,`assigned`,`edited`],conditions:[`baseBranch`,`headBranch`,`draft`,`issueLabels`,`changedPaths`,`prAuthor`]},review:{events:[`pull_request_review`],actions:[`submitted`,`edited`,`dismissed`],conditions:[`reviewState`,`prAuthor`]},comment:{events:[`issue_comment`,`pull_request_review_comment`,`commit_comment`],actions:[`created`,`edited`,`deleted`],conditions:[`text`,`issueAuthor`,`prAuthor`]},push:{events:[`push`],actions:[`pushed`],conditions:[`branch`,`changedPaths`,`forced`]},ref:{events:[`create`,`delete`],actions:[`created`,`deleted`],conditions:[`refType`,`branch`,`tag`]},workflow:{events:[`workflow_run`],actions:[`requested`,`in_progress`,`completed`],conditions:[`workflowName`,`conclusion`,`branch`,`originEvent`]},check:{events:[`check_suite`,`check_run`],actions:[`completed`,`rerequested`],conditions:[`checkApp`,`checkName`,`conclusion`]},project_item:{events:[`projects_v2_item`],actions:[`created`,`edited`,`archived`,`restored`,`deleted`],conditions:[`project`,`projectField`,`from`,`to`,`itemType`]},release:{events:[`release`],actions:[`published`,`created`,`edited`,`prereleased`,`deleted`],conditions:[`prerelease`,`tag`]},discussion:{events:[`discussion`,`discussion_comment`],actions:[`created`,`commented`,`answered`,`labeled`,`closed`],conditions:[`category`,`issueLabels`,`text`]},repository:{events:[`star`,`fork`,`repository`],actions:[`starred`,`forked`,`created`,`archived`],conditions:[]}},F={mention:{events:[`app_mention`],conditions:[`text`]},message:{events:[`message`],conditions:[`position`,`text`,`hasFile`]},dm:{events:[`message`],conditions:[`text`,`hasFile`]},reaction:{events:[`reaction_added`],conditions:[`messageAuthor`]},member_joined:{events:[`member_joined_channel`],conditions:[]}},I=n.z.object({field:n.z.literal(`text`),operator:n.z.enum([`contains`,`starts_with`]),value:n.z.string().min(1)}).strict();function stringCondition(e){return n.z.object({field:n.z.literal(e),value:n.z.string().min(1)}).strict()}function booleanCondition(e){return n.z.object({field:n.z.literal(e),value:n.z.boolean()}).strict()}function listCondition(e){return n.z.object({field:n.z.literal(e),operator:n.z.enum([`any`,`all`]).default(`any`),value:n.z.array(n.z.string().min(1)).min(1)}).strict()}const L=n.z.discriminatedUnion(`field`,[I,stringCondition(`label`),listCondition(`issueLabels`),listCondition(`assignees`),stringCondition(`milestone`),stringCondition(`issueType`),stringCondition(`baseBranch`),stringCondition(`headBranch`),stringCondition(`branch`),booleanCondition(`draft`),stringCondition(`changedPaths`),booleanCondition(`forced`),stringCondition(`prAuthor`),stringCondition(`issueAuthor`),n.z.object({field:n.z.literal(`reviewState`),value:n.z.enum([`approved`,`changes_requested`,`commented`])}).strict(),stringCondition(`workflowName`),stringCondition(`checkApp`),stringCondition(`checkName`),stringCondition(`conclusion`),stringCondition(`originEvent`),stringCondition(`project`),stringCondition(`projectField`),n.z.object({field:n.z.literal(`from`),value:n.z.string().nullable()}).strict(),n.z.object({field:n.z.literal(`to`),value:n.z.string().nullable()}).strict(),n.z.object({field:n.z.literal(`itemType`),value:n.z.enum([`issue`,`pull_request`,`draft`])}).strict(),booleanCondition(`prerelease`),stringCondition(`tag`),n.z.object({field:n.z.literal(`refType`),value:n.z.enum([`branch`,`tag`])}).strict(),stringCondition(`category`)]),R=n.z.discriminatedUnion(`field`,[I,n.z.object({field:n.z.literal(`position`),value:n.z.enum([`top_level`,`reply`])}).strict(),booleanCondition(`hasFile`),stringCondition(`messageAuthor`)]),We=n.z.string().regex(/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/),z=n.z.enum([`human`,`me`,`any`]),Ge=n.z.object({family:n.z.enum(Object.keys(P)),actions:n.z.array(n.z.string()).default([]),repositories:n.z.array(We).default([]),sender:n.z.union([z,n.z.object({logins:n.z.array(n.z.string().min(1)).min(1)}).strict()]).default(`human`),conditions:n.z.array(L).default([])}).strict().superRefine((e,t)=>{let n=P[e.family];e.actions.forEach((r,i)=>{n.actions.includes(r)||t.addIssue({code:`custom`,path:[`actions`,i],message:`Action ${r} is not supported by ${e.family}`})}),e.conditions.forEach((r,i)=>{n.conditions.includes(r.field)||t.addIssue({code:`custom`,path:[`conditions`,i,`field`],message:`Condition ${r.field} is not supported by ${e.family}`})})}).transform(e=>e),Ke=n.z.object({on:n.z.enum([`mention`,`message`,`dm`,`reaction`,`member_joined`]),channels:n.z.array(n.z.string().min(1)).default([]),reactions:n.z.array(n.z.string().min(1)).optional(),sender:n.z.union([z,n.z.object({users:n.z.array(n.z.string().min(1)).min(1)}).strict()]).default(`human`),conditions:n.z.array(R).default([])}).strict().superRefine((e,t)=>{e.conditions.forEach((n,r)=>{F[e.on].conditions.includes(n.field)||t.addIssue({code:`custom`,path:[`conditions`,r,`field`],message:`Condition ${n.field} is not supported by ${e.on}`})}),e.reactions!==void 0&&e.on!==`reaction`&&t.addIssue({code:`custom`,path:[`reactions`],message:`reactions requires on=reaction`})}).transform(e=>e),qe=n.z.union([Ge,Ke]),Je=[`force`,`skip`],Ye=[`none`,`all`,`external_only`],Xe={override:null,status:`none`,failureReason:null,botId:null},Ze=n.z.object({speaker:n.z.string().nullable(),startsAtMs:n.z.number(),endsAtMs:n.z.number(),text:n.z.string()}),Qe=n.z.object({fullText:n.z.string(),segments:n.z.array(Ze),language:n.z.string().nullable(),startedAt:n.z.string().nullable(),endedAt:n.z.string().nullable()}),$e={width:1280,height:720,maxBytes:13e5,mimeType:`image/jpeg`},et=Math.ceil($e.maxBytes/3)*4,tt=n.z.object({conferenceJoinUrl:n.z.string().min(1),botDisplayName:n.z.string().min(1),startsAt:n.z.string().nullable(),callbackUrl:n.z.url(),botImageJpeg:n.z.string().max(et).optional()}),nt=n.z.object({botId:n.z.string().min(1)}),rt=n.z.discriminatedUnion(`kind`,[n.z.object({kind:n.z.literal(`transcript-ready`),botId:n.z.string().min(1)}),n.z.object({kind:n.z.literal(`failure`),botId:n.z.string().min(1),reason:n.z.string()})]);let it=function(e){return e.Desktop=`desktop`,e}({});function isMailProvider(e){return e===`gmail`||e===`outlook`}const at=`DRAFT`;function isProviderDraft(e){return e.includes(at)}const ot=[`threads`,`messages`];function isMailboxListMode(e){return ot.includes(e)}const st=[`reply`,`reply_all`];function isReplyMode(e){return st.includes(e)}const B=n.z.number().finite().nonnegative(),V=n.z.enum(o),H=n.z.enum(s),U=n.z.enum(ne),W=n.z.enum(ae),G=n.z.object({provider:V,model:n.z.string().min(1)}).strict(),ct=n.z.object({speed:H.optional(),reasoning:U.optional(),routing:W.optional()}).strict(),K=n.z.string().regex(/^[a-z0-9][a-z0-9-]*\/[a-z0-9][a-z0-9._-]*$/),lt=n.z.object({model:G.optional(),speed:H.optional(),reasoning:U.optional(),imageModel:K.optional(),routing:W.optional()}).strict(),ut=lt.refine(e=>c.some(t=>e[t]!==void 0),{message:`At least one inference override is required`});function isSessionInferencePatch(e){return Object.keys(e).length>0&&Object.values(e).every(e=>e!==void 0)}const dt=n.z.object({model:G.nullable().optional(),speed:H.nullable().optional(),reasoning:U.nullable().optional(),imageModel:K.nullable().optional(),routing:W.nullable().optional()}).strict().refine(isSessionInferencePatch,{message:`At least one inference override is required`}),ft=n.z.object({model:n.z.string().min(1),routing:n.z.object({mode:n.z.literal(`auto`),tasks:n.z.array(n.z.enum(re)).optional(),demand:n.z.enum(ie).optional(),reason:n.z.enum([`selected`,`retained`,`fallback`]).optional(),relation:n.z.enum([`continue`,`modify`,`new`,`aside`,`unknown`]).optional(),anchorMessageId:n.z.string().min(1).optional()})}),q=n.z.object({label:n.z.string(),denied:n.z.boolean().optional(),deletion:n.z.object({target:n.z.string().optional(),count:B.optional(),restorableDays:B.optional()}).strict().optional(),record:n.z.object({objectName:n.z.string(),id:n.z.string(),label:n.z.string(),objectIcon:n.z.string().optional()}).strict().optional(),object:n.z.object({name:n.z.string(),label:n.z.string()}).strict().optional(),counts:n.z.record(n.z.string(),B).optional(),warnings:n.z.array(n.z.string()).optional()}).strict(),pt=n.z.union([n.z.object({type:n.z.literal(`text`),text:n.z.string()}).strict(),n.z.object({type:n.z.literal(`reasoning`),text:n.z.string()}).strict(),n.z.object({type:n.z.literal(`system`),code:n.z.enum(d)}).strict(),n.z.object({type:n.z.literal(`error`),error:n.z.string(),errorClass:n.z.string().optional()}).strict(),n.z.object({type:n.z.literal(`tool`),toolCallId:n.z.string(),name:n.z.string(),args:n.z.record(n.z.string(),n.z.unknown()),result:n.z.unknown().optional(),error:n.z.string().optional(),errorCode:n.z.enum([`output_limit_reached`,`interrupted`,t.SchemaErrorCode.INVALID_TOOL_INPUT,`external_outcome_unknown`,`external_not_dispatched`]).optional(),state:n.z.enum([`streaming`,`running`,`completed`,`error`,`pending`,`approval-requested`,`approval-responded`,`approval-dispatched`]),durationMs:B.optional(),approvalId:n.z.string().optional(),approvalImpact:q.optional(),approved:n.z.boolean().optional(),approvalReason:n.z.string().optional(),approvalDecidedBy:n.z.string().optional(),approvalDecidedAt:n.z.string().optional(),approvalRelaxableByAuto:n.z.boolean().optional()}).strict(),n.z.object({type:n.z.literal(`file`),fileId:n.z.string(),name:n.z.string(),mimeType:n.z.string()}).strict(),n.z.object({type:n.z.literal(`compaction`),state:n.z.literal(`in-progress`),reason:n.z.enum([`preflight_threshold`,`overflow_recovery`]),estimatedTokens:B.optional(),reportedTokens:B.optional()}).strict(),n.z.object({type:n.z.literal(`compaction`),state:n.z.literal(`completed`),tokensBefore:B,tokensAfter:B,tokensSaved:B,strategy:n.z.enum([`no-op`,`summary`,`truncation`]),durationMs:B,summary:n.z.string().optional()}).strict(),n.z.object({type:n.z.literal(`compaction`),state:n.z.literal(`failed`),reason:n.z.string(),durationMs:B.optional()}).strict()]),mt=n.z.object({id:n.z.string(),name:n.z.string(),mimeType:n.z.string(),size:B}).strict(),ht=n.z.object({id:n.z.string(),artifactId:n.z.string(),revision:n.z.number().int().min(1),selectedText:n.z.string()}).strict(),gt=n.z.object({id:n.z.string(),type:n.z.string().transform(e=>e),entityId:n.z.string(),label:n.z.string(),objectName:n.z.string().optional(),startIndex:B,endIndex:B}).strict(),_t=n.z.object({provider:V,model:n.z.string(),maxTokens:B.optional(),contextWindow:B.optional()}).strict(),vt=n.z.union([n.z.date(),n.z.string().datetime({offset:!0}).transform(e=>new Date(e))]),yt=n.z.object({id:n.z.string(),sessionId:n.z.string(),tenantId:n.z.string().optional(),runId:n.z.string().optional(),role:n.z.enum([`user`,`assistant`,`system`,`tool`]),parts:n.z.array(pt),attachments:n.z.array(mt).optional(),mentions:n.z.array(gt).optional(),quotes:n.z.array(ht).optional(),model:_t.optional(),tokenUsage:n.z.object({input:B,output:B}).strict().optional(),metadata:n.z.record(n.z.string(),n.z.unknown()).optional(),createdAt:vt}).strict(),bt=n.z.object({id:n.z.string(),description:n.z.string(),status:n.z.enum([`pending`,`in_progress`,`completed`,`blocked`]),result:n.z.string().optional(),updatedAt:B.optional()}).strict(),xt=n.z.object({id:n.z.string(),sessionId:n.z.string(),status:n.z.enum([`active`,`completed`,`abandoned`]),todos:n.z.array(bt),version:B,createdAt:n.z.string(),updatedAt:n.z.string(),completedAt:n.z.string().optional()}).strict(),J={"compaction-start":n.z.object({reason:n.z.enum([`preflight_threshold`,`overflow_recovery`]),estimatedTokens:B.optional(),reportedTokens:B.optional()}).strict(),"compaction-end":n.z.object({tokensBefore:B,tokensAfter:B,tokensSaved:B,strategy:n.z.enum([`no-op`,`summary`,`truncation`]),durationMs:B,summary:n.z.string().optional()}).strict(),"compaction-failed":n.z.object({reason:n.z.string()}).strict(),usage:n.z.object({messageId:n.z.string().min(1).optional(),inputTokens:B,outputTokens:B,totalTokens:B,cacheReadTokens:B.optional(),cacheCreationTokens:B.optional(),contextWindow:B,residentTokens:B,utilization:n.z.number().finite().min(0).max(1),costUsd:B.optional()}).strict(),"message-updated":n.z.object({message:yt}).strict(),"approval-context":n.z.object({approvalId:n.z.string(),toolCallId:n.z.string(),impact:q.optional(),relaxableByAuto:n.z.boolean().optional()}).strict()};function isAgentUIDataName(e){return e in J}function agentUIValidationError(e){return new t.ValidationError(`Invalid agent UI message chunk`,e.map(e=>({path:e.path.map(String),message:e.message,code:e.code})))}function assertCustomAgentUIMessageChunk(e){if(typeof e!=`object`||!e||typeof e.type!=`string`)throw new t.ValidationError(`Invalid agent UI message chunk`,[{path:[`type`],message:`Expected UI message chunk type`,code:`invalid_type`}]);let r=e.type;if(!r.startsWith(`data-`))throw new t.ValidationError(`Invalid agent UI message chunk`,[{path:[`type`],message:`Expected agent data chunk type`,code:`invalid_value`}]);let i=r.slice(5);if(!isAgentUIDataName(i))throw new t.ValidationError(`Invalid agent UI message chunk`,[{path:[`type`],message:`Unknown agent UI data type: ${i}`,code:`invalid_value`}]);let a=n.z.object({type:n.z.literal(`data-${i}`),id:n.z.string().optional(),data:J[i],transient:n.z.boolean().optional()}).strict().safeParse(e);if(!a.success)throw agentUIValidationError(a.error.issues);return a.data}function agentDataChunk(e,t,n){return assertCustomAgentUIMessageChunk({type:`data-${e}`,...n?.id===void 0?{}:{id:n.id},data:t,...n?.transient===void 0?{}:{transient:n.transient}})}const St=n.z.string().trim().min(1).max(24),Ct=n.z.string().trim().min(10).max(500),wt=n.z.enum([`address`,`domain`]),Tt=n.z.object({scope:n.z.enum([`personal`,`workspace`]),name:St,description:Ct,icon:e.f.default(`tag`),color:e.d.default(j)}),Et=n.z.object({name:St.optional(),description:Ct.optional(),icon:e.f.optional(),color:e.d.optional()}).refine(e=>Object.values(e).some(e=>e!==void 0),{message:`Nothing to update`}),Dt=n.z.object({moveTo:n.z.string().min(1).nullable().default(null)}),Ot=n.z.object({category:n.z.string().min(1).optional(),important:n.z.boolean().optional()}).refine(e=>e.category!==void 0||e.important!==void 0,{message:`Nothing to classify`}),kt=n.z.object({verdict:n.z.object({category:n.z.string().min(1).nullable(),important:n.z.boolean(),classifiedBy:n.z.enum([`model`,`rule`,`manual`]).nullable()}),ruleId:n.z.string().uuid().nullable(),previousRule:n.z.object({scope:wt,match:n.z.string().trim().toLowerCase().min(1),category:n.z.string().min(1)}).nullable()}).refine(e=>e.ruleId!==null||e.previousRule===null,{message:`A previous rule needs the rule it restores`}),At=n.z.object({scope:n.z.literal(`domain`)}),jt=n.z.object({scope:n.z.enum([`personal`,`workspace`])}),Y=n.z.object({type:n.z.enum(se),color:n.z.enum(r.AVATAR_COLOR_IDS),expression:n.z.enum(ce).default(`relaxed`)}).strict(),Mt=n.z.array(n.z.string().trim().min(1).max(200)).max(4);function agentAvatarFromMetadata(e){let t=Y.safeParse(e);return t.success?t.data:void 0}const Nt=[`record.created`,`record.updated`,`record.deleted`,`form.submitted`,`webhook`,`github`,`slack`],Pt=new Set([`record.created`,`record.updated`,`record.deleted`]),Ft=/^[A-Z_][A-Z0-9_]*$/,It=n.z.object({cron:n.z.string().min(9),timezone:n.z.string().optional(),enabled:n.z.boolean(),input:n.z.record(n.z.string(),n.z.unknown()).optional(),runFor:n.z.enum([`armer`,`audience`]).optional(),continueConversation:n.z.boolean().optional()}),Lt=/^[A-Za-z0-9_$-]+(\.[A-Za-z0-9_$-]+)*$/,X=n.z.object({name:n.z.string().max(120).optional(),eventType:n.z.enum(Nt),objectId:n.z.guid().optional(),watchedFields:n.z.array(n.z.string()).max(50).optional(),debounceMs:n.z.number().int().min(0).max(3e5).optional(),filter:n.z.object({combinator:n.z.enum([`and`,`or`]).default(`and`),rules:n.z.array(n.z.object({attribute:n.z.string(),operator:n.z.string(),value:n.z.unknown().optional()}))}).optional(),formDefinitionId:n.z.string().optional(),continuationKey:n.z.string().max(200).regex(Lt).nullable().optional(),connectionId:n.z.guid().optional(),match:qe.optional(),continueConversation:n.z.boolean().optional(),enabled:n.z.boolean().optional()});function refineTrigger(e){return e.refine(e=>!e.watchedFields?.length||e.eventType===`record.updated`,{message:`watchedFields requires eventType=record.updated`,path:[`watchedFields`]}).refine(e=>!(e.eventType&&Pt.has(e.eventType))||!!e.objectId,{message:`objectId is required for record.* triggers`,path:[`objectId`]}).refine(e=>!(e.continuationKey&&e.eventType)||e.eventType===`webhook`,{message:`continuationKey requires eventType=webhook`,path:[`continuationKey`]}).superRefine((e,t)=>{let n=e.eventType===`github`||e.eventType===`slack`;if(n&&!e.connectionId&&t.addIssue({code:`custom`,path:[`connectionId`],message:`connectionId is required for native connector triggers`}),n&&!e.match&&t.addIssue({code:`custom`,path:[`match`],message:`match is required for native connector triggers`}),e.match&&e.eventType&&((e.eventType===`github`?`family`in e.match:e.eventType===`slack`&&`on`in e.match)||t.addIssue({code:`custom`,path:[`match`],message:`match must belong to the trigger provider`})),e.eventType&&!n)for(let n of[`connectionId`,`continueConversation`])e[n]!==void 0&&t.addIssue({code:`custom`,path:[n],message:`${n} requires a native connector trigger`})})}const Rt=refineTrigger(X).transform(e=>({...e,...e.eventType===`github`||e.eventType===`slack`?{continueConversation:e.continueConversation??!0}:{}})),zt=X.partial();function parseMergedAgentTrigger(e,t){let n=zt.safeParse(t);if(!n.success)throw triggerValidationError(n.error);let r=Object.fromEntries(Object.entries(n.data).filter(([,e])=>e!==void 0)),i=Rt.safeParse({...e,...r});if(!i.success)throw triggerValidationError(i.error);return i.data}function triggerValidationError(e){return new t.ValidationError(`Invalid agent trigger`,e.issues.map(e=>({path:e.path.map(String),message:e.message})))}const Z=n.z.uuid(),Q=n.z.record(n.z.string(),n.z.unknown()),Bt=n.z.strictObject({objectName:n.z.string(),recordId:Z,attribute:n.z.string(),base:n.z.unknown(),props:Q.optional()}),Vt=n.z.strictObject({kind:n.z.literal(`record.set`),objectId:Z,recordId:Z,values:Q,base:Q.optional()}),Ht=n.z.strictObject({kind:n.z.literal(`record.create`),objectId:Z,recordId:Z,values:Q,options:n.z.strictObject({visibility:n.z.enum([`workspace`,`private`]).optional(),allowDraft:n.z.boolean().optional(),linkTo:Bt.optional()}).optional()}),Ut=n.z.strictObject({kind:n.z.literal(`record.delete`),objectId:Z,recordId:Z}),Wt=n.z.strictObject({kind:n.z.literal(`record.restore`),objectId:Z,recordId:Z}),$=n.z.string().min(1),Gt=n.z.discriminatedUnion(`command`,[n.z.strictObject({command:n.z.literal(`replace`),oldText:$,newText:n.z.string(),replaceAll:n.z.boolean().optional()}),n.z.strictObject({command:n.z.literal(`insert`),text:$,after:$.optional()})]),Kt=n.z.strictObject({kind:n.z.literal(`record.patch`),objectId:Z,recordId:Z,attribute:n.z.string(),edit:Gt}),qt=n.z.discriminatedUnion(`kind`,[Vt,Ht,Ut,Wt,Kt]),Jt=n.z.strictObject({opId:Z,steps:n.z.array(qt).min(1).max(100)}).superRefine((e,t)=>{let n=new Set;for(let r of e.steps){if(n.has(r.recordId)){t.addIssue({code:`custom`,message:`one step per record`,path:[`steps`]});return}n.add(r.recordId)}});Object.defineProperty(exports,"$",{enumerable:!0,get:function(){return st}}),Object.defineProperty(exports,"$n",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"$r",{enumerable:!0,get:function(){return isAgentMessageMetadata}}),Object.defineProperty(exports,"$t",{enumerable:!0,get:function(){return grantKindOf}}),Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return ht}}),Object.defineProperty(exports,"An",{enumerable:!0,get:function(){return 5242880}}),Object.defineProperty(exports,"Ar",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,"At",{enumerable:!0,get:function(){return 8}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return gt}}),Object.defineProperty(exports,"Bn",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"Br",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"Bt",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return ct}}),Object.defineProperty(exports,"Cn",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(exports,"Cr",{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,"Ct",{enumerable:!0,get:function(){return AgentBuilder}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return ut}}),Object.defineProperty(exports,"Dn",{enumerable:!0,get:function(){return Te}}),Object.defineProperty(exports,"Dr",{enumerable:!0,get:function(){return 4}}),Object.defineProperty(exports,"Dt",{enumerable:!0,get:function(){return`tag`}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return lt}}),Object.defineProperty(exports,"En",{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,"Er",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"Et",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"Fn",{enumerable:!0,get:function(){return 50}}),Object.defineProperty(exports,"Fr",{enumerable:!0,get:function(){return 200}}),Object.defineProperty(exports,"Ft",{enumerable:!0,get:function(){return isPublicMailDomain}}),Object.defineProperty(exports,"G",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,"Gn",{enumerable:!0,get:function(){return isBlocking}}),Object.defineProperty(exports,"Gr",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,"Gt",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"Hn",{enumerable:!0,get:function(){return humanRequestId}}),Object.defineProperty(exports,"Hr",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"Ht",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"In",{enumerable:!0,get:function(){return 4}}),Object.defineProperty(exports,"Ir",{enumerable:!0,get:function(){return 366}}),Object.defineProperty(exports,"It",{enumerable:!0,get:function(){return isSystemEmailCategory}}),Object.defineProperty(exports,"J",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"Jn",{enumerable:!0,get:function(){return readAskQuestionsResult}}),Object.defineProperty(exports,"Jr",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"Jt",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"K",{enumerable:!0,get:function(){return bt}}),Object.defineProperty(exports,"Kn",{enumerable:!0,get:function(){return isParkedOnHuman}}),Object.defineProperty(exports,"Kr",{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,"Kt",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"Ln",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"Lr",{enumerable:!0,get:function(){return 50}}),Object.defineProperty(exports,"Lt",{enumerable:!0,get:function(){return isSystemEmailCategoryName}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"Mn",{enumerable:!0,get:function(){return recentActivityEntryKey}}),Object.defineProperty(exports,"Mr",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,"Mt",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return vt}}),Object.defineProperty(exports,"Nn",{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,"Nr",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,"Nt",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return yt}}),Object.defineProperty(exports,"On",{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,"Or",{enumerable:!0,get:function(){return 200}}),Object.defineProperty(exports,"Ot",{enumerable:!0,get:function(){return 500}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"Pn",{enumerable:!0,get:function(){return 2e3}}),Object.defineProperty(exports,"Pr",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"Pt",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"Q",{enumerable:!0,get:function(){return at}}),Object.defineProperty(exports,"Qn",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"Qr",{enumerable:!0,get:function(){return compareAgentSessionMessages}}),Object.defineProperty(exports,"Qt",{enumerable:!0,get:function(){return connectionGrantKindsOf}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return isAgentUIDataName}}),Object.defineProperty(exports,"Rn",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,"Rr",{enumerable:!0,get:function(){return 500}}),Object.defineProperty(exports,"Rt",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return agentDataChunk}}),Object.defineProperty(exports,"Sn",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,"Sr",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"St",{enumerable:!0,get:function(){return Ke}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return pt}}),Object.defineProperty(exports,"Tn",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"Tr",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"Tt",{enumerable:!0,get:function(){return agent}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"Un",{enumerable:!0,get:function(){return humanRequestKind}}),Object.defineProperty(exports,"Ur",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"Ut",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return _t}}),Object.defineProperty(exports,"Vn",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(exports,"Vr",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"Vt",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return ft}}),Object.defineProperty(exports,"Wn",{enumerable:!0,get:function(){return isAwaitingHuman}}),Object.defineProperty(exports,"Wr",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"Wt",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"X",{enumerable:!0,get:function(){return 2e5}}),Object.defineProperty(exports,"Xn",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,"Xr",{enumerable:!0,get:function(){return agentDisplayName}}),Object.defineProperty(exports,"Xt",{enumerable:!0,get:function(){return canonicalToolGroups}}),Object.defineProperty(exports,"Y",{enumerable:!0,get:function(){return ot}}),Object.defineProperty(exports,"Yn",{enumerable:!0,get:function(){return`discard_architect_draft`}}),Object.defineProperty(exports,"Yr",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"Yt",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"Z",{enumerable:!0,get:function(){return 998}}),Object.defineProperty(exports,"Zn",{enumerable:!0,get:function(){return`get_architect_draft`}}),Object.defineProperty(exports,"Zr",{enumerable:!0,get:function(){return assertSessionState}}),Object.defineProperty(exports,"Zt",{enumerable:!0,get:function(){return connectionGrantKindOf}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return Tt}}),Object.defineProperty(exports,"_n",{enumerable:!0,get:function(){return isEnvironmentHarnessId}}),Object.defineProperty(exports,"_r",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"_t",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Nt}}),Object.defineProperty(exports,"ai",{enumerable:!0,get:function(){return mergeSessionInferencePatch}}),Object.defineProperty(exports,"an",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"ar",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,"at",{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return Et}}),Object.defineProperty(exports,"bn",{enumerable:!0,get:function(){return 50}}),Object.defineProperty(exports,"br",{enumerable:!0,get:function(){return 20}}),Object.defineProperty(exports,"bt",{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return zt}}),Object.defineProperty(exports,"cn",{enumerable:!0,get:function(){return 100}}),Object.defineProperty(exports,"cr",{enumerable:!0,get:function(){return parseAgentDefinitionAccessRole}}),Object.defineProperty(exports,"ct",{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return refineTrigger}}),Object.defineProperty(exports,"dn",{enumerable:!0,get:function(){return cliDefaultModelOf}}),Object.defineProperty(exports,"dr",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"dt",{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,"ei",{enumerable:!0,get:function(){return isAgentNotificationMetadata}}),Object.defineProperty(exports,"en",{enumerable:!0,get:function(){return isNativeToolGroup}}),Object.defineProperty(exports,"er",{enumerable:!0,get:function(){return`agentSessionId`}}),Object.defineProperty(exports,"et",{enumerable:!0,get:function(){return isMailProvider}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return agentAvatarFromMetadata}}),Object.defineProperty(exports,"fn",{enumerable:!0,get:function(){return compiledHarnessModels}}),Object.defineProperty(exports,"fr",{enumerable:!0,get:function(){return 2048}}),Object.defineProperty(exports,"ft",{enumerable:!0,get:function(){return nt}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return Ot}}),Object.defineProperty(exports,"gn",{enumerable:!0,get:function(){return harnessModelChoices}}),Object.defineProperty(exports,"gr",{enumerable:!0,get:function(){return`browser_launch`}}),Object.defineProperty(exports,"gt",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return kt}}),Object.defineProperty(exports,"hn",{enumerable:!0,get:function(){return findEnvironmentHarness}}),Object.defineProperty(exports,"hr",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,"ht",{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Ft}}),Object.defineProperty(exports,"ii",{enumerable:!0,get:function(){return isToolApprovalState}}),Object.defineProperty(exports,"in",{enumerable:!0,get:function(){return resourceGrant}}),Object.defineProperty(exports,"ir",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"it",{enumerable:!0,get:function(){return 100}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return assertCustomAgentUIMessageChunk}}),Object.defineProperty(exports,"jn",{enumerable:!0,get:function(){return 50}}),Object.defineProperty(exports,"jr",{enumerable:!0,get:function(){return 182}}),Object.defineProperty(exports,"jt",{enumerable:!0,get:function(){return 24}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return agentUIValidationError}}),Object.defineProperty(exports,"kn",{enumerable:!0,get:function(){return 200}}),Object.defineProperty(exports,"kr",{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,"kt",{enumerable:!0,get:function(){return 10}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Rt}}),Object.defineProperty(exports,"ln",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,"lr",{enumerable:!0,get:function(){return parsePageAccessRole}}),Object.defineProperty(exports,"lt",{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return Mt}}),Object.defineProperty(exports,"mn",{enumerable:!0,get:function(){return environmentWorkdir}}),Object.defineProperty(exports,"mr",{enumerable:!0,get:function(){return 500}}),Object.defineProperty(exports,"mt",{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Jt}}),Object.defineProperty(exports,"ni",{enumerable:!0,get:function(){return isRoutineActorMetadata}}),Object.defineProperty(exports,"nn",{enumerable:!0,get:function(){return needsManageWhenUnattended}}),Object.defineProperty(exports,"nr",{enumerable:!0,get:function(){return isAgentWrittenAuditEntry}}),Object.defineProperty(exports,"nt",{enumerable:!0,get:function(){return isProviderDraft}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return It}}),Object.defineProperty(exports,"oi",{enumerable:!0,get:function(){return orderAgentSessionMessages}}),Object.defineProperty(exports,"on",{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,"or",{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,"ot",{enumerable:!0,get:function(){return $e}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"pn",{enumerable:!0,get:function(){return environmentHarness}}),Object.defineProperty(exports,"pr",{enumerable:!0,get:function(){return 100}}),Object.defineProperty(exports,"pt",{enumerable:!0,get:function(){return rt}}),Object.defineProperty(exports,"q",{enumerable:!0,get:function(){return xt}}),Object.defineProperty(exports,"qn",{enumerable:!0,get:function(){return openRequests}}),Object.defineProperty(exports,"qr",{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,"qt",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Lt}}),Object.defineProperty(exports,"ri",{enumerable:!0,get:function(){return isSystemPartCode}}),Object.defineProperty(exports,"rn",{enumerable:!0,get:function(){return parseToolGroupGrant}}),Object.defineProperty(exports,"rr",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"rt",{enumerable:!0,get:function(){return isReplyMode}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"sn",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,"sr",{enumerable:!0,get:function(){return deriveViewerAccess}}),Object.defineProperty(exports,"st",{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return 100}}),Object.defineProperty(exports,"ti",{enumerable:!0,get:function(){return isOpenToolPartState}}),Object.defineProperty(exports,"tn",{enumerable:!0,get:function(){return isResourceGrant}}),Object.defineProperty(exports,"tr",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"tt",{enumerable:!0,get:function(){return isMailboxListMode}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return parseMergedAgentTrigger}}),Object.defineProperty(exports,"un",{enumerable:!0,get:function(){return 64e3}}),Object.defineProperty(exports,"ur",{enumerable:!0,get:function(){return parseRecordAccessRole}}),Object.defineProperty(exports,"ut",{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return Dt}}),Object.defineProperty(exports,"vn",{enumerable:!0,get:function(){return 50}}),Object.defineProperty(exports,"vr",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"vt",{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return mt}}),Object.defineProperty(exports,"wn",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,"wr",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"wt",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return At}}),Object.defineProperty(exports,"xn",{enumerable:!0,get:function(){return recordGraphNodeKey}}),Object.defineProperty(exports,"xr",{enumerable:!0,get:function(){return 4e3}}),Object.defineProperty(exports,"xt",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return jt}}),Object.defineProperty(exports,"yn",{enumerable:!0,get:function(){return 200}}),Object.defineProperty(exports,"yr",{enumerable:!0,get:function(){return 32e3}}),Object.defineProperty(exports,"yt",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return isSessionInferencePatch}}),Object.defineProperty(exports,"zn",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,"zr",{enumerable:!0,get:function(){return 80}}),Object.defineProperty(exports,"zt",{enumerable:!0,get:function(){return Fe}});
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
|
|
2
|
-
import{SchemaError as e,SchemaErrorCode as t,ToolGroupGrantError as n,ValidationError as r}from"./exceptions.mjs";import{d as i,f as ee,r as te}from"./attribute-validators-DRqhAt2t.mjs";import{z as a}from"zod";import{AVATAR_COLOR_IDS as ne}from"@standards/constants";const re=[`completed`,`failed`,`cancelled`];function invalidSessionState(n){throw new e(n,t.INVARIANT_VIOLATION)}function assertSessionState(e){e.phase===`running`?e.runningTurnId===void 0&&invalidSessionState(`running session without runningTurnId`):e.runningTurnId!==void 0&&invalidSessionState(`runningTurnId present on a ${e.phase} session`),e.phase===`parked`?e.parkedOn===void 0&&invalidSessionState(`parked session without parkedOn`):e.parkedOn!==void 0&&invalidSessionState(`parkedOn present on a ${e.phase} session`),e.parkedOn===`human`?e.humanRequestIds===void 0&&invalidSessionState(`human-parked session without humanRequestIds`):e.humanRequestIds!==void 0&&invalidSessionState(`humanRequestIds present on a session not parked on a human`)}const ie=[`createdAt`,`lastActivity`],o=Object.freeze({mutation:`ask`,destructive:`ask`,outward:`ask`}),ae=[`active`,`completed`,`abandoned`],s=[`openai`,`anthropic`,`google`,`spacexai`,`deepseek`,`moonshotai`,`alibaba`,`mistral`,`minimax`,`meta`,`zai`,`cursor`],c=[`standard`,`fast`],l=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`],u=[`conversation`,`writing`,`coding`,`analysis`,`extraction`],d=[`light`,`standard`,`heavy`],oe=[`manual`,`auto`],se={interactive:{inputPerMillionUsd:5,outputPerMillionUsd:25},delegated:{inputPerMillionUsd:2,outputPerMillionUsd:12}},f=[`model`,`speed`,`reasoning`,`imageModel`,`routing`];function mergeSessionInferencePatch(e,t){let n={...e};for(let e of f){let r=t[e];r===null?delete n[e]:r!==void 0&&Object.assign(n,{[e]:r})}return t.model&&t.routing===void 0&&(n.routing=`manual`),n}function isRoutineActorMetadata(e){return e?.kind===`routine`}const p=[`octopus`,`clover`,`flower`,`triangle`,`square`,`blob`,`circle`,`drop`,`hexagon`,`pill`,`pebble`,`puddle`],ce=[`relaxed`,`neutral`],le=4,ue=200;function agentDisplayName(e){return e.label?.trim()||e.name}const m=[`approval-requested`,`approval-responded`,`approval-dispatched`],de=[`streaming`,`running`,`pending`,...m];function isOpenToolPartState(e){return de.includes(e)}function isToolApprovalState(e){return m.includes(e)}const h=[`CREDITS_EXHAUSTED`];function isSystemPartCode(e){return typeof e==`string`&&h.includes(e)}const fe=20,pe=4e3,me=32e3;function compareAgentSessionMessages(e,t){let n=e.createdAt.getTime()-t.createdAt.getTime();return n===0?e.id.localeCompare(t.id):n}function orderAgentSessionMessages(e){return[...e].sort(compareAgentSessionMessages)}const he=200,ge=182,_e=366,ve=`agent-notification`;function isAgentNotificationMetadata(e){return e?.kind===ve}const ye=`agent-message`;function isAgentMessageMetadata(e){return e?.kind===ye}const be=[`pending`,`in_progress`,`completed`,`blocked`],xe=50,Se=80,Ce=500,g=[`sandbox`,`web`,`image`,`memory`,`bulk`,`activity`,`orchestration`,`host`,`cloud-browser`,`notifications`],we=`browser_launch`,_=[`mcp`,`email.read`,`calendar.read`,`github`,`slack.read`,`slack.write`,`device`,`browser`,`browser-profile`],Te=[`definition`,`default`,`child`,`inline`],Ee=[`manual`,`name-asc`,`name-desc`,`date-desc`,`date-asc`],De=100,Oe=500,ke=2048,v=[`reader`,`runner`,`editor`],y=[`reader`,`editor`],Ae=[`manual`,`meeting_attendee`],je=new Set([`memory`,`skill`]);function parseRole(e,t){if(typeof t==`string`&&e.includes(t))return t;let n=`role must be one of: ${e.join(`, `)}`;throw new r(n,[{path:[`role`],message:n}])}function parseRecordAccessRole(e){return parseRole(y,e)}function parseAgentDefinitionAccessRole(e){return parseRole(v,e)}function parsePageAccessRole(e){return parseRole(y,e)}function deriveViewerAccess(e,t){return e.visibility===`workspace`?`workspace`:e.ownedBy!==null&&t.includes(e.ownedBy)?`owner`:e.viewerGrant===`editor`?`editor`:e.viewerGrant===`runner`?`runner`:`reader`}const Me=[`record`,`object`,`attribute`,`view`,`user`,`role`,`settings`,`file`,`agent`,`schema_source`,`tenant_invitation`,`api_key`],Ne=`record.created,record.updated,record.deleted,record.restored,record.purged,record.access_changed,agent.access_changed,object.created,object.updated,object.deleted,attribute.created,attribute.updated,attribute.deleted,view.created,view.updated,view.deleted,schema_source.applied,schema_source.presented,schema_source.removed,user.created,user.invited,user.updated,user.deleted,user.login,user.logout,tenant_invitation.created,tenant_invitation.delivery_failed,tenant_invitation.resent,tenant_invitation.revoked,tenant_invitation.accepted,role.created,role.updated,role.deleted,role.assigned,role.revoked,api_key.detached,settings.updated,file.uploaded,file.updated,file.deleted`.split(`,`),Pe=`agentSessionId`;function isAgentWrittenAuditEntry(e){return e.actorType===`agent`||typeof e.metadata?.agentSessionId==`string`}const Fe=[`draft_schema`],Ie=`discard_architect_draft`,b=`request_design_review`,Le=`get_architect_draft`,x=`ask_questions`,S=`request_setup`,Re=new Set([x,b,S]),C=new Set([x,S]),w=new Set([b]),ze=4,Be=2e3,Ve=50,He=a.union([a.object({value:a.string(),label:a.string()}).strict(),a.object({values:a.array(a.string()),labels:a.array(a.string()),text:a.string().optional()}).strict(),a.object({text:a.string()}).strict()]),T=a.object({skipped:a.boolean().describe(`True if the person skipped all questions`),answers:a.record(a.string(),He).describe(`Map of question ID to the answer given, with each chosen option's value and label`)});function readAskQuestionsResult(e){let t=T.safeParse(e);return t.success?t.data:null}function humanRequestKind(e){return e.approvalId==null?C.has(e.name)?`question`:w.has(e.name)?`review`:null:`approval`}function isAwaitingHuman(e){return humanRequestKind(e)===null||e.state===`streaming`||!isOpenToolPartState(e.state)||e.result!==void 0||e.error!==void 0?!1:e.approvalId==null||e.state===`approval-requested`&&e.approved===void 0}function isBlocking(e){let t=humanRequestKind(e);return t===`review`?isOpenToolPartState(e.state):t===`approval`&&e.state===`approval-requested`&&e.approved===void 0}function humanRequestId(e){return e.approvalId??e.toolCallId}function openRequests(e,t){let n=t.blocking?isBlocking:isAwaitingHuman,r=[];for(let t of e)for(let e of t.parts??[])isToolRequestPart(e)&&n(e)&&r.push({part:e,id:humanRequestId(e),requestedAt:t.createdAt});return r}function isToolRequestPart(e){return e.type===`tool`}function isParkedOnHuman(e){return e?.phase===`parked`&&e.parkedOn===`human`}const Ue=50;function recentActivityEntryKey(e){return e.kind===`record`?JSON.stringify([`record`,e.objectName,e.recordId]):JSON.stringify([`conversation`,`sessionId`in e?e.sessionId:e.session.id])}const We=200,Ge=5242880,E=`Notetaker`,Ke=/^\d{1,9}(\.\d{1,6})?$/,qe={meetingRecordingPolicy:`none`,meetingBotDisplayName:E,memoryPersonMonthlyLimitUsd:null,memoryTenantMonthlyLimitUsd:null},Je=[`active`,`suspended`],Ye=[`architect`,`manual`,`auto`],Xe=[`panel`,`fullscreen`],Ze=50,Qe=200,$e=50,et=a.discriminatedUnion(`type`,[a.strictObject({type:a.literal(`record`),object:a.string().min(1),id:a.guid()}),a.strictObject({type:a.literal(`user`),id:a.guid()})]),tt=a.strictObject({nodes:a.array(et).min(1).max(50),limitPerNode:a.number().int().min(1).max(200).default(50)});function recordGraphNodeKey(e){return e.type===`record`?`record:${e.object}:${e.id}`:`user:${e.id}`}const nt=100,rt=64e3,D=`work`,O=`/vercel/sandbox/${D}`,k=`/workspace`;function environmentWorkdir(e){return e?O:k}const A=[{id:`claude-code`,label:`Claude Code`,provider:`anthropic`,apiKeyEnv:`ANTHROPIC_API_KEY`,models:[{id:`sonnet`,label:`Claude Sonnet`},{id:`opus`,label:`Claude Opus`},{id:`haiku`,label:`Claude Haiku`}],defaultModel:`sonnet`},{id:`codex`,label:`Codex`,provider:`openai`,apiKeyEnv:`OPENAI_API_KEY`,models:[{id:`gpt-6.1-sol`,label:`GPT-6.1 Sol`},{id:`gpt-6-luna`,label:`GPT-6 Luna`},{id:`gpt-6-astra`,label:`GPT-6 Astra`}],defaultModel:`gpt-6.1-sol`},{id:`cursor`,label:`Cursor`,provider:`cursor`,apiKeyEnv:`CURSOR_API_KEY`,models:[{id:`auto`,label:`Auto`,cliDefault:!0},{id:`composer-2.5`,label:`Composer 2.5`}],defaultModel:`auto`}],j=new Map(A.map(e=>[e.id,e]));function isEnvironmentHarnessId(e){return j.has(e)}function findEnvironmentHarness(e){return j.get(e)}function environmentHarness(n){let r=j.get(n);if(!r)throw new e(`Unknown harness "${n}"`,t.INVARIANT_VIOLATION);return r}function cliDefaultModelOf(e){return environmentHarness(e).models.find(e=>e.cliDefault)?.id}function compiledHarnessModels(e){let t=environmentHarness(e);return t.models.map(e=>({id:e.id,label:e.label,...e.id===t.defaultModel?{isDefault:!0}:{}}))}function harnessModelChoices(e,t){let{provider:n}=environmentHarness(e);return t.map(e=>({id:e.id,provider:n,label:e.label,...e.isDefault?{isDefault:!0}:{}}))}const M=[`search`,`query`,`read`,`write`,`delete`,`organize`,`copy`],N=[...M,`edit_content`],P=[...N,`ask_questions`,`compact_context`,`request_work_mode`,`write_todos`],F=[`browser_autopilot`,`browser_batch`,`browser_computer`,`browser_find`,`browser_form_input`,`browser_get_text`,`browser_javascript`,`browser_navigate`,`browser_read_page`,`browser_tabs`],it=[`record`,`document`,`file`,`skill`,`schema`,`guide`],I={memory:{kinds:[`memory`],capabilities:[],tools:[`propose_memory`]},bulk:{kinds:[],capabilities:[`bulk`],tools:[]},activity:{kinds:[],capabilities:[`activity`],tools:[]},"email.read":{kinds:[`email`,`thread`],capabilities:[`copy_email`],tools:[]},"calendar.read":{kinds:[`event`],capabilities:[`transcript`],tools:[]}},L={sandbox:{icon:`terminal`,tools:[`exec_command`,`publish_artifact`,`sandbox_validate_payload`]},web:{icon:`globe`,tools:[`read_webpage`,`web_search`]},image:{icon:`image`,tools:[`generate_image`]},memory:{icon:`book-open`,tools:I.memory.tools},bulk:{icon:`layers-two`,tools:I.bulk.tools},activity:{icon:`activity`,tools:I.activity.tools},orchestration:{icon:`git-branch`,tools:[`message_agent`,`spawn_agent`]},host:{icon:`wrench`,tools:[]},"cloud-browser":{icon:`globe`,tools:[`browser_launch`]},notifications:{icon:`bell`,tools:[`notify`]}},R={mcp:{icon:`puzzle`,tools:[]},"email.read":{icon:`envelope`,tools:I[`email.read`].tools},"calendar.read":{icon:`calendar`,tools:I[`calendar.read`].tools},github:{icon:`brand-github`,tools:[]},"slack.read":{icon:`brand-slack`,tools:[`slack_read`,`slack_find`,`slack_download_file`]},"slack.write":{icon:`brand-slack`,tools:[`slack_send`,`slack_react`,`slack_set_status`]},device:{icon:`desktop`,tools:[`exec_command`]},browser:{icon:`link`,tools:F},"browser-profile":{icon:`globe`,tools:[`browser_launch`,...F]}},at={sandbox:{kinds:[],capabilities:[],tools:L.sandbox.tools},web:{kinds:[],capabilities:[],tools:L.web.tools},image:{kinds:[],capabilities:[],tools:L.image.tools},memory:I.memory,bulk:I.bulk,activity:I.activity,orchestration:{kinds:[],capabilities:[],tools:L.orchestration.tools},host:{kinds:[],capabilities:[],tools:L.host.tools},"cloud-browser":{kinds:[],capabilities:[],tools:L[`cloud-browser`].tools},notifications:{kinds:[],capabilities:[],tools:L.notifications.tools},mcp:{kinds:[],capabilities:[],tools:R.mcp.tools},"email.read":I[`email.read`],"calendar.read":I[`calendar.read`],github:{kinds:[],capabilities:[],tools:R.github.tools},"slack.read":{kinds:[],capabilities:[],tools:R[`slack.read`].tools},"slack.write":{kinds:[],capabilities:[],tools:R[`slack.write`].tools},device:{kinds:[],capabilities:[],tools:R.device.tools},browser:{kinds:[],capabilities:[],tools:R.browser.tools},"browser-profile":{kinds:[],capabilities:[],tools:R[`browser-profile`].tools}},ot={schema:[`discard_architect_draft`,`draft_schema`,`get_architect_draft`,`get_schema_history`,`request_design_review`,`search_icons`],"agent-config":[`get_agents`,`upsert_agent`],setup:[`request_setup`],internal:[`load_toolset`]},st=[...new Set([...P,...g.flatMap(e=>L[e].tools),..._.flatMap(e=>R[e].tools)])],ct={"email.read":[`gmail`,`outlook`],"calendar.read":[`google-calendar`,`outlook-calendar`]};function connectionGrantKindOf(e){return e===`google-calendar`||e===`outlook-calendar`?`calendar.read`:`email.read`}function connectionGrantKindsOf(e){switch(e){case`github`:return[`github`];case`slack`:return[`slack.read`,`slack.write`];default:return[connectionGrantKindOf(e)]}}const lt=[`activity`,`bulk`,`image`,`memory`,`orchestration`,`sandbox`,`web`],ut=[`memory`],dt=new Set([`sandbox`,`host`,`cloud-browser`]);function needsManageWhenUnattended(e){return dt.has(e)||isResourceGrant(e)}function isNativeToolGroup(e){return g.includes(e)}function parseToolGroupGrant(e){if(isNativeToolGroup(e))return{type:`native`,group:e};let t=e.indexOf(`:`);if(t<=0)return null;let n=e.slice(0,t),r=e.slice(t+1);return r.length===0||!_.includes(n)?null:{type:`resource`,kind:n,id:r}}function grantKindOf(e){let t=parseToolGroupGrant(e);return t?.type===`resource`?t.kind:null}function isResourceGrant(e){return parseToolGroupGrant(e)?.type===`resource`}function resourceGrant(e,t){return`${e}:${t}`}function canonicalToolGroups(e){return[...new Set(e)].sort()}const ft=[{key:`direct`,icon:`message`,color:`ink`,description:`A message a person wrote to this mailbox: a conversation, a question, a request, a reply.`},{key:`transactional`,icon:`credit-card`,color:`terra`,description:`An automated message about an account or an operation: receipt, invoice, payment, order, shipping, booking, password reset, security alert.`},{key:`notifications`,icon:`bell`,color:`ochre`,description:`An automated alert from a tool or a service: activity on GitHub, Slack, a calendar, a CRM, a monitoring system.`},{key:`newsletters`,icon:`book-open`,color:`stone`,description:`Editorial content the mailbox subscribed to: newsletters, digests, articles, community updates.`},{key:`marketing`,icon:`percentage`,color:`iris`,description:`Promotion or prospecting: offers, discounts, product announcements, cold sales outreach.`}],pt={direct:{en:`Direct`,fr:`Direct`},transactional:{en:`Transactional`,fr:`Transactionnel`},notifications:{en:`Notifications`,fr:`Notifications`},newsletters:{en:`Newsletters`,fr:`Newsletters`},marketing:{en:`Marketing`,fr:`Marketing`}},mt=8,ht=24,gt=10,_t=500,vt=`tag`,yt=`stone`,bt=new Set([`gmail.com`,`googlemail.com`,`outlook.com`,`hotmail.com`,`live.com`,`msn.com`,`yahoo.com`,`yahoo.fr`,`icloud.com`,`me.com`,`mac.com`,`proton.me`,`protonmail.com`,`gmx.com`,`gmx.fr`,`orange.fr`,`wanadoo.fr`,`free.fr`,`laposte.net`,`sfr.fr`,`aol.com`]),xt=new Set(ft.map(e=>e.key)),St=new Set(Object.entries(pt).flatMap(([e,t])=>[e,t.en,t.fr].map(e=>e.toLowerCase())));function isSystemEmailCategory(e){return xt.has(e)}function isSystemEmailCategoryName(e){return St.has(e.trim().toLowerCase())}function isPublicMailDomain(e){return bt.has(e.toLowerCase())}const z={maxConcurrentRuns:3,retryPolicy:{maxRetries:3,backoffMs:1e3,backoffMultiplier:2}};var AgentBuilder=class{constructor(e){if(!e.name||e.name.trim().length===0)throw new r(`Agent name is required`,[]);this.bp={name:e.name,system:!0,visibility:`workspace`,triggers:[]}}description(e){return this.bp.description=e,this}label(e){return this.bp.label=e,this}avatar(e){return this.bp.avatar={type:e.type,color:e.color,expression:e.expression??`relaxed`},this}starters(e){return e.length===0?delete this.bp.starters:this.bp.starters=[...e],this}systemPrompt(e){return this.bp.systemPrompt=e,this}model(e,t,n){return this.bp.model={provider:e,model:t,...n},this}toolGroups(e){let r=e.find(e=>!isNativeToolGroup(e));if(r!==void 0)throw new n(t.AGENT_TOOL_GROUP_UNKNOWN,r,`Agent "${this.bp.name}": "${r}" is not a native tool group (blueprints cannot grant tenant resources)`);return this.bp.toolGroups=canonicalToolGroups(e),this}schedule(e){return this.bp.schedule={...e,enabled:e.enabled??!0},this}config(e){let t=this.bp.config??z,n=e.inference===void 0?t.inference:{...t.inference,...e.inference};return this.bp.config={...t,...e,...n===void 0?{}:{inference:n}},this}delegation(e){return Object.assign(this.bp,e),this}approval(e){return this.bp.approval={...o,...this.bp.approval,...e},this}visibility(e){return this.bp.visibility=e,this}trigger(e,t,n){return this.bp.triggers.push({name:e,eventType:t,...n,enabled:n?.enabled??!0}),this}runtime(){return this.bp.system=!1,this}build(){if(!this.bp.systemPrompt)throw new r(`Agent "${this.bp.name}": systemPrompt is required`,[]);if(!this.bp.model)throw new r(`Agent "${this.bp.name}": model is required`,[]);if(this.bp.system&&this.bp.visibility===`private`)throw new r(`Agent "${this.bp.name}": system agents must use workspace visibility`,[]);return te(this.bp.triggers,e=>e.name,e=>new r(`Agent "${this.bp.name}": duplicate trigger name "${e}"`,[])),{...this.bp,visibility:this.bp.visibility??`workspace`,toolGroups:this.bp.toolGroups??[...ut],config:this.bp.config??z,systemPrompt:this.bp.systemPrompt,model:this.bp.model}}};function agent(e){return new AgentBuilder(e)}const B={issue:{events:[`issues`],actions:[`opened`,`edited`,`closed`,`reopened`,`labeled`,`unlabeled`,`assigned`,`unassigned`,`milestoned`,`demilestoned`,`transferred`,`pinned`],conditions:[`label`,`issueLabels`,`assignees`,`milestone`,`issueType`,`text`]},pull_request:{events:[`pull_request`],actions:[`opened`,`ready_for_review`,`synchronize`,`review_requested`,`merged`,`closed`,`reopened`,`converted_to_draft`,`labeled`,`assigned`,`edited`],conditions:[`baseBranch`,`headBranch`,`draft`,`issueLabels`,`changedPaths`,`prAuthor`]},review:{events:[`pull_request_review`],actions:[`submitted`,`edited`,`dismissed`],conditions:[`reviewState`,`prAuthor`]},comment:{events:[`issue_comment`,`pull_request_review_comment`,`commit_comment`],actions:[`created`,`edited`,`deleted`],conditions:[`text`,`issueAuthor`,`prAuthor`]},push:{events:[`push`],actions:[`pushed`],conditions:[`branch`,`changedPaths`,`forced`]},ref:{events:[`create`,`delete`],actions:[`created`,`deleted`],conditions:[`refType`,`branch`,`tag`]},workflow:{events:[`workflow_run`],actions:[`requested`,`in_progress`,`completed`],conditions:[`workflowName`,`conclusion`,`branch`,`originEvent`]},check:{events:[`check_suite`,`check_run`],actions:[`completed`,`rerequested`],conditions:[`checkApp`,`checkName`,`conclusion`]},project_item:{events:[`projects_v2_item`],actions:[`created`,`edited`,`archived`,`restored`,`deleted`],conditions:[`project`,`projectField`,`from`,`to`,`itemType`]},release:{events:[`release`],actions:[`published`,`created`,`edited`,`prereleased`,`deleted`],conditions:[`prerelease`,`tag`]},discussion:{events:[`discussion`,`discussion_comment`],actions:[`created`,`commented`,`answered`,`labeled`,`closed`],conditions:[`category`,`issueLabels`,`text`]},repository:{events:[`star`,`fork`,`repository`],actions:[`starred`,`forked`,`created`,`archived`],conditions:[]}},Ct={mention:{events:[`app_mention`],conditions:[`text`]},message:{events:[`message`],conditions:[`position`,`text`,`hasFile`]},dm:{events:[`message`],conditions:[`text`,`hasFile`]},reaction:{events:[`reaction_added`],conditions:[`messageAuthor`]},member_joined:{events:[`member_joined_channel`],conditions:[]}},wt=a.object({field:a.literal(`text`),operator:a.enum([`contains`,`starts_with`]),value:a.string().min(1)}).strict();function stringCondition(e){return a.object({field:a.literal(e),value:a.string().min(1)}).strict()}function booleanCondition(e){return a.object({field:a.literal(e),value:a.boolean()}).strict()}function listCondition(e){return a.object({field:a.literal(e),operator:a.enum([`any`,`all`]).default(`any`),value:a.array(a.string().min(1)).min(1)}).strict()}const Tt=a.discriminatedUnion(`field`,[wt,stringCondition(`label`),listCondition(`issueLabels`),listCondition(`assignees`),stringCondition(`milestone`),stringCondition(`issueType`),stringCondition(`baseBranch`),stringCondition(`headBranch`),stringCondition(`branch`),booleanCondition(`draft`),stringCondition(`changedPaths`),booleanCondition(`forced`),stringCondition(`prAuthor`),stringCondition(`issueAuthor`),a.object({field:a.literal(`reviewState`),value:a.enum([`approved`,`changes_requested`,`commented`])}).strict(),stringCondition(`workflowName`),stringCondition(`checkApp`),stringCondition(`checkName`),stringCondition(`conclusion`),stringCondition(`originEvent`),stringCondition(`project`),stringCondition(`projectField`),a.object({field:a.literal(`from`),value:a.string().nullable()}).strict(),a.object({field:a.literal(`to`),value:a.string().nullable()}).strict(),a.object({field:a.literal(`itemType`),value:a.enum([`issue`,`pull_request`,`draft`])}).strict(),booleanCondition(`prerelease`),stringCondition(`tag`),a.object({field:a.literal(`refType`),value:a.enum([`branch`,`tag`])}).strict(),stringCondition(`category`)]),Et=a.discriminatedUnion(`field`,[wt,a.object({field:a.literal(`position`),value:a.enum([`top_level`,`reply`])}).strict(),booleanCondition(`hasFile`),stringCondition(`messageAuthor`)]),Dt=a.string().regex(/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/),Ot=a.enum([`human`,`me`,`any`]),kt=a.object({family:a.enum(Object.keys(B)),actions:a.array(a.string()).default([]),repositories:a.array(Dt).default([]),sender:a.union([Ot,a.object({logins:a.array(a.string().min(1)).min(1)}).strict()]).default(`human`),conditions:a.array(Tt).default([])}).strict().superRefine((e,t)=>{let n=B[e.family];e.actions.forEach((r,i)=>{n.actions.includes(r)||t.addIssue({code:`custom`,path:[`actions`,i],message:`Action ${r} is not supported by ${e.family}`})}),e.conditions.forEach((r,i)=>{n.conditions.includes(r.field)||t.addIssue({code:`custom`,path:[`conditions`,i,`field`],message:`Condition ${r.field} is not supported by ${e.family}`})})}).transform(e=>e),At=a.object({on:a.enum([`mention`,`message`,`dm`,`reaction`,`member_joined`]),channels:a.array(a.string().min(1)).default([]),reactions:a.array(a.string().min(1)).optional(),sender:a.union([Ot,a.object({users:a.array(a.string().min(1)).min(1)}).strict()]).default(`human`),conditions:a.array(Et).default([])}).strict().superRefine((e,t)=>{e.conditions.forEach((n,r)=>{Ct[e.on].conditions.includes(n.field)||t.addIssue({code:`custom`,path:[`conditions`,r,`field`],message:`Condition ${n.field} is not supported by ${e.on}`})}),e.reactions!==void 0&&e.on!==`reaction`&&t.addIssue({code:`custom`,path:[`reactions`],message:`reactions requires on=reaction`})}).transform(e=>e),jt=a.union([kt,At]),Mt=[`force`,`skip`],Nt=[`none`,`all`,`external_only`],Pt={override:null,status:`none`,failureReason:null,botId:null},Ft=a.object({speaker:a.string().nullable(),startsAtMs:a.number(),endsAtMs:a.number(),text:a.string()}),It=a.object({fullText:a.string(),segments:a.array(Ft),language:a.string().nullable(),startedAt:a.string().nullable(),endedAt:a.string().nullable()}),Lt={width:1280,height:720,maxBytes:13e5,mimeType:`image/jpeg`},Rt=Math.ceil(Lt.maxBytes/3)*4,zt=a.object({conferenceJoinUrl:a.string().min(1),botDisplayName:a.string().min(1),startsAt:a.string().nullable(),callbackUrl:a.url(),botImageJpeg:a.string().max(Rt).optional()}),Bt=a.object({botId:a.string().min(1)}),Vt=a.discriminatedUnion(`kind`,[a.object({kind:a.literal(`transcript-ready`),botId:a.string().min(1)}),a.object({kind:a.literal(`failure`),botId:a.string().min(1),reason:a.string()})]),Ht=100;let Ut=function(e){return e.Desktop=`desktop`,e}({});function isMailProvider(e){return e===`gmail`||e===`outlook`}const Wt=`DRAFT`;function isProviderDraft(e){return e.includes(Wt)}const Gt=[`threads`,`messages`];function isMailboxListMode(e){return Gt.includes(e)}const Kt=[`reply`,`reply_all`];function isReplyMode(e){return Kt.includes(e)}const qt=2e5,Jt=998,V=a.number().finite().nonnegative(),H=a.enum(s),U=a.enum(c),W=a.enum(l),G=a.enum(oe),K=a.object({provider:H,model:a.string().min(1)}).strict(),Yt=a.object({speed:U.optional(),reasoning:W.optional(),routing:G.optional()}).strict(),q=a.string().regex(/^[a-z0-9][a-z0-9-]*\/[a-z0-9][a-z0-9._-]*$/),Xt=a.object({model:K.optional(),speed:U.optional(),reasoning:W.optional(),imageModel:q.optional(),routing:G.optional()}).strict(),Zt=Xt.refine(e=>f.some(t=>e[t]!==void 0),{message:`At least one inference override is required`});function isSessionInferencePatch(e){return Object.keys(e).length>0&&Object.values(e).every(e=>e!==void 0)}const Qt=a.object({model:K.nullable().optional(),speed:U.nullable().optional(),reasoning:W.nullable().optional(),imageModel:q.nullable().optional(),routing:G.nullable().optional()}).strict().refine(isSessionInferencePatch,{message:`At least one inference override is required`}),$t=a.object({model:a.string().min(1),routing:a.object({mode:a.literal(`auto`),tasks:a.array(a.enum(u)).optional(),demand:a.enum(d).optional(),reason:a.enum([`selected`,`retained`,`fallback`]).optional(),relation:a.enum([`continue`,`modify`,`new`,`aside`,`unknown`]).optional(),anchorMessageId:a.string().min(1).optional()})}),J=a.object({label:a.string(),denied:a.boolean().optional(),deletion:a.object({target:a.string().optional(),count:V.optional(),restorableDays:V.optional()}).strict().optional(),record:a.object({objectName:a.string(),id:a.string(),label:a.string(),objectIcon:a.string().optional()}).strict().optional(),object:a.object({name:a.string(),label:a.string()}).strict().optional(),counts:a.record(a.string(),V).optional(),warnings:a.array(a.string()).optional()}).strict(),en=a.union([a.object({type:a.literal(`text`),text:a.string()}).strict(),a.object({type:a.literal(`reasoning`),text:a.string()}).strict(),a.object({type:a.literal(`system`),code:a.enum(h)}).strict(),a.object({type:a.literal(`error`),error:a.string(),errorClass:a.string().optional()}).strict(),a.object({type:a.literal(`tool`),toolCallId:a.string(),name:a.string(),args:a.record(a.string(),a.unknown()),result:a.unknown().optional(),error:a.string().optional(),errorCode:a.enum([`output_limit_reached`,`interrupted`,t.INVALID_TOOL_INPUT,`external_outcome_unknown`,`external_not_dispatched`]).optional(),state:a.enum([`streaming`,`running`,`completed`,`error`,`pending`,`approval-requested`,`approval-responded`,`approval-dispatched`]),durationMs:V.optional(),approvalId:a.string().optional(),approvalImpact:J.optional(),approved:a.boolean().optional(),approvalReason:a.string().optional(),approvalDecidedBy:a.string().optional(),approvalDecidedAt:a.string().optional(),approvalRelaxableByAuto:a.boolean().optional()}).strict(),a.object({type:a.literal(`file`),fileId:a.string(),name:a.string(),mimeType:a.string()}).strict(),a.object({type:a.literal(`compaction`),state:a.literal(`in-progress`),reason:a.enum([`preflight_threshold`,`overflow_recovery`]),estimatedTokens:V.optional(),reportedTokens:V.optional()}).strict(),a.object({type:a.literal(`compaction`),state:a.literal(`completed`),tokensBefore:V,tokensAfter:V,tokensSaved:V,strategy:a.enum([`no-op`,`summary`,`truncation`]),durationMs:V,summary:a.string().optional()}).strict(),a.object({type:a.literal(`compaction`),state:a.literal(`failed`),reason:a.string(),durationMs:V.optional()}).strict()]),tn=a.object({id:a.string(),name:a.string(),mimeType:a.string(),size:V}).strict(),nn=a.object({id:a.string(),artifactId:a.string(),revision:a.number().int().min(1),selectedText:a.string()}).strict(),rn=a.object({id:a.string(),type:a.string().transform(e=>e),entityId:a.string(),label:a.string(),objectName:a.string().optional(),startIndex:V,endIndex:V}).strict(),an=a.object({provider:H,model:a.string(),maxTokens:V.optional(),contextWindow:V.optional()}).strict(),on=a.union([a.date(),a.string().datetime({offset:!0}).transform(e=>new Date(e))]),sn=a.object({id:a.string(),sessionId:a.string(),tenantId:a.string().optional(),runId:a.string().optional(),role:a.enum([`user`,`assistant`,`system`,`tool`]),parts:a.array(en),attachments:a.array(tn).optional(),mentions:a.array(rn).optional(),quotes:a.array(nn).optional(),model:an.optional(),tokenUsage:a.object({input:V,output:V}).strict().optional(),metadata:a.record(a.string(),a.unknown()).optional(),createdAt:on}).strict(),cn=a.object({id:a.string(),description:a.string(),status:a.enum([`pending`,`in_progress`,`completed`,`blocked`]),result:a.string().optional(),updatedAt:V.optional()}).strict(),ln=a.object({id:a.string(),sessionId:a.string(),status:a.enum([`active`,`completed`,`abandoned`]),todos:a.array(cn),version:V,createdAt:a.string(),updatedAt:a.string(),completedAt:a.string().optional()}).strict(),Y={"compaction-start":a.object({reason:a.enum([`preflight_threshold`,`overflow_recovery`]),estimatedTokens:V.optional(),reportedTokens:V.optional()}).strict(),"compaction-end":a.object({tokensBefore:V,tokensAfter:V,tokensSaved:V,strategy:a.enum([`no-op`,`summary`,`truncation`]),durationMs:V,summary:a.string().optional()}).strict(),"compaction-failed":a.object({reason:a.string()}).strict(),usage:a.object({messageId:a.string().min(1).optional(),inputTokens:V,outputTokens:V,totalTokens:V,cacheReadTokens:V.optional(),cacheCreationTokens:V.optional(),contextWindow:V,residentTokens:V,utilization:a.number().finite().min(0).max(1),costUsd:V.optional()}).strict(),"message-updated":a.object({message:sn}).strict(),"approval-context":a.object({approvalId:a.string(),toolCallId:a.string(),impact:J.optional(),relaxableByAuto:a.boolean().optional()}).strict()};function isAgentUIDataName(e){return e in Y}function agentUIValidationError(e){return new r(`Invalid agent UI message chunk`,e.map(e=>({path:e.path.map(String),message:e.message,code:e.code})))}function assertCustomAgentUIMessageChunk(e){if(typeof e!=`object`||!e||typeof e.type!=`string`)throw new r(`Invalid agent UI message chunk`,[{path:[`type`],message:`Expected UI message chunk type`,code:`invalid_type`}]);let t=e.type;if(!t.startsWith(`data-`))throw new r(`Invalid agent UI message chunk`,[{path:[`type`],message:`Expected agent data chunk type`,code:`invalid_value`}]);let n=t.slice(5);if(!isAgentUIDataName(n))throw new r(`Invalid agent UI message chunk`,[{path:[`type`],message:`Unknown agent UI data type: ${n}`,code:`invalid_value`}]);let i=a.object({type:a.literal(`data-${n}`),id:a.string().optional(),data:Y[n],transient:a.boolean().optional()}).strict().safeParse(e);if(!i.success)throw agentUIValidationError(i.error.issues);return i.data}function agentDataChunk(e,t,n){return assertCustomAgentUIMessageChunk({type:`data-${e}`,...n?.id===void 0?{}:{id:n.id},data:t,...n?.transient===void 0?{}:{transient:n.transient}})}const un=a.string().trim().min(1).max(24),dn=a.string().trim().min(10).max(500),fn=a.enum([`address`,`domain`]),pn=a.object({scope:a.enum([`personal`,`workspace`]),name:un,description:dn,icon:ee.default(`tag`),color:i.default(yt)}),mn=a.object({name:un.optional(),description:dn.optional(),icon:ee.optional(),color:i.optional()}).refine(e=>Object.values(e).some(e=>e!==void 0),{message:`Nothing to update`}),hn=a.object({moveTo:a.string().min(1).nullable().default(null)}),gn=a.object({category:a.string().min(1).optional(),important:a.boolean().optional()}).refine(e=>e.category!==void 0||e.important!==void 0,{message:`Nothing to classify`}),_n=a.object({verdict:a.object({category:a.string().min(1).nullable(),important:a.boolean(),classifiedBy:a.enum([`model`,`rule`,`manual`]).nullable()}),ruleId:a.string().uuid().nullable(),previousRule:a.object({scope:fn,match:a.string().trim().toLowerCase().min(1),category:a.string().min(1)}).nullable()}).refine(e=>e.ruleId!==null||e.previousRule===null,{message:`A previous rule needs the rule it restores`}),vn=a.object({scope:a.literal(`domain`)}),yn=a.object({scope:a.enum([`personal`,`workspace`])}),bn=a.object({type:a.enum(p),color:a.enum(ne),expression:a.enum(ce).default(`relaxed`)}).strict(),xn=a.array(a.string().trim().min(1).max(200)).max(4);function agentAvatarFromMetadata(e){let t=bn.safeParse(e);return t.success?t.data:void 0}const Sn=[`record.created`,`record.updated`,`record.deleted`,`form.submitted`,`webhook`,`github`,`slack`],Cn=new Set([`record.created`,`record.updated`,`record.deleted`]),wn=/^[A-Z_][A-Z0-9_]*$/,Tn=a.object({cron:a.string().min(9),timezone:a.string().optional(),enabled:a.boolean(),input:a.record(a.string(),a.unknown()).optional(),runFor:a.enum([`armer`,`audience`]).optional(),continueConversation:a.boolean().optional()}),En=/^[A-Za-z0-9_$-]+(\.[A-Za-z0-9_$-]+)*$/,X=a.object({name:a.string().max(120).optional(),eventType:a.enum(Sn),objectId:a.guid().optional(),watchedFields:a.array(a.string()).max(50).optional(),debounceMs:a.number().int().min(0).max(3e5).optional(),filter:a.object({combinator:a.enum([`and`,`or`]).default(`and`),rules:a.array(a.object({attribute:a.string(),operator:a.string(),value:a.unknown().optional()}))}).optional(),formDefinitionId:a.string().optional(),continuationKey:a.string().max(200).regex(En).nullable().optional(),connectionId:a.guid().optional(),match:jt.optional(),continueConversation:a.boolean().optional(),enabled:a.boolean().optional()});function refineTrigger(e){return e.refine(e=>!e.watchedFields?.length||e.eventType===`record.updated`,{message:`watchedFields requires eventType=record.updated`,path:[`watchedFields`]}).refine(e=>!(e.eventType&&Cn.has(e.eventType))||!!e.objectId,{message:`objectId is required for record.* triggers`,path:[`objectId`]}).refine(e=>!(e.continuationKey&&e.eventType)||e.eventType===`webhook`,{message:`continuationKey requires eventType=webhook`,path:[`continuationKey`]}).superRefine((e,t)=>{let n=e.eventType===`github`||e.eventType===`slack`;if(n&&!e.connectionId&&t.addIssue({code:`custom`,path:[`connectionId`],message:`connectionId is required for native connector triggers`}),n&&!e.match&&t.addIssue({code:`custom`,path:[`match`],message:`match is required for native connector triggers`}),e.match&&e.eventType&&((e.eventType===`github`?`family`in e.match:e.eventType===`slack`&&`on`in e.match)||t.addIssue({code:`custom`,path:[`match`],message:`match must belong to the trigger provider`})),e.eventType&&!n)for(let n of[`connectionId`,`continueConversation`])e[n]!==void 0&&t.addIssue({code:`custom`,path:[n],message:`${n} requires a native connector trigger`})})}const Dn=refineTrigger(X).transform(e=>({...e,...e.eventType===`github`||e.eventType===`slack`?{continueConversation:e.continueConversation??!0}:{}})),On=X.partial();function parseMergedAgentTrigger(e,t){let n=On.safeParse(t);if(!n.success)throw triggerValidationError(n.error);let r=Object.fromEntries(Object.entries(n.data).filter(([,e])=>e!==void 0)),i=Dn.safeParse({...e,...r});if(!i.success)throw triggerValidationError(i.error);return i.data}function triggerValidationError(e){return new r(`Invalid agent trigger`,e.issues.map(e=>({path:e.path.map(String),message:e.message})))}const kn=100,Z=a.uuid(),Q=a.record(a.string(),a.unknown()),An=a.strictObject({objectName:a.string(),recordId:Z,attribute:a.string(),base:a.unknown(),props:Q.optional()}),jn=a.strictObject({kind:a.literal(`record.set`),objectId:Z,recordId:Z,values:Q,base:Q.optional()}),Mn=a.strictObject({kind:a.literal(`record.create`),objectId:Z,recordId:Z,values:Q,options:a.strictObject({visibility:a.enum([`workspace`,`private`]).optional(),allowDraft:a.boolean().optional(),linkTo:An.optional()}).optional()}),Nn=a.strictObject({kind:a.literal(`record.delete`),objectId:Z,recordId:Z}),Pn=a.strictObject({kind:a.literal(`record.restore`),objectId:Z,recordId:Z}),$=a.string().min(1),Fn=a.discriminatedUnion(`command`,[a.strictObject({command:a.literal(`replace`),oldText:$,newText:a.string(),replaceAll:a.boolean().optional()}),a.strictObject({command:a.literal(`insert`),text:$,after:$.optional()})]),In=a.strictObject({kind:a.literal(`record.patch`),objectId:Z,recordId:Z,attribute:a.string(),edit:Fn}),Ln=a.discriminatedUnion(`kind`,[jn,Mn,Nn,Pn,In]),Rn=a.strictObject({opId:Z,steps:a.array(Ln).min(1).max(100)}).superRefine((e,t)=>{let n=new Set;for(let r of e.steps){if(n.has(r.recordId)){t.addIssue({code:`custom`,message:`one step per record`,path:[`steps`]});return}n.add(r.recordId)}});export{Kt as $,Ne as $n,isAgentMessageMetadata as $r,grantKindOf as $t,nn as A,Ge as An,o as Ar,mt as At,rn as B,S as Bn,de as Br,ct as Bt,Yt as C,Xe as Cn,p as Cr,AgentBuilder as Ct,Zt as D,qe as Dn,le as Dr,vt as Dt,Xt as E,E as En,ie as Er,yt as Et,W as F,Ve as Fn,he as Fr,isPublicMailDomain as Ft,Qt as G,isBlocking as Gn,d as Gr,at as Gt,K as H,humanRequestId as Hn,se as Hr,P as Ht,G as I,ze as In,_e as Ir,isSystemEmailCategory as It,J,readAskQuestionsResult as Jn,m as Jr,ot as Jt,cn as K,isParkedOnHuman as Kn,ae as Kr,L as Kt,U as L,x as Ln,xe as Lr,isSystemEmailCategoryName as Lt,Y as M,recentActivityEntryKey as Mn,l as Mr,bt as Mt,on as N,w as Nn,oe as Nr,ft as Nt,sn as O,Ke as On,ue as Or,_t as Ot,q as P,Be as Pn,c as Pr,pt as Pt,Wt as Q,b as Qn,compareAgentSessionMessages as Qr,connectionGrantKindsOf as Qt,isAgentUIDataName as R,Re as Rn,Ce as Rr,st as Rt,agentDataChunk as S,tt as Sn,ce as Sr,At as St,en as T,Ye as Tn,ve as Tr,agent as Tt,H as U,humanRequestKind as Un,f as Ur,lt as Ut,an as V,T as Vn,s as Vr,N as Vt,$t as W,isAwaitingHuman as Wn,h as Wr,ut as Wt,qt as X,Fe as Xn,agentDisplayName as Xr,canonicalToolGroups as Xt,Gt as Y,Ie as Yn,re as Yr,M as Yt,Jt as Z,Le as Zn,assertSessionState as Zr,connectionGrantKindOf as Zt,pn as _,isEnvironmentHarnessId as _n,g as _r,Ct as _t,Sn as a,mergeSessionInferencePatch as ai,A as an,Ae as ar,Ut as at,mn as b,Ze as bn,fe as br,kt as bt,On as c,nt as cn,parseAgentDefinitionAccessRole as cr,Pt as ct,refineTrigger as d,cliDefaultModelOf as dn,Ee as dr,zt as dt,isAgentNotificationMetadata as ei,isNativeToolGroup as en,Pe as er,isMailProvider as et,agentAvatarFromMetadata as f,compiledHarnessModels as fn,ke as fr,Bt as ft,gn as g,harnessModelChoices as gn,we as gr,B as gt,_n as h,findEnvironmentHarness as hn,Te as hr,It as ht,wn as i,isToolApprovalState as ii,resourceGrant as in,y as ir,Ht as it,assertCustomAgentUIMessageChunk as j,Ue as jn,ge as jr,ht as jt,agentUIValidationError as k,We as kn,u as kr,gt as kt,Dn as l,k as ln,parsePageAccessRole as lr,Mt as lt,xn as m,environmentWorkdir as mn,Oe as mr,Ft as mt,Rn as n,isRoutineActorMetadata as ni,needsManageWhenUnattended as nn,isAgentWrittenAuditEntry as nr,isProviderDraft as nt,Tn as o,orderAgentSessionMessages as oi,D as on,je as or,Lt as ot,bn as p,environmentHarness as pn,De as pr,Vt as pt,ln as q,openRequests as qn,be as qr,R as qt,En as r,isSystemPartCode as ri,parseToolGroupGrant as rn,v as rr,isReplyMode as rt,X as s,O as sn,deriveViewerAccess as sr,Rt as st,kn as t,isOpenToolPartState as ti,isResourceGrant as tn,Me as tr,isMailboxListMode as tt,parseMergedAgentTrigger as u,rt as un,parseRecordAccessRole as ur,Nt as ut,hn as v,$e as vn,_ as vr,jt as vt,tn as w,Je as wn,ye as wr,z as wt,vn as x,recordGraphNodeKey as xn,pe as xr,Et as xt,yn as y,Qe as yn,me as yr,Tt as yt,isSessionInferencePatch as z,C as zn,Se as zr,it as zt};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
|
|
2
|
-
const e=require("./attribute-validators-WAoJbap5.js"),t=require("./record-aggregates-DwpIJ2Dv.js"),n=require("./exceptions.js");let r=require("zod");const i={createdAt:`createdAt`,updatedAt:`updatedAt`,createdBy:`createdBy`,lastUpdatedBy:`lastUpdatedBy`,attachments:`attachments`};function getSystemAttributeI18nKey(e){return i[e]}const a={createdAt:{id:`system:createdAt`,name:`createdAt`,label:`Created time`,type:`date`,required:!1,system:!0,icon:`clock-circle`,description:`When this record was created`},updatedAt:{id:`system:updatedAt`,name:`updatedAt`,label:`Last edited time`,type:`date`,required:!1,system:!0,icon:`clock-circle`,description:`When this record was last modified`},createdBy:{id:`system:createdBy`,name:`createdBy`,label:`Created by`,type:`user`,required:!1,system:!0,multiple:!1,icon:`user`,description:`Actor who created this record`},lastUpdatedBy:{id:`system:lastUpdatedBy`,name:`lastUpdatedBy`,label:`Last edited by`,type:`user`,required:!1,system:!0,multiple:!1,icon:`user`,description:`Actor who last modified this record`},attachments:{id:`system:attachments`,name:`attachments`,label:`Attachments`,type:`document`,required:!1,system:!0,hidden:!0,icon:`paperclip`,description:`Free-form document attachments`}};function getSystemAttributeList(){return Object.values(a)}function isManagedSystemAttribute(e){return e.id?.startsWith(`system:`)??!1}const o=[`is`,`is_not`,`contains`,`not_contains`,`starts_with`,`ends_with`,`is_empty`,`is_not_empty`],s=[`is`,`is_not`,`less_than`,`greater_than`,`less_or_equal`,`greater_or_equal`,`is_empty`,`is_not_empty`],c=[`is`],l=[`is`,`is_not`,`less_than`,`greater_than`,`less_or_equal`,`greater_or_equal`,`is_within`,`on_day_month`,`is_empty`,`is_not_empty`],u=[`is`,`is_not`,`any_of`,`none_of`,`is_empty`,`is_not_empty`],d=[`any_of`,`none_of`,`is_empty`,`is_not_empty`],f=[`is`,`is_not`,`any_of`,`none_of`,`is_empty`,`is_not_empty`],ee=[`is_empty`,`is_not_empty`],p=[`is`,`is_not`,`less_than`,`greater_than`,`less_or_equal`,`greater_or_equal`,`contains`,`not_contains`,`is_empty`,`is_not_empty`],m=[`city`,`postalCode`,`country`];function isLocationFilterProperty(e){return m.includes(e)}const h={text:o,richtext:[],number:s,checkbox:c,date:l,phone:[`is`,`is_not`,`contains`,`not_contains`,`starts_with`,`is_empty`,`is_not_empty`],currency:s,status:u,select:u,multiselect:d,location:[],user:f,relation:f,formula:p,document:ee},te=new Set([`formula`,`rollup`]),ne=new Set([`user`,`relation`,`document`]),g=new Set([`text`,`richtext`,`number`,`select`,`multiselect`,`status`,`date`,`phone`,`currency`,`location`,`user`,`relation`,`document`]),re=new Set([`text`,`number`,`date`,`phone`,`currency`,`select`,`multiselect`]),ie=new Set([`text`,`richtext`,`phone`,`status`,`select`,`multiselect`]),ae=new Set([`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`status`,`select`]);function getAttributeCapabilities(e){let t=!!(e.hidden||e.archived),n=!e.archived,r=te.has(e.type),i=e.type===`document`,a=ne.has(e.type),o=getAttributeCardinality(e),s=t?[]:getRawFilterOperators(e),c=s.length>0&&!t,l=!t&&ie.has(e.type),u=!t&&ae.has(e.type),d=!t&&isGroupableType(e.type),f=!t&&e.type===`status`,ee=isManagedSystemAttribute(e),p=r||i||ee,m=!(t||p),h=isRequiredForbidden(e.type)?`forbidden`:`allowed`,g=getDefaultValueCapability(e.type),_=supportsMaxItems(e),v=re.has(e.type),y=!(!e.deprecated||t),b=resolveEditMode(e);return{lifecycle:{active:n,deprecated:!!e.deprecated,visibleInArchitect:!0,visibleInRuntime:!t,warningWhenDeprecated:y},storage:{mode:r?`computed`:a?`edge`:`value`,cardinality:o,edgeBacked:a,preservesExistingValues:!!e.archived,qualifiedProperties:supportsQualifiedProperties(e.type),polymorphic:getPolymorphicCapability(e),maxItems:_},authoring:{editable:m,readOnly:p,directEdit:m&&b===`inline`,required:h,defaultValue:g,placeholder:v,maxItems:_},presentation:{formField:!t&&isFormFieldType(e.type),tableCell:!t&&isTableCellType(e.type),defaultColumn:!t&&isDefaultColumnType(e.type),compactDisplay:!t,popoverEditor:!t&&b===`popover`,placeholder:v,warningWhenDeprecated:y},query:{filterable:c,searchable:l,sortable:u,groupable:d,kanbanGroupable:f,operators:s},agent:{readable:!t,writable:m&&!i,compactReadable:!t,contentReadable:!t&&isContentReadableType(e.type),requiresDedicatedTool:i},exchange:{importable:!t,exportable:!t,schemaExportable:!0,metadataExportable:!1}}}function getAttributeFilterOperators(e){return getAttributeCapabilities(e).query.operators}function isAttributeFilterable(e){return getAttributeCapabilities(e).query.filterable}function isAttributeSearchable(e){return getAttributeCapabilities(e).query.searchable}function isAttributeSortable$1(e){return getAttributeCapabilities(e).query.sortable}function isAttributeGroupable(e){return getAttributeCapabilities(e).query.groupable}function isAttributeKanbanGroupable(e){return getAttributeCapabilities(e).query.kanbanGroupable}function resolveEffectiveFilterType(e){if(e.type!==`rollup`)return e.type;let t=e;if(t.function===`earliest`||t.function===`latest`)return`date`;if(t.function===`original`){let e=t.targetAttributeType;if(e&&hasFilterOperatorEntry(e))return e}return`number`}function getRollupFilterOperators$1(e){let t=resolveEffectiveFilterType(e);return hasFilterOperatorEntry(t)?h[t]:h.number}function getRawFilterOperators(e){return e.type===`rollup`?getRollupFilterOperators$1(e):h[e.type]??[]}function getAttributeCardinality(e){return e.type===`multiselect`||e.type===`document`||e.type===`user`&&e.multiple===!0||e.type===`relation`&&e.cardinality===`many`?`many`:`one`}function getPolymorphicCapability(e){if(e.type!==`relation`)return`none`;let t=e.targets??[];return t.length===1&&t[0]?.object===`*`?`internal`:t.length>1?`code-only`:`none`}function supportsMaxItems(e){return e.type===`multiselect`||e.type===`relation`&&e.cardinality===`many`}function supportsQualifiedProperties(e){return e===`relation`||e===`document`}function isRequiredForbidden(e){return e===`checkbox`||e===`formula`||e===`rollup`}function getDefaultValueCapability(e){return e===`checkbox`?`automatic`:e===`formula`||e===`rollup`?`forbidden`:g.has(e)?`static`:`forbidden`}function isDefaultColumnType(e){return isTableCellType(e)}function isTableCellType(e){return e!==`richtext`&&e!==`document`}function isFormFieldType(e){return e!==`richtext`}function resolveEditMode(e){switch(e.type){case`checkbox`:return`inline`;case`number`:return e.renderAs===`rating`?`inline`:`default`;case`select`:case`multiselect`:return e.renderAs===`badges`?`inline`:`popover`;case`status`:case`relation`:case`user`:case`date`:return`popover`;default:return`default`}}function isGroupableType(e){return e===`status`||e===`currency`}function isContentReadableType(e){return e===`richtext`||e===`document`}function hasFilterOperatorEntry(e){return Object.prototype.hasOwnProperty.call(h,e)}const _=[`text`,`richtext`,`number`,`checkbox`,`date`,`phone`,`currency`,`status`,`location`,`select`,`multiselect`,`user`,`relation`,`formula`,`rollup`,`document`];function relationTargetsOf(e){return e.type!==`relation`||!Array.isArray(e.targets)?[]:e.targets.map(e=>e.object).filter(e=>e!==`*`)}function isUniversalRelation(e){return e.targets.length===1&&e.targets[0].object===`*`}function isBilateralRelation(e){return e.bilateral!==void 0}function inferInverseCardinality(e){return`many`}function isAttributeSortable(e){return isAttributeSortable$1(e)}const v=h,y=[`is_empty`,`is_not_empty`];function isNoValueOperator(e){return y.includes(e)}function getRollupFilterOperators(e){return getRollupFilterOperators$1(e)}function parseQualifiedAttribute(e){let t=e.indexOf(`__`);return t<=0||t+2>=e.length?{kind:`scalar`,attribute:e}:{kind:`qualified`,root:e.slice(0,t),property:e.slice(t+2)}}function buildQualifiedAttribute(e,t){return`${e}__${t}`}const b=[`page`,`record`,`display`];function defineBlock(e){let t=Object.fromEntries(Object.entries(e.inputs).map(([e,t])=>[e,t.isOptional?t.schema.optional():t.schema]));return Object.freeze({name:e.name,label:e.label,icon:e.icon,family:e.family,contexts:Object.freeze([...e.contexts]),inputs:Object.freeze({...e.inputs}),...e.layout===void 0?{}:{layout:Object.freeze({...e.layout})},parameters:r.z.object(t).strict().superRefine((t,n)=>{let r=e.refine?.(t);r&&n.addIssue({code:`custom`,path:[r.input],message:r.message})}),...e.refine===void 0?{}:{refine:(t,n)=>e.refine?.(t,n)}})}function parseBlockParameters(e,t,r){let i=e.parameters.safeParse(structuredClone(t??{}));if(!i.success)throw n.ValidationError.fromZodErrors(i.error.issues.map(e=>({path:[...r,...e.path.map(String)],message:e.message})));return i.data}function blockObjectInputs(e,t,n){return Object.entries(e.inputs).flatMap(([e,r])=>{let i=t[e];if(r.kind===`object`&&typeof i==`string`)return[i];if(r.kind===`query`&&typeof i==`object`&&i){let e=i.source;if(!e)return[];if(`object`in e&&typeof e.object==`string`)return[e.object];let t=n?.attributes.find(t=>t.name===e.relation);return t?relationTargetsOf(t):[]}return[]})}const oe=/^\d{4}-\d{2}-\d{2}$/u;function isCalendarDay(e){if(!oe.test(e))return!1;let t=new Date(`${e}T00:00:00Z`);return!Number.isNaN(t.getTime())&&t.toISOString().slice(0,10)===e}function isDynamicValue(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&`dynamic`in e}function currentActor(){return{dynamic:`actor`,ref:`current`}}function today(){return{dynamic:`date`,anchor:`today`}}function now(){return{dynamic:`date`,anchor:`now`}}function toAmount(e){if(typeof e==`number`)return Number.isFinite(e)?e:null;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);return Number.isFinite(t)?t:null}return null}function extractCurrencyFilterValue(e){return typeof e==`object`&&e?`value`in e?toAmount(e.value):null:toAmount(e)}function extractFilterValue(e){return e==null?null:typeof e==`object`&&`value`in e?e.value??null:e}const se=new Set([`is_not`,`not_contains`,`none_of`,`is_empty`]),ce={is_not:`is`,not_contains:`contains`,none_of:`any_of`,is_empty:`is_not_empty`};function getOperatorPolarity(e){return se.has(e)?`none`:`any`}function normalizeForEdgeRpc(e){return ce[e]??e}const x={is:`any_of`,is_not:`none_of`};function toMultiValueOperator(e){return x[e]??e}const le=new Set(Object.values(x).filter(e=>e!==void 0));function isSetMembershipOperator(e){return le.has(e)}function canonicalizeFilterValue(e,t){let r=e.value;if(isNoValueOperator(e.operator)||r==null||isDynamicValue(r))return;if(isSetMembershipOperator(e.operator)){Array.isArray(r)||(e.value=[r]);return}if(t!==`currency`)return;let i=extractCurrencyFilterValue(r);if(i!==null){e.value=i;return}if(!hasCurrencyAmount(r))return;let a=`Filter on a currency attribute expected a numeric amount, received ${JSON.stringify(r)}`;throw new n.ValidationError(a,[{path:[`value`],message:a}])}function hasCurrencyAmount(e){return typeof e!=`object`||`value`in e&&e.value!=null}const S=h.text,ue=[`is`,`is_not`,`is_empty`,`is_not_empty`],C=[`is`,`is_not`,`any_of`,`none_of`,`is_empty`,`is_not_empty`],w={id:C,objectId:C,tenantId:C,label:h.text,createdAt:h.date,updatedAt:h.date,deletedAt:h.date,createdBy:h.user,lastUpdatedBy:h.user},de=new Set([`createdAt`,`updatedAt`,`deletedAt`]);function offeredOn(e,t){return de.has(e)?t.filter(e=>e!==`on_day_month`):t}function fullyOffered(e,t,n,r){return{target:e,attribute:t,...r?{property:r}:{},operators:n,offered:n}}function attributeFilterTarget(e){let t=getAttributeFilterOperators(e);return{target:e.name,attribute:e.name,operators:t,offered:offeredOn(e.name,t)}}function locationPartFilterTarget(e,t){return{target:buildQualifiedAttribute(e,t),attribute:e,property:t,operators:S,offered:t===`country`?ue:S}}function edgePropertyFilterTarget(e,t){let n=hasOperatorEntry(t.type)?h[t.type]:[];return fullyOffered(buildQualifiedAttribute(e,t.name),e,n,t.name)}function hasOperatorEntry(e){return Object.prototype.hasOwnProperty.call(h,e)}function systemColumnFilterTarget(e){let t=Object.prototype.hasOwnProperty.call(w,e)?w[e]:void 0;return t?{target:e,attribute:e,operators:t,offered:offeredOn(e,t)}:void 0}function filterOperatorsOfType(e){return isAttributeType(e)?getAttributeFilterOperators({type:e}):[]}function isAttributeType(e){return _.includes(e)}function isLocationPartOperator(e){return S.includes(e)}function carriesEdgeProperties(e){return e.type===`relation`||e.type===`document`}function filterTargetsOf(e){let t=[];for(let n of e){if(n.type===`location`){for(let e of m)t.push(locationPartFilterTarget(n.name,e));continue}if(t.push(attributeFilterTarget(n)),!carriesEdgeProperties(n))continue;let e=n.properties?.definitions;for(let r of e??[])t.push(edgePropertyFilterTarget(n.name,r))}let n=new Set(e.map(e=>e.name));for(let e of Object.keys(w)){if(n.has(e))continue;let r=systemColumnFilterTarget(e);r&&t.push(r)}return t.filter(e=>e.operators.length>0)}const fe={eq:`is`,equals:`is`,equal:`is`,"==":`is`,"=":`is`,neq:`is_not`,notEqual:`is_not`,isNot:`is_not`,"!=":`is_not`,"<>":`is_not`,lt:`less_than`,"<":`less_than`,gt:`greater_than`,">":`greater_than`,lte:`less_or_equal`,"<=":`less_or_equal`,gte:`greater_or_equal`,">=":`greater_or_equal`,in:`any_of`,isAnyOf:`any_of`,anyOf:`any_of`,oneOf:`any_of`,notIn:`none_of`,not_in:`none_of`,isNoneOf:`none_of`,noneOf:`none_of`,notOneOf:`none_of`,startsWith:`starts_with`,beginsWith:`starts_with`,endsWith:`ends_with`,doesNotContain:`not_contains`,notContain:`not_contains`,isEmpty:`is_empty`,isNotEmpty:`is_not_empty`};function normalizeOperator(e){return fe[e]??e}function normalizeFilterRule(e){let t=normalizeOperator(e.operator);return t===e.operator?e:{...e,operator:t}}const T=864e5,pe=new Set([`days`,`weeks`,`months`,`years`]),me=new Set([`past`,`future`]);function isRelativeDateValue(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.amount==`number`&&Number.isFinite(t.amount)&&t.amount>0&&typeof t.unit==`string`&&pe.has(t.unit)&&typeof t.direction==`string`&&me.has(t.direction)}function utcDayStart(e){return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())}function shiftUtcDay(e,t,n){if(n===`days`)return e+t*T;if(n===`weeks`)return e+t*7*T;let r=new Date(e),i=r.getUTCFullYear()+(n===`years`?t:0),a=r.getUTCMonth()+(n===`months`?t:0),o=new Date(Date.UTC(i,a+1,0)).getUTCDate();return Date.UTC(i,a,Math.min(r.getUTCDate(),o))}function resolveIsWithinBounds(e,t=new Date){if(!isRelativeDateValue(e))return null;let n=utcDayStart(t),r=Math.trunc(e.amount),i=e.direction===`past`?{startMs:shiftUtcDay(n,-r,e.unit),endMs:n+T}:{startMs:n,endMs:shiftUtcDay(n,r,e.unit)+T};return Number.isFinite(i.startMs)&&Number.isFinite(i.endMs)?i:null}function resolveUtcDayBounds(e){if(!Number.isFinite(e))return null;let t=utcDayStart(new Date(e));return Number.isFinite(t)?{startMs:t,endMs:t+T}:null}function toUtcDayString(e){return new Date(e).toISOString().slice(0,10)}const he=new Set([`relation`,`document`,`user`]),E={id:`text`,objectId:`text`,objectName:`text`,tenantId:`text`,label:`text`,createdAt:`date`,updatedAt:`date`,deletedAt:`date`,deletedBy:`user`,createdBy:`user`,lastUpdatedBy:`user`,visibility:`select`,ownedBy:`user`},D={before:`"less_than"`,after:`"greater_than"`,on_or_before:`"less_or_equal"`,on_or_after:`"greater_or_equal"`,is_checked:`"is" with value true`,is_not_checked:`"is" with value false`,day_month_eq:`"on_day_month"`},ge=new Set(Object.entries(h).filter(([,e])=>e.includes(`any_of`)&&!e.includes(`contains`)).map(([e])=>e)),_e={contains:`any_of`,not_contains:`none_of`};function resolveCanonicalOperator(e,t){let r=D[e];if(r){let t=`Unknown filter operator "${e}" — use ${r}`;throw new n.ValidationError(t,[{path:[`operator`],message:t}])}let i=normalizeOperator(e),a=_e[i];if(a&&ge.has(t)){let e=`Operator "${i}" is not valid for type "${t}" — use "${a}"`;throw new n.ValidationError(e,[{path:[`operator`],message:e}])}return i}function assertPropertyOperator(e,t,r){let i=resolveCanonicalOperator(e,t);if(!r.includes(i)){let i=`Operator "${e}" is not valid for property type "${t}". Valid operators: ${r.length?r.join(`, `):`(no operators registered for this type)`}.`;throw new n.ValidationError(i,[{path:[`operator`],message:i}])}return i}function assertRelativeDateValue(e){if(e.operator===`is_within`&&!isRelativeDateValue(e.value)){let e=`Operator "is_within" requires a relative-date value { amount: positive number, unit: days|weeks|months|years, direction: past|future }`;throw new n.ValidationError(e,[{path:[`value`],message:e}])}}const ve=/^(\d{4}-\d{2}-\d{2})(?:[T ](?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|[+-](?:(?:0\d|1[0-3])(?::[0-5]\d)?|14(?::00)?))?)?$/,ye=new Set([`is`,`is_not`,`less_than`,`less_or_equal`,`greater_than`,`greater_or_equal`]);function assertAbsoluteDateValue(e,t){if(t!==`date`||!ye.has(e.operator))return;let r=e.value;if(r==null||isDynamicValue(r)||typeof r==`string`&&isCastableDay(r))return;let i=`Filter on a date attribute expected a YYYY-MM-DD day, optionally followed by a time, received ${JSON.stringify(r)}`;throw new n.ValidationError(i,[{path:[`value`],message:i}])}function isCastableDay(e){let t=ve.exec(e)?.[1];return!t||t.startsWith(`0000-`)?!1:isCalendarDay(t)}function resolveComparandType(e){return e.type===`formula`&&e.returnType===`date`?`date`:resolveEffectiveFilterType(e)}function applyCanonicalForm(e,t,n){e.operator=t,canonicalizeFilterValue(e,n),assertRelativeDateValue(e),assertAbsoluteDateValue(e,n)}function assertDynamicValueForAttribute(e,t){if(!isDynamicValue(e.value))return;let r=e.value;if(r.dynamic===`actor`&&t!==`user`){let e=`actor token (@me) is only valid on user attributes, not "${t}"`;throw new n.ValidationError(e,[{path:[`value`],message:e}])}if(r.dynamic===`date`&&t!==`date`){let e=`date token (@today/@now) is only valid on date attributes, not "${t}"`;throw new n.ValidationError(e,[{path:[`value`],message:e}])}}const O=m.map(e=>`"${e}"`).join(`, `);function operatorList(e){return e.length?e.join(`, `):`(not filterable)`}function qualifyWithSchema(e){if(he.has(e.type))return e.properties}function locationPartsHint(e){return e===`location`?` A location is filtered on one of its parts: set "property" to one of ${O} and use a text operator (e.g. contains).`:``}function dottedPathHint(e,t,n){let r=` Dotted paths are not supported — `;if(n.type===`location`)return`${r}set "attribute" to "${e}" and "property" to ${isLocationFilterProperty(t)?`"${t}"`:`one of ${O}`}.`;let i=qualifyWithSchema(n);if(i){let n=i.definitions.map(e=>`"${e.name}"`).join(`, `);return`${r}set "attribute" to "${e}" and "property" to ${i.definitions.some(e=>e.name===t)?`"${t}"`:`one of ${n}`} to filter on the edge property.`}let a=attributeFilterTarget(n).operators;return`${r}${a.length?`set "attribute" to "${e}" and use one of ${a.join(`, `)}`:`"${e}" is not filterable`}; the full-text "query" parameter matches tokens by relevance, not values.`}function collectQualifiedRuleIssues(e,t){try{return validateQualifiedRule({...e},t),[]}catch(e){if(!(e instanceof n.ValidationError))throw e;return e.errors.map(e=>({...e,path:[...e.path]}))}}function validateQualifiedRule(e,t){if(typeof e.attribute!=`string`){let e=`A filter rule needs an attribute: filters are one combinator and a flat list of rules`;throw new n.ValidationError(e,[{path:[`attribute`],message:e}])}let r=t.attributes.find(t=>t.name===e.attribute),i=r?[]:systemColumnFilterTarget(e.attribute)?.operators??[];if(!r&&i.length===0){let[r,...i]=e.attribute.split(`.`),a=i.length>0?t.attributes.find(e=>e.name===r):void 0,o=a?dottedPathHint(r??``,i[0]??``,a):e.attribute.includes(`.`)?` Dotted paths are not supported — filter on the attribute name alone with a structured operator (contains, any_of, …); the full-text "query" parameter matches tokens by relevance, not values.`:``,s=`Unknown attribute: ${e.attribute}${o}`;throw new n.ValidationError(s,[{path:[`attribute`],message:s}])}if(e.quantifier!==void 0&&!e.property){let e=`quantifier is only valid on qualified edge rules (set "property")`;throw new n.ValidationError(e,[{path:[`quantifier`],message:e}])}if(!r){if(e.property)throw new n.ValidationError(`Cannot qualify system attribute "${e.attribute}"`,[{path:[`property`],message:`"${e.attribute}" is a system column, not a reference`}]);let t=E[e.attribute]??`text`,r=resolveCanonicalOperator(e.operator,t);if(!i.includes(r)){let t=`Operator "${e.operator}" is not valid for system attribute "${e.attribute}". Valid operators: ${i.join(`, `)}.`;throw new n.ValidationError(t,[{path:[`operator`],message:t}])}applyCanonicalForm(e,r,t);return}if(!e.property){assertDynamicValueForAttribute(e,r.type);let t=attributeFilterTarget(r).operators,i=resolveCanonicalOperator(e.operator,r.type);if(!t.includes(i)){let i=`Operator "${e.operator}" is not valid for attribute "${r.name}". Valid operators: ${operatorList(t)}.${locationPartsHint(r.type)}`;throw new n.ValidationError(i,[{path:[`operator`],message:i}])}applyCanonicalForm(e,i,resolveComparandType(r));return}if(r.type===`location`){if(e.quantifier!==void 0){let e=`quantifier is not valid on a location part — a location is one value, not a set of edges`;throw new n.ValidationError(e,[{path:[`quantifier`],message:e}])}if(!isLocationFilterProperty(e.property)){let t=`Property "${e.property}" is not a part of location "${e.attribute}". Valid parts: ${O}.`;throw new n.ValidationError(t,[{path:[`property`],message:t}])}assertDynamicValueForAttribute(e,`text`);let{operators:t}=locationPartFilterTarget(r.name,e.property);applyCanonicalForm(e,assertPropertyOperator(e.operator,`text`,t),`text`);return}if(!he.has(r.type))throw new n.ValidationError(`Cannot qualify ${r.type} attribute "${e.attribute}"`,[{path:[`property`],message:`Attribute "${e.attribute}" is not a reference type`}]);let a=r.properties;if(!a)throw new n.ValidationError(`Attribute "${e.attribute}" has no qualifyWith schema`,[{path:[`property`],message:`"${e.attribute}" has no qualifyWith`}]);let o=a.definitions.find(t=>t.name===e.property);if(!o)throw new n.ValidationError(`Property "${e.property}" not defined on "${e.attribute}".qualifyWith()`,[{path:[`property`],message:`Unknown property: ${e.property}`}]);let{operators:s}=edgePropertyFilterTarget(r.name,o);applyCanonicalForm(e,assertPropertyOperator(e.operator,o.type,s),o.type)}const be=r.z.array(r.z.string()).max(e.p.columnsPerTab),k=r.z.array(r.z.string().min(1)).max(e.p.columnsPerTab).refine(e=>new Set(e).size===e.length,{message:`Displayed attribute names must be unique`}),xe=r.z.object({attribute:r.z.string().describe(`Attribute to sort by`),direction:r.z.enum([`asc`,`desc`]).describe(`asc or desc`)}).strict(),A=r.z.array(xe).max(e.p.sortsPerTab),Se=r.z.object({amount:r.z.number().describe(`Count`),unit:r.z.enum([`days`,`weeks`,`months`,`years`]).describe(`Unit`),direction:r.z.enum([`past`,`future`]).describe(`Past or future`)}).strict(),Ce=r.z.object({value:r.z.number().nullable().describe(`Amount`),code:r.z.array(r.z.string()).optional().describe(`Currency codes`)}).strict(),we=r.z.object({phoneNumber:r.z.string().nullable().describe(`Number`),countryCode:r.z.string().optional().describe(`ISO country code`)}).strict(),Te=r.z.discriminatedUnion(`dynamic`,[r.z.object({dynamic:r.z.literal(`actor`).describe(`Resolved at filter time`),ref:r.z.literal(`current`).describe(`The current actor`)}).strict(),r.z.object({dynamic:r.z.literal(`date`).describe(`Resolved at filter time`),anchor:r.z.enum([`today`,`now`]).describe(`Anchor`)}).strict()]),Ee=r.z.object({month:r.z.number().describe(`1-12`),day:r.z.number().describe(`Day`)}).strict(),De=r.z.union([r.z.string(),r.z.number(),r.z.boolean(),r.z.array(r.z.string()),Se,Ce,we,Ee,Te,r.z.null()]),Oe=r.z.enum([`is`,`is_not`,`contains`,`not_contains`,`starts_with`,`ends_with`,`is_empty`,`is_not_empty`,`less_than`,`greater_than`,`less_or_equal`,`greater_or_equal`,`is_within`,`on_day_month`,`any_of`,`none_of`],{error:e=>{let t=e.input,n=typeof t==`string`?D[t]:void 0;return n?`Unknown filter operator "${t}" — use ${n}`:void 0}}),ke=r.z.object({attribute:r.z.string().describe(`Attribute to filter on`),property:r.z.string().optional().describe(`Qualified edge property`),quantifier:r.z.enum([`any`,`none`]).optional().describe(`For a multi-value attribute`),operator:Oe.describe(`Comparison`),value:De.describe(`Comparison value, by attribute type`)}).strict(),Ae=r.z.array(ke).max(e.p.filterRulesPerTab),j=r.z.object({combinator:r.z.enum([`and`,`or`]).describe(`Match every rule or any rule`),rules:Ae.describe(`The rules`)}).strict(),M=r.z.object({object:r.z.string().optional().describe(`Every record of this object`),relation:r.z.string().optional().describe(`Records linked through this relation`)}).strict().superRefine((e,t)=>{e.object===void 0&&e.relation===void 0&&t.addIssue({code:`custom`,message:`Collection source must define an object, a relation, or both`})}).transform(e=>e.relation===void 0?{object:e.object}:e.object===void 0?{relation:e.relation}:{object:e.object,relation:e.relation}),N=r.z.object({source:M,filters:j.optional(),sorts:A.optional(),limit:r.z.number().int().nonnegative().optional()}).strict();var RecordQuery=class{constructor(e){this.state=e}with(e){return new this.constructor({...this.state,...e})}rule(e,t,n){return this.with({rules:[...this.state.rules,{attribute:e,operator:t,value:n}]})}eq(e,t){return this.rule(e,`is`,t)}neq(e,t){return this.rule(e,`is_not`,t)}gt(e,t){return this.rule(e,`greater_than`,t)}gte(e,t){return this.rule(e,`greater_or_equal`,t)}lt(e,t){return this.rule(e,`less_than`,t)}lte(e,t){return this.rule(e,`less_or_equal`,t)}contains(e,t){return this.rule(e,`contains`,t)}notContains(e,t){return this.rule(e,`not_contains`,t)}startsWith(e,t){return this.rule(e,`starts_with`,t)}endsWith(e,t){return this.rule(e,`ends_with`,t)}in(e,t){return this.rule(e,`any_of`,t)}notIn(e,t){return this.rule(e,`none_of`,t)}isEmpty(e){return this.rule(e,`is_empty`,null)}isNotEmpty(e){return this.rule(e,`is_not_empty`,null)}where(...e){return this.with({rules:[...this.state.rules,...e.map(e=>({...e}))]})}or(){return this.with({combinator:`or`})}orderBy(e,t=`asc`){return this.with({sorts:[...this.state.sorts,{attribute:e,direction:t}]})}limit(e){return this.with({limit:e})}offset(e){return this.with({offset:e})}search(e){return this.with({search:e})}related(e){return this.with({scope:{kind:`related`,relation:e}})}relatedFrom(e){return this.with({scope:{kind:`relatedFrom`,relation:e}})}toDefinition(){let{object:e,scope:t,rules:n,combinator:r,sorts:i,limit:a}=this.state;return{source:t?.kind===`related`?{relation:t.relation}:t?.kind===`relatedFrom`?{object:e,relation:t.relation}:{object:e},...n.length>0?{filters:{combinator:r,rules:n.map(e=>({...e}))}}:{},...i.length>0?{sorts:i.map(e=>({...e}))}:{},...a===void 0?{}:{limit:a}}}};function query(e){return new RecordQuery({object:typeof e==`string`?e:e.build().name,combinator:`and`,rules:[],sorts:[]})}const P=[`day`,`week`,`month`,`quarter`,`year`],F=`$query`,I=`$record`;function createInput(e){return Object.freeze({...e,optional:()=>createInput({...e,isOptional:!0}),inSection:t=>createInput({...e,section:t}),showWhen:(t,n)=>createInput({...e,when:{key:t,...n}}),many:()=>createInput({...e,isMany:!0,schema:r.z.array(e.schema).min(1)})})}function objectNameOf(e){return e===void 0||typeof e==`string`?e:e.build().name}function scalar(e,t,n){return createInput({kind:e,of:objectNameOf(n),isOptional:!1,isMany:!1,schema:t})}function name(){return r.z.string().min(1)}const L={object:e=>scalar(`object`,name(),e),attribute:(e,t)=>createInput({kind:`attribute`,of:objectNameOf(e),options:t,isOptional:!1,isMany:!1,schema:name()}),query:e=>scalar(`query`,N,e),record:e=>scalar(`record`,name(),e),agent:()=>scalar(`agent`,name()),routine:()=>scalar(`routine`,name()),view:()=>scalar(`view`,name()),url:()=>scalar(`url`,r.z.url().refine(e=>/^https?:\/\//.test(e),`Only http(s) links`)),emailCategory:()=>scalar(`emailCategory`,name()),enum:e=>createInput({kind:`enum`,isOptional:!1,isMany:!1,schema:r.z.enum(e)}),text:()=>scalar(`text`,name()),number:()=>scalar(`number`,r.z.number()),boolean:()=>scalar(`boolean`,r.z.boolean()),period:()=>scalar(`period`,r.z.enum(P))},R={size:{w:4,h:4},minWidth:3,height:`flexible`,minHeight:3,maxHeight:10},z=defineBlock({name:`artifact_preview`,label:`Preview`,icon:`eye`,family:`context`,contexts:[`record`],layout:{size:{w:6,h:8},minWidth:4,height:`flexible`,minHeight:4,maxHeight:20},inputs:{}}),B=[`number`,`currency`],V=[`status`,`select`,`user`,`relation`,`date`],H=[`bar`,`line`,`area`,`donut`,`funnel`,`treemap`,`calendar`];function measureIssue({measure:e,attribute:t}){return e===`count`?t===void 0?void 0:{input:`attribute`,message:`count measures records; it takes no attribute`}:t===void 0?{input:`attribute`,message:`${String(e)} needs a number or currency attribute`}:void 0}function requires(e,t,n){return e[t]!==void 0&&e[n]===void 0?{input:t,message:`${t} needs ${n}`}:void 0}function together(e,t,n){return requires(e,t,n)??requires(e,n,t)}function kindIssue(e){let{kind:t,by:n,byBucket:r,by2:i,measure:a}=e;if(i!==void 0&&i===n)return{input:`by2`,message:`by2 must differ from by`};if((t===`donut`||t===`funnel`)&&i!==void 0)return{input:`kind`,message:`a ${String(t)} splits one grouping (by), and no second`};if(t===`funnel`&&a!==`count`&&a!==`sum`)return{input:`kind`,message:`a funnel adds stages up: its measure is count or sum`};if(t===`area`&&i===void 0)return{input:`kind`,message:`an area stacks a second grouping (by2); one series is a line`};if(t===`treemap`&&(n===void 0||i!==void 0))return{input:`kind`,message:`a treemap needs one grouping (by), and no second`};if(t===`calendar`&&(r!==`day`||i!==void 0))return{input:`kind`,message:`a calendar needs a date grouping by day, and no second`}}function measuredInputs(){return{query:L.query(),measure:L.enum(t.n).inSection(`data`),attribute:L.attribute(F,{types:B}).optional().showWhen(`measure`,{not:[`count`]}),label:L.text().optional()}}function metricComparePeriod(e){if(e.period)return e.period;if(!e.trendBucket)return`month`;let t=P.indexOf(e.trendBucket);return P[Math.min(t+1,P.length-1)]??`month`}function comparedSpanIssue(e){let{trendBucket:t,compare:n}=e;if(n===void 0||typeof t!=`string`)return;let r=t;if(r===P.at(-1))return{input:`compare`,message:`compare needs a trendBucket finer than year`};let i=metricComparePeriod({trendBucket:r,period:e.period});return P.indexOf(i)>P.indexOf(r)?void 0:{input:`period`,message:`period must be wider than trendBucket (unset, it is one step above)`}}const U=defineBlock({name:`metric`,label:`Indicateur`,icon:`trending-up`,family:`data`,contexts:[`page`,`record`,`display`],layout:{size:{w:3,h:2},minWidth:3,height:`fit`,maxHeight:4,figure:!0},inputs:{...measuredInputs(),trend:L.attribute(F,{types:[`date`]}).optional().inSection(`display`),trendBucket:L.period().optional().showWhen(`trend`),compare:L.enum([`previous_period`]).optional(),period:L.period().optional().showWhen(`compare`),target:L.number().optional()},refine:e=>measureIssue(e)??together(e,`trend`,`trendBucket`)??requires(e,`period`,`compare`)??comparedSpanIssue(e)??(e.target!==void 0&&e.target<=0?{input:`target`,message:`target must be above zero`}:void 0)}),W=defineBlock({name:`chart`,label:`Graphique`,icon:`chart-bar`,family:`data`,contexts:[`page`,`record`,`display`],layout:{size:{w:4,h:6},minWidth:4,height:`flexible`,minHeight:4,maxHeight:12},inputs:{...measuredInputs(),kind:L.enum(H),by:L.attribute(F,{types:V}).optional(),byBucket:L.period().optional().inSection(`data`).showWhen(`by`),by2:L.attribute(F,{types:V}).optional().showWhen(`by`),by2Bucket:L.period().optional().inSection(`data`).showWhen(`by2`)},refine:e=>measureIssue(e)??requires(e,`byBucket`,`by`)??requires(e,`by2`,`by`)??requires(e,`by2Bucket`,`by2`)??kindIssue(e)}),G=defineBlock({name:`agenda`,label:`Agenda`,icon:`calendar`,family:`data`,contexts:[`page`,`record`,`display`],layout:R,inputs:{query:L.query(),attribute:L.attribute(F,{types:[`date`]}),next:L.number().optional(),yearly:L.boolean().optional(),label:L.text().optional()}}),K=defineBlock({name:`card`,label:`Fiche`,icon:`user-square`,family:`data`,contexts:[`page`,`record`,`display`],layout:{size:{w:4,h:4},minWidth:3,height:`fit`,maxHeight:10},inputs:{object:L.object().optional(),record:L.record().optional(),fields:L.attribute(I).many().optional()},refine:(e,t)=>requires(e,`record`,`object`)??(t===`page`&&e.record===void 0?{input:`record`,message:`A card outside a record shows a chosen record: content.card(object).record(id)`}:void 0)}),je=defineBlock({name:`text_block`,label:`Texte`,icon:`type-text`,family:`layout`,contexts:[`page`,`record`,`display`],layout:{size:{w:12,h:2},minWidth:3,height:`fit`,maxHeight:16},inputs:{markdown:L.text()}}),Me=defineBlock({name:`heading`,label:`Titre`,icon:`type-text`,family:`layout`,contexts:[`page`,`record`],layout:{size:{w:12,h:1},minWidth:6,height:`fit`,maxHeight:3},inputs:{title:L.text(),description:L.text().optional(),icon:L.text().optional()}}),Ne=defineBlock({name:`inbox`,label:`Boîte de réception`,icon:`inbox`,family:`people`,contexts:[`page`],layout:R,inputs:{kinds:L.enum(t.s).inSection(`data`).many().optional(),limit:L.number().optional()}}),Pe=defineBlock({name:`meetings_upcoming`,label:`Réunions à venir`,icon:`video`,family:`people`,contexts:[`page`],layout:R,inputs:{}}),Fe=defineBlock({name:`mailbox`,label:`E-mails`,icon:`envelope`,family:`people`,contexts:[`page`],layout:R,inputs:{category:L.emailCategory().optional(),important:L.boolean().optional().inSection(`data`),unread:L.boolean().optional().inSection(`data`),limit:L.number().optional(),label:L.text().optional()},refine:({limit:e})=>e===void 0||Number.isInteger(e)&&e>=1&&e<=50?void 0:{input:`limit`,message:`limit is a whole number from 1 to 50`}}),q=defineBlock({name:`record_links`,label:`Bubble`,icon:`share`,family:`context`,contexts:[`record`,`page`],layout:{size:{w:6,h:8},minWidth:6,height:`flexible`,minHeight:6,maxHeight:16},inputs:{center:L.enum([`record`,`me`]).optional().inSection(`data`),object:L.object().optional(),record:L.record().optional(),depth:L.enum([`1`,`2`]).optional()},refine:(e,t)=>requires(e,`record`,`object`)??(t===`page`&&e.center!==`me`&&e.record===void 0?{input:`record`,message:`Links outside a record centre on a chosen record or on the viewer: { object, record } or { center: "me" }`}:void 0)}),Ie={name:`bubble`,type:`custom`,extension:q.name,placement:`main`,label:q.label,icon:q.icon,parameters:{}},Le=[z,U,W,G,K,je,Me,Ne,Pe,Fe,q],Re=new Set([`name`,`label`,`icon`,`family`,`contexts`,`inputs`,`parameters`,`layout`,`refine`]),ze=Le;var ContentExtensionRegistry=class{constructor(){this.extensions=new Map,this.seed()}register(e){let t=Array.isArray(e)?e:[e],r=new Set;t.forEach((e,t)=>{if(this.prepare(e,t),r.has(e.name))throw new n.DuplicateError(`content extension`,e.name);r.add(e.name)});for(let e of t)this.extensions.set(e.name,e);return this}prepare(e,t){let r=[`extensions`,String(t)],reject=e=>{throw new n.ValidationError(e,[{path:r,message:e}])};if((typeof e!=`object`||!e||Array.isArray(e))&&reject(`Expected a content extension declaration`),Object.keys(e).some(e=>!Re.has(e))&&reject(`Expected only ${[...Re].join(`, `)}`),(typeof e.name!=`string`||e.name.trim().length===0)&&reject(`API name must not be empty`),(!Array.isArray(e.contexts)||e.contexts.length===0||e.contexts.some(e=>!b.includes(e)))&&reject(`contexts must be a non-empty list of ${b.join(`, `)}`),typeof e.parameters?.safeParse!=`function`&&reject(`parameters must be a Zod schema`),this.extensions.has(e.name))throw new n.DuplicateError(`content extension`,e.name)}get(e){return this.extensions.get(e)}has(e){return this.extensions.has(e)}getAll(){return[...this.extensions.values()]}get size(){return this.extensions.size}clear(){this.extensions.clear(),this.seed()}seed(){for(let e of ze)this.extensions.set(e.name,e)}};const Be=new ContentExtensionRegistry,J=[3,4,6,8,9,12];function overlaps(e,t){return e.x<t.x+t.w&&t.x<e.x+e.w&&e.y<t.y+t.h&&t.y<e.y+e.h}function findGridViolation(e,t={}){let n=Object.entries(e);for(let[e,{x:t,y:r,w:i,h:a}]of n){if(![t,r,i,a].every(Number.isInteger))return{path:[e],message:`Block "${e}" needs integer grid coordinates`};if(t<0||r<0||i<1||a<1)return{path:[e],message:`Block "${e}" needs x >= 0, y >= 0, w >= 1 and h >= 1`};if(t+i>12)return{path:[e],message:`Block "${e}" overflows the 12-column grid (x + w = ${t+i})`}}let r=n.filter(([e])=>t.exempt?.has(e)!==!0);for(let[e,[t,n]]of r.entries())for(let[i,a]of r.slice(e+1))if(overlaps(n,a))return{path:[i],message:`Blocks "${t}" and "${i}" overlap`}}function groupedMembers(e){let t=new Set(e.filter(e=>e.type!==`group`).map(e=>e.name)),n=new Set;for(let r of e)if(r.type===`group`)for(let e of r.members)t.has(e)&&n.add(e);return n}function memberlessGroups(e){let t=new Set(e.filter(e=>e.type!==`group`).map(e=>e.name));return new Set(e.flatMap(e=>e.type===`group`&&!e.members.some(e=>t.has(e))?[e.name]:[]))}function groupSizeMessage(t){return t>=2&&t<=e.p.membersPerGroup?void 0:`A group holds 2 to ${e.p.membersPerGroup} blocks, not ${t}`}function findGroupViolation(e){let t=new Map(e.map(e=>[e.name,e])),n=new Map;for(let r of e)if(r.type===`group`)for(let e of r.members){let i=t.get(e);if(i===void 0)return{path:[r.name],message:`Group "${r.name}" names "${e}", which is not a content of this page`};if(i.type===`group`)return{path:[r.name],message:`Group "${r.name}" cannot hold the group "${e}"`};let a=n.get(e);if(a!==void 0)return{path:[r.name],message:a===r.name?`Group "${r.name}" names "${e}" twice`:`"${e}" already belongs to the group "${a}"`};n.set(e,r.name)}}function boundsOf(e){let{minHeight:t,maxHeight:n}=e;return t!==void 0&&n!==void 0?`${t} to ${n} rows`:t===void 0?`at most ${String(n)} rows`:`at least ${t} rows`}function findRowLimitViolation(t){let n=Object.entries(t).find(([,t])=>t.y+t.h>e.p.pageRows);if(n===void 0)return;let[r,i]=n;return{path:[r],message:`Block "${r}" ends at row ${i.y+i.h}, past the page's ${e.p.pageRows} rows`}}function cellViolation(e,t,n){if(!J.includes(t.w))return{path:[e],message:`Block "${e}" width ${t.w} is not one of ${J.join(`, `)}`};if(t.w<n.minWidth)return{path:[e],message:`Block "${e}" width ${t.w} is below its minimum width ${n.minWidth}`};if(n.height===`flexible`&&(n.minHeight!==void 0&&t.h<n.minHeight||n.maxHeight!==void 0&&t.h>n.maxHeight))return{path:[e],message:`Block "${e}" height ${t.h} is outside its bounds (${boundsOf(n)})`}}function sharesRows(e,t){return e.y<t.y+t.h&&t.y<e.y+e.h}function findLayoutRuleViolation(e,t,n,r=new Set){let i=findRowLimitViolation(e);if(i!==void 0)return i;let a=groupedMembers(t),o=Object.entries(e).filter(([e])=>!a.has(e));for(let[e,t]of o){if(r.has(e))continue;let i=cellViolation(e,t,n(e));if(i!==void 0)return i}let[s,c]=o.filter(([e])=>!r.has(e)&&n(e).height===`fill`);if(s!==void 0&&c!==void 0)return{path:[c[0]],message:`Only one block may fill the page: "${s[0]}" and "${c[0]}" both do`};if(s===void 0)return;let[l,u]=s,d=o.find(([e,t])=>e!==l&&sharesRows(t,u));if(d!==void 0)return{path:[l],message:`Block "${l}" fills the page and must be alone in its rows; "${d[0]}" shares them`}}function findRelationAttribute(e,t){return e.attributes.find(e=>e.name===t&&e.type===`relation`)}function relationAcceptsObject(e,t){return e.targets.some(e=>e.object===t||e.object===`*`)}function singleRelationTarget(e){let[t,...n]=e.targets;return t&&n.length===0&&t.object!==`*`?t.object:void 0}function requireSingleRelationTarget(e,t=[e.name,`targets`]){let r=singleRelationTarget(e);if(r===void 0){let r=`Relation "${e.name}" requires one concrete collection target`;throw new n.ValidationError(r,[{path:t,message:r}])}return r}function collectionSourceAddress(e){return e.relation===void 0?{kind:`object`,object:e.object}:e.object===void 0?{kind:`related`,relation:e.relation}:{kind:`relatedFrom`,object:e.object,relation:e.relation}}function collectionSourceAddressOf(e){if(!e||typeof e!=`object`)return;let t=`object`in e?e.object:void 0,n=`relation`in e?e.relation:void 0;if(typeof t==`string`&&typeof n==`string`)return{kind:`relatedFrom`,object:t,relation:n};if(typeof t==`string`&&n===void 0)return{kind:`object`,object:t};if(typeof n==`string`&&t===void 0)return{kind:`related`,relation:n}}function sourcedAttributeOf(e,t){if(t.type===`richtext`)return typeof t.attribute==`string`&&e!==void 0?{object:e,attribute:t.attribute}:void 0;if(t.type!==`collection`)return;let n=collectionSourceAddressOf(t.source);if(n?.kind===`related`)return e===void 0?void 0:{object:e,attribute:n.relation};if(n?.kind===`relatedFrom`)return{object:n.object,attribute:n.relation}}function requireRecordContentContext(e,t,r){if(t!==`record`){let i=`Content "${e}" requires record context. In ${t===`page`?`a standalone page`:`a collection view`} only a collection that lists a whole object, or a custom content that does not require a record, is allowed.`;throw new n.ValidationError(i,[{path:r,message:i}])}}function resolveContentNavigation(e){let t=e.openMode??`page`;return{openMode:t,createMode:e.createMode??t}}function resolveCollectionActions(e,t){return[...new Set(t)].filter(t=>e.actions===void 0||e.actions.includes(t))}const Ve={collection:[`page`,`record`,`display`],group:[`page`,`record`],form:[`record`],activity:[`record`],richtext:[`record`],documents:[`record`],forms:[`record`],emails:[`record`],meetings:[`record`]},Y={collection:{size:{w:12,h:8},minWidth:6,height:`flexible`,minHeight:4,maxHeight:20},activity:{size:{w:12,h:8},minWidth:6,height:`flexible`},page:{size:{w:12,h:8},minWidth:6,height:`flexible`},group:{size:{w:6,h:4},minWidth:6,height:`flexible`}};function contentReadObjects(e,t,n){if(e.type!==`group`)return[...n(e)];let r=new Set;for(let i of e.members){let e=t.get(i);if(e!==void 0&&e.type!==`group`)for(let t of n(e))r.add(t)}return[...r]}function contentPlacementContexts(e,t){return e.type===`custom`?t?.contexts:e.type===`page`||e.type===`collection`&&collectionSourceAddress(e.source).kind!==`object`?[`record`]:Ve[e.type]}function requireContentPlacement(e,t,n,r,i){let a=contentPlacementContexts(e,t);a&&!a.includes(hostPlacementContext(r))&&(requireRecordContentContext(n,r,i),reject(i,`Content "${n}" cannot be placed in a record view or a record page`))}function hostPlacementContext(e){return e===`record`?`record`:`page`}function contentContextOf(e){return e.context===`page`&&e.object!==void 0?`record`:e.context}function violationOf(e,t,r,i){if(!(e instanceof n.SchemaError))throw e;let a=e instanceof n.ValidationError?e.errors[0]:void 0;return{key:JSON.stringify([t,r,e.code,e.message]),contentName:r,path:a?.path??i,message:e.message,code:e.code,error:e}}const He=new Map(getSystemAttributeList().map(e=>[e.name,e]));function reject(e,t){throw new n.ValidationError(t,[{path:e,message:t}])}function requireName(e,t){e.trim().length===0&&reject(t,`API name must not be empty`)}function indexUnique(e,t,r){let i=new Map;return e.forEach((e,a)=>{if(requireName(e.name,[...r,String(a),`name`]),i.has(e.name))throw new n.DuplicateError(t,e.name);i.set(e.name,e)}),i}function capped(e,t){let n=e.slice(0,t).join(`, `);return e.length>t?`${n} … and ${e.length-t} more`:n}function attributeInventory(e,t){return t.length===0?`Object "${e}" has no attributes yet.`:`Attributes of "${e}": ${capped(t,30)}`}function requireAttribute(e,t,n,r,i){if(requireName(t,n),!e)return;let a=e.attributes?.get(t)??He.get(t);if(!a){if(!e.attributes)return;let r=attributeInventory(e.name,[...e.attributes.keys()]);reject(n,`Unknown attribute "${e.name}.${t}". ${r}${i?.()??``}`)}let o=r===void 0?[]:[r].flat();return o.length>0&&!o.includes(a.type)&&reject(n,`Attribute "${e.name}.${t}" must have type ${o.join(` or `)}`),a}function collectContentViewCatalogue(e,t=`authoring`){let r=e.mode??`published`,i=new Map;e.objects.forEach((e,t)=>{if(requireName(e.name,[`objects`,String(t),`name`]),i.has(e.name))throw new n.DuplicateError(`object`,e.name);i.set(e.name,{name:e.name,attributes:indexUnique(e.attributes,`attribute`,[`objects`,String(t),`attributes`])})});let a=new Set;(e.reservedObjects??[]).forEach((e,t)=>{let n=[`reservedObjects`,String(t)];requireName(e,n),!i.has(e)&&(r!==`draft`&&reject(n,`Unresolved reserved object "${e}"`),a.add(e),i.set(e,{name:e}))});let o=indexUnique(e.extensions??[],`extension`,[`extensions`]);function resolveObject(e,t){requireName(e,t);let n=i.get(e);return n||reject(t,`Unknown object "${e}"`),n}function inverseAddresses(e){let t=[];for(let[n,r]of i)if(n!==e)for(let i of r.attributes?.values()??[])i.type===`relation`&&relationAcceptsObject(i,e)&&t.push(`relatedFrom("${n}", "${i.name}")`);return t.sort().slice(0,3)}let authoringSchemaWith=n=>r===`draft`?draftContentViewDefinitionSchemaFor():contentViewDefinitionSchemaFor({traits:t===`structural`?null:(e,t)=>layoutTraitsOf(e,o,t),viewerFiltered:e.viewerFiltered,...n===void 0?{}:{statics:n}}),s=authoringSchemaWith(),c=r===`draft`||t===`structural`?s:contentViewDefinitionSchemaFor({traits:null,viewerFiltered:e.viewerFiltered}),schemaFor=t=>{if(e.authoringViews!==void 0&&!e.authoringViews.has(t))return c;let n=e.staticsOf?.(t);return n===void 0||n.size===0?s:authoringSchemaWith(n)},l=new Map,u=new Map,d=[],f=[];function parseView(e,t,r){let i=schemaFor(r).safeParse(e);if(!i.success)throw new n.ValidationError(`Invalid content view`,i.error.issues.map(e=>({path:[...t,...e.path.map(String)],message:e.message,code:e.code})));let a=i.data;requireName(a.name,[...t,`name`]);let o=a.object??``,s=l.get(o)??new Set;if(s.has(a.name))throw new n.DuplicateError(`view`,`${o}.${a.name}`);if(s.add(a.name),l.set(o,s),a.context!==`page`&&a.default){let e=u.get(a.object)??new Set;if(e.has(a.context))throw new n.DuplicateError(`default view`,`${a.object}.${a.context}`);e.add(a.context),u.set(a.object,e)}return a}return e.views.forEach((e,t)=>{let n=[`views`,String(t)],r=e,i=`${String(r?.object??`?`)}.${String(r?.name??t)}`,a,s;try{a=parseView(e,n,t),s=a.object===void 0?void 0:resolveObject(a.object,[...n,`object`])}catch(e){d.push(violationOf(e,i,null,n));return}a.contents.forEach((e,t)=>{let r=[...n,`contents`,String(t)];try{requireName(e.name,[...r,`name`]),validateContent(e,r,s,contentContextOf(a),o,resolveObject,inverseAddresses)}catch(t){d.push(violationOf(t,i,e.name,r))}}),f.push(a)}),f.forEach((t,r)=>{t.contents.forEach((i,a)=>{if(i.type!==`page`)return;let o=[`views`,String(r),`contents`,String(a),`page`],s=f.find(e=>e.context===`page`&&e.object===i.page.object&&e.name===i.page.name),c=t.context===`page`?`Content "${i.name}" cannot reference a page from a page`:t.object===i.page.object?s||e.complete!==!0?void 0:`Unknown page "${i.page.object}.${i.page.name}"`:`Content "${i.name}" must reference a page of "${String(t.object)}", not of "${i.page.object}"`;c!==void 0&&d.push(violationOf(new n.ValidationError(c,[{path:o,message:c}]),`${String(t.object)}.${t.name}`,i.name,o))})}),{views:f,unresolvedObjects:[...a].sort(),violations:d}}function validateStoredViews(e){let t=collectContentViewCatalogue(e,`structural`).violations[0];if(t)throw t.error}function validateContentViewCatalogue(e){let{views:t,unresolvedObjects:n,violations:r}=collectContentViewCatalogue(e),i=r[0];if(i)throw i.error;return{views:t,unresolvedObjects:n}}function resolveStoredQuery(e,t,n,{owner:r,requireRecord:i,resolveObject:a,inverseAddresses:o}){let s=collectionSourceAddress(e.source),c,l;if(s.kind===`object`)c=a(s.object,[...t,`source`,`object`]);else if(s.kind===`related`){i();let e=[...t,`source`,`relation`],hint=()=>{if(!r)return``;let e=o(r.name);return e.length===0?``:`. Records pointing at "${r.name}" are addressed from the other side: ${e.join(`, `)}`},n=requireAttribute(r,s.relation,e,`relation`,hint);n?.type===`relation`&&(l=n,c=a(requireSingleRelationTarget(n,e),e))}else{i(),c=a(s.object,[...t,`source`,`object`]);let o=[...t,`source`,`relation`],l=requireAttribute(c,s.relation,o,`relation`);if(l?.type===`relation`&&r&&!relationAcceptsObject(l,r.name)){let e=l.targets.map(e=>`"${e.object}"`).join(`, `);reject(o,`Relation "${s.object}.${s.relation}" targets ${e}, not "${r.name}"`)}e.filters?.combinator===`or`&&reject([...t,`filters`,`combinator`],`${n} addresses "${s.object}" from the far side, so its filters must use the "and" combinator`)}return e.sorts?.forEach((e,n)=>requireAttribute(c,e.attribute,[...t,`sorts`,String(n),`attribute`])),e.filters?.rules.forEach((e,n)=>requireAttribute(c,e.attribute,[...t,`filters`,`rules`,String(n),`attribute`])),{target:c,relationAttribute:l}}function validateBlockReferences(e,t,n,r){let i=Object.entries(e.inputs),a;for(let[o,s]of i){let i=t[o];s.kind===`query`&&i!==void 0&&(a=resolveStoredQuery(i,[...n,o],`Block "${e.name}"`,r).target)}function attributeScope(o){if(o===void 0)return;if(o===`$query`)return a;if(o!==`$record`)return r.resolveObject(o,n);let s=i.find(([,e])=>e.kind===`object`)?.[0],c=s===void 0?void 0:t[s];return typeof c==`string`?r.resolveObject(c,[...n,s??`object`]):(r.owner||reject(n,`Block "${e.name}" names attributes, so it needs an object or a record host`),r.owner)}for(let[e,r]of i){let i=t[e];if(r.kind!==`attribute`||i===void 0)continue;let a=attributeScope(r.of);(Array.isArray(i)?i:[i]).forEach((t,o)=>{if(typeof t!=`string`)return;let s=Array.isArray(i)?[...n,e,String(o)]:[...n,e];requireAttribute(a,t,s,r.options?.types)})}for(let[r,a]of i){let i=a.when?.key,o=i===void 0?void 0:e.inputs[i],s=i===void 0?void 0:t[i];a.kind===`period`&&t[r]!==void 0&&o?.kind===`attribute`&&typeof s==`string`&&requireAttribute(attributeScope(o.of),s,[...n,i??r],[`date`])}}function validateContent(e,t,r,i,a,o,s){function requireRecord(){requireRecordContentContext(e.name,i,t)}let c={owner:r,requireRecord,resolveObject:o,inverseAddresses:s},l=hostPlacementContext(i);if(e.type===`custom`){let r=a.get(e.extension);r||reject([...t,`extension`],`Unknown extension "${e.extension}"`),contentPlacementContexts(e,r)?.includes(l)||reject([...t,`extension`],`${e.extension} cannot be placed here`);let i=r.parameters.safeParse(structuredClone(e.parameters??{}));if(!i.success)throw new n.ValidationError(`Invalid extension parameters`,i.error.issues.map(e=>({path:[...t,`parameters`,...e.path.map(String)],message:e.message,code:e.code})));let o=i.data,s=r.refine?.(o,l);s&&reject([...t,`parameters`,s.input],s.message),validateBlockReferences(r,o,[...t,`parameters`],c);return}if(requireContentPlacement(e,void 0,e.name,i,t),e.type!==`page`&&e.type!==`group`){if(e.type===`collection`){let{target:n,relationAttribute:r}=resolveStoredQuery(e,t,`Collection "${e.name}"`,c);e.columns?.forEach((e,i)=>{let a=[...t,`columns`,String(i)];if(typeof e==`string`){requireAttribute(n,e,a);return}let o=[...a,`relationProperty`];r||reject(o,`Relation property columns require a relation source`),r.properties?.definitions.some(t=>t.name===e.relationProperty)||reject(o,`Unknown relation property "${e.relationProperty}"`)}),e.displayAttributes?.forEach((e,r)=>requireAttribute(n,e,[...t,`displayAttributes`,String(r)])),e.descriptionAttribute!==void 0&&requireAttribute(n,e.descriptionAttribute,[...t,`descriptionAttribute`]),e.layout===`kanban`&&e.groupByAttribute!==void 0&&requireAttribute(n,e.groupByAttribute,[...t,`groupByAttribute`]);return}switch(e.type){case`form`:e.groups.forEach((e,n)=>{let i=[...t,`groups`,String(n)];requireName(e.name,[...i,`name`]),e.fields.forEach((e,t)=>requireAttribute(r,e.attribute,[...i,`fields`,String(t),`attribute`]))});break;case`richtext`:requireAttribute(r,e.attribute,[...t,`attribute`],`richtext`),e.titleAttribute!==void 0&&requireAttribute(r,e.titleAttribute,[...t,`titleAttribute`],`text`);break;case`emails`:case`meetings`:e.emailAttributes.forEach((e,n)=>requireAttribute(r,e,[...t,`emailAttributes`,String(n)],`text`));break;case`documents`:e.relations?.forEach((e,n)=>requireAttribute(r,e,[...t,`relations`,String(n)],`relation`));break;case`forms`:e.objectName!==void 0&&o(e.objectName,[...t,`objectName`]);break;case`activity`:break;default:reject(t,`Unknown content type: ${String(e)}`)}}}const X=Object.freeze({size:Object.freeze({w:4,h:4}),minWidth:3,height:`flexible`,minHeight:2,figure:!1});function resolveLayout(e){return e===void 0?X:{size:e.size??X.size,minWidth:e.minWidth??X.minWidth,height:e.height??X.height,...e.minHeight===void 0?{}:{minHeight:e.minHeight},...e.maxHeight===void 0?{}:{maxHeight:e.maxHeight},figure:e.figure??!1}}function baseTraitsOf(e,t){return e.type===`custom`?resolveLayout(t.get(e.extension)?.layout):e.type in Y?resolveLayout(Y[e.type]):X}function widthCovering(e){return J.find(t=>t>=e)??12}function boundOf(e,t){let n=e.filter(e=>e!==void 0);return n.length===0?void 0:t(...n)}function groupTraitsOf(e){if(e.length===0)return resolveLayout(Y.group);let sum=t=>e.reduce((e,n)=>e+t(n),0),t={w:widthCovering(sum(e=>e.size.w)),h:Math.max(...e.map(e=>e.size.h))},n=widthCovering(sum(e=>e.minWidth)),r=e.every(e=>e.figure);if(e.every(e=>e.height===`fit`)){let i=boundOf(e.map(e=>e.maxHeight),Math.max);return{size:t,minWidth:n,height:`fit`,...i===void 0?{}:{maxHeight:i},figure:r}}let i=e.filter(e=>e.height!==`fit`),a=boundOf(i.map(e=>e.minHeight),Math.max),o=boundOf(i.map(e=>e.maxHeight),Math.min),s=o===void 0?void 0:Math.max(o,a??o);return{size:t,minWidth:n,height:`flexible`,...a===void 0?{}:{minHeight:a},...s===void 0?{}:{maxHeight:s},figure:r}}function layoutTraitsOf(e,t,n){let r=e.type===`group`?groupTraitsOf(e.members.flatMap(e=>{let r=n?.get(e);return r===void 0||r.type===`group`?[]:[layoutTraitsOf(r,t)]})):baseTraitsOf(e,t);return e.height===void 0?r:{...r,height:e.height}}function pageTraitsOf(e,t){return n=>{let r=e.get(n);return r?layoutTraitsOf(r,t,e):X}}const Ue=1e4;function isPlainJsonObject(e){let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null&&t.constructor?.name===`Object`}function addJsonIssue(e,t,n=[]){e.addIssue({code:`custom`,message:t,path:n})}function pushJsonArrayChildren(e,t,n,r){for(let n of Reflect.ownKeys(e))if(n!==`length`){if(n===`__proto__`){addJsonIssue(r,`The __proto__ key is not allowed in custom props`,[...t.path,n]);continue}(typeof n==`symbol`||!/^(0|[1-9]\d*)$/.test(n))&&addJsonIssue(r,`Arrays cannot contain non-index JSON properties`,[...t.path,n])}for(let i=e.length-1;i>=0;i--){let a=Object.getOwnPropertyDescriptor(e,String(i)),o=[...t.path,i];if(!(a&&`value`in a)){addJsonIssue(r,`Sparse arrays are not valid JSON values`,o);continue}n.push({kind:`enter`,value:a.value,path:o,depth:t.depth+1})}}function pushJsonObjectChildren(e,t,n,r){let i=Reflect.ownKeys(e);for(let a=i.length-1;a>=0;a--){let o=i[a],s=[...t.path,o];if(o===`__proto__`){addJsonIssue(r,`The __proto__ key is not allowed in custom props`,s);continue}if(typeof o==`symbol`){addJsonIssue(r,`Symbol keys are not valid JSON keys`,s);continue}let c=Object.getOwnPropertyDescriptor(e,o);if(!(c?.enumerable&&`value`in c)){addJsonIssue(r,`Custom props must contain enumerable data properties only`,s);continue}n.push({kind:`enter`,value:c.value,path:s,depth:t.depth+1})}}function validateJsonProps(e,t){if(typeof e!=`object`||!e){addJsonIssue(t,`Expected a plain JSON object`);return}try{if(Array.isArray(e)||!isPlainJsonObject(e)){addJsonIssue(t,`Expected a plain JSON object`);return}}catch{addJsonIssue(t,`Custom props contain an object that cannot be safely inspected`);return}let n=new WeakSet,r=[{kind:`enter`,value:e,path:[],depth:0}],i=0;for(;r.length>0;){let e=r.pop();if(!e)break;if(e.kind===`exit`){n.delete(e.value);continue}if(i++,i>Ue){addJsonIssue(t,`Custom props cannot exceed ${Ue.toLocaleString(`en-US`)} total JSON nodes`,e.path);return}if(e.depth>64){addJsonIssue(t,`Custom props cannot exceed depth 64`,e.path);continue}let a=e.value;if(!(a===null||typeof a==`string`||typeof a==`boolean`||typeof a==`number`&&Number.isFinite(a))){if(typeof a!=`object`){addJsonIssue(t,`Expected a JSON value`,e.path);continue}if(n.has(a)){addJsonIssue(t,`Custom props cannot contain circular references`,e.path);continue}try{if(Array.isArray(a)){n.add(a),r.push({kind:`exit`,value:a}),pushJsonArrayChildren(a,e,r,t);continue}if(!isPlainJsonObject(a)){addJsonIssue(t,`Expected an array or plain JSON object`,e.path);continue}n.add(a),r.push({kind:`exit`,value:a}),pushJsonObjectChildren(a,e,r,t)}catch{addJsonIssue(t,`Custom props contain an object that cannot be safely inspected`,e.path)}}}}const We=r.z.unknown().superRefine(validateJsonProps).transform(e=>e),Ge={span:r.z.union([r.z.literal(1),r.z.literal(2),r.z.literal(3),r.z.literal(4),r.z.literal(5),r.z.literal(6),r.z.literal(7),r.z.literal(8),r.z.literal(9),r.z.literal(10),r.z.literal(11),r.z.literal(12)]).optional().describe(`Columns of 12 this field occupies`),label:r.z.string().optional().describe(`Overrides the attribute's label`),readOnly:r.z.boolean().optional().describe(`Shows the value, not editable`)},Ke=r.z.object({attribute:r.z.string().describe(`Attribute API name shown by this field`),...Ge}).strict(),qe=r.z.object({name:r.z.string().describe(`Group API name, unique in the form`),label:r.z.string().describe(`Label people see`),description:r.z.string().optional().describe(`Extra context under the label`),collapsible:r.z.boolean().optional().describe(`Whether the group can be collapsed`),collapsed:r.z.boolean().optional().describe(`Whether the group starts collapsed`),fields:r.z.array(Ke).max(e.p.fieldsPerGroup).describe(`Fields in this group, in order`)}).strict();function refineFormContent(t,n){t.groups.reduce((e,t)=>e+t.fields.length,0)>e.p.fieldsPerFormTab&&n.addIssue({code:`too_big`,origin:`array`,maximum:e.p.fieldsPerFormTab,inclusive:!0,message:`A form content can contain at most ${e.p.fieldsPerFormTab} fields`,path:[`groups`]});let r=new Set,i=new Set;t.groups.forEach((e,t)=>{r.has(e.name)&&n.addIssue({code:`custom`,message:`Duplicate group name "${e.name}"`,path:[`groups`,t,`name`]}),r.add(e.name),e.fields.forEach((e,r)=>{i.has(e.attribute)&&n.addIssue({code:`custom`,message:`Duplicate field attribute "${e.attribute}"`,path:[`groups`,t,`fields`,r,`attribute`]}),i.add(e.attribute)})})}const Z={name:r.z.string().describe(`Content API name, unique in the view`),label:r.z.string().optional().describe(`Label people see`),icon:e.f.optional().describe(`Icon name`),placement:r.z.enum([`main`,`aside`,`grid`]).describe(`main: the tab strip. aside: the side panel. grid: a page block`),height:r.z.enum([`fit`,`flexible`,`fill`]).optional().describe(`Page block height: fit (content), flexible (between bounds) or fill (whole page, one per page)`)},Je={...Z,type:r.z.literal(`collection`),source:M.describe(`object: every record; relation: records linked to this record; both: records of object whose relation points at this record`),visibility:r.z.enum(e.m).optional().describe(`all: no scope; workspace: every member; private: viewer's own; shared: private records other members shared with the viewer`),columns:r.z.array(r.z.union([r.z.string(),r.z.object({relationProperty:r.z.string().refine(e=>e.trim().length>0).describe(`Qualified edge property shown as a column`)}).strict()])).max(e.p.columnsPerTab).optional().describe(`Table columns, in order`),descriptionAttribute:r.z.string().optional().describe(`Secondary line under each row's title (list layout)`),displayAttributes:k.optional().describe(`Attributes shown on each card`),filters:j.optional().describe(`Restricts which records show`),sorts:A.optional().describe(`Sort order`),actions:r.z.enum([`create`,`update`,`delete`,`attach`,`detach`]).array().optional().describe(`Offered actions; absent = every action, [] = none`),openMode:r.z.enum([`page`,`peek`]).optional().describe(`page or peek (the record panel)`),createMode:r.z.enum([`page`,`peek`,`inline`]).optional().describe(`page, peek, or inline (creates without opening)`)},Ye=r.z.object({...Je,layout:r.z.enum([`table`,`list`,`kanban`]).describe(`table columns, list cards, kanban board grouped by a select/status attribute`),columnSizing:r.z.record(r.z.string(),r.z.number()).optional().describe(`Column widths in pixels, by attribute name`),groupByAttribute:r.z.string().optional().describe(`Kanban only: the select or status attribute that names the columns`),kanbanColumnOrder:r.z.array(r.z.string()).optional().describe(`Kanban: column order by option value`),kanbanColumnVisibility:r.z.record(r.z.string(),r.z.boolean()).optional().describe(`Kanban: which columns are shown`),kanbanPinnedColumns:r.z.array(r.z.string()).optional().describe(`Kanban: columns pinned first`)}).strict().superRefine((e,t)=>{let n=[`groupByAttribute`,`kanbanColumnOrder`,`kanbanColumnVisibility`,`kanbanPinnedColumns`];if(e.layout===`kanban`){e.groupByAttribute===void 0&&t.addIssue({code:`custom`,path:[`groupByAttribute`],message:`A kanban layout requires groupByAttribute`});return}for(let r of n)e[r]!==void 0&&t.addIssue({code:`custom`,path:[r],message:`Only a kanban layout groups by an attribute`})}),Q={...Z,type:r.z.literal(`form`),groups:r.z.array(qe).max(e.p.groupsPerFormTab).describe(`Field groups, in order`),formColumns:r.z.union([r.z.literal(1),r.z.literal(2),r.z.literal(3)]).optional().describe(`Grid columns, 1-3`),density:r.z.enum([`compact`,`comfortable`,`spacious`]).optional().describe(`Vertical spacing between fields`)},Xe=r.z.object(Q).strict().superRefine(refineFormContent),Ze=r.z.object({...Q,groups:Q.groups.min(1,`A published form content requires at least one group`)}).strict().superRefine(refineFormContent),$=[Ye,r.z.object({...Z,type:r.z.literal(`group`),placement:r.z.literal(`grid`).describe(`Always grid`),members:r.z.array(r.z.string()).min(1).max(e.p.membersPerGroup).describe(`Contents side by side`)}).strict(),r.z.object({...Z,type:r.z.literal(`custom`),extension:r.z.string().describe(`Name of a registered extension`),parameters:r.z.lazy(()=>We).optional().describe(`Extension parameters`)}).strict(),r.z.object({...Z,type:r.z.literal(`activity`)}).strict(),r.z.object({...Z,type:r.z.literal(`richtext`),attribute:r.z.string().describe(`Richtext attribute edited in place`),titleAttribute:r.z.string().optional().describe(`Text attribute shown as the title`)}).strict(),r.z.object({...Z,type:r.z.literal(`documents`),allowUpload:r.z.boolean().optional().describe(`Lets people add files here`),allowRemove:r.z.boolean().optional().describe(`Lets people remove files here`),hideAttachments:r.z.boolean().optional().describe(`Hides files attached elsewhere (e.g. emails)`),relations:r.z.array(r.z.string()).optional().describe(`Document relations shown; the record's own files if absent`)}).strict(),r.z.object({...Z,type:r.z.literal(`forms`),objectName:r.z.string().optional().describe(`Limits to this object's published forms`)}).strict(),r.z.object({...Z,type:r.z.literal(`emails`),emailAttributes:r.z.array(r.z.string()).max(e.p.emailAttributesPerTab).describe(`Addresses`)}).strict(),r.z.object({...Z,type:r.z.literal(`meetings`),emailAttributes:r.z.array(r.z.string()).max(e.p.emailAttributesPerTab).describe(`Addresses`)}).strict(),r.z.object({...Z,type:r.z.literal(`page`),page:r.z.object({object:r.z.string().describe(`Its object`),name:r.z.string().describe(`Its name`)}).strict().describe(`The record page this tab renders`)}).strict()],Qe=r.z.discriminatedUnion(`type`,[Xe,...$]),$e=r.z.discriminatedUnion(`type`,[Ze,...$]),et={name:r.z.string(),label:r.z.string(),description:r.z.string().optional(),icon:e.f.optional()},tt=r.z.object({x:r.z.number().describe(`Column`),y:r.z.number().describe(`Row`),w:r.z.number().describe(`Width: 3, 4, 6, 8, 9 or 12; x + w ≤ 12`),h:r.z.number().describe(`Height`)}).strict();function contentViewBaseSchemaFor(t){let n=r.z.array(t).max(e.p.tabsPerView);return r.z.discriminatedUnion(`context`,[r.z.object({...et,object:r.z.string(),context:r.z.enum([`collection`,`record`]),default:r.z.boolean().optional(),contents:n}).strict(),r.z.object({...et,object:r.z.string().optional(),context:r.z.literal(`page`),home:r.z.boolean().optional(),grid:r.z.record(r.z.string(),tt).refine(t=>Object.keys(t).length<=e.p.tabsPerView,{message:`A page holds at most ${e.p.tabsPerView} blocks`}),contents:n}).strict()])}const nt=contentViewBaseSchemaFor(Qe),rt=contentViewBaseSchemaFor($e);function registryTraits(e,t){return layoutTraitsOf(e,Be,t)}function addGroupSizeIssues(e,t){for(let n of e.contents){let e=n.type===`group`?groupSizeMessage(n.members.length):void 0;e&&t.addIssue({code:`custom`,message:e,path:[`contents`]})}}function addDuplicateContentNameIssues(e,t){let n=new Set;e.contents.forEach((e,r)=>{n.has(e.name)&&t.addIssue({code:`custom`,message:`Duplicate content name "${e.name}"`,path:[`contents`,r,`name`]}),n.add(e.name)})}function addPlacementIssues(e,t){e.contents.forEach((n,r)=>{let i=n.placement===`grid`;e.context===`page`&&!i&&t.addIssue({code:`custom`,message:`Content "${n.name}" of a page must be placed on the grid`,path:[`contents`,r,`placement`]}),e.context!==`page`&&i&&t.addIssue({code:`custom`,message:`Content "${n.name}" cannot be placed on a grid outside a page`,path:[`contents`,r,`placement`]})})}function addIssue(e,t){e.addIssue({code:`custom`,message:t.message,path:[`grid`,...t.path]})}function addGridIssues(e,t,n,r){if(e.context!==`page`||!e.grid)return;let i=new Set(e.contents.map(e=>e.name)),a=groupedMembers(e.contents);for(let n of i)a.has(n)||Object.hasOwn(e.grid,n)||t.addIssue({code:`custom`,message:`Content "${n}" has no grid position`,path:[`grid`]});let o=Object.keys(e.grid).filter(e=>!i.has(e));for(let e of o)t.addIssue({code:`custom`,message:`Grid position "${e}" matches no content`,path:[`grid`,e]});if(e.home&&e.object!==void 0&&t.addIssue({code:`custom`,message:`Only a standalone page can be the home`,path:[`home`]}),o.length>0)return;let s=findGridViolation(e.grid,{exempt:a});if(s){addIssue(t,s);return}if(n===null)return;let c=findGroupViolation(e.contents);if(c){t.addIssue({code:`custom`,message:c.message,path:[`contents`]});return}let l=new Map(e.contents.map(e=>[e.name,e])),u=findLayoutRuleViolation(e.grid,e.contents,e=>n(l.get(e),l),r);u&&addIssue(t,u)}function draftContentViewDefinitionSchemaFor(){return nt.superRefine((e,t)=>{let n=e;addDuplicateContentNameIssues(n,t),addPlacementIssues(n,t),addGridIssues(n,t,null)})}function contentViewDefinitionSchemaFor(e={}){let t=e.traits===void 0?registryTraits:e.traits;return rt.superRefine((n,r)=>{let i=n;addDuplicateContentNameIssues(i,r),addPlacementIssues(i,r),addGridIssues(i,r,t,e.statics),e.viewerFiltered||addGroupSizeIssues(i,r),n.context!==`page`&&!n.contents.some(e=>e.placement===`main`)&&r.addIssue({code:`custom`,message:`A published view requires at least one main content`,path:[`contents`]})})}const it=draftContentViewDefinitionSchemaFor(),at=contentViewDefinitionSchemaFor();Object.defineProperty(exports,"$",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"$t",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return findLayoutRuleViolation}}),Object.defineProperty(exports,"At",{enumerable:!0,get:function(){return isLocationPartOperator}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"Bt",{enumerable:!0,get:function(){return currentActor}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return collectionSourceAddressOf}}),Object.defineProperty(exports,"Cn",{enumerable:!0,get:function(){return isManagedSystemAttribute}}),Object.defineProperty(exports,"Ct",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return requireSingleRelationTarget}}),Object.defineProperty(exports,"Dt",{enumerable:!0,get:function(){return edgePropertyFilterTarget}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return relationAcceptsObject}}),Object.defineProperty(exports,"Et",{enumerable:!0,get:function(){return attributeFilterTarget}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"Ft",{enumerable:!0,get:function(){return isSetMembershipOperator}}),Object.defineProperty(exports,"G",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"Gt",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"Ht",{enumerable:!0,get:function(){return now}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return 12}}),Object.defineProperty(exports,"It",{enumerable:!0,get:function(){return normalizeForEdgeRpc}}),Object.defineProperty(exports,"J",{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,"Jt",{enumerable:!0,get:function(){return parseBlockParameters}}),Object.defineProperty(exports,"K",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,"Kt",{enumerable:!0,get:function(){return blockObjectInputs}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return findGridViolation}}),Object.defineProperty(exports,"Lt",{enumerable:!0,get:function(){return toMultiValueOperator}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return groupSizeMessage}}),Object.defineProperty(exports,"Mt",{enumerable:!0,get:function(){return systemColumnFilterTarget}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return groupedMembers}}),Object.defineProperty(exports,"Nt",{enumerable:!0,get:function(){return canonicalizeFilterValue}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return singleRelationTarget}}),Object.defineProperty(exports,"Ot",{enumerable:!0,get:function(){return filterOperatorsOfType}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return memberlessGroups}}),Object.defineProperty(exports,"Pt",{enumerable:!0,get:function(){return getOperatorPolarity}}),Object.defineProperty(exports,"Q",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"Qt",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return overlaps}}),Object.defineProperty(exports,"Rt",{enumerable:!0,get:function(){return extractCurrencyFilterValue}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return collectionSourceAddress}}),Object.defineProperty(exports,"Sn",{enumerable:!0,get:function(){return getSystemAttributeList}}),Object.defineProperty(exports,"St",{enumerable:!0,get:function(){return toUtcDayString}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return findRelationAttribute}}),Object.defineProperty(exports,"Tt",{enumerable:!0,get:function(){return normalizeOperator}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"Ut",{enumerable:!0,get:function(){return today}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"Vt",{enumerable:!0,get:function(){return isDynamicValue}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"Wt",{enumerable:!0,get:function(){return isCalendarDay}}),Object.defineProperty(exports,"X",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"Xt",{enumerable:!0,get:function(){return buildQualifiedAttribute}}),Object.defineProperty(exports,"Y",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"Yt",{enumerable:!0,get:function(){return`__`}}),Object.defineProperty(exports,"Z",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"Zt",{enumerable:!0,get:function(){return parseQualifiedAttribute}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return validateContentViewCatalogue}}),Object.defineProperty(exports,"_n",{enumerable:!0,get:function(){return isLocationFilterProperty}}),Object.defineProperty(exports,"_t",{enumerable:!0,get:function(){return collectQualifiedRuleIssues}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,"an",{enumerable:!0,get:function(){return isAttributeSortable}}),Object.defineProperty(exports,"at",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return resolveCollectionActions}}),Object.defineProperty(exports,"bn",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"bt",{enumerable:!0,get:function(){return resolveIsWithinBounds}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return layoutTraitsOf}}),Object.defineProperty(exports,"cn",{enumerable:!0,get:function(){return relationTargetsOf}}),Object.defineProperty(exports,"ct",{enumerable:!0,get:function(){return query}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return 30}}),Object.defineProperty(exports,"dn",{enumerable:!0,get:function(){return getAttributeCapabilities}}),Object.defineProperty(exports,"dt",{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,"en",{enumerable:!0,get:function(){return getRollupFilterOperators}}),Object.defineProperty(exports,"et",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return attributeInventory}}),Object.defineProperty(exports,"fn",{enumerable:!0,get:function(){return getAttributeFilterOperators}}),Object.defineProperty(exports,"ft",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return requireContentPlacement}}),Object.defineProperty(exports,"gn",{enumerable:!0,get:function(){return isAttributeSearchable}}),Object.defineProperty(exports,"gt",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return contentReadObjects}}),Object.defineProperty(exports,"hn",{enumerable:!0,get:function(){return isAttributeKanbanGroupable}}),Object.defineProperty(exports,"ht",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return draftContentViewDefinitionSchemaFor}}),Object.defineProperty(exports,"in",{enumerable:!0,get:function(){return inferInverseCardinality}}),Object.defineProperty(exports,"it",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return findRowLimitViolation}}),Object.defineProperty(exports,"jt",{enumerable:!0,get:function(){return locationPartFilterTarget}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return findGroupViolation}}),Object.defineProperty(exports,"kt",{enumerable:!0,get:function(){return filterTargetsOf}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return pageTraitsOf}}),Object.defineProperty(exports,"ln",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"lt",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return collectContentViewCatalogue}}),Object.defineProperty(exports,"mn",{enumerable:!0,get:function(){return isAttributeGroupable}}),Object.defineProperty(exports,"mt",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return contentViewDefinitionSchemaFor}}),Object.defineProperty(exports,"nn",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"nt",{enumerable:!0,get:function(){return metricComparePeriod}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return $e}}),Object.defineProperty(exports,"on",{enumerable:!0,get:function(){return isBilateralRelation}}),Object.defineProperty(exports,"ot",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return capped}}),Object.defineProperty(exports,"pn",{enumerable:!0,get:function(){return isAttributeFilterable}}),Object.defineProperty(exports,"pt",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"q",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,"qt",{enumerable:!0,get:function(){return defineBlock}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,"rn",{enumerable:!0,get:function(){return`*`}}),Object.defineProperty(exports,"rt",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"sn",{enumerable:!0,get:function(){return isUniversalRelation}}),Object.defineProperty(exports,"st",{enumerable:!0,get:function(){return RecordQuery}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return at}}),Object.defineProperty(exports,"tn",{enumerable:!0,get:function(){return isNoValueOperator}}),Object.defineProperty(exports,"tt",{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,"un",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"ut",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return validateStoredViews}}),Object.defineProperty(exports,"vn",{enumerable:!0,get:function(){return resolveEffectiveFilterType}}),Object.defineProperty(exports,"vt",{enumerable:!0,get:function(){return validateQualifiedRule}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return sourcedAttributeOf}}),Object.defineProperty(exports,"wt",{enumerable:!0,get:function(){return normalizeFilterRule}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return resolveContentNavigation}}),Object.defineProperty(exports,"xn",{enumerable:!0,get:function(){return getSystemAttributeI18nKey}}),Object.defineProperty(exports,"xt",{enumerable:!0,get:function(){return resolveUtcDayBounds}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return requireRecordContentContext}}),Object.defineProperty(exports,"yn",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"yt",{enumerable:!0,get:function(){return isRelativeDateValue}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"zt",{enumerable:!0,get:function(){return extractFilterValue}});
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
|
|
2
|
-
import{n as e,s as t}from"./record-aggregates-CzG86pUS.mjs";import{DuplicateError as n,SchemaError as r,ValidationError as i}from"./exceptions.mjs";import{f as a,m as o,p as s}from"./attribute-validators-DRqhAt2t.mjs";import{z as c}from"zod";const l={createdAt:`createdAt`,updatedAt:`updatedAt`,createdBy:`createdBy`,lastUpdatedBy:`lastUpdatedBy`,attachments:`attachments`};function getSystemAttributeI18nKey(e){return l[e]}const u={createdAt:{id:`system:createdAt`,name:`createdAt`,label:`Created time`,type:`date`,required:!1,system:!0,icon:`clock-circle`,description:`When this record was created`},updatedAt:{id:`system:updatedAt`,name:`updatedAt`,label:`Last edited time`,type:`date`,required:!1,system:!0,icon:`clock-circle`,description:`When this record was last modified`},createdBy:{id:`system:createdBy`,name:`createdBy`,label:`Created by`,type:`user`,required:!1,system:!0,multiple:!1,icon:`user`,description:`Actor who created this record`},lastUpdatedBy:{id:`system:lastUpdatedBy`,name:`lastUpdatedBy`,label:`Last edited by`,type:`user`,required:!1,system:!0,multiple:!1,icon:`user`,description:`Actor who last modified this record`},attachments:{id:`system:attachments`,name:`attachments`,label:`Attachments`,type:`document`,required:!1,system:!0,hidden:!0,icon:`paperclip`,description:`Free-form document attachments`}};function getSystemAttributeList(){return Object.values(u)}function isManagedSystemAttribute(e){return e.id?.startsWith(`system:`)??!1}const d=[`is`,`is_not`,`contains`,`not_contains`,`starts_with`,`ends_with`,`is_empty`,`is_not_empty`],f=[`is`,`is_not`,`less_than`,`greater_than`,`less_or_equal`,`greater_or_equal`,`is_empty`,`is_not_empty`],p=[`is`],m=[`is`,`is_not`,`less_than`,`greater_than`,`less_or_equal`,`greater_or_equal`,`is_within`,`on_day_month`,`is_empty`,`is_not_empty`],h=[`is`,`is_not`,`any_of`,`none_of`,`is_empty`,`is_not_empty`],g=[`any_of`,`none_of`,`is_empty`,`is_not_empty`],_=[`is`,`is_not`,`any_of`,`none_of`,`is_empty`,`is_not_empty`],v=[`is_empty`,`is_not_empty`],y=[`is`,`is_not`,`less_than`,`greater_than`,`less_or_equal`,`greater_or_equal`,`contains`,`not_contains`,`is_empty`,`is_not_empty`],b=[`city`,`postalCode`,`country`];function isLocationFilterProperty(e){return b.includes(e)}const x={text:d,richtext:[],number:f,checkbox:p,date:m,phone:[`is`,`is_not`,`contains`,`not_contains`,`starts_with`,`is_empty`,`is_not_empty`],currency:f,status:h,select:h,multiselect:g,location:[],user:_,relation:_,formula:y,document:v},ee=new Set([`formula`,`rollup`]),te=new Set([`user`,`relation`,`document`]),ne=new Set([`text`,`richtext`,`number`,`select`,`multiselect`,`status`,`date`,`phone`,`currency`,`location`,`user`,`relation`,`document`]),re=new Set([`text`,`number`,`date`,`phone`,`currency`,`select`,`multiselect`]),ie=new Set([`text`,`richtext`,`phone`,`status`,`select`,`multiselect`]),ae=new Set([`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`status`,`select`]);function getAttributeCapabilities(e){let t=!!(e.hidden||e.archived),n=!e.archived,r=ee.has(e.type),i=e.type===`document`,a=te.has(e.type),o=getAttributeCardinality(e),s=t?[]:getRawFilterOperators(e),c=s.length>0&&!t,l=!t&&ie.has(e.type),u=!t&&ae.has(e.type),d=!t&&isGroupableType(e.type),f=!t&&e.type===`status`,p=isManagedSystemAttribute(e),m=r||i||p,h=!(t||m),g=isRequiredForbidden(e.type)?`forbidden`:`allowed`,_=getDefaultValueCapability(e.type),v=supportsMaxItems(e),y=re.has(e.type),b=!(!e.deprecated||t),x=resolveEditMode(e);return{lifecycle:{active:n,deprecated:!!e.deprecated,visibleInArchitect:!0,visibleInRuntime:!t,warningWhenDeprecated:b},storage:{mode:r?`computed`:a?`edge`:`value`,cardinality:o,edgeBacked:a,preservesExistingValues:!!e.archived,qualifiedProperties:supportsQualifiedProperties(e.type),polymorphic:getPolymorphicCapability(e),maxItems:v},authoring:{editable:h,readOnly:m,directEdit:h&&x===`inline`,required:g,defaultValue:_,placeholder:y,maxItems:v},presentation:{formField:!t&&isFormFieldType(e.type),tableCell:!t&&isTableCellType(e.type),defaultColumn:!t&&isDefaultColumnType(e.type),compactDisplay:!t,popoverEditor:!t&&x===`popover`,placeholder:y,warningWhenDeprecated:b},query:{filterable:c,searchable:l,sortable:u,groupable:d,kanbanGroupable:f,operators:s},agent:{readable:!t,writable:h&&!i,compactReadable:!t,contentReadable:!t&&isContentReadableType(e.type),requiresDedicatedTool:i},exchange:{importable:!t,exportable:!t,schemaExportable:!0,metadataExportable:!1}}}function getAttributeFilterOperators(e){return getAttributeCapabilities(e).query.operators}function isAttributeFilterable(e){return getAttributeCapabilities(e).query.filterable}function isAttributeSearchable(e){return getAttributeCapabilities(e).query.searchable}function isAttributeSortable$1(e){return getAttributeCapabilities(e).query.sortable}function isAttributeGroupable(e){return getAttributeCapabilities(e).query.groupable}function isAttributeKanbanGroupable(e){return getAttributeCapabilities(e).query.kanbanGroupable}function resolveEffectiveFilterType(e){if(e.type!==`rollup`)return e.type;let t=e;if(t.function===`earliest`||t.function===`latest`)return`date`;if(t.function===`original`){let e=t.targetAttributeType;if(e&&hasFilterOperatorEntry(e))return e}return`number`}function getRollupFilterOperators$1(e){let t=resolveEffectiveFilterType(e);return hasFilterOperatorEntry(t)?x[t]:x.number}function getRawFilterOperators(e){return e.type===`rollup`?getRollupFilterOperators$1(e):x[e.type]??[]}function getAttributeCardinality(e){return e.type===`multiselect`||e.type===`document`||e.type===`user`&&e.multiple===!0||e.type===`relation`&&e.cardinality===`many`?`many`:`one`}function getPolymorphicCapability(e){if(e.type!==`relation`)return`none`;let t=e.targets??[];return t.length===1&&t[0]?.object===`*`?`internal`:t.length>1?`code-only`:`none`}function supportsMaxItems(e){return e.type===`multiselect`||e.type===`relation`&&e.cardinality===`many`}function supportsQualifiedProperties(e){return e===`relation`||e===`document`}function isRequiredForbidden(e){return e===`checkbox`||e===`formula`||e===`rollup`}function getDefaultValueCapability(e){return e===`checkbox`?`automatic`:e===`formula`||e===`rollup`?`forbidden`:ne.has(e)?`static`:`forbidden`}function isDefaultColumnType(e){return isTableCellType(e)}function isTableCellType(e){return e!==`richtext`&&e!==`document`}function isFormFieldType(e){return e!==`richtext`}function resolveEditMode(e){switch(e.type){case`checkbox`:return`inline`;case`number`:return e.renderAs===`rating`?`inline`:`default`;case`select`:case`multiselect`:return e.renderAs===`badges`?`inline`:`popover`;case`status`:case`relation`:case`user`:case`date`:return`popover`;default:return`default`}}function isGroupableType(e){return e===`status`||e===`currency`}function isContentReadableType(e){return e===`richtext`||e===`document`}function hasFilterOperatorEntry(e){return Object.prototype.hasOwnProperty.call(x,e)}const oe=[`text`,`richtext`,`number`,`checkbox`,`date`,`phone`,`currency`,`status`,`location`,`select`,`multiselect`,`user`,`relation`,`formula`,`rollup`,`document`],se=`*`;function relationTargetsOf(e){return e.type!==`relation`||!Array.isArray(e.targets)?[]:e.targets.map(e=>e.object).filter(e=>e!==`*`)}function isUniversalRelation(e){return e.targets.length===1&&e.targets[0].object===`*`}function isBilateralRelation(e){return e.bilateral!==void 0}function inferInverseCardinality(e){return`many`}function isAttributeSortable(e){return isAttributeSortable$1(e)}const ce=x,le=[`is_empty`,`is_not_empty`];function isNoValueOperator(e){return le.includes(e)}function getRollupFilterOperators(e){return getRollupFilterOperators$1(e)}const ue=`__`;function parseQualifiedAttribute(e){let t=e.indexOf(`__`);return t<=0||t+2>=e.length?{kind:`scalar`,attribute:e}:{kind:`qualified`,root:e.slice(0,t),property:e.slice(t+2)}}function buildQualifiedAttribute(e,t){return`${e}__${t}`}const S=[`page`,`record`,`display`];function defineBlock(e){let t=Object.fromEntries(Object.entries(e.inputs).map(([e,t])=>[e,t.isOptional?t.schema.optional():t.schema]));return Object.freeze({name:e.name,label:e.label,icon:e.icon,family:e.family,contexts:Object.freeze([...e.contexts]),inputs:Object.freeze({...e.inputs}),...e.layout===void 0?{}:{layout:Object.freeze({...e.layout})},parameters:c.object(t).strict().superRefine((t,n)=>{let r=e.refine?.(t);r&&n.addIssue({code:`custom`,path:[r.input],message:r.message})}),...e.refine===void 0?{}:{refine:(t,n)=>e.refine?.(t,n)}})}function parseBlockParameters(e,t,n){let r=e.parameters.safeParse(structuredClone(t??{}));if(!r.success)throw i.fromZodErrors(r.error.issues.map(e=>({path:[...n,...e.path.map(String)],message:e.message})));return r.data}function blockObjectInputs(e,t,n){return Object.entries(e.inputs).flatMap(([e,r])=>{let i=t[e];if(r.kind===`object`&&typeof i==`string`)return[i];if(r.kind===`query`&&typeof i==`object`&&i){let e=i.source;if(!e)return[];if(`object`in e&&typeof e.object==`string`)return[e.object];let t=n?.attributes.find(t=>t.name===e.relation);return t?relationTargetsOf(t):[]}return[]})}const de=/^\d{4}-\d{2}-\d{2}$/u;function isCalendarDay(e){if(!de.test(e))return!1;let t=new Date(`${e}T00:00:00Z`);return!Number.isNaN(t.getTime())&&t.toISOString().slice(0,10)===e}function isDynamicValue(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&`dynamic`in e}function currentActor(){return{dynamic:`actor`,ref:`current`}}function today(){return{dynamic:`date`,anchor:`today`}}function now(){return{dynamic:`date`,anchor:`now`}}function toAmount(e){if(typeof e==`number`)return Number.isFinite(e)?e:null;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);return Number.isFinite(t)?t:null}return null}function extractCurrencyFilterValue(e){return typeof e==`object`&&e?`value`in e?toAmount(e.value):null:toAmount(e)}function extractFilterValue(e){return e==null?null:typeof e==`object`&&`value`in e?e.value??null:e}const fe=new Set([`is_not`,`not_contains`,`none_of`,`is_empty`]),pe={is_not:`is`,not_contains:`contains`,none_of:`any_of`,is_empty:`is_not_empty`};function getOperatorPolarity(e){return fe.has(e)?`none`:`any`}function normalizeForEdgeRpc(e){return pe[e]??e}const C={is:`any_of`,is_not:`none_of`};function toMultiValueOperator(e){return C[e]??e}const me=new Set(Object.values(C).filter(e=>e!==void 0));function isSetMembershipOperator(e){return me.has(e)}function canonicalizeFilterValue(e,t){let n=e.value;if(isNoValueOperator(e.operator)||n==null||isDynamicValue(n))return;if(isSetMembershipOperator(e.operator)){Array.isArray(n)||(e.value=[n]);return}if(t!==`currency`)return;let r=extractCurrencyFilterValue(n);if(r!==null){e.value=r;return}if(!hasCurrencyAmount(n))return;let a=`Filter on a currency attribute expected a numeric amount, received ${JSON.stringify(n)}`;throw new i(a,[{path:[`value`],message:a}])}function hasCurrencyAmount(e){return typeof e!=`object`||`value`in e&&e.value!=null}const w=x.text,he=[`is`,`is_not`,`is_empty`,`is_not_empty`],T=[`is`,`is_not`,`any_of`,`none_of`,`is_empty`,`is_not_empty`],E={id:T,objectId:T,tenantId:T,label:x.text,createdAt:x.date,updatedAt:x.date,deletedAt:x.date,createdBy:x.user,lastUpdatedBy:x.user},ge=new Set([`createdAt`,`updatedAt`,`deletedAt`]);function offeredOn(e,t){return ge.has(e)?t.filter(e=>e!==`on_day_month`):t}function fullyOffered(e,t,n,r){return{target:e,attribute:t,...r?{property:r}:{},operators:n,offered:n}}function attributeFilterTarget(e){let t=getAttributeFilterOperators(e);return{target:e.name,attribute:e.name,operators:t,offered:offeredOn(e.name,t)}}function locationPartFilterTarget(e,t){return{target:buildQualifiedAttribute(e,t),attribute:e,property:t,operators:w,offered:t===`country`?he:w}}function edgePropertyFilterTarget(e,t){let n=hasOperatorEntry(t.type)?x[t.type]:[];return fullyOffered(buildQualifiedAttribute(e,t.name),e,n,t.name)}function hasOperatorEntry(e){return Object.prototype.hasOwnProperty.call(x,e)}function systemColumnFilterTarget(e){let t=Object.prototype.hasOwnProperty.call(E,e)?E[e]:void 0;return t?{target:e,attribute:e,operators:t,offered:offeredOn(e,t)}:void 0}function filterOperatorsOfType(e){return isAttributeType(e)?getAttributeFilterOperators({type:e}):[]}function isAttributeType(e){return oe.includes(e)}function isLocationPartOperator(e){return w.includes(e)}function carriesEdgeProperties(e){return e.type===`relation`||e.type===`document`}function filterTargetsOf(e){let t=[];for(let n of e){if(n.type===`location`){for(let e of b)t.push(locationPartFilterTarget(n.name,e));continue}if(t.push(attributeFilterTarget(n)),!carriesEdgeProperties(n))continue;let e=n.properties?.definitions;for(let r of e??[])t.push(edgePropertyFilterTarget(n.name,r))}let n=new Set(e.map(e=>e.name));for(let e of Object.keys(E)){if(n.has(e))continue;let r=systemColumnFilterTarget(e);r&&t.push(r)}return t.filter(e=>e.operators.length>0)}const _e={eq:`is`,equals:`is`,equal:`is`,"==":`is`,"=":`is`,neq:`is_not`,notEqual:`is_not`,isNot:`is_not`,"!=":`is_not`,"<>":`is_not`,lt:`less_than`,"<":`less_than`,gt:`greater_than`,">":`greater_than`,lte:`less_or_equal`,"<=":`less_or_equal`,gte:`greater_or_equal`,">=":`greater_or_equal`,in:`any_of`,isAnyOf:`any_of`,anyOf:`any_of`,oneOf:`any_of`,notIn:`none_of`,not_in:`none_of`,isNoneOf:`none_of`,noneOf:`none_of`,notOneOf:`none_of`,startsWith:`starts_with`,beginsWith:`starts_with`,endsWith:`ends_with`,doesNotContain:`not_contains`,notContain:`not_contains`,isEmpty:`is_empty`,isNotEmpty:`is_not_empty`};function normalizeOperator(e){return _e[e]??e}function normalizeFilterRule(e){let t=normalizeOperator(e.operator);return t===e.operator?e:{...e,operator:t}}const D=864e5,ve=new Set([`days`,`weeks`,`months`,`years`]),ye=new Set([`past`,`future`]);function isRelativeDateValue(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.amount==`number`&&Number.isFinite(t.amount)&&t.amount>0&&typeof t.unit==`string`&&ve.has(t.unit)&&typeof t.direction==`string`&&ye.has(t.direction)}function utcDayStart(e){return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())}function shiftUtcDay(e,t,n){if(n===`days`)return e+t*D;if(n===`weeks`)return e+t*7*D;let r=new Date(e),i=r.getUTCFullYear()+(n===`years`?t:0),a=r.getUTCMonth()+(n===`months`?t:0),o=new Date(Date.UTC(i,a+1,0)).getUTCDate();return Date.UTC(i,a,Math.min(r.getUTCDate(),o))}function resolveIsWithinBounds(e,t=new Date){if(!isRelativeDateValue(e))return null;let n=utcDayStart(t),r=Math.trunc(e.amount),i=e.direction===`past`?{startMs:shiftUtcDay(n,-r,e.unit),endMs:n+D}:{startMs:n,endMs:shiftUtcDay(n,r,e.unit)+D};return Number.isFinite(i.startMs)&&Number.isFinite(i.endMs)?i:null}function resolveUtcDayBounds(e){if(!Number.isFinite(e))return null;let t=utcDayStart(new Date(e));return Number.isFinite(t)?{startMs:t,endMs:t+D}:null}function toUtcDayString(e){return new Date(e).toISOString().slice(0,10)}const O=new Set([`relation`,`document`,`user`]),be={id:`text`,objectId:`text`,objectName:`text`,tenantId:`text`,label:`text`,createdAt:`date`,updatedAt:`date`,deletedAt:`date`,deletedBy:`user`,createdBy:`user`,lastUpdatedBy:`user`,visibility:`select`,ownedBy:`user`},k={before:`"less_than"`,after:`"greater_than"`,on_or_before:`"less_or_equal"`,on_or_after:`"greater_or_equal"`,is_checked:`"is" with value true`,is_not_checked:`"is" with value false`,day_month_eq:`"on_day_month"`},xe=new Set(Object.entries(x).filter(([,e])=>e.includes(`any_of`)&&!e.includes(`contains`)).map(([e])=>e)),Se={contains:`any_of`,not_contains:`none_of`};function resolveCanonicalOperator(e,t){let n=k[e];if(n){let t=`Unknown filter operator "${e}" — use ${n}`;throw new i(t,[{path:[`operator`],message:t}])}let r=normalizeOperator(e),a=Se[r];if(a&&xe.has(t)){let e=`Operator "${r}" is not valid for type "${t}" — use "${a}"`;throw new i(e,[{path:[`operator`],message:e}])}return r}function assertPropertyOperator(e,t,n){let r=resolveCanonicalOperator(e,t);if(!n.includes(r)){let r=`Operator "${e}" is not valid for property type "${t}". Valid operators: ${n.length?n.join(`, `):`(no operators registered for this type)`}.`;throw new i(r,[{path:[`operator`],message:r}])}return r}function assertRelativeDateValue(e){if(e.operator===`is_within`&&!isRelativeDateValue(e.value)){let e=`Operator "is_within" requires a relative-date value { amount: positive number, unit: days|weeks|months|years, direction: past|future }`;throw new i(e,[{path:[`value`],message:e}])}}const Ce=/^(\d{4}-\d{2}-\d{2})(?:[T ](?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|[+-](?:(?:0\d|1[0-3])(?::[0-5]\d)?|14(?::00)?))?)?$/,we=new Set([`is`,`is_not`,`less_than`,`less_or_equal`,`greater_than`,`greater_or_equal`]);function assertAbsoluteDateValue(e,t){if(t!==`date`||!we.has(e.operator))return;let n=e.value;if(n==null||isDynamicValue(n)||typeof n==`string`&&isCastableDay(n))return;let r=`Filter on a date attribute expected a YYYY-MM-DD day, optionally followed by a time, received ${JSON.stringify(n)}`;throw new i(r,[{path:[`value`],message:r}])}function isCastableDay(e){let t=Ce.exec(e)?.[1];return!t||t.startsWith(`0000-`)?!1:isCalendarDay(t)}function resolveComparandType(e){return e.type===`formula`&&e.returnType===`date`?`date`:resolveEffectiveFilterType(e)}function applyCanonicalForm(e,t,n){e.operator=t,canonicalizeFilterValue(e,n),assertRelativeDateValue(e),assertAbsoluteDateValue(e,n)}function assertDynamicValueForAttribute(e,t){if(!isDynamicValue(e.value))return;let n=e.value;if(n.dynamic===`actor`&&t!==`user`){let e=`actor token (@me) is only valid on user attributes, not "${t}"`;throw new i(e,[{path:[`value`],message:e}])}if(n.dynamic===`date`&&t!==`date`){let e=`date token (@today/@now) is only valid on date attributes, not "${t}"`;throw new i(e,[{path:[`value`],message:e}])}}const A=b.map(e=>`"${e}"`).join(`, `);function operatorList(e){return e.length?e.join(`, `):`(not filterable)`}function qualifyWithSchema(e){if(O.has(e.type))return e.properties}function locationPartsHint(e){return e===`location`?` A location is filtered on one of its parts: set "property" to one of ${A} and use a text operator (e.g. contains).`:``}function dottedPathHint(e,t,n){let r=` Dotted paths are not supported — `;if(n.type===`location`)return`${r}set "attribute" to "${e}" and "property" to ${isLocationFilterProperty(t)?`"${t}"`:`one of ${A}`}.`;let i=qualifyWithSchema(n);if(i){let n=i.definitions.map(e=>`"${e.name}"`).join(`, `);return`${r}set "attribute" to "${e}" and "property" to ${i.definitions.some(e=>e.name===t)?`"${t}"`:`one of ${n}`} to filter on the edge property.`}let a=attributeFilterTarget(n).operators;return`${r}${a.length?`set "attribute" to "${e}" and use one of ${a.join(`, `)}`:`"${e}" is not filterable`}; the full-text "query" parameter matches tokens by relevance, not values.`}function collectQualifiedRuleIssues(e,t){try{return validateQualifiedRule({...e},t),[]}catch(e){if(!(e instanceof i))throw e;return e.errors.map(e=>({...e,path:[...e.path]}))}}function validateQualifiedRule(e,t){if(typeof e.attribute!=`string`){let e=`A filter rule needs an attribute: filters are one combinator and a flat list of rules`;throw new i(e,[{path:[`attribute`],message:e}])}let n=t.attributes.find(t=>t.name===e.attribute),r=n?[]:systemColumnFilterTarget(e.attribute)?.operators??[];if(!n&&r.length===0){let[n,...r]=e.attribute.split(`.`),a=r.length>0?t.attributes.find(e=>e.name===n):void 0,o=a?dottedPathHint(n??``,r[0]??``,a):e.attribute.includes(`.`)?` Dotted paths are not supported — filter on the attribute name alone with a structured operator (contains, any_of, …); the full-text "query" parameter matches tokens by relevance, not values.`:``,s=`Unknown attribute: ${e.attribute}${o}`;throw new i(s,[{path:[`attribute`],message:s}])}if(e.quantifier!==void 0&&!e.property){let e=`quantifier is only valid on qualified edge rules (set "property")`;throw new i(e,[{path:[`quantifier`],message:e}])}if(!n){if(e.property)throw new i(`Cannot qualify system attribute "${e.attribute}"`,[{path:[`property`],message:`"${e.attribute}" is a system column, not a reference`}]);let t=be[e.attribute]??`text`,n=resolveCanonicalOperator(e.operator,t);if(!r.includes(n)){let t=`Operator "${e.operator}" is not valid for system attribute "${e.attribute}". Valid operators: ${r.join(`, `)}.`;throw new i(t,[{path:[`operator`],message:t}])}applyCanonicalForm(e,n,t);return}if(!e.property){assertDynamicValueForAttribute(e,n.type);let t=attributeFilterTarget(n).operators,r=resolveCanonicalOperator(e.operator,n.type);if(!t.includes(r)){let r=`Operator "${e.operator}" is not valid for attribute "${n.name}". Valid operators: ${operatorList(t)}.${locationPartsHint(n.type)}`;throw new i(r,[{path:[`operator`],message:r}])}applyCanonicalForm(e,r,resolveComparandType(n));return}if(n.type===`location`){if(e.quantifier!==void 0){let e=`quantifier is not valid on a location part — a location is one value, not a set of edges`;throw new i(e,[{path:[`quantifier`],message:e}])}if(!isLocationFilterProperty(e.property)){let t=`Property "${e.property}" is not a part of location "${e.attribute}". Valid parts: ${A}.`;throw new i(t,[{path:[`property`],message:t}])}assertDynamicValueForAttribute(e,`text`);let{operators:t}=locationPartFilterTarget(n.name,e.property);applyCanonicalForm(e,assertPropertyOperator(e.operator,`text`,t),`text`);return}if(!O.has(n.type))throw new i(`Cannot qualify ${n.type} attribute "${e.attribute}"`,[{path:[`property`],message:`Attribute "${e.attribute}" is not a reference type`}]);let a=n.properties;if(!a)throw new i(`Attribute "${e.attribute}" has no qualifyWith schema`,[{path:[`property`],message:`"${e.attribute}" has no qualifyWith`}]);let o=a.definitions.find(t=>t.name===e.property);if(!o)throw new i(`Property "${e.property}" not defined on "${e.attribute}".qualifyWith()`,[{path:[`property`],message:`Unknown property: ${e.property}`}]);let{operators:s}=edgePropertyFilterTarget(n.name,o);applyCanonicalForm(e,assertPropertyOperator(e.operator,o.type,s),o.type)}const Te=c.array(c.string()).max(s.columnsPerTab),Ee=c.array(c.string().min(1)).max(s.columnsPerTab).refine(e=>new Set(e).size===e.length,{message:`Displayed attribute names must be unique`}),De=c.object({attribute:c.string().describe(`Attribute to sort by`),direction:c.enum([`asc`,`desc`]).describe(`asc or desc`)}).strict(),j=c.array(De).max(s.sortsPerTab),Oe=c.object({amount:c.number().describe(`Count`),unit:c.enum([`days`,`weeks`,`months`,`years`]).describe(`Unit`),direction:c.enum([`past`,`future`]).describe(`Past or future`)}).strict(),ke=c.object({value:c.number().nullable().describe(`Amount`),code:c.array(c.string()).optional().describe(`Currency codes`)}).strict(),Ae=c.object({phoneNumber:c.string().nullable().describe(`Number`),countryCode:c.string().optional().describe(`ISO country code`)}).strict(),je=c.discriminatedUnion(`dynamic`,[c.object({dynamic:c.literal(`actor`).describe(`Resolved at filter time`),ref:c.literal(`current`).describe(`The current actor`)}).strict(),c.object({dynamic:c.literal(`date`).describe(`Resolved at filter time`),anchor:c.enum([`today`,`now`]).describe(`Anchor`)}).strict()]),Me=c.object({month:c.number().describe(`1-12`),day:c.number().describe(`Day`)}).strict(),Ne=c.union([c.string(),c.number(),c.boolean(),c.array(c.string()),Oe,ke,Ae,Me,je,c.null()]),Pe=c.enum([`is`,`is_not`,`contains`,`not_contains`,`starts_with`,`ends_with`,`is_empty`,`is_not_empty`,`less_than`,`greater_than`,`less_or_equal`,`greater_or_equal`,`is_within`,`on_day_month`,`any_of`,`none_of`],{error:e=>{let t=e.input,n=typeof t==`string`?k[t]:void 0;return n?`Unknown filter operator "${t}" — use ${n}`:void 0}}),Fe=c.object({attribute:c.string().describe(`Attribute to filter on`),property:c.string().optional().describe(`Qualified edge property`),quantifier:c.enum([`any`,`none`]).optional().describe(`For a multi-value attribute`),operator:Pe.describe(`Comparison`),value:Ne.describe(`Comparison value, by attribute type`)}).strict(),Ie=c.array(Fe).max(s.filterRulesPerTab),M=c.object({combinator:c.enum([`and`,`or`]).describe(`Match every rule or any rule`),rules:Ie.describe(`The rules`)}).strict(),N=c.object({object:c.string().optional().describe(`Every record of this object`),relation:c.string().optional().describe(`Records linked through this relation`)}).strict().superRefine((e,t)=>{e.object===void 0&&e.relation===void 0&&t.addIssue({code:`custom`,message:`Collection source must define an object, a relation, or both`})}).transform(e=>e.relation===void 0?{object:e.object}:e.object===void 0?{relation:e.relation}:{object:e.object,relation:e.relation}),Le=c.object({source:N,filters:M.optional(),sorts:j.optional(),limit:c.number().int().nonnegative().optional()}).strict();var RecordQuery=class{constructor(e){this.state=e}with(e){return new this.constructor({...this.state,...e})}rule(e,t,n){return this.with({rules:[...this.state.rules,{attribute:e,operator:t,value:n}]})}eq(e,t){return this.rule(e,`is`,t)}neq(e,t){return this.rule(e,`is_not`,t)}gt(e,t){return this.rule(e,`greater_than`,t)}gte(e,t){return this.rule(e,`greater_or_equal`,t)}lt(e,t){return this.rule(e,`less_than`,t)}lte(e,t){return this.rule(e,`less_or_equal`,t)}contains(e,t){return this.rule(e,`contains`,t)}notContains(e,t){return this.rule(e,`not_contains`,t)}startsWith(e,t){return this.rule(e,`starts_with`,t)}endsWith(e,t){return this.rule(e,`ends_with`,t)}in(e,t){return this.rule(e,`any_of`,t)}notIn(e,t){return this.rule(e,`none_of`,t)}isEmpty(e){return this.rule(e,`is_empty`,null)}isNotEmpty(e){return this.rule(e,`is_not_empty`,null)}where(...e){return this.with({rules:[...this.state.rules,...e.map(e=>({...e}))]})}or(){return this.with({combinator:`or`})}orderBy(e,t=`asc`){return this.with({sorts:[...this.state.sorts,{attribute:e,direction:t}]})}limit(e){return this.with({limit:e})}offset(e){return this.with({offset:e})}search(e){return this.with({search:e})}related(e){return this.with({scope:{kind:`related`,relation:e}})}relatedFrom(e){return this.with({scope:{kind:`relatedFrom`,relation:e}})}toDefinition(){let{object:e,scope:t,rules:n,combinator:r,sorts:i,limit:a}=this.state;return{source:t?.kind===`related`?{relation:t.relation}:t?.kind===`relatedFrom`?{object:e,relation:t.relation}:{object:e},...n.length>0?{filters:{combinator:r,rules:n.map(e=>({...e}))}}:{},...i.length>0?{sorts:i.map(e=>({...e}))}:{},...a===void 0?{}:{limit:a}}}};function query(e){return new RecordQuery({object:typeof e==`string`?e:e.build().name,combinator:`and`,rules:[],sorts:[]})}const P=[`day`,`week`,`month`,`quarter`,`year`],F=`$query`,Re=`$record`;function createInput(e){return Object.freeze({...e,optional:()=>createInput({...e,isOptional:!0}),inSection:t=>createInput({...e,section:t}),showWhen:(t,n)=>createInput({...e,when:{key:t,...n}}),many:()=>createInput({...e,isMany:!0,schema:c.array(e.schema).min(1)})})}function objectNameOf(e){return e===void 0||typeof e==`string`?e:e.build().name}function scalar(e,t,n){return createInput({kind:e,of:objectNameOf(n),isOptional:!1,isMany:!1,schema:t})}function name(){return c.string().min(1)}const I={object:e=>scalar(`object`,name(),e),attribute:(e,t)=>createInput({kind:`attribute`,of:objectNameOf(e),options:t,isOptional:!1,isMany:!1,schema:name()}),query:e=>scalar(`query`,Le,e),record:e=>scalar(`record`,name(),e),agent:()=>scalar(`agent`,name()),routine:()=>scalar(`routine`,name()),view:()=>scalar(`view`,name()),url:()=>scalar(`url`,c.url().refine(e=>/^https?:\/\//.test(e),`Only http(s) links`)),emailCategory:()=>scalar(`emailCategory`,name()),enum:e=>createInput({kind:`enum`,isOptional:!1,isMany:!1,schema:c.enum(e)}),text:()=>scalar(`text`,name()),number:()=>scalar(`number`,c.number()),boolean:()=>scalar(`boolean`,c.boolean()),period:()=>scalar(`period`,c.enum(P))},L={size:{w:4,h:4},minWidth:3,height:`flexible`,minHeight:3,maxHeight:10},R=defineBlock({name:`artifact_preview`,label:`Preview`,icon:`eye`,family:`context`,contexts:[`record`],layout:{size:{w:6,h:8},minWidth:4,height:`flexible`,minHeight:4,maxHeight:20},inputs:{}}),z=[`number`,`currency`],B=[`status`,`select`,`user`,`relation`,`date`],V=[`bar`,`line`,`area`,`donut`,`funnel`,`treemap`,`calendar`];function measureIssue({measure:e,attribute:t}){return e===`count`?t===void 0?void 0:{input:`attribute`,message:`count measures records; it takes no attribute`}:t===void 0?{input:`attribute`,message:`${String(e)} needs a number or currency attribute`}:void 0}function requires(e,t,n){return e[t]!==void 0&&e[n]===void 0?{input:t,message:`${t} needs ${n}`}:void 0}function together(e,t,n){return requires(e,t,n)??requires(e,n,t)}function kindIssue(e){let{kind:t,by:n,byBucket:r,by2:i,measure:a}=e;if(i!==void 0&&i===n)return{input:`by2`,message:`by2 must differ from by`};if((t===`donut`||t===`funnel`)&&i!==void 0)return{input:`kind`,message:`a ${String(t)} splits one grouping (by), and no second`};if(t===`funnel`&&a!==`count`&&a!==`sum`)return{input:`kind`,message:`a funnel adds stages up: its measure is count or sum`};if(t===`area`&&i===void 0)return{input:`kind`,message:`an area stacks a second grouping (by2); one series is a line`};if(t===`treemap`&&(n===void 0||i!==void 0))return{input:`kind`,message:`a treemap needs one grouping (by), and no second`};if(t===`calendar`&&(r!==`day`||i!==void 0))return{input:`kind`,message:`a calendar needs a date grouping by day, and no second`}}function measuredInputs(){return{query:I.query(),measure:I.enum(e).inSection(`data`),attribute:I.attribute(F,{types:z}).optional().showWhen(`measure`,{not:[`count`]}),label:I.text().optional()}}function metricComparePeriod(e){if(e.period)return e.period;if(!e.trendBucket)return`month`;let t=P.indexOf(e.trendBucket);return P[Math.min(t+1,P.length-1)]??`month`}function comparedSpanIssue(e){let{trendBucket:t,compare:n}=e;if(n===void 0||typeof t!=`string`)return;let r=t;if(r===P.at(-1))return{input:`compare`,message:`compare needs a trendBucket finer than year`};let i=metricComparePeriod({trendBucket:r,period:e.period});return P.indexOf(i)>P.indexOf(r)?void 0:{input:`period`,message:`period must be wider than trendBucket (unset, it is one step above)`}}const H=defineBlock({name:`metric`,label:`Indicateur`,icon:`trending-up`,family:`data`,contexts:[`page`,`record`,`display`],layout:{size:{w:3,h:2},minWidth:3,height:`fit`,maxHeight:4,figure:!0},inputs:{...measuredInputs(),trend:I.attribute(F,{types:[`date`]}).optional().inSection(`display`),trendBucket:I.period().optional().showWhen(`trend`),compare:I.enum([`previous_period`]).optional(),period:I.period().optional().showWhen(`compare`),target:I.number().optional()},refine:e=>measureIssue(e)??together(e,`trend`,`trendBucket`)??requires(e,`period`,`compare`)??comparedSpanIssue(e)??(e.target!==void 0&&e.target<=0?{input:`target`,message:`target must be above zero`}:void 0)}),U=defineBlock({name:`chart`,label:`Graphique`,icon:`chart-bar`,family:`data`,contexts:[`page`,`record`,`display`],layout:{size:{w:4,h:6},minWidth:4,height:`flexible`,minHeight:4,maxHeight:12},inputs:{...measuredInputs(),kind:I.enum(V),by:I.attribute(F,{types:B}).optional(),byBucket:I.period().optional().inSection(`data`).showWhen(`by`),by2:I.attribute(F,{types:B}).optional().showWhen(`by`),by2Bucket:I.period().optional().inSection(`data`).showWhen(`by2`)},refine:e=>measureIssue(e)??requires(e,`byBucket`,`by`)??requires(e,`by2`,`by`)??requires(e,`by2Bucket`,`by2`)??kindIssue(e)}),W=defineBlock({name:`agenda`,label:`Agenda`,icon:`calendar`,family:`data`,contexts:[`page`,`record`,`display`],layout:L,inputs:{query:I.query(),attribute:I.attribute(F,{types:[`date`]}),next:I.number().optional(),yearly:I.boolean().optional(),label:I.text().optional()}}),G=defineBlock({name:`card`,label:`Fiche`,icon:`user-square`,family:`data`,contexts:[`page`,`record`,`display`],layout:{size:{w:4,h:4},minWidth:3,height:`fit`,maxHeight:10},inputs:{object:I.object().optional(),record:I.record().optional(),fields:I.attribute(Re).many().optional()},refine:(e,t)=>requires(e,`record`,`object`)??(t===`page`&&e.record===void 0?{input:`record`,message:`A card outside a record shows a chosen record: content.card(object).record(id)`}:void 0)}),K=defineBlock({name:`text_block`,label:`Texte`,icon:`type-text`,family:`layout`,contexts:[`page`,`record`,`display`],layout:{size:{w:12,h:2},minWidth:3,height:`fit`,maxHeight:16},inputs:{markdown:I.text()}}),q=defineBlock({name:`heading`,label:`Titre`,icon:`type-text`,family:`layout`,contexts:[`page`,`record`],layout:{size:{w:12,h:1},minWidth:6,height:`fit`,maxHeight:3},inputs:{title:I.text(),description:I.text().optional(),icon:I.text().optional()}}),ze=defineBlock({name:`inbox`,label:`Boîte de réception`,icon:`inbox`,family:`people`,contexts:[`page`],layout:L,inputs:{kinds:I.enum(t).inSection(`data`).many().optional(),limit:I.number().optional()}}),Be=defineBlock({name:`meetings_upcoming`,label:`Réunions à venir`,icon:`video`,family:`people`,contexts:[`page`],layout:L,inputs:{}}),Ve=defineBlock({name:`mailbox`,label:`E-mails`,icon:`envelope`,family:`people`,contexts:[`page`],layout:L,inputs:{category:I.emailCategory().optional(),important:I.boolean().optional().inSection(`data`),unread:I.boolean().optional().inSection(`data`),limit:I.number().optional(),label:I.text().optional()},refine:({limit:e})=>e===void 0||Number.isInteger(e)&&e>=1&&e<=50?void 0:{input:`limit`,message:`limit is a whole number from 1 to 50`}}),J=defineBlock({name:`record_links`,label:`Bubble`,icon:`share`,family:`context`,contexts:[`record`,`page`],layout:{size:{w:6,h:8},minWidth:6,height:`flexible`,minHeight:6,maxHeight:16},inputs:{center:I.enum([`record`,`me`]).optional().inSection(`data`),object:I.object().optional(),record:I.record().optional(),depth:I.enum([`1`,`2`]).optional()},refine:(e,t)=>requires(e,`record`,`object`)??(t===`page`&&e.center!==`me`&&e.record===void 0?{input:`record`,message:`Links outside a record centre on a chosen record or on the viewer: { object, record } or { center: "me" }`}:void 0)}),He={name:`bubble`,type:`custom`,extension:J.name,placement:`main`,label:J.label,icon:J.icon,parameters:{}},Ue=[R,H,U,W,G,K,q,ze,Be,Ve,J],We=new Set([`name`,`label`,`icon`,`family`,`contexts`,`inputs`,`parameters`,`layout`,`refine`]),Ge=Ue;var ContentExtensionRegistry=class{constructor(){this.extensions=new Map,this.seed()}register(e){let t=Array.isArray(e)?e:[e],r=new Set;t.forEach((e,t)=>{if(this.prepare(e,t),r.has(e.name))throw new n(`content extension`,e.name);r.add(e.name)});for(let e of t)this.extensions.set(e.name,e);return this}prepare(e,t){let r=[`extensions`,String(t)],reject=e=>{throw new i(e,[{path:r,message:e}])};if((typeof e!=`object`||!e||Array.isArray(e))&&reject(`Expected a content extension declaration`),Object.keys(e).some(e=>!We.has(e))&&reject(`Expected only ${[...We].join(`, `)}`),(typeof e.name!=`string`||e.name.trim().length===0)&&reject(`API name must not be empty`),(!Array.isArray(e.contexts)||e.contexts.length===0||e.contexts.some(e=>!S.includes(e)))&&reject(`contexts must be a non-empty list of ${S.join(`, `)}`),typeof e.parameters?.safeParse!=`function`&&reject(`parameters must be a Zod schema`),this.extensions.has(e.name))throw new n(`content extension`,e.name)}get(e){return this.extensions.get(e)}has(e){return this.extensions.has(e)}getAll(){return[...this.extensions.values()]}get size(){return this.extensions.size}clear(){this.extensions.clear(),this.seed()}seed(){for(let e of Ge)this.extensions.set(e.name,e)}};const Ke=new ContentExtensionRegistry,qe=12,Y=[3,4,6,8,9,12];function overlaps(e,t){return e.x<t.x+t.w&&t.x<e.x+e.w&&e.y<t.y+t.h&&t.y<e.y+e.h}function findGridViolation(e,t={}){let n=Object.entries(e);for(let[e,{x:t,y:r,w:i,h:a}]of n){if(![t,r,i,a].every(Number.isInteger))return{path:[e],message:`Block "${e}" needs integer grid coordinates`};if(t<0||r<0||i<1||a<1)return{path:[e],message:`Block "${e}" needs x >= 0, y >= 0, w >= 1 and h >= 1`};if(t+i>12)return{path:[e],message:`Block "${e}" overflows the 12-column grid (x + w = ${t+i})`}}let r=n.filter(([e])=>t.exempt?.has(e)!==!0);for(let[e,[t,n]]of r.entries())for(let[i,a]of r.slice(e+1))if(overlaps(n,a))return{path:[i],message:`Blocks "${t}" and "${i}" overlap`}}function groupedMembers(e){let t=new Set(e.filter(e=>e.type!==`group`).map(e=>e.name)),n=new Set;for(let r of e)if(r.type===`group`)for(let e of r.members)t.has(e)&&n.add(e);return n}function memberlessGroups(e){let t=new Set(e.filter(e=>e.type!==`group`).map(e=>e.name));return new Set(e.flatMap(e=>e.type===`group`&&!e.members.some(e=>t.has(e))?[e.name]:[]))}function groupSizeMessage(e){return e>=2&&e<=s.membersPerGroup?void 0:`A group holds 2 to ${s.membersPerGroup} blocks, not ${e}`}function findGroupViolation(e){let t=new Map(e.map(e=>[e.name,e])),n=new Map;for(let r of e)if(r.type===`group`)for(let e of r.members){let i=t.get(e);if(i===void 0)return{path:[r.name],message:`Group "${r.name}" names "${e}", which is not a content of this page`};if(i.type===`group`)return{path:[r.name],message:`Group "${r.name}" cannot hold the group "${e}"`};let a=n.get(e);if(a!==void 0)return{path:[r.name],message:a===r.name?`Group "${r.name}" names "${e}" twice`:`"${e}" already belongs to the group "${a}"`};n.set(e,r.name)}}function boundsOf(e){let{minHeight:t,maxHeight:n}=e;return t!==void 0&&n!==void 0?`${t} to ${n} rows`:t===void 0?`at most ${String(n)} rows`:`at least ${t} rows`}function findRowLimitViolation(e){let t=Object.entries(e).find(([,e])=>e.y+e.h>s.pageRows);if(t===void 0)return;let[n,r]=t;return{path:[n],message:`Block "${n}" ends at row ${r.y+r.h}, past the page's ${s.pageRows} rows`}}function cellViolation(e,t,n){if(!Y.includes(t.w))return{path:[e],message:`Block "${e}" width ${t.w} is not one of ${Y.join(`, `)}`};if(t.w<n.minWidth)return{path:[e],message:`Block "${e}" width ${t.w} is below its minimum width ${n.minWidth}`};if(n.height===`flexible`&&(n.minHeight!==void 0&&t.h<n.minHeight||n.maxHeight!==void 0&&t.h>n.maxHeight))return{path:[e],message:`Block "${e}" height ${t.h} is outside its bounds (${boundsOf(n)})`}}function sharesRows(e,t){return e.y<t.y+t.h&&t.y<e.y+e.h}function findLayoutRuleViolation(e,t,n,r=new Set){let i=findRowLimitViolation(e);if(i!==void 0)return i;let a=groupedMembers(t),o=Object.entries(e).filter(([e])=>!a.has(e));for(let[e,t]of o){if(r.has(e))continue;let i=cellViolation(e,t,n(e));if(i!==void 0)return i}let[s,c]=o.filter(([e])=>!r.has(e)&&n(e).height===`fill`);if(s!==void 0&&c!==void 0)return{path:[c[0]],message:`Only one block may fill the page: "${s[0]}" and "${c[0]}" both do`};if(s===void 0)return;let[l,u]=s,d=o.find(([e,t])=>e!==l&&sharesRows(t,u));if(d!==void 0)return{path:[l],message:`Block "${l}" fills the page and must be alone in its rows; "${d[0]}" shares them`}}function findRelationAttribute(e,t){return e.attributes.find(e=>e.name===t&&e.type===`relation`)}function relationAcceptsObject(e,t){return e.targets.some(e=>e.object===t||e.object===`*`)}function singleRelationTarget(e){let[t,...n]=e.targets;return t&&n.length===0&&t.object!==`*`?t.object:void 0}function requireSingleRelationTarget(e,t=[e.name,`targets`]){let n=singleRelationTarget(e);if(n===void 0){let n=`Relation "${e.name}" requires one concrete collection target`;throw new i(n,[{path:t,message:n}])}return n}function collectionSourceAddress(e){return e.relation===void 0?{kind:`object`,object:e.object}:e.object===void 0?{kind:`related`,relation:e.relation}:{kind:`relatedFrom`,object:e.object,relation:e.relation}}function collectionSourceAddressOf(e){if(!e||typeof e!=`object`)return;let t=`object`in e?e.object:void 0,n=`relation`in e?e.relation:void 0;if(typeof t==`string`&&typeof n==`string`)return{kind:`relatedFrom`,object:t,relation:n};if(typeof t==`string`&&n===void 0)return{kind:`object`,object:t};if(typeof n==`string`&&t===void 0)return{kind:`related`,relation:n}}function sourcedAttributeOf(e,t){if(t.type===`richtext`)return typeof t.attribute==`string`&&e!==void 0?{object:e,attribute:t.attribute}:void 0;if(t.type!==`collection`)return;let n=collectionSourceAddressOf(t.source);if(n?.kind===`related`)return e===void 0?void 0:{object:e,attribute:n.relation};if(n?.kind===`relatedFrom`)return{object:n.object,attribute:n.relation}}function requireRecordContentContext(e,t,n){if(t!==`record`){let r=`Content "${e}" requires record context. In ${t===`page`?`a standalone page`:`a collection view`} only a collection that lists a whole object, or a custom content that does not require a record, is allowed.`;throw new i(r,[{path:n,message:r}])}}function resolveContentNavigation(e){let t=e.openMode??`page`;return{openMode:t,createMode:e.createMode??t}}function resolveCollectionActions(e,t){return[...new Set(t)].filter(t=>e.actions===void 0||e.actions.includes(t))}const Je={collection:[`page`,`record`,`display`],group:[`page`,`record`],form:[`record`],activity:[`record`],richtext:[`record`],documents:[`record`],forms:[`record`],emails:[`record`],meetings:[`record`]},X={collection:{size:{w:12,h:8},minWidth:6,height:`flexible`,minHeight:4,maxHeight:20},activity:{size:{w:12,h:8},minWidth:6,height:`flexible`},page:{size:{w:12,h:8},minWidth:6,height:`flexible`},group:{size:{w:6,h:4},minWidth:6,height:`flexible`}};function contentReadObjects(e,t,n){if(e.type!==`group`)return[...n(e)];let r=new Set;for(let i of e.members){let e=t.get(i);if(e!==void 0&&e.type!==`group`)for(let t of n(e))r.add(t)}return[...r]}function contentPlacementContexts(e,t){return e.type===`custom`?t?.contexts:e.type===`page`||e.type===`collection`&&collectionSourceAddress(e.source).kind!==`object`?[`record`]:Je[e.type]}function requireContentPlacement(e,t,n,r,i){let a=contentPlacementContexts(e,t);a&&!a.includes(hostPlacementContext(r))&&(requireRecordContentContext(n,r,i),reject(i,`Content "${n}" cannot be placed in a record view or a record page`))}function hostPlacementContext(e){return e===`record`?`record`:`page`}function contentContextOf(e){return e.context===`page`&&e.object!==void 0?`record`:e.context}function violationOf(e,t,n,a){if(!(e instanceof r))throw e;let o=e instanceof i?e.errors[0]:void 0;return{key:JSON.stringify([t,n,e.code,e.message]),contentName:n,path:o?.path??a,message:e.message,code:e.code,error:e}}const Ye=new Map(getSystemAttributeList().map(e=>[e.name,e]));function reject(e,t){throw new i(t,[{path:e,message:t}])}function requireName(e,t){e.trim().length===0&&reject(t,`API name must not be empty`)}function indexUnique(e,t,r){let i=new Map;return e.forEach((e,a)=>{if(requireName(e.name,[...r,String(a),`name`]),i.has(e.name))throw new n(t,e.name);i.set(e.name,e)}),i}const Xe=30;function capped(e,t){let n=e.slice(0,t).join(`, `);return e.length>t?`${n} … and ${e.length-t} more`:n}function attributeInventory(e,t){return t.length===0?`Object "${e}" has no attributes yet.`:`Attributes of "${e}": ${capped(t,30)}`}function requireAttribute(e,t,n,r,i){if(requireName(t,n),!e)return;let a=e.attributes?.get(t)??Ye.get(t);if(!a){if(!e.attributes)return;let r=attributeInventory(e.name,[...e.attributes.keys()]);reject(n,`Unknown attribute "${e.name}.${t}". ${r}${i?.()??``}`)}let o=r===void 0?[]:[r].flat();return o.length>0&&!o.includes(a.type)&&reject(n,`Attribute "${e.name}.${t}" must have type ${o.join(` or `)}`),a}function collectContentViewCatalogue(e,t=`authoring`){let r=e.mode??`published`,a=new Map;e.objects.forEach((e,t)=>{if(requireName(e.name,[`objects`,String(t),`name`]),a.has(e.name))throw new n(`object`,e.name);a.set(e.name,{name:e.name,attributes:indexUnique(e.attributes,`attribute`,[`objects`,String(t),`attributes`])})});let o=new Set;(e.reservedObjects??[]).forEach((e,t)=>{let n=[`reservedObjects`,String(t)];requireName(e,n),!a.has(e)&&(r!==`draft`&&reject(n,`Unresolved reserved object "${e}"`),o.add(e),a.set(e,{name:e}))});let s=indexUnique(e.extensions??[],`extension`,[`extensions`]);function resolveObject(e,t){requireName(e,t);let n=a.get(e);return n||reject(t,`Unknown object "${e}"`),n}function inverseAddresses(e){let t=[];for(let[n,r]of a)if(n!==e)for(let i of r.attributes?.values()??[])i.type===`relation`&&relationAcceptsObject(i,e)&&t.push(`relatedFrom("${n}", "${i.name}")`);return t.sort().slice(0,3)}let authoringSchemaWith=n=>r===`draft`?draftContentViewDefinitionSchemaFor():contentViewDefinitionSchemaFor({traits:t===`structural`?null:(e,t)=>layoutTraitsOf(e,s,t),viewerFiltered:e.viewerFiltered,...n===void 0?{}:{statics:n}}),c=authoringSchemaWith(),l=r===`draft`||t===`structural`?c:contentViewDefinitionSchemaFor({traits:null,viewerFiltered:e.viewerFiltered}),schemaFor=t=>{if(e.authoringViews!==void 0&&!e.authoringViews.has(t))return l;let n=e.staticsOf?.(t);return n===void 0||n.size===0?c:authoringSchemaWith(n)},u=new Map,d=new Map,f=[],p=[];function parseView(e,t,r){let a=schemaFor(r).safeParse(e);if(!a.success)throw new i(`Invalid content view`,a.error.issues.map(e=>({path:[...t,...e.path.map(String)],message:e.message,code:e.code})));let o=a.data;requireName(o.name,[...t,`name`]);let s=o.object??``,c=u.get(s)??new Set;if(c.has(o.name))throw new n(`view`,`${s}.${o.name}`);if(c.add(o.name),u.set(s,c),o.context!==`page`&&o.default){let e=d.get(o.object)??new Set;if(e.has(o.context))throw new n(`default view`,`${o.object}.${o.context}`);e.add(o.context),d.set(o.object,e)}return o}return e.views.forEach((e,t)=>{let n=[`views`,String(t)],r=e,i=`${String(r?.object??`?`)}.${String(r?.name??t)}`,a,o;try{a=parseView(e,n,t),o=a.object===void 0?void 0:resolveObject(a.object,[...n,`object`])}catch(e){f.push(violationOf(e,i,null,n));return}a.contents.forEach((e,t)=>{let r=[...n,`contents`,String(t)];try{requireName(e.name,[...r,`name`]),validateContent(e,r,o,contentContextOf(a),s,resolveObject,inverseAddresses)}catch(t){f.push(violationOf(t,i,e.name,r))}}),p.push(a)}),p.forEach((t,n)=>{t.contents.forEach((r,a)=>{if(r.type!==`page`)return;let o=[`views`,String(n),`contents`,String(a),`page`],s=p.find(e=>e.context===`page`&&e.object===r.page.object&&e.name===r.page.name),c=t.context===`page`?`Content "${r.name}" cannot reference a page from a page`:t.object===r.page.object?s||e.complete!==!0?void 0:`Unknown page "${r.page.object}.${r.page.name}"`:`Content "${r.name}" must reference a page of "${String(t.object)}", not of "${r.page.object}"`;c!==void 0&&f.push(violationOf(new i(c,[{path:o,message:c}]),`${String(t.object)}.${t.name}`,r.name,o))})}),{views:p,unresolvedObjects:[...o].sort(),violations:f}}function validateStoredViews(e){let t=collectContentViewCatalogue(e,`structural`).violations[0];if(t)throw t.error}function validateContentViewCatalogue(e){let{views:t,unresolvedObjects:n,violations:r}=collectContentViewCatalogue(e),i=r[0];if(i)throw i.error;return{views:t,unresolvedObjects:n}}function resolveStoredQuery(e,t,n,{owner:r,requireRecord:i,resolveObject:a,inverseAddresses:o}){let s=collectionSourceAddress(e.source),c,l;if(s.kind===`object`)c=a(s.object,[...t,`source`,`object`]);else if(s.kind===`related`){i();let e=[...t,`source`,`relation`],hint=()=>{if(!r)return``;let e=o(r.name);return e.length===0?``:`. Records pointing at "${r.name}" are addressed from the other side: ${e.join(`, `)}`},n=requireAttribute(r,s.relation,e,`relation`,hint);n?.type===`relation`&&(l=n,c=a(requireSingleRelationTarget(n,e),e))}else{i(),c=a(s.object,[...t,`source`,`object`]);let o=[...t,`source`,`relation`],l=requireAttribute(c,s.relation,o,`relation`);if(l?.type===`relation`&&r&&!relationAcceptsObject(l,r.name)){let e=l.targets.map(e=>`"${e.object}"`).join(`, `);reject(o,`Relation "${s.object}.${s.relation}" targets ${e}, not "${r.name}"`)}e.filters?.combinator===`or`&&reject([...t,`filters`,`combinator`],`${n} addresses "${s.object}" from the far side, so its filters must use the "and" combinator`)}return e.sorts?.forEach((e,n)=>requireAttribute(c,e.attribute,[...t,`sorts`,String(n),`attribute`])),e.filters?.rules.forEach((e,n)=>requireAttribute(c,e.attribute,[...t,`filters`,`rules`,String(n),`attribute`])),{target:c,relationAttribute:l}}function validateBlockReferences(e,t,n,r){let i=Object.entries(e.inputs),a;for(let[o,s]of i){let i=t[o];s.kind===`query`&&i!==void 0&&(a=resolveStoredQuery(i,[...n,o],`Block "${e.name}"`,r).target)}function attributeScope(o){if(o===void 0)return;if(o===`$query`)return a;if(o!==`$record`)return r.resolveObject(o,n);let s=i.find(([,e])=>e.kind===`object`)?.[0],c=s===void 0?void 0:t[s];return typeof c==`string`?r.resolveObject(c,[...n,s??`object`]):(r.owner||reject(n,`Block "${e.name}" names attributes, so it needs an object or a record host`),r.owner)}for(let[e,r]of i){let i=t[e];if(r.kind!==`attribute`||i===void 0)continue;let a=attributeScope(r.of);(Array.isArray(i)?i:[i]).forEach((t,o)=>{if(typeof t!=`string`)return;let s=Array.isArray(i)?[...n,e,String(o)]:[...n,e];requireAttribute(a,t,s,r.options?.types)})}for(let[r,a]of i){let i=a.when?.key,o=i===void 0?void 0:e.inputs[i],s=i===void 0?void 0:t[i];a.kind===`period`&&t[r]!==void 0&&o?.kind===`attribute`&&typeof s==`string`&&requireAttribute(attributeScope(o.of),s,[...n,i??r],[`date`])}}function validateContent(e,t,n,r,a,o,s){function requireRecord(){requireRecordContentContext(e.name,r,t)}let c={owner:n,requireRecord,resolveObject:o,inverseAddresses:s},l=hostPlacementContext(r);if(e.type===`custom`){let n=a.get(e.extension);n||reject([...t,`extension`],`Unknown extension "${e.extension}"`),contentPlacementContexts(e,n)?.includes(l)||reject([...t,`extension`],`${e.extension} cannot be placed here`);let r=n.parameters.safeParse(structuredClone(e.parameters??{}));if(!r.success)throw new i(`Invalid extension parameters`,r.error.issues.map(e=>({path:[...t,`parameters`,...e.path.map(String)],message:e.message,code:e.code})));let o=r.data,s=n.refine?.(o,l);s&&reject([...t,`parameters`,s.input],s.message),validateBlockReferences(n,o,[...t,`parameters`],c);return}if(requireContentPlacement(e,void 0,e.name,r,t),e.type!==`page`&&e.type!==`group`){if(e.type===`collection`){let{target:n,relationAttribute:r}=resolveStoredQuery(e,t,`Collection "${e.name}"`,c);e.columns?.forEach((e,i)=>{let a=[...t,`columns`,String(i)];if(typeof e==`string`){requireAttribute(n,e,a);return}let o=[...a,`relationProperty`];r||reject(o,`Relation property columns require a relation source`),r.properties?.definitions.some(t=>t.name===e.relationProperty)||reject(o,`Unknown relation property "${e.relationProperty}"`)}),e.displayAttributes?.forEach((e,r)=>requireAttribute(n,e,[...t,`displayAttributes`,String(r)])),e.descriptionAttribute!==void 0&&requireAttribute(n,e.descriptionAttribute,[...t,`descriptionAttribute`]),e.layout===`kanban`&&e.groupByAttribute!==void 0&&requireAttribute(n,e.groupByAttribute,[...t,`groupByAttribute`]);return}switch(e.type){case`form`:e.groups.forEach((e,r)=>{let i=[...t,`groups`,String(r)];requireName(e.name,[...i,`name`]),e.fields.forEach((e,t)=>requireAttribute(n,e.attribute,[...i,`fields`,String(t),`attribute`]))});break;case`richtext`:requireAttribute(n,e.attribute,[...t,`attribute`],`richtext`),e.titleAttribute!==void 0&&requireAttribute(n,e.titleAttribute,[...t,`titleAttribute`],`text`);break;case`emails`:case`meetings`:e.emailAttributes.forEach((e,r)=>requireAttribute(n,e,[...t,`emailAttributes`,String(r)],`text`));break;case`documents`:e.relations?.forEach((e,r)=>requireAttribute(n,e,[...t,`relations`,String(r)],`relation`));break;case`forms`:e.objectName!==void 0&&o(e.objectName,[...t,`objectName`]);break;case`activity`:break;default:reject(t,`Unknown content type: ${String(e)}`)}}}const Z=Object.freeze({size:Object.freeze({w:4,h:4}),minWidth:3,height:`flexible`,minHeight:2,figure:!1});function resolveLayout(e){return e===void 0?Z:{size:e.size??Z.size,minWidth:e.minWidth??Z.minWidth,height:e.height??Z.height,...e.minHeight===void 0?{}:{minHeight:e.minHeight},...e.maxHeight===void 0?{}:{maxHeight:e.maxHeight},figure:e.figure??!1}}function baseTraitsOf(e,t){return e.type===`custom`?resolveLayout(t.get(e.extension)?.layout):e.type in X?resolveLayout(X[e.type]):Z}function widthCovering(e){return Y.find(t=>t>=e)??12}function boundOf(e,t){let n=e.filter(e=>e!==void 0);return n.length===0?void 0:t(...n)}function groupTraitsOf(e){if(e.length===0)return resolveLayout(X.group);let sum=t=>e.reduce((e,n)=>e+t(n),0),t={w:widthCovering(sum(e=>e.size.w)),h:Math.max(...e.map(e=>e.size.h))},n=widthCovering(sum(e=>e.minWidth)),r=e.every(e=>e.figure);if(e.every(e=>e.height===`fit`)){let i=boundOf(e.map(e=>e.maxHeight),Math.max);return{size:t,minWidth:n,height:`fit`,...i===void 0?{}:{maxHeight:i},figure:r}}let i=e.filter(e=>e.height!==`fit`),a=boundOf(i.map(e=>e.minHeight),Math.max),o=boundOf(i.map(e=>e.maxHeight),Math.min),s=o===void 0?void 0:Math.max(o,a??o);return{size:t,minWidth:n,height:`flexible`,...a===void 0?{}:{minHeight:a},...s===void 0?{}:{maxHeight:s},figure:r}}function layoutTraitsOf(e,t,n){let r=e.type===`group`?groupTraitsOf(e.members.flatMap(e=>{let r=n?.get(e);return r===void 0||r.type===`group`?[]:[layoutTraitsOf(r,t)]})):baseTraitsOf(e,t);return e.height===void 0?r:{...r,height:e.height}}function pageTraitsOf(e,t){return n=>{let r=e.get(n);return r?layoutTraitsOf(r,t,e):Z}}const Ze=1e4;function isPlainJsonObject(e){let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null&&t.constructor?.name===`Object`}function addJsonIssue(e,t,n=[]){e.addIssue({code:`custom`,message:t,path:n})}function pushJsonArrayChildren(e,t,n,r){for(let n of Reflect.ownKeys(e))if(n!==`length`){if(n===`__proto__`){addJsonIssue(r,`The __proto__ key is not allowed in custom props`,[...t.path,n]);continue}(typeof n==`symbol`||!/^(0|[1-9]\d*)$/.test(n))&&addJsonIssue(r,`Arrays cannot contain non-index JSON properties`,[...t.path,n])}for(let i=e.length-1;i>=0;i--){let a=Object.getOwnPropertyDescriptor(e,String(i)),o=[...t.path,i];if(!(a&&`value`in a)){addJsonIssue(r,`Sparse arrays are not valid JSON values`,o);continue}n.push({kind:`enter`,value:a.value,path:o,depth:t.depth+1})}}function pushJsonObjectChildren(e,t,n,r){let i=Reflect.ownKeys(e);for(let a=i.length-1;a>=0;a--){let o=i[a],s=[...t.path,o];if(o===`__proto__`){addJsonIssue(r,`The __proto__ key is not allowed in custom props`,s);continue}if(typeof o==`symbol`){addJsonIssue(r,`Symbol keys are not valid JSON keys`,s);continue}let c=Object.getOwnPropertyDescriptor(e,o);if(!(c?.enumerable&&`value`in c)){addJsonIssue(r,`Custom props must contain enumerable data properties only`,s);continue}n.push({kind:`enter`,value:c.value,path:s,depth:t.depth+1})}}function validateJsonProps(e,t){if(typeof e!=`object`||!e){addJsonIssue(t,`Expected a plain JSON object`);return}try{if(Array.isArray(e)||!isPlainJsonObject(e)){addJsonIssue(t,`Expected a plain JSON object`);return}}catch{addJsonIssue(t,`Custom props contain an object that cannot be safely inspected`);return}let n=new WeakSet,r=[{kind:`enter`,value:e,path:[],depth:0}],i=0;for(;r.length>0;){let e=r.pop();if(!e)break;if(e.kind===`exit`){n.delete(e.value);continue}if(i++,i>Ze){addJsonIssue(t,`Custom props cannot exceed ${Ze.toLocaleString(`en-US`)} total JSON nodes`,e.path);return}if(e.depth>64){addJsonIssue(t,`Custom props cannot exceed depth 64`,e.path);continue}let a=e.value;if(!(a===null||typeof a==`string`||typeof a==`boolean`||typeof a==`number`&&Number.isFinite(a))){if(typeof a!=`object`){addJsonIssue(t,`Expected a JSON value`,e.path);continue}if(n.has(a)){addJsonIssue(t,`Custom props cannot contain circular references`,e.path);continue}try{if(Array.isArray(a)){n.add(a),r.push({kind:`exit`,value:a}),pushJsonArrayChildren(a,e,r,t);continue}if(!isPlainJsonObject(a)){addJsonIssue(t,`Expected an array or plain JSON object`,e.path);continue}n.add(a),r.push({kind:`exit`,value:a}),pushJsonObjectChildren(a,e,r,t)}catch{addJsonIssue(t,`Custom props contain an object that cannot be safely inspected`,e.path)}}}}const Qe=c.unknown().superRefine(validateJsonProps).transform(e=>e),$e={span:c.union([c.literal(1),c.literal(2),c.literal(3),c.literal(4),c.literal(5),c.literal(6),c.literal(7),c.literal(8),c.literal(9),c.literal(10),c.literal(11),c.literal(12)]).optional().describe(`Columns of 12 this field occupies`),label:c.string().optional().describe(`Overrides the attribute's label`),readOnly:c.boolean().optional().describe(`Shows the value, not editable`)},et=c.object({attribute:c.string().describe(`Attribute API name shown by this field`),...$e}).strict(),tt=c.object({name:c.string().describe(`Group API name, unique in the form`),label:c.string().describe(`Label people see`),description:c.string().optional().describe(`Extra context under the label`),collapsible:c.boolean().optional().describe(`Whether the group can be collapsed`),collapsed:c.boolean().optional().describe(`Whether the group starts collapsed`),fields:c.array(et).max(s.fieldsPerGroup).describe(`Fields in this group, in order`)}).strict();function refineFormContent(e,t){e.groups.reduce((e,t)=>e+t.fields.length,0)>s.fieldsPerFormTab&&t.addIssue({code:`too_big`,origin:`array`,maximum:s.fieldsPerFormTab,inclusive:!0,message:`A form content can contain at most ${s.fieldsPerFormTab} fields`,path:[`groups`]});let n=new Set,r=new Set;e.groups.forEach((e,i)=>{n.has(e.name)&&t.addIssue({code:`custom`,message:`Duplicate group name "${e.name}"`,path:[`groups`,i,`name`]}),n.add(e.name),e.fields.forEach((e,n)=>{r.has(e.attribute)&&t.addIssue({code:`custom`,message:`Duplicate field attribute "${e.attribute}"`,path:[`groups`,i,`fields`,n,`attribute`]}),r.add(e.attribute)})})}const Q={name:c.string().describe(`Content API name, unique in the view`),label:c.string().optional().describe(`Label people see`),icon:a.optional().describe(`Icon name`),placement:c.enum([`main`,`aside`,`grid`]).describe(`main: the tab strip. aside: the side panel. grid: a page block`),height:c.enum([`fit`,`flexible`,`fill`]).optional().describe(`Page block height: fit (content), flexible (between bounds) or fill (whole page, one per page)`)},nt={...Q,type:c.literal(`collection`),source:N.describe(`object: every record; relation: records linked to this record; both: records of object whose relation points at this record`),visibility:c.enum(o).optional().describe(`all: no scope; workspace: every member; private: viewer's own; shared: private records other members shared with the viewer`),columns:c.array(c.union([c.string(),c.object({relationProperty:c.string().refine(e=>e.trim().length>0).describe(`Qualified edge property shown as a column`)}).strict()])).max(s.columnsPerTab).optional().describe(`Table columns, in order`),descriptionAttribute:c.string().optional().describe(`Secondary line under each row's title (list layout)`),displayAttributes:Ee.optional().describe(`Attributes shown on each card`),filters:M.optional().describe(`Restricts which records show`),sorts:j.optional().describe(`Sort order`),actions:c.enum([`create`,`update`,`delete`,`attach`,`detach`]).array().optional().describe(`Offered actions; absent = every action, [] = none`),openMode:c.enum([`page`,`peek`]).optional().describe(`page or peek (the record panel)`),createMode:c.enum([`page`,`peek`,`inline`]).optional().describe(`page, peek, or inline (creates without opening)`)},rt=c.object({...nt,layout:c.enum([`table`,`list`,`kanban`]).describe(`table columns, list cards, kanban board grouped by a select/status attribute`),columnSizing:c.record(c.string(),c.number()).optional().describe(`Column widths in pixels, by attribute name`),groupByAttribute:c.string().optional().describe(`Kanban only: the select or status attribute that names the columns`),kanbanColumnOrder:c.array(c.string()).optional().describe(`Kanban: column order by option value`),kanbanColumnVisibility:c.record(c.string(),c.boolean()).optional().describe(`Kanban: which columns are shown`),kanbanPinnedColumns:c.array(c.string()).optional().describe(`Kanban: columns pinned first`)}).strict().superRefine((e,t)=>{let n=[`groupByAttribute`,`kanbanColumnOrder`,`kanbanColumnVisibility`,`kanbanPinnedColumns`];if(e.layout===`kanban`){e.groupByAttribute===void 0&&t.addIssue({code:`custom`,path:[`groupByAttribute`],message:`A kanban layout requires groupByAttribute`});return}for(let r of n)e[r]!==void 0&&t.addIssue({code:`custom`,path:[r],message:`Only a kanban layout groups by an attribute`})}),$={...Q,type:c.literal(`form`),groups:c.array(tt).max(s.groupsPerFormTab).describe(`Field groups, in order`),formColumns:c.union([c.literal(1),c.literal(2),c.literal(3)]).optional().describe(`Grid columns, 1-3`),density:c.enum([`compact`,`comfortable`,`spacious`]).optional().describe(`Vertical spacing between fields`)},it=c.object($).strict().superRefine(refineFormContent),at=c.object({...$,groups:$.groups.min(1,`A published form content requires at least one group`)}).strict().superRefine(refineFormContent),ot=[rt,c.object({...Q,type:c.literal(`group`),placement:c.literal(`grid`).describe(`Always grid`),members:c.array(c.string()).min(1).max(s.membersPerGroup).describe(`Contents side by side`)}).strict(),c.object({...Q,type:c.literal(`custom`),extension:c.string().describe(`Name of a registered extension`),parameters:c.lazy(()=>Qe).optional().describe(`Extension parameters`)}).strict(),c.object({...Q,type:c.literal(`activity`)}).strict(),c.object({...Q,type:c.literal(`richtext`),attribute:c.string().describe(`Richtext attribute edited in place`),titleAttribute:c.string().optional().describe(`Text attribute shown as the title`)}).strict(),c.object({...Q,type:c.literal(`documents`),allowUpload:c.boolean().optional().describe(`Lets people add files here`),allowRemove:c.boolean().optional().describe(`Lets people remove files here`),hideAttachments:c.boolean().optional().describe(`Hides files attached elsewhere (e.g. emails)`),relations:c.array(c.string()).optional().describe(`Document relations shown; the record's own files if absent`)}).strict(),c.object({...Q,type:c.literal(`forms`),objectName:c.string().optional().describe(`Limits to this object's published forms`)}).strict(),c.object({...Q,type:c.literal(`emails`),emailAttributes:c.array(c.string()).max(s.emailAttributesPerTab).describe(`Addresses`)}).strict(),c.object({...Q,type:c.literal(`meetings`),emailAttributes:c.array(c.string()).max(s.emailAttributesPerTab).describe(`Addresses`)}).strict(),c.object({...Q,type:c.literal(`page`),page:c.object({object:c.string().describe(`Its object`),name:c.string().describe(`Its name`)}).strict().describe(`The record page this tab renders`)}).strict()],st=c.discriminatedUnion(`type`,[it,...ot]),ct=c.discriminatedUnion(`type`,[at,...ot]),lt={name:c.string(),label:c.string(),description:c.string().optional(),icon:a.optional()},ut=c.object({x:c.number().describe(`Column`),y:c.number().describe(`Row`),w:c.number().describe(`Width: 3, 4, 6, 8, 9 or 12; x + w ≤ 12`),h:c.number().describe(`Height`)}).strict();function contentViewBaseSchemaFor(e){let t=c.array(e).max(s.tabsPerView);return c.discriminatedUnion(`context`,[c.object({...lt,object:c.string(),context:c.enum([`collection`,`record`]),default:c.boolean().optional(),contents:t}).strict(),c.object({...lt,object:c.string().optional(),context:c.literal(`page`),home:c.boolean().optional(),grid:c.record(c.string(),ut).refine(e=>Object.keys(e).length<=s.tabsPerView,{message:`A page holds at most ${s.tabsPerView} blocks`}),contents:t}).strict()])}const dt=contentViewBaseSchemaFor(st),ft=contentViewBaseSchemaFor(ct);function registryTraits(e,t){return layoutTraitsOf(e,Ke,t)}function addGroupSizeIssues(e,t){for(let n of e.contents){let e=n.type===`group`?groupSizeMessage(n.members.length):void 0;e&&t.addIssue({code:`custom`,message:e,path:[`contents`]})}}function addDuplicateContentNameIssues(e,t){let n=new Set;e.contents.forEach((e,r)=>{n.has(e.name)&&t.addIssue({code:`custom`,message:`Duplicate content name "${e.name}"`,path:[`contents`,r,`name`]}),n.add(e.name)})}function addPlacementIssues(e,t){e.contents.forEach((n,r)=>{let i=n.placement===`grid`;e.context===`page`&&!i&&t.addIssue({code:`custom`,message:`Content "${n.name}" of a page must be placed on the grid`,path:[`contents`,r,`placement`]}),e.context!==`page`&&i&&t.addIssue({code:`custom`,message:`Content "${n.name}" cannot be placed on a grid outside a page`,path:[`contents`,r,`placement`]})})}function addIssue(e,t){e.addIssue({code:`custom`,message:t.message,path:[`grid`,...t.path]})}function addGridIssues(e,t,n,r){if(e.context!==`page`||!e.grid)return;let i=new Set(e.contents.map(e=>e.name)),a=groupedMembers(e.contents);for(let n of i)a.has(n)||Object.hasOwn(e.grid,n)||t.addIssue({code:`custom`,message:`Content "${n}" has no grid position`,path:[`grid`]});let o=Object.keys(e.grid).filter(e=>!i.has(e));for(let e of o)t.addIssue({code:`custom`,message:`Grid position "${e}" matches no content`,path:[`grid`,e]});if(e.home&&e.object!==void 0&&t.addIssue({code:`custom`,message:`Only a standalone page can be the home`,path:[`home`]}),o.length>0)return;let s=findGridViolation(e.grid,{exempt:a});if(s){addIssue(t,s);return}if(n===null)return;let c=findGroupViolation(e.contents);if(c){t.addIssue({code:`custom`,message:c.message,path:[`contents`]});return}let l=new Map(e.contents.map(e=>[e.name,e])),u=findLayoutRuleViolation(e.grid,e.contents,e=>n(l.get(e),l),r);u&&addIssue(t,u)}function draftContentViewDefinitionSchemaFor(){return dt.superRefine((e,t)=>{let n=e;addDuplicateContentNameIssues(n,t),addPlacementIssues(n,t),addGridIssues(n,t,null)})}function contentViewDefinitionSchemaFor(e={}){let t=e.traits===void 0?registryTraits:e.traits;return ft.superRefine((n,r)=>{let i=n;addDuplicateContentNameIssues(i,r),addPlacementIssues(i,r),addGridIssues(i,r,t,e.statics),e.viewerFiltered||addGroupSizeIssues(i,r),n.context!==`page`&&!n.contents.some(e=>e.placement===`main`)&&r.addIssue({code:`custom`,message:`A published view requires at least one main content`,path:[`contents`]})})}const pt=draftContentViewDefinitionSchemaFor(),mt=contentViewDefinitionSchemaFor();export{J as $,ce as $t,findLayoutRuleViolation as A,isLocationPartOperator as At,W as B,currentActor as Bt,collectionSourceAddressOf as C,isManagedSystemAttribute as Cn,_e as Ct,requireSingleRelationTarget as D,edgePropertyFilterTarget as Dt,relationAcceptsObject as E,attributeFilterTarget as Et,Y as F,isSetMembershipOperator as Ft,B as G,S as Gt,G as H,now as Ht,qe as I,normalizeForEdgeRpc as It,Ve as J,parseBlockParameters as Jt,q as K,blockObjectInputs as Kt,findGridViolation as L,toMultiValueOperator as Lt,groupSizeMessage as M,systemColumnFilterTarget as Mt,groupedMembers as N,canonicalizeFilterValue as Nt,singleRelationTarget as O,filterOperatorsOfType as Ot,memberlessGroups as P,getOperatorPolarity as Pt,Ue as Q,le as Qt,overlaps as R,extractCurrencyFilterValue as Rt,collectionSourceAddress as S,getSystemAttributeList as Sn,toUtcDayString as St,findRelationAttribute as T,normalizeOperator as Tt,U,today as Ut,R as V,isDynamicValue as Vt,V as W,isCalendarDay as Wt,Be as X,buildQualifiedAttribute as Xt,z as Y,ue as Yt,H as Z,parseQualifiedAttribute as Zt,validateContentViewCatalogue as _,isLocationFilterProperty as _n,collectQualifiedRuleIssues as _t,ut as a,isAttributeSortable as an,Re as at,resolveCollectionActions as b,l as bn,resolveIsWithinBounds as bt,layoutTraitsOf as c,relationTargetsOf as cn,query as ct,Xe as d,getAttributeCapabilities as dn,Te as dt,getRollupFilterOperators as en,He as et,attributeInventory as f,getAttributeFilterOperators as fn,Ee as ft,requireContentPlacement as g,isAttributeSearchable as gn,be as gt,contentReadObjects as h,isAttributeKanbanGroupable as hn,k as ht,draftContentViewDefinitionSchemaFor as i,inferInverseCardinality as in,F as it,findRowLimitViolation as j,locationPartFilterTarget as jt,findGroupViolation as k,filterTargetsOf as kt,pageTraitsOf as l,x as ln,Le as lt,collectContentViewCatalogue as m,isAttributeGroupable as mn,j as mt,contentViewDefinitionSchemaFor as n,oe as nn,metricComparePeriod as nt,ct as o,isBilateralRelation as on,I as ot,capped as p,isAttributeFilterable as pn,M as pt,ze as q,defineBlock as qt,pt as r,se as rn,P as rt,Z as s,isUniversalRelation as sn,RecordQuery as st,mt as t,isNoValueOperator as tn,K as tt,Je as u,b as un,N as ut,validateStoredViews as v,resolveEffectiveFilterType as vn,validateQualifiedRule as vt,sourcedAttributeOf as w,normalizeFilterRule as wt,resolveContentNavigation as x,getSystemAttributeI18nKey as xn,resolveUtcDayBounds as xt,requireRecordContentContext as y,u as yn,isRelativeDateValue as yt,Ke as z,extractFilterValue as zt};
|