@stndrds/schema 1.0.0-alpha.354 → 1.0.0-alpha.355
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-WEAw-zHa.d.ts → all-BzWxCmLO.d.ts} +30 -30
- package/dist/{all-SkbqeVsR.d.mts → all-Cr6EWK7O.d.mts} +30 -30
- package/dist/index.d.mts +56 -58
- package/dist/index.d.ts +56 -58
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/validation/all.d.mts +1 -1
- package/dist/validation/all.d.ts +1 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
|
|
2
|
-
import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as ee,S as v,T as y,U as b,V as te,W as ne,X as re,Y as ie,Z as ae,_ as oe,a as se,at as ce,b as le,c as ue,ct as de,d as fe,dt as pe,et as me,f as he,ft as ge,g as _e,h as ve,ht as ye,i as be,it as xe,j as Se,k as Ce,l as x,lt as we,m as Te,mt as Ee,n as De,nt as Oe,o as ke,ot as Ae,p as je,pt as Me,q as Ne,r as Pe,rt as S,s as Fe,st as Ie,t as Le,tt as Re,u as ze,ut as Be,v as Ve,w as He,x as Ue,y as We,z as Ge}from"./view-config.schema-DbDc6VTO.mjs";import{AccessDeniedError as Ke,AmbiguousSchemaChangeError as qe,AttributeInUseError as Je,AttributeNotFoundError as Ye,ConcurrentModificationError as Xe,DuplicateError as C,ForbiddenError as Ze,InvalidPermissionGrantError as Qe,MemoryNotFoundError as $e,NotFoundError as w,NotImplementedError as et,ObjectNotFoundError as tt,ObjectReferencedError as nt,OrphanSystemAttributeError as rt,ProtectedResourceError as it,ProtectedRoleError as at,RealtimeDeliveryError as ot,RealtimeRateLimitedError as st,RealtimeSubscriptionError as ct,RecordNotFoundError as lt,RecordReferencedError as ut,RepositoryError as dt,ReservedObjectNameError as ft,RoleNotFoundError as pt,SchemaError as T,SchemaErrorCode as E,SearchBackendError as mt,StorageError as ht,SyncCascadeError as gt,SyncConflictError as _t,SyncError as vt,SystemEntityImmutableError as yt,ValidationError as D,isAttributeInUseError as bt,isNotFoundError as xt,isObjectReferencedError as St,isProtectedResourceError as Ct,isRecordReferencedError as wt,isSchemaError as Tt,isValidationError as Et}from"./exceptions.mjs";import{$ as Dt,A as Ot,B as kt,C as At,D as jt,E as Mt,F as Nt,G as Pt,H as Ft,I as It,J as Lt,K as Rt,L as zt,M as Bt,N as Vt,O as Ht,P as Ut,Q as Wt,R as O,S as Gt,T as Kt,U as qt,V as Jt,W as k,X as Yt,Y as Xt,Z as Zt,_ as Qt,a as $t,b as en,c as tn,d as nn,f as rn,g as an,h as on,i as sn,j as cn,k as ln,l as un,m as dn,n as fn,o as pn,p as mn,q as hn,r as gn,s as _n,t as vn,u as yn,v as bn,w as xn,x as Sn,y as Cn,z as wn}from"./config-BkMUw1Ho.mjs";import{n as Tn,r as En,t as Dn}from"./text-C8Lb-NFo.mjs";import{n as On,t as kn}from"./core-BLHhNykL.mjs";import{createNumberValidator as An}from"./validation/primitives/number.mjs";import{createCheckboxValidator as jn}from"./validation/primitives/checkbox.mjs";import{createDateValidator as Mn}from"./validation/primitives/date.mjs";import{a as Nn,c as Pn,i as Fn,l as In,n as Ln,o as Rn,r as zn,s as A,t as Bn,u as Vn}from"./utils-fXIvFFl6.mjs";import{n as Hn,t as j}from"./empty-BgAwlO54.mjs";import{a as Un,i as Wn,n as Gn,r as Kn}from"./phone-CRbCvH20.mjs";import{a as qn,c as Jn,d as Yn,f as Xn,i as Zn,o as Qn,r as $n,s as er,u as tr}from"./object-sbH7KtsH.mjs";import{z as M}from"zod";import{AVATAR_COLOR_IDS as nr,MEMORY_DESCRIPTION_MAX_LENGTH as rr,MEMORY_NAME_MAX_LENGTH as ir,SKILL_DESCRIPTION_MAX_LENGTH as ar,SKILL_NAME_MAX_LENGTH as or,getCountryByIso2 as sr,getCountryDisplayNameByIso3 as N,isValidCurrencyCode as cr,isValidIso3 as lr}from"@stndrds/constants";import{parsePhoneNumberFromString as ur}from"libphonenumber-js";const dr=[`fyi`,`task`,`question`,`handoff`,`system`],fr=[`low`,`normal`,`high`,`urgent`],pr=[`public`,`internal`,`sensitive`],mr=[`unread`,`read`,`archived`,`snoozed`],hr=[`none`,`pending`,`processing`,`completed`,`dismissed`,`expired`,`failed`],gr=`agent.session.waiting_human`,_r=`agent.task.assigned`,vr=`agent.question.requested`,yr=[gr,_r,vr],br=[`name`,`type`],xr=[`required`,`hidden`,`archived`,`deprecated`,`defaultValue`,`config`,`order`,`unique`],Sr=[`label`,`description`,`placeholder`,`icon`],Cr=[`record`,`object`,`attribute`,`view`,`user`,`role`,`settings`,`file`,`agent`,`schema_source`,`tenant_invitation`,`api_key`],wr=`record.created,record.updated,record.deleted,record.restored,record.purged,record.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(`,`),Tr=`agentSessionId`;function isAgentWrittenAuditEntry(e){return e.actorType===`agent`||typeof e.metadata?.agentSessionId==`string`}function isTerminalState(e){return e.phase===`terminal`}function sessionStateToLegacyStatus(e){switch(e.phase){case`running`:return`active`;case`queued`:return`idle`;case`parked`:if(e.parkedOn===void 0)throw new T(`parked state without parkedOn`,E.INVARIANT_VIOLATION);return e.parkedOn===`agents`?`waiting_agents`:`waiting_human`;case`terminal`:if(e.outcome===void 0)throw new T(`terminal state without outcome`,E.INVARIANT_VIOLATION);return e.outcome}}function legacyStatusToSessionState(e){switch(e){case`active`:return{phase:`running`};case`idle`:return{phase:`queued`};case`waiting_human`:return{phase:`parked`,parkedOn:`human`,humanRequestIds:[]};case`waiting_agents`:return{phase:`parked`,parkedOn:`agents`};default:return{phase:`terminal`,outcome:e}}}const Er=[`completed`,`failed`,`cancelled`,`timeout`,`expired`];function isTerminalSessionStatus(e){return Er.includes(e)}const Dr=[`idle`,`completed`,`waiting_human`,`waiting_agents`,`cancelled`,`failed`,`timeout`];function isClaimableSessionStatus(e){return Dr.includes(e)}const Or=Object.freeze({mutation:`ask`,destructive:`ask`,outward:`ask`}),kr=[`active`,`completed`,`abandoned`],Ar=[`openai`,`anthropic`,`google`,`spacexai`,`deepseek`,`moonshotai`,`alibaba`,`mistral`,`minimax`,`meta`,`zai`],jr=[`standard`,`fast`],Mr=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`],Nr=[`conversation`,`writing`,`coding`,`analysis`,`extraction`],Pr=[`light`,`standard`,`heavy`],Fr=[`manual`,`auto`],Ir={interactive:{inputPerMillionUsd:5,outputPerMillionUsd:25},delegated:{inputPerMillionUsd:2,outputPerMillionUsd:12}},Lr=[`model`,`speed`,`reasoning`,`imageModel`,`routing`];function isRoutineActorMetadata(e){return e?.kind===`routine`}const Rr=[`octopus`,`clover`,`flower`,`triangle`,`square`,`blob`,`circle`,`drop`,`hexagon`,`pill`,`pebble`,`puddle`],zr=[`relaxed`,`neutral`],Br=4,Vr=200;function agentDisplayName(e){return e.label?.trim()||e.name}const Hr=[`approval-requested`,`approval-responded`,`approval-dispatched`],Ur=[`streaming`,`running`,`pending`,...Hr];function isOpenToolPartState(e){return Ur.includes(e)}function isToolApprovalState(e){return Hr.includes(e)}const Wr=[`CREDITS_EXHAUSTED`];function isSystemPartCode(e){return typeof e==`string`&&Wr.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 Gr=200,Kr=182,qr=366,Jr=`agent-notification`;function isAgentNotificationMetadata(e){return e?.kind===Jr}const Yr=`agent-message`;function isAgentMessageMetadata(e){return e?.kind===Yr}const Xr=[`pending`,`in_progress`,`completed`,`blocked`],Zr=50,Qr=80,$r=500,ei=`session-state`,ti=`__stndrdsNativeUiPartIds`,ni=1;function invalidNativePartIds(){throw new D(`Native agent UI part IDs metadata is invalid`,[])}function isPlainRecord$1(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function nativeAgentUIPartIdMetadataKey(e,t){if(e.type===`text`||e.type===`reasoning`)return`${e.type}:${t}`;if(e.type===`tool`)return`tool:${e.toolCallId}`}function parseNativeAgentUIPartIdsMetadata(e){let t=e.metadata?.[ti];isPlainRecord$1(t)||invalidNativePartIds(),(Object.keys(t).length!==2||t.schemaVersion!==1||!isPlainRecord$1(t.partIds))&&invalidNativePartIds();let n=new Map;for(let[t,r]of e.parts.entries()){let e=nativeAgentUIPartIdMetadataKey(r,t);if(!e||n.has(e)){e&&invalidNativePartIds();continue}n.set(e,r)}let r=Object.entries(t.partIds);r.length!==n.size&&invalidNativePartIds();let i=new Map,a={};for(let[e,t]of r){let r=n.get(e);r&&typeof t==`string`&&t.length>0||invalidNativePartIds();let o=i.get(t);o&&(r.type===`tool`||o!==r.type)&&invalidNativePartIds(),r.type===`tool`&&t!==r.toolCallId&&invalidNativePartIds(),i.set(t,r.type),a[e]=t}return a}const ri=16e3,ii=3200,ai=6400,oi=16e3,si=65536,ci=15e3,li=1e4,ui=5e3,di=`google/gemini-3.5-transcribe-live`,fi={maxDurationMs:3e5,dailyDurationMs:36e5,monthlyDurationMs:72e6,tenantMonthlyBudgetMicrousd:5e7,globalMonthlyBudgetMicrousd:5e7,estimatedMicrousdPerSecond:150,reservationMultiplier:2},pi=`/v1/device-worker/channel`,mi=262144,hi=15e4,gi=1e4,_i=2e3,vi=2e3,yi=2e4,bi=4008,xi={initialMs:1e3,maxMs:3e4};function deviceChannelUrl(e){let t=new URL(e);return`${t.protocol===`https:`?`wss:`:`ws:`}//${t.host}${pi}`}function computeRetryDelay(e,t,n){return Math.min(n.initialMs*2**e,n.maxMs)+Math.floor(t()*250)}function computeReconnectDelay(e,t=Math.random){return computeRetryDelay(e,t,xi)}const Si=[`worker_disconnected`,`cancelled`,`timed_out`,`execution_failed`,`stale_reference`,`tab_unavailable`,`debugger_unavailable`,`blocked_by_user`,`not_actionable`,`javascript_error`,`batch_cap_exceeded`,`no_reference_screenshot`],Ci=`UPGRADE_REQUIRED`;var DeviceChannelProtocolError=class extends T{constructor(e){super(e,E.DEVICE_CHANNEL_PROTOCOL),this._tag=`DeviceChannelProtocolError`,this.name=`DeviceChannelProtocolError`}};const P={id:M.uuid(),leaseToken:M.string().min(1)},wi=M.record(M.string(),M.unknown());function defineDeviceChannelFrames(e){return{worker:M.discriminatedUnion(`type`,[M.strictObject({type:M.literal(`authenticate`),credential:M.string().regex(/^(Device|Bearer) \S+$/),protocol:M.number().int().positive().optional()}),M.strictObject({type:M.literal(`running`),...P}),M.strictObject({type:M.literal(`heartbeat`),...P}),M.strictObject({type:M.literal(`output`),...P,stdout:M.string().optional(),stderr:M.string().optional()}),M.strictObject({type:M.literal(`complete`),...P,result:M.strictObject({stdout:M.string().optional(),stderr:M.string().optional(),exitCode:M.number().int(),success:M.boolean(),errorCode:M.enum(Si).optional(),result:e.result.optional()})}),M.strictObject({type:M.literal(`pong`)})]),server:M.discriminatedUnion(`type`,[M.strictObject({type:M.literal(`ready`),device:M.strictObject({id:M.string(),name:M.string(),capability:M.enum([`shell`,`browser`])}),protocol:M.number().int().positive().optional()}),M.strictObject({type:M.literal(`command`),...P,kind:M.enum([`shell`,`browser`]),intent:M.string(),timeoutMs:M.number().int(),command:M.string().optional(),cwd:M.string().nullable().optional(),action:e.action.optional()}),M.strictObject({type:M.literal(`cancel`),id:M.uuid(),reason:M.enum([`cancelled`,`timed_out`,`revoked`])}),M.strictObject({type:M.literal(`reauthenticate`)}),M.strictObject({type:M.literal(`revoked`)}),M.strictObject({type:M.literal(`ping`)})])}}const Ti=defineDeviceChannelFrames({action:wi,result:wi}),Ei=Ti.worker,Di=Ti.server;function parseDeviceChannelFrame(e,t){let n;try{n=JSON.parse(t)}catch{throw new DeviceChannelProtocolError(`Frame is not JSON`)}let r=e.safeParse(n);if(!r.success)throw new DeviceChannelProtocolError(`Frame does not match the channel protocol`);return r.data}function parseWorkerFrame(e){return parseDeviceChannelFrame(Ei,e)}function parseServerFrame(e){return parseDeviceChannelFrame(Di,e)}const Oi=[`web`,`presentation`,`document`,`spreadsheet`,`image`,`code`,`other`],ki=[`ephemeral`,`conversation`,`persistent`],Ai=[`source`,`preview`,`entrypoint`,`asset`],ji=5,Mi=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])}function getErrorMessage(e){return e instanceof Error?e.message:typeof e==`string`?e:e&&typeof e==`object`?`message`in e&&typeof e.message==`string`?e.message:JSON.stringify(e):String(e)}function isFormDefinition(e){return typeof e==`object`&&!!e&&`slots`in e&&`steps`in e&&`name`in e&&typeof e.name==`string`&&Array.isArray(e.slots)&&Array.isArray(e.steps)}const Ni=[`relation`,`multiRelation`,`formula`,`rollup`,`document`,`richtext`,`user`];function isFormSlotFieldRef(e){return e.type===`slot`}function isFormFreeFieldRef(e){return e.type===`free`}function resolveFieldRequired(e){return e.fieldRequired===void 0?e.slotMode===`create`&&e.attributeRequired===!0:e.fieldRequired}function getSlotFieldTargets(e){return e.additionalSlotIds?.length?[e.slotId,...e.additionalSlotIds]:[e.slotId]}function formFieldKey(e){return isFormSlotFieldRef(e)?`${e.slotId}.${e.attribute}`:`free.${e.attribute.name}`}function formFieldFlatKey(e){return isFormSlotFieldRef(e)?e.attribute:e.attribute.name}function readFormFieldValue(e,t){return e[formFieldKey(t)]??e[formFieldFlatKey(t)]}function isFormFieldsRow(e){return e.type===`fields`}function isFormHeadingRow(e){return e.type===`heading`}function isFormSeparatorRow(e){return e.type===`separator`}function isFormTextRow(e){return e.type===`text`}var NoopGeocodingAdapter=class{async autocomplete(){return await Promise.resolve([])}async geocode(){return await Promise.resolve(null)}};const Pi=[`reader`,`editor`],Fi=[`manual`,`meeting_attendee`];function parseRecordAccessRole(e){if(typeof e==`string`&&Pi.includes(e))return e;let t=`role must be one of: ${Pi.join(`, `)}`;throw new D(t,[{path:[`role`],message:t}])}function deriveViewerAccess(e,t){return e.visibility===`workspace`?`workspace`:e.ownedBy!==null&&t.includes(e.ownedBy)?`owner`:e.viewerGrant===`editor`?`editor`:`reader`}function resolvePropertyDefinitions(e){let t=e.properties;if(!t)return[];if(Array.isArray(t))return t;let n=t;return Array.isArray(n.definitions)?n.definitions:[]}function hasOptions(e){return e.type===`select`||e.type===`status`||e.type===`multiselect`}const Ii=`Notetaker`,Li={meetingRecordingPolicy:`none`,meetingBotDisplayName:Ii},Ri=6048e5,zi=36e5,Bi=2592e6,Vi=6e4,Hi=[`active`,`suspended`],Ui=[`architect`,`manual`,`auto`];function schemaGroupKey(e){return`${e.kind}:${e.id}`}function refuse$2(e,t){throw new D(t,[{path:[e],message:t}])}function parseSchemaGroupPresentation(e){let t=e??{},n={};if(t.label!==void 0){let e=t.label;if(e===null)n.label=null;else if(typeof e!=`string`)refuse$2(`label`,`Label must be a string`);else{let t=e.trim();t.length===0&&refuse$2(`label`,`Label must not be empty`),t.length>Pt.labelLength&&refuse$2(`label`,`Label is too long (max ${Pt.labelLength} characters)`),n.label=t}}if(t.icon!==void 0){let e=t.icon;if(e===null)n.icon=null;else{let t=k.safeParse(e);t.success||refuse$2(`icon`,`Invalid icon name`),n.icon=t.data}}return n}const Wi=[`square`,`landscape`,`portrait`];function imageModelFormatDefect(e){if(e.formats.length===0)return`declares no output format`;for(let t of e.formats)if(e.requests[t]===void 0)return`declares the format "${t}" without a request`;for(let t of Object.keys(e.requests))if(!e.formats.includes(t))return`carries a request for the undeclared format "${t}"`}function declaredImageRequests(e){let t={};for(let n of e.formats){let r=e.requests[n];r!==void 0&&(t[n]=r)}return t}function modelReferenceSpellings(e){let t=e.apiModelId??e.id;return{display:[`${e.provider}/${e.id}`,e.id],upstream:[`${e.provider}/${t}`,t]}}function splitReference(e){let t=e.indexOf(`/`);return t<=0?void 0:{provider:e.slice(0,t),model:e.slice(t+1)}}function findModelByReference(e,t,n={}){let r=typeof t==`string`?splitReference(t):t,i=typeof t==`string`&&n.allowBare===!0?t:void 0;function names(e,t){return r!==void 0&&e.provider===r.provider&&t===r.model||t===i}return e.find(e=>names(e,e.id))??e.find(e=>names(e,e.apiModelId??e.id))}const Gi=[`none`,`estimated`,`exact`];function parseCountMode(e){if(typeof e==`string`&&Gi.includes(e))return e;throw new D(`countMode must be one of: ${Gi.join(`, `)} (received: ${String(e)})`,[])}function parseOptionalCountMode(e){return e===void 0?void 0:parseCountMode(e)}const Ki=1e4,qi=[`storage.bytes`,`members.seats`,`data.live_records`];function isEmptyObject(e){return e==null||typeof e==`object`&&Object.keys(e).length===0}function isNotEmpty(e){return typeof e==`object`&&!!e&&Object.keys(e).length>0}function toUndefinedIfEmpty(e){return isNotEmpty(e)?e:void 0}function computeByteMagnitude(e){if(e<=0)return{value:0,unitIndex:0};let t=1e3,n=Math.min(4,Math.floor(Math.log(e)/Math.log(t)));return{value:Number.parseFloat((e/t**n).toFixed(1)),unitIndex:n}}const Ji=[`B`,`KB`,`MB`,`GB`,`TB`];function formatByteSize(e){let{value:t,unitIndex:n}=computeByteMagnitude(e);return`${t} ${Ji[n]}`}const Yi={ATTACHMENTS:`attachments`};function isDocumentAttribute(e){return e.type===`document`}function matchesAccepts(e,t){if(!t||t.length===0)return!0;let n=e.name.toLowerCase();return t.some(t=>t.endsWith(`/*`)?e.mimeType.startsWith(t.slice(0,-1)):t.startsWith(`.`)?n.endsWith(t.toLowerCase()):e.mimeType===t)}const Xi=Object.freeze([`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`status`,`select`,`multiselect`,`location`]);function buildPropertySchema(e){let t=[];for(let n of e){let e=n.build();if(!Xi.includes(e.type))throw Error(`Property type "${e.type}" is not supported in .qualifyWith()`);t.push(e)}return{definitions:t}}const Zi=`__`;function qualifiedToolName(e,t,n){return`${e}__${t}__${n}`}function parseQualifiedToolName(e,t){let n=`${e}__`;if(!t.startsWith(n))return null;let r=t.slice(n.length),i=r.indexOf(`__`);if(i<=0)return null;let a=r.slice(i+2);return a===``?null:{namespace:r.slice(0,i),tool:a}}const Qi=/\\([!-/:-@[-`{-~])/g,$i=57344;function markdownToPlainText(e){if(e.length===0)return``;let t=[];return e.replace(Qi,(e,n)=>(t.push(n),String.fromCharCode($i+t.length-1))).replace(/^[ \t]*```[^\n]*$/gm,``).replace(/<[^>\n]+>/g,` `).replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[([^\]]+)\]\([^)]*\)/g,`$1`).replace(/^[ \t]*\|?[ \t]*:?-{2,}:?[ \t]*(\|[ \t]*:?-{2,}:?[ \t]*)*\|?[ \t]*$/gm,``).replace(/\|/g,` `).replace(/^[ \t]*(#{1,6}[ \t]+|>[ \t]?|[-*+][ \t]+|\d+[.)][ \t]+)/gm,``).replace(/\[[ xX]\][ \t]+/g,``).replace(/(\*\*|__|\*|_|~~|`)/g,``).replace(/^[ \t]*([-*_][ \t]*){3,}$/gm,``).replace(/\s+/g,` `).trim().replace(/[\ue000-\uf8ff]/g,e=>t[e.charCodeAt(0)-$i]??e)}const ea=`—`;function formatText(e){return String(e)}function formatCheckbox(e){return e?`Yes`:`No`}function formatNumber(e,t){if(typeof e!=`number`)return String(e);if(t.renderAs===`rating`)return`${e}/${t.max??5}`;let n=t.decimals;return t.unit===`integer`?e.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:0}):t.unit===`percentage`?(e/100).toLocaleString(void 0,{style:`percent`,minimumFractionDigits:n,maximumFractionDigits:n}):e.toLocaleString(void 0,{minimumFractionDigits:n,maximumFractionDigits:n})}function formatCurrency(e,t){if(typeof e!=`object`||!e)return String(e);let n=e;return`value`in n&&`code`in n?`${n.value.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})} ${n.code}`:String(e)}function formatDate(e){if(Jt(e)){let t=formatDate(e.start);return e.end?`${t} → ${formatDate(e.end)}`:t}if(e instanceof Date)return e.toISOString().split(`T`)[0];if(typeof e==`string`){let t=new Date(e);if(!Number.isNaN(t.getTime()))return t.toISOString().split(`T`)[0]}return String(e)}function formatPhone(e){if(typeof e!=`object`||!e)return String(e);let t=e;return`phoneNumber`in t?t.phoneNumber?t.countryCode?Gn(t):t.phoneNumber:``:String(e)}function formatLocationValue(e,t=`full`){if(typeof e!=`object`||!e)return``;let n=e,r=[];switch(t){case`country`:n.country&&r.push(N(n.country));break;case`state`:n.state&&r.push(n.state),n.country&&r.push(N(n.country));break;case`city`:n.city&&r.push(n.city),n.state&&r.push(n.state),n.country&&r.push(N(n.country));break;case`coordinates`:n.latitude!==void 0&&n.longitude!==void 0&&r.push(`${n.latitude}, ${n.longitude}`);break;case`address`:n.address&&r.push(n.address),n.city&&r.push(n.city),n.state&&r.push(n.state),n.country&&r.push(N(n.country));break;default:n.address&&r.push(n.address),n.address2&&r.push(n.address2),n.city&&r.push(n.city),n.state&&r.push(n.state),n.postalCode&&r.push(n.postalCode),n.country&&r.push(N(n.country))}return r.join(`, `)}function formatLocation(e,t){return typeof e!=`object`||!e?String(e):formatLocationValue(e,t.granularity??`full`)||`—`}function formatSelect(e,t){return typeof e==`string`?t.options?.find(t=>t.value===e)?.label??String(e):String(e)}function formatMultiselect(e,t){return Array.isArray(e)?t.options?e.map(e=>t.options.find(t=>t.value===e)?.label).filter(Boolean).join(`, `):e.join(`, `):String(e)}function formatAttributeValue(e,t){if(j(e))return`—`;switch(t.type){case`text`:return formatText(e);case`richtext`:return typeof e==`string`?markdownToPlainText(e):String(e);case`checkbox`:return formatCheckbox(e);case`number`:return formatNumber(e,t);case`currency`:return formatCurrency(e,t);case`date`:return formatDate(e);case`phone`:return formatPhone(e);case`location`:return formatLocation(e,t);case`select`:case`status`:return formatSelect(e,t);case`multiselect`:return formatMultiselect(e,t);case`user`:case`relation`:return Array.isArray(e)?e.join(`, `):String(e);default:return Array.isArray(e)?e.join(`, `):String(e)}}const ta=[`UPPER`,`LOWER`,`capitalize`,`trim`],na=[`prefix`,`suffix`,`wrap`,`default`],ra=[...ta,...na],F=M.string().min(1,`labelExpression cannot be empty`).refine(e=>isLabelExpression(e),{message:`labelExpression must contain at least one {{ attribute }} interpolation`}).refine(e=>!/\{\{\s*\}\}/.test(e),{message:`labelExpression contains empty {{ }} interpolation`}).refine(e=>{let t=/(?<!\|)\|(?!\|)\s*(\w+)(?::[^|}]*)?/g,n;for(;(n=t.exec(e))!==null;){let e=n[1];if(!ra.includes(e))return!1}return!0},{message:`Invalid pipe name. Valid pipes: ${ra.join(`, `)}`});function validateLabelExpression(e){let t=F.safeParse(e);return t.success?{success:!0,attributes:extractAttributeNames(e)}:{success:!1,error:t.error.issues[0]?.message??`Invalid labelExpression`}}function applyPipe(e,t){let{name:n,args:r}=parsePipeExpression(t);switch(n){case`UPPER`:return e.toUpperCase();case`LOWER`:return e.toLowerCase();case`capitalize`:return e.replace(/(^|\s)\S/g,e=>e.toUpperCase());case`trim`:return e.trim();case`prefix`:return e?`${r[0]??``}${e}`:``;case`suffix`:return e?`${e}${r[0]??``}`:``;case`wrap`:return e?`${r[0]??``}${e}${r[1]??``}`:``;case`default`:return e||r[0]||``;default:return e}}function applyPipes(e,t){let n=e;for(let e of t)n=applyPipe(n,e);return n}function getValue(e,t){return t.split(`.`).reduce((e,t)=>{if(typeof e==`object`&&e)return e[t]},e)}const ia=`(Untitled)`;function parsePipeExpression(e){let t=e.match(/^(\w+)(?::(.*))?$/);if(!t)return{name:e,args:[]};let n=t[1],r=t[2];if(!r)return{name:n,args:[]};let i=[],a=/["']([^"']*?)["']/g,o;for(;(o=a.exec(r))!==null;)i.push(o[1]);return{name:n,args:i}}function*templateBlocks(e){let t=0;for(;t<e.length;){let n=e.indexOf(`{{`,t);if(n<0)return;let r=e.indexOf(`}`,n+2);if(r<0)return;if(e[r+1]!==`}`){t=r+1;continue}t=r+2;let i=e.slice(n+2,r);i.length>0&&(yield{start:n,end:t,expr:i})}}function resolveLabelBlock(e,t){let n=e.split(`||`).map(e=>e.trim()),r=n[n.length-1].split(`|`).map(e=>e.trim());n[n.length-1]=r[0];let i=r.slice(1).filter(Boolean),a=n.filter(Boolean),o=``;for(let e of a){let n=toText(getValue(t,e));if(n!==``){o=n;break}}return applyPipes(o,i)}function renderLabelExpression(e,t,n=ia){let r=[],i=0;for(let n of templateBlocks(e))r.push(e.slice(i,n.start),resolveLabelBlock(n.expr,t)),i=n.end;return r.push(e.slice(i)),r.join(``).trim()||n}function toText(e){if(e==null||typeof e==`function`)return``;if(typeof e!=`object`)return String(e);if(Array.isArray(e))return e.map(toText).filter(Boolean).join(`,`);let t=e.toString;return typeof t==`function`&&t!==Object.prototype.toString?String(e):``}function isLabelExpression(e){let t=0;for(;t<e.length;){let n=e.indexOf(`{{`,t);if(n<0)return!1;let r=e.indexOf(`}}`,n+2);if(r<0)return!1;if(e.slice(n+2,r).trim().length>0)return!0;t=r+2}return!1}function extractAttributeNames(e){let t=[];for(let n of templateBlocks(e)){let e=n.expr.trim();if(!e)continue;let r=e.split(`||`).map(e=>e.trim()),i=r[r.length-1];r[r.length-1]=i.split(`|`)[0].trim();for(let e of r){if(!e)continue;let n=e.split(`.`)[0];n&&!t.includes(n)&&t.push(n)}}return t}const aa=/^\{\{\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\}\}$/;function getSingleAttributeFromExpression(e){let t=e.trim().match(aa);return t?t[1]:null}function getEditableLabelAttribute(e,t){let n=getSingleAttributeFromExpression(e);if(n===null)return null;let r=t.find(e=>e.name===n);return!r||r.type!==`text`||S(r).authoring.readOnly?null:r}const oa=/\{\{\s*props\./;function applyRelationProps(e,t,n){if(!oa.test(e))return e;let r={},i=new Map(n?.map(e=>[e.name,e]));if(t)for(let[e,n]of Object.entries(t)){if(n==null)continue;let t=i.get(e);if(t){let i=formatAttributeValue(n,t);r[e]=i===`—`?``:i}else r[e]=n}return renderLabelExpression(e,{props:r},``).replace(/\(\s*\)/g,``).replace(/\[\s*\]/g,``).replace(/\s*[-—|:]\s*$/g,``).replace(/\s{2,}/g,` `).trim()}function relationPropertyDefs(e){if(e?.type===`relation`)return e.properties?.definitions}function qualifiedPropertyDefs(e){if(e?.type===`relation`||e?.type===`document`)return e.properties?.definitions}function extractValueRefs(e){if(j(e))return[];if(typeof e==`string`)return[{id:e}];if(Array.isArray(e))return e.flatMap(e=>extractValueRefs(e));if(typeof e==`object`&&`id`in e){let t=e;if(typeof t.id==`string`)return[{id:t.id,props:t.props}]}return[]}const sa=80;function chosenUserName(e){return e.preferredName?.trim()||void 0}function getUserDisplayName(e){let t=chosenUserName(e);if(t!==void 0)return t;let n=[e.firstName,e.lastName].map(e=>e?.trim()).filter(Boolean).join(` `);return n===``?e.email?.split(`@`)[0]??``:n}const ca=/\p{L}|\p{N}/u;function deriveInitials(e,t){let n=e?.trim()??``;if(n===``)return t;let r=n.split(/\s+/),i=(r.length===1?n.split(`@`)[0].split(/[._-]/):r).map(e=>{let t=e.match(ca)?.[0];return t===void 0?``:[...t.toUpperCase()][0]??``}).filter(Boolean).slice(0,2).join(``);return i===``?t:i}const la=`__creatorRootActorId`;function getRecordCreatorPrincipalId(e){let t=e.metadata?.[la];return typeof t==`string`&&t.length>0?t:e.createdBy}const ua=[{id:`data`,capabilities:[{id:`forms`,resources:[`forms`],levels:[{id:`fill`,add:[`read`]},{id:`edit`,add:[`create`,`update`,`delete`]},{id:`manage`,add:[`manage`]}]}]},{id:`structure`,capabilities:[{id:`schema`,resources:[`architect`],levels:[{id:`use`,add:[`read`]},{id:`edit`,add:[`create`,`update`,`delete`]}]}]},{id:`ai`,capabilities:[{id:`agents`,resources:[`agents`],levels:[{id:`chat`,add:[`read`]},{id:`build`,add:[`create`,`update`,`delete`]},{id:`manage`,add:[`manage`]}]},{id:`workstations`,resources:[`workstations`],levels:[{id:`use`,add:[`create`]}]}]},{id:`files`,capabilities:[{id:`files`,resources:[`files`,`documents`],levels:[{id:`read`,add:[`read`]},{id:`edit`,add:[`create`,`update`]},{id:`full`,add:[`delete`]}]}]},{id:`team`,capabilities:[{id:`people`,resources:[`people`],levels:[{id:`view`,add:[`read`]},{id:`invite`,add:[`create`]},{id:`manage`,add:[`update`,`delete`]}]}]},{id:`integrations`,capabilities:[{id:`connectors`,resources:[`connectors`],levels:[{id:`use`,add:[`read`,`create`,`update`,`delete`]}]},{id:`api-keys`,resources:[`api-keys`],levels:[{id:`view`,add:[`read`]},{id:`manage`,add:[`create`,`delete`]}]},{id:`env-vars`,resources:[`env-vars`],levels:[{id:`view`,add:[`read`]},{id:`manage`,add:[`create`,`delete`]}]}]},{id:`administration`,capabilities:[{id:`settings`,resources:[`settings`],levels:[{id:`view`,add:[`read`]},{id:`manage`,add:[`update`,`delete`,`manage`]}]},{id:`audit`,resources:[`audit`],levels:[{id:`view`,add:[`read`]}]},{id:`billing`,resources:[`billing`],levels:[{id:`view`,add:[`read`]}]}]}],da=`none`,fa=`custom`,I={actions:[`read`,`create`,`update`,`delete`],purge:`manage`,levels:[{id:`read`,add:[`read`]},{id:`edit`,add:[`create`,`update`]},{id:`full`,add:[`delete`]}]},L=ua.flatMap(e=>e.capabilities),pa=L.flatMap(e=>e.resources),ma=new Map(L.flatMap(e=>e.resources.map(t=>[t,e])));function isCatalogResource(e){return ma.has(e)}function capabilityForResource(e){let t=ma.get(e);if(!t)throw new T(`Unknown catalog resource "${e}"`,E.INVARIANT_VIOLATION);return t}function sameActions(e,t){let n=new Set(e),r=new Set(t);return n.size===r.size&&[...n].every(e=>r.has(e))}function levelActions(e,t){let n=new Set;for(let r of e.levels){for(let e of r.add)n.add(e);if(r.id===t)return[...n]}return[]}function levelOf(e,t){if(t.length===0)return da;let n=e.levels[e.levels.length-1];if(t.includes(`*`)&&n)return n.id;let r=new Set(t),i=new Set;for(let t of e.levels){for(let e of t.add)i.add(e);if(i.size===r.size&&[...r].every(e=>i.has(e)))return t.id}return fa}const ha=[`read`,`create`,`update`,`delete`,`manage`],ga=M.object({scope:M.enum([`object`,`system`]),target:M.string().min(1),actions:M.array(M.enum(ha))}).strict();function findGrantIssues(e,t){let n=[],r=new Map;for(let i of e){let e=ga.safeParse(i);if(!e.success){let e=typeof i==`object`&&i&&`target`in i?String(i.target):`?`;n.push({target:e,reason:`shape`});continue}let a=e.data;if(a.scope===`system`){if(!isCatalogResource(a.target)){n.push({target:a.target,reason:`unknown-resource`});continue}if(levelOf(capabilityForResource(a.target),a.actions)===`custom`){n.push({target:a.target,reason:`off-level`});continue}r.set(a.target,a.actions);continue}if(a.target!==`*`&&!t.objectNames.has(a.target)){n.push({target:a.target,reason:`unknown-object`});continue}let o=a.target===`*`?[...I.actions,I.purge]:I.actions;a.actions.every(e=>o.includes(e))||n.push({target:a.target,reason:`object-action`})}let i=new Set;for(let[e,t]of r){let a=capabilityForResource(e);if(!i.has(a)){for(let o of a.resources)if(!sameActions(t,r.get(o)??[])){n.push({target:e,reason:`split-capability`}),i.add(a);break}}}return n}function includesAction(e,t){return e?.includes(`*`)===!0||e?.includes(t)===!0}function grantCovers(e,t,n){return includesAction(e?.[`*`],n)||includesAction(e?.[t],n)}function buildPermissionFlags(e){return{canRead:includesAction(e,`read`),canCreate:includesAction(e,`create`),canUpdate:includesAction(e,`update`),canDelete:includesAction(e,`delete`),canManage:includesAction(e,`manage`)}}function isInertLegacyGrant(e){return e.scope===`system`&&e.target!==`*`&&!isCatalogResource(e.target)}function uncoveredGrants(e,t){let n=[];for(let r of t){if(isInertLegacyGrant(r))continue;let t=r.scope===`object`?e.objectPermissions:e.systemPermissions??{},i=r.actions.flatMap(e=>e===`*`?[...ha]:e===`observe`?[]:[e]);for(let e of i)grantCovers(t,r.target,e)||n.push({scope:r.scope,target:r.target,action:e})}return n}function sliceFlags(e,t){return buildPermissionFlags([...e?.[`*`]??[],...e?.[t]??[]])}function objectPermissionFlags(e,t){return sliceFlags(e.objectPermissions,t)}function systemPermissionFlags(e,t){return sliceFlags(e.systemPermissions,t)}const _a=`mixed`;function levelWithin(e,t){let n=new Set(e.levels.flatMap(e=>e.add));return levelOf(e,t.filter(e=>e===`*`||n.has(e)))}function grantsToPermissions(e){let t={},n={};for(let r of e){let e=r.scope===`object`?t:n;e[r.target]=[...new Set([...e[r.target]??[],...r.actions])]}return{objectPermissions:t,systemPermissions:n}}function readAccessLevels(e){let t=e.systemPermissions??{},n=e.objectPermissions??{},r={};for(let e of L){let n=new Set(e.resources.map(n=>levelWithin(e,[...t[n]??[],...t[`*`]??[]]))),[i]=n;r[e.id]=n.size===1&&i!==void 0?i:fa}let i=n[`*`]??[],a=levelWithin(I,i),o=[];for(let[e,t]of Object.entries(n)){if(e===`*`)continue;let n=levelWithin(I,[...i,...t]);n!==a&&o.push({objectName:e,level:n})}return{capabilities:r,defaultObjectLevel:a,exceptions:o,purge:includesAction(i,I.purge)}}function readRoleLevels(e){return readAccessLevels(grantsToPermissions(e))}function summarizeGroup(e,t){let n=ua.find(e=>e.id===t);if(!n)throw new T(`Unknown permission group "${t}"`,E.INVARIANT_VIOLATION);let{capabilities:r}=readRoleLevels(e),i=new Set(n.capabilities.map(e=>r[e.id]??`none`)),[a]=i;return i.size===1&&a!==void 0?a:_a}function knownActions(e,t){let n=[...new Set(e.levels.flatMap(e=>e.add))];return t.includes(`*`)?n:n.filter(e=>t.includes(e))}function storedActions(e,t,n){return e.filter(e=>e.scope===t&&e.target===n).flatMap(e=>e.actions)}function isSubset(e,t){return e.every(e=>t.includes(e))}function isLevelOf(e,t){return t===`none`||e.levels.some(e=>e.id===t)}function defaultObjectActions(e,t){return e.defaultObjectLevel===`custom`?knownActions(I,storedActions(t,`object`,`*`)):levelActions(I,e.defaultObjectLevel)}function grantsFromLevels(e,t){let n=[];for(let r of L){let i=e.capabilities[r.id]??`none`;if(i!==`none`)for(let e of r.resources){let a=i===`custom`?knownActions(r,[...storedActions(t,`system`,e),...storedActions(t,`system`,`*`)]):levelActions(r,i);a.length>0&&n.push({scope:`system`,target:e,actions:a})}}let r=defaultObjectActions(e,t),i=e.purge?[...r,I.purge]:r;i.length>0&&n.push({scope:`object`,target:`*`,actions:i});for(let{objectName:i,level:a}of e.exceptions){let e=a===`custom`?knownActions(I,storedActions(t,`object`,i)):levelActions(I,a);isSubset(e,r)||n.push({scope:`object`,target:i,actions:e})}return n}function withLevels(e,t){return grantsFromLevels(t(readRoleLevels(e)),e)}function normalizeRoleGrants(e){return withLevels(e,e=>e)}function setCapabilityLevel(e,t,n){let r=L.find(e=>e.id===t);return r&&isLevelOf(r,n)?withLevels(e,e=>({...e,capabilities:{...e.capabilities,[t]:n}})):e}function setDefaultObjectLevel(e,t){return isLevelOf(I,t)?withLevels(e,e=>({...e,defaultObjectLevel:t})):e}function exceptionLevels(e){let t=defaultObjectActions(readRoleLevels(e),e);return I.levels.map(e=>e.id).filter(e=>!isSubset(levelActions(I,e),t))}function setObjectException(e,t,n){return t===`*`||!exceptionLevels(e).includes(n)?e:withLevels(e,e=>{let r=e.exceptions.some(e=>e.objectName===t);return{...e,exceptions:r?e.exceptions.map(e=>e.objectName===t?{objectName:t,level:n}:e):[...e.exceptions,{objectName:t,level:n}]}})}function removeObjectException(e,t){return withLevels(e,e=>({...e,exceptions:e.exceptions.filter(e=>e.objectName!==t)}))}function setPurge(e,t){return withLevels(e,e=>({...e,purge:t}))}function canCopyRole(e,t){return uncoveredGrants(e,normalizeRoleGrants(t)).length===0}function canGrantLevel(e,t,n,r=!1){if(`objectName`in t){if(!isLevelOf(I,n))return!1;let i=levelActions(I,n),a=t.objectName===`*`&&r?[...i,I.purge]:i;return uncoveredGrants(e,[{scope:`object`,target:t.objectName,actions:a}]).length===0}let i=L.find(e=>e.id===t.capabilityId);if(!i||!isLevelOf(i,n))return!1;let a=levelActions(i,n);return uncoveredGrants(e,i.resources.map(e=>({scope:`system`,target:e,actions:a}))).length===0}function canGrantPurge(e){return uncoveredGrants(e,[{scope:`object`,target:`*`,actions:[I.purge]}]).length===0}function normalizeRoleLabel(e){return e.trim().toLowerCase()}function isRoleLabelTaken(e,t,n){let r=normalizeRoleLabel(t);return e.some(e=>e.id!==n&&normalizeRoleLabel(e.label)===r)}function roleNameFromLabel(e,t){let n=e.normalize(`NFKD`).replace(/\p{M}/gu,``).toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``),r=n===``?`role`:/^[a-z]/.test(n)?n:`role_${n}`,i=r.slice(0,63);if(!t.has(i))return i;let a=2;for(;;){let e=`_${a}`,n=`${r.slice(0,63-e.length)}${e}`;if(!t.has(n))return n;a+=1}}const va=new Set([`id`,`name`,`label`,`type`,`required`,`system`,`unique`,`order`]),ya={OWNER:`owner`,MEMBER:`member`,AGENT_DEFAULT:`agent_default`},ba={owner:`Owner`,member:`Member`,agent_default:`Agent Default`},xa={owner:`Full access to all platform features and data`,member:`Can view, create, edit and delete business data`,agent_default:`Default role for AI agents — CRUD on records plus documents, files, and read access to the audit trail`},R=[...I.actions],Sa=[...ha],Ca={owner:{system:[{target:`*`,actions:Sa}],object:[{target:`*`,actions:Sa}]},member:{system:[{target:`people`,actions:[`read`]},{target:`architect`,actions:[`read`]},{target:`agents`,actions:[`read`]},{target:`settings`,actions:[`read`]},{target:`audit`,actions:[`read`]},{target:`forms`,actions:[`read`]},{target:`workstations`,actions:[`create`]},{target:`connectors`,actions:R},{target:`files`,actions:R},{target:`documents`,actions:R}],object:[{target:`*`,actions:R}]},agent_default:{system:[{target:`documents`,actions:[`read`,`create`,`update`]},{target:`files`,actions:[`read`,`create`,`update`]},{target:`env-vars`,actions:[`read`]},{target:`audit`,actions:[`read`]}],object:[{target:`*`,actions:R}]}},wa=[{role:`member`,scope:`object`,target:`*`,actions:[`manage`]}];function isDefaultRole(e){return Object.values(ya).includes(e)}const Ta=[{id:`claude-code`,label:`Claude Code`,available:!0,loginCommand:`claude setup-token 2>&1 | tee ~/.standards/login.log`,credentialPaths:[`~/.standards/login.log`,`~/.claude/.credentials.json`],provider:`anthropic`,apiKeyEnv:{anthropic:`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`,available:!0,loginCommand:`codex login --device-auth`,credentialPaths:[`~/.codex/auth.json`],provider:`openai`,apiKeyEnv:{openai:`OPENAI_API_KEY`},models:[{id:`gpt-6-sol`,label:`GPT-6 Sol`},{id:`gpt-6-luna`,label:`GPT-6 Luna`},{id:`gpt-5.5`,label:`GPT-5.5`}],defaultModel:`gpt-6-sol`},{id:`opencode`,label:`OpenCode`,available:!0,credentialPaths:[`~/.local/share/opencode/auth.json`],apiKeyEnv:{anthropic:`ANTHROPIC_API_KEY`,openai:`OPENAI_API_KEY`},models:[{id:`anthropic/claude-sonnet-5`,label:`Claude Sonnet 5`},{id:`anthropic/claude-opus-5-5`,label:`Claude Opus 5.5`},{id:`openai/gpt-6-sol`,label:`GPT-6 Sol`},{id:`openai/gpt-6-luna`,label:`GPT-6 Luna`}],defaultModel:`anthropic/claude-sonnet-5`},{id:`cursor`,label:`Cursor`,available:!1,loginCommand:`cursor-agent login`,credentialPaths:[`~/.config/cursor/auth.json`],provider:`anthropic`,apiKeyEnv:{anthropic:`CURSOR_API_KEY`},models:[{id:`auto`,label:`Auto`}],defaultModel:`auto`},{id:`grok-build`,label:`Grok Build`,available:!1,loginCommand:`grok login`,credentialPaths:[`~/.grok/auth.json`],provider:`spacexai`,apiKeyEnv:{spacexai:`XAI_API_KEY`},models:[{id:`grok-code-fast-1`,label:`Grok Code Fast 1`}],defaultModel:`grok-code-fast-1`}],Ea=new Map(Ta.map(e=>[e.id,e]));function isWorkstationHarnessId(e){return Ea.has(e)}function findWorkstationHarness(e){return Ea.get(e)}function workstationModelProvider(e,t){if(e.provider)return e.provider;let n=t.split(`/`,1)[0];return Object.keys(e.apiKeyEnv).find(e=>e===n)}const Da={maxConcurrentRuns:3,retryPolicy:{maxRetries:3,backoffMs:1e3,backoffMultiplier:2},timeoutMs:3e5};var AgentBuilder=class{constructor(e){if(!e.name||e.name.trim().length===0)throw new D(`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}tools(e){return this.bp.tools=[...e],this}schedule(e){return this.bp.schedule={...e,enabled:e.enabled??!0},this}config(e){let t=this.bp.config??Da,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}mcpServers(e){return this.bp.mcpServers=Array.isArray(e)?[...e]:e,this}approval(e){return this.bp.approval={...Or,...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 D(`Agent "${this.bp.name}": systemPrompt is required`,[]);if(!this.bp.model)throw new D(`Agent "${this.bp.name}": model is required`,[]);if(this.bp.system&&this.bp.visibility===`private`)throw new D(`Agent "${this.bp.name}": system agents must use workspace visibility`,[]);return Vt(this.bp.triggers,e=>e.name,e=>new D(`Agent "${this.bp.name}": duplicate trigger name "${e}"`,[])),{...this.bp,visibility:this.bp.visibility??`workspace`,config:this.bp.config??Da,systemPrompt:this.bp.systemPrompt,model:this.bp.model}}};function agent(e){return new AgentBuilder(e)}const Oa=`@stndrds/schema`;function createStandardSchemaProps(e){return{version:1,vendor:Oa,validate:t=>{let n=e.safeParse(t);return n.success?{value:n.data}:{issues:n.error.issues.map(e=>({message:e.message,path:e.path}))}}}}function isStandardSchema(e){return typeof e==`object`&&!!e&&`~standard`in e&&typeof e[`~standard`]==`object`&&e[`~standard`].version===1}function asMutableArray(e){return e}var BaseAttributeBuilder=class{get"~standard"(){return createStandardSchemaProps(Yn(this.build()))}constructor(e,t,n){Ut(t),It(n),this.attr={name:t,label:n,type:e,required:!1,system:!0}}setRequired(e){this.attr.required=e}asRequiredState(){return this}asPhantomState(){return this}runtime(){return this.attr.system=!1,this}hidden(){return this.attr.hidden=!0,this}placeholder(e){return this.attr.placeholder=e,this}description(e){return this.attr.description=e,this}icon(e){return Nt(e,`attribute "${this.attr.name}"`),this.attr.icon=e,this}order(e){return this.attr.order=e,this}defaultValue(e){return(`defaultValue`in this.attr||![`formula`,`rollup`].includes(this.attr.type))&&(this.attr.defaultValue=e),this}metadata(e){return this.attr.metadata=e,this}build(){return this.attr}},TextAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`text`,e,t)}minLength(e){return this.attr.minLength=e,this}maxLength(e){return this.attr.maxLength=e,this}pattern(e){return this.attr.pattern=e,this.attr.format=void 0,this}multiline(e=!0){return this.attr.multiline=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}email(){return this.attr.format=`email`,this.attr.pattern=void 0,this}url(){return this.attr.format=`url`,this.attr.pattern=void 0,this}slug(){return this.attr.format=`slug`,this.attr.pattern=void 0,this}};function text(e){return new TextAttributeBuilder(e.name,e.label)}var RichtextAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`richtext`,e,t)}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function richtext(e){return new RichtextAttributeBuilder(e.name,e.label)}var NumberAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`number`,e,t)}min(e){return this.attr.min=e,this}max(e){return this.attr.max=e,this}integer(){return this.attr.unit=`integer`,this.attr.decimals=0,this}decimal(e=2){return this.attr.unit=`decimal`,this.attr.decimals=e,this}percentage(){return this.attr.unit=`percentage`,this}renderAs(e){return this.attr.renderAs=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function number(e){return new NumberAttributeBuilder(e.name,e.label)}var CheckboxAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`checkbox`,e,t)}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function checkbox(e){return new CheckboxAttributeBuilder(e.name,e.label)}var DateAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`date`,e,t)}format(e){return this.attr.dateFormat=e,this}minDate(e){return this.attr.minDate=e,this}maxDate(e){return this.attr.maxDate=e,this}endDate(){return this.attr.endDate=!0,this.asPhantomState()}includeTime(){return this.attr.includeTime=!0,this}timeFormat(e){return this.attr.timeFormat=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function date(e){return new DateAttributeBuilder(e.name,e.label)}var PhoneAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`phone`,e,t)}defaultCountry(e){return this.attr.defaultCountryCode=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function phone(e){return new PhoneAttributeBuilder(e.name,e.label)}var CurrencyAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`currency`,e,t)}defaultCurrency(e){return this.attr.defaultCurrency=e,this}allowedCurrencies(e){return this.attr.allowedCurrencies=e,this}allowNegative(e=!0){return this.attr.allowNegative=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function currency(e){return new CurrencyAttributeBuilder(e.name,e.label)}var StatusAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`status`,e,t)}options(e){let t=asMutableArray(e);return O(this.attr.name??`unknown`,t),this.attr.options=t,this.asPhantomState()}option(e){this.attr.options||(this.attr.options=[]);let t=[...this.attr.options,e];return O(this.attr.name??`unknown`,t),this.attr.options.push(e),this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function status(e){return new StatusAttributeBuilder(e.name,e.label)}var SelectAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`select`,e,t)}options(e){let t=asMutableArray(e);return O(this.attr.name??`unknown`,t),this.attr.options=t,this.asPhantomState()}option(e){this.attr.options||(this.attr.options=[]);let t=[...this.attr.options,e];return O(this.attr.name??`unknown`,t),this.attr.options.push(e),this}renderAs(e){return this.attr.renderAs=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function select(e){return new SelectAttributeBuilder(e.name,e.label)}var MultiselectAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`multiselect`,e,t)}options(e){let t=asMutableArray(e);return O(this.attr.name??`unknown`,t),this.attr.options=t,this.asPhantomState()}option(e){this.attr.options||(this.attr.options=[]);let t=[...this.attr.options,e];return O(this.attr.name??`unknown`,t),this.attr.options.push(e),this}renderAs(e){return this.attr.renderAs=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function multiselect(e){return new MultiselectAttributeBuilder(e.name,e.label)}var LocationAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`location`,e,t)}granularity(e){return this.attr.granularity=e,this}defaultCountry(e){return this.attr.defaultCountry=e,this}allowedCountries(e){return this.attr.allowedCountries=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function location(e){return new LocationAttributeBuilder(e.name,e.label)}var UserAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`user`,e,t),this.attr.types=[`user`,`agent`]}types(e){let t=[...new Set(e)];if(t.length===0)throw Error(`[AttributeBuilder] user.types must contain at least one type.`);return this.attr.types=t,this}multiple(){return this.attr.multiple=!0,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function user(e){return new UserAttributeBuilder(e.name,e.label)}var BaseRelationAttributeBuilder=class extends BaseAttributeBuilder{to(e,t){let n={object:e,...t};return this.attr.targets?.push(n),this}toAny(){return this.attr.targets=[{object:`*`}],this}qualifyWith(...e){let t=this.attr.targets;if(!t||t.length===0)throw Error(`.qualifyWith() must be called AFTER .to(). Example: relation({ name: "companies" }).to("companies").qualifyWith(...)`);return this.attr.properties=buildPropertySchema(e),this}bilateral(t){let n=this.attr.targets;if(!n||n.length===0)throw Error(`.bilateral() must be called AFTER .to(). Example: relation({ name: "company" }).to("companies").bilateral({ ... })`);if(n.length>1)throw Error(`Bilateral relations are not supported for polymorphic relations (multiple .to() targets).`);if(e(this.attr))throw Error(`Bilateral relations are not supported for universal relations (.toAny()).`);let r=n[0]?.object;if(!r)throw new D(`Bilateral relation requires one target object`,[{path:[`bilateral`,`object`],message:`Bilateral relation requires one target object`}]);if(t.object&&t.object!==r){let e=`Bilateral inverse object ${t.object} must match relation target ${r}`;throw new D(e,[{path:[`bilateral`,`object`],message:e}])}return this.attr.bilateral={...t,object:r},this}},SingleRelationAttributeBuilder=class extends BaseRelationAttributeBuilder{constructor(e,t){super(`relation`,e,t),this.attr.cardinality=`one`,this.attr.targets=[]}many(){let e=new MultiRelationAttributeBuilder(this.attr.name,this.attr.label??``,{targets:this.attr.targets,isRequired:this.attr.required});return this.attr.system===!1&&e.runtime(),this.attr.hidden&&e.hidden(),this.attr.placeholder&&e.placeholder(this.attr.placeholder),this.attr.description&&e.description(this.attr.description),this.attr.icon&&e.icon(this.attr.icon),this.attr.order!==void 0&&e.order(this.attr.order),this.attr.metadata&&e.metadata(this.attr.metadata),e}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}},MultiRelationAttributeBuilder=class extends BaseRelationAttributeBuilder{constructor(e,t,n){super(`relation`,e,t),this.attr.cardinality=`many`,this.attr.targets=n?.targets??[],this.attr.defaultValue=[],n?.isRequired&&this.setRequired(!0)}maxItems(e){return this.attr.maxItems=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function relation(e){return new SingleRelationAttributeBuilder(e.name,e.label)}var FormulaAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`formula`,e,t),this.attr.required=!1}expression(e){return this.attr.expression=e,this}returns(e){return this.attr.returnType=e,this}decimals(e){return this.attr.decimals=e,this}currency(e){return this.attr.currencyCode=e,this}required(){throw Error(`Formula attributes cannot be required: they are computed read-only values. Remove .required() from this attribute definition.`)}optional(){return this}};function formula(e){return new FormulaAttributeBuilder(e.name,e.label)}var RollupAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`rollup`,e,t),this.attr.required=!1}from(e){return this.attr.relationAttribute=e,this}aggregate(e){return this.attr.targetAttribute=e,this}using(e){return this.attr.function=e,this}decimals(e){return this.attr.decimals=e,this}path(e){return this.attr.relationPath=e,this}targetType(e){return this.attr.targetAttributeType=e,this}targetOptions(e){return this.attr.targetAttributeOptions=asMutableArray(e),this}targetCurrency(e){return this.attr.targetCurrencyCode=e,this}build(){let e=this.attr.function,t=this.attr.targetAttributeType;if(e===`original`&&t!==void 0&&t!==`select`&&t!==`status`&&t!==`multiselect`){let e=this.attr.relationAttribute??`relation`,n=this.attr.targetAttribute??`field`;throw new T(`Rollup "${this.attr.name}": .using("original") only supports a "select", "status", or "multiselect" target, but .targetType("${t}") was given. To surface a plain ${t} value from a related record, use a formula instead — e.g. formula({ name: "${this.attr.name}", label: "…" }).expression("${e}.${n}").`,E.VALIDATION_FAILED)}return super.build()}required(){throw Error(`Rollup attributes cannot be required: they are computed read-only values. Remove .required() from this attribute definition.`)}optional(){return this}};function rollup(e){return new RollupAttributeBuilder(e.name,e.label)}var DocumentAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`document`,e,t)}accepts(e){return this.attr.accepts=e,this}maxFileSize(e){return this.attr.maxFileSize=e,this}qualifyWith(...e){return this.attr.properties=buildPropertySchema(e),this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function document(e){return new DocumentAttributeBuilder(e.name,e.label)}function buildSlotFieldRef(e,t,n){let[r,...i]=Array.isArray(e)?e:[e];return{type:`slot`,slotId:r,additionalSlotIds:i.length>0?i:void 0,attribute:t,label:n?.label,required:n?.required,tooltip:n?.tooltip}}var FormRowBuilder=class{constructor(e,t,n){this._finalized=!1,this.stepBuilder=e,this.rowData={id:t,order:n,type:`fields`,fields:[]}}field(e,t,n){return this.rowData.fields.push(buildSlotFieldRef(e,t,n)),this}freeField(e,t){let n={type:`free`,attribute:e.build(),label:t?.label,required:t?.required,prefillExpression:t?.prefillExpression};return this.rowData.fields.push(n),this}row(e){return this._finalized=!0,this.stepBuilder._finalizeRow(this.rowData).row(e)}heading(e,t){return this._finalized=!0,this.stepBuilder._finalizeRow(this.rowData).heading(e,t)}separator(){return this._finalized=!0,this.stepBuilder._finalizeRow(this.rowData).separator()}text(e){return this._finalized=!0,this.stepBuilder._finalizeRow(this.rowData).text(e)}endRow(){return this._finalized?this.stepBuilder:(this._finalized=!0,this.stepBuilder._finalizeRow(this.rowData))}},FormStepBuilder=class{constructor(e,t,n){this.rowOrder=0,this.formBuilder=e,this.stepData={id:t,label:n,rows:[]}}description(e){return this.stepData.description=e,this}field(e,t,n){this.rowOrder++;let r=`row-${this.stepData.id}-${this.rowOrder}`,i=buildSlotFieldRef(e,t,n),a={id:r,order:this.rowOrder,type:`fields`,fields:[i]};return this.stepData.rows.push(a),this}freeField(e,t){this.rowOrder++;let n=`row-${this.stepData.id}-${this.rowOrder}`,r={type:`free`,attribute:e.build(),label:t?.label,required:t?.required,prefillExpression:t?.prefillExpression},i={id:n,order:this.rowOrder,type:`fields`,fields:[r]};return this.stepData.rows.push(i),this}row(e){return this.rowOrder++,new FormRowBuilder(this,e,this.rowOrder)}heading(e,t){this.rowOrder++;let n={id:`heading-${this.stepData.id}-${this.rowOrder}`,order:this.rowOrder,type:`heading`,content:e,level:t};return this.stepData.rows.push(n),this}separator(){this.rowOrder++;let e={id:`sep-${this.stepData.id}-${this.rowOrder}`,order:this.rowOrder,type:`separator`};return this.stepData.rows.push(e),this}text(e){this.rowOrder++;let t={id:`text-${this.stepData.id}-${this.rowOrder}`,order:this.rowOrder,type:`text`,content:e};return this.stepData.rows.push(t),this}step(e,t){return this.formBuilder._finalizeStep(this.stepData).step(e,t)}build(){return this.formBuilder._finalizeStep(this.stepData).build()}_finalizeRow(e){return e.fields.length>0&&this.stepData.rows.push(e),this}_getData(){return this.stepData}},FormBuilder=class{constructor(e,t){this.data={slots:[],steps:[],status:`draft`,version:1},this.validateName(e),this.data.name=e,this.data.label=t}description(e){return this.data.description=e,this}icon(e){return this.data.icon=e,this}status(e){return this.data.status=e,this}metadata(e){return this.data.metadata=e,this}slot(e,t,n){if(this.data.slots.some(t=>t.id===e))throw Error(`[FormBuilder] Duplicate slot id: "${e}"`);let r={id:e,objectName:t,label:n.label,mode:n.mode??`create`,color:n.color,icon:n.icon};return this.data.slots.push(r),this}step(e,t){if(this.data.steps.some(t=>t.id===e))throw Error(`[FormBuilder] Duplicate step id: "${e}"`);return new FormStepBuilder(this,e,t)}build(){return this.validateRequiredData(),this.validateSlotReferences(),this.validateFreeFields(),this.validatePrefillExpressions(),this.data}_finalizeStep(e){return this.data.steps.push(e),this}validateName(e){let t=M.string().min(1,`Form name cannot be empty`).max(63,`Form name is too long (max 63 characters)`).regex(/^[a-z0-9]+(-[a-z0-9]+)*$/,{message:`Invalid form name format. Name must be in kebab-case: 'client-onboarding', 'contact-creation'`});try{t.parse(e)}catch(e){throw e instanceof M.ZodError?Error(`[FormBuilder] ${e.issues[0].message}`):e}}validateRequiredData(){if(this.data.slots.length===0)throw Error(`[FormBuilder] At least one slot is required. Use .slot() to add slots.`);if(this.data.steps.length===0)throw Error(`[FormBuilder] At least one step is required. Use .step() to add steps.`)}validateSlotReferences(){let e=new Map(this.data.slots.map(e=>[e.id,e.objectName]));for(let t of this.data.steps)for(let n of t.rows)if(isFormFieldsRow(n))for(let r of n.fields){if(r.type!==`slot`)continue;let n=getSlotFieldTargets(r);for(let r of n)if(!e.has(r))throw Error(`[FormBuilder] Step "${t.id}" references unknown slot "${r}". Declare it with .slot("${r}", ...) first.`);let i=new Set(n.map(t=>e.get(t)));if(i.size>1)throw Error(`[FormBuilder] Step "${t.id}" field on attribute "${r.attribute}" targets slots of different objects (${[...i].join(`, `)}). A multi-slot field must target slots of the same object.`)}}validatePrefillExpressions(){let e=[...ra,`join`];for(let t of this.data.steps)for(let n of t.rows)if(isFormFieldsRow(n))for(let r of n.fields){if(!isFormFreeFieldRef(r)||!r.prefillExpression)continue;let n=r.prefillExpression,i=`prefillExpression on free field "${r.attribute.name}" in step "${t.id}"`;if(!isLabelExpression(n))throw Error(`[FormBuilder] ${i} must contain at least one {{ attribute }} interpolation.`);if(/\{\{\s*\}\}/.test(n))throw Error(`[FormBuilder] ${i} contains empty {{ }} interpolation.`);for(let t of n.matchAll(/(?<!\|)\|(?!\|)\s*(\w+)(?::[^|}]*)?/g)){let n=t[1];if(!e.includes(n))throw Error(`[FormBuilder] ${i} uses invalid pipe "${n}". Valid pipes: ${e.join(`, `)}`)}}}validateFreeFields(){let e=new Set(Ni);for(let t of this.data.steps)for(let n of t.rows)if(isFormFieldsRow(n)){for(let r of n.fields)if(isFormFreeFieldRef(r)){let n=r.attribute.type;if(e.has(n))throw Error(`[FormBuilder] Free field in step "${t.id}" uses forbidden attribute type "${n}". Forbidden types: ${Ni.join(`, `)}`)}}}};function form(e,t){return new FormBuilder(e,t)}function validateObjectExpressions(e){let{name:t,labelExpression:n,embeddingExpression:r}=e;if(!n)throw new T(`Object "${t}" must have a labelExpression. The labelExpression defines how records are displayed in lists and relations (e.g. "{{ name }}").`,E.VALIDATION_FAILED);let i=F.safeParse(n);if(!i.success){let e=i.error.issues[0]?.message??`Invalid labelExpression`;throw new T(`Invalid labelExpression for "${t}": ${e}`,E.VALIDATION_FAILED)}if(r!==void 0){let e=F.safeParse(r);if(!e.success){let n=e.error.issues[0]?.message??`Invalid embeddingExpression`;throw new T(`Invalid embeddingExpression for "${t}": ${n}`,E.VALIDATION_FAILED)}}}var ObjectBuilder=class{get"~standard"(){return createStandardSchemaProps(tr(this.build()))}constructor(e){this._sealed=!1,this._toleratedAttributes=[],this.validateName(e.name),this.obj={name:e.name,label:e.label,attributes:[],system:!0},e.id&&(this.obj.id=e.id)}description(e){return this.obj.description=e,this}pluralLabel(e){return this._pluralLabel=e,this}icon(e){return this.obj.icon=e,this}runtime(){return this.obj.system=!1,this}sealed(){return this._sealed=!0,this}tolerate(e){return this._toleratedAttributes=[...this._toleratedAttributes,...e],this}attribute(e){return this.pushAttributes([e]),this}attributes(e){return this.pushAttributes(e),this}pushAttributes(e){let t=e.map(e=>`build`in e&&typeof e.build==`function`?e.build():e);Vt([...this.obj.attributes,...t],e=>e.name,e=>new C(`attribute`,e,`Object "${this.obj.name}": duplicate attribute name "${e}"`)),this.obj.attributes.push(...t)}metadata(e){return this.obj.metadata={...this.obj.metadata,...e},this}order(e){return this.obj.metadata={...this.obj.metadata,order:e},this}hidden(){return this.obj.metadata={...this.obj.metadata,hidden:!0},this}labelExpression(e){return this._labelExpression=e,this}embeddingExpression(e){return this._embeddingExpression=e,this}documentLayout(e){if(e.presets)for(let t of e.presets)validatePresetStructure(t.id,t.structure,1);return this.obj.documentLayout=e,this}build(){if(!this.obj.name)throw new D(`[ObjectBuilder] Missing required field: name`,[{path:[`name`],message:`name is required`}]);if(!this.obj.label)throw new D(`[ObjectBuilder] Missing required field: label`,[{path:[`label`],message:`label is required`}]);return validateObjectExpressions({name:this.obj.name,labelExpression:this._labelExpression,embeddingExpression:this._embeddingExpression}),{...this.obj,pluralLabel:this._pluralLabel,labelExpression:this._labelExpression,embeddingExpression:this._embeddingExpression,sealed:this._sealed,toleratedAttributes:this._toleratedAttributes}}validateName(e){e!==void 0&&zt(e)}};function object(e){if(Dt(e.name))throw new ft(e.name,`builder`);return new ObjectBuilder(e)}function validatePresetStructure(e,t,n){let fail=(t,n)=>{throw new D(t,[{path:[`documentLayout`,`presets`,e],message:n}])};n>5&&fail(`Preset structure exceeds max depth of 5`,`Preset structure too deep`);let r=new Set;for(let i of t){let t=i.title.trim();t.length===0&&fail(`Folder preset node title is required`,`Empty folder title`),t.includes(`/`)&&fail(`Folder preset node title cannot contain /`,`Folder title contains /: "${t}"`),r.has(t)&&fail(`Folder preset sibling titles must be unique`,`Duplicate folder title: "${t}"`),r.add(t),i.children&&i.children.length>0&&validatePresetStructure(e,i.children,n+1)}}function cloneBuilderValue(e,t){try{return structuredClone(e)}catch{let e=`Builder configuration must contain cloneable data`;throw new D(e,[{path:t,message:e}])}}function requireBuilderName(e,t){if(typeof e!=`string`||e.trim().length===0)throw new D(`Name must not be blank`,[{path:t,message:`Name must not be blank`}])}function validateContentConfiguration(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw new D(`Invalid content configuration`,[{path:t,message:`Expected content configuration`}]);for(let n of[`name`,`label`,`placement`])if(Object.hasOwn(e,n)){let e=`Independent content configuration cannot define ${n}`;throw new D(e,[{path:[...t,n],message:e}])}let n=x.safeParse({...e,name:`content`,placement:`main`});if(!n.success)throw D.fromZodErrors(n.error.issues.map(e=>({path:[...t,...e.path.map(String)],message:e.message})));n.data.type===`form`&&n.data.groups.forEach((e,n)=>requireBuilderName(e.name,[...t,`groups`,String(n),`name`]));let{name:r,label:i,placement:a,...o}=n.data;return cloneBuilderValue(o,t)}function validateLiteralContent(e,t){return validateContentConfiguration(e,t),cloneBuilderValue(e,t)}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`?{object:e,attribute:t.attribute}:void 0;if(t.type!==`collection`)return;let n=collectionSourceAddressOf(t.source);if(n?.kind===`related`)return{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 t=`Content "${e}" requires record context. In 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 D(t,[{path:n,message:t}])}}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))}var ka=class ViewBuilder{constructor(e,t=[]){this.kind=`view`,this.data=cloneBuilderValue(e,[`views`,`0`]),this.extensions=t.map(e=>e&&{...e})}for(e){return new ViewBuilder({...this.data,object:e},this.extensions)}default(){return new ViewBuilder({...this.data,default:!0},this.extensions)}description(e){return new ViewBuilder({...this.data,description:e},this.extensions)}icon(e){return new ViewBuilder({...this.data,icon:e},this.extensions)}place(e,t,n,r){let i=[`views`,`0`,`contents`,String(this.data.contents.length)],a,o;try{typeof n==`object`&&n&&`build`in n&&typeof n.build==`function`?(a=validateContentConfiguration(n.build(),i),o=n.extension):a=validateContentConfiguration(n,i)}catch(e){throw e instanceof D?new D(e.message,e.errors.map(e=>({...e,path:e.path[0]===`content`?[...i,...e.path.slice(1)]:e.path}))):e}let s={...a,name:e,label:t,placement:r},c=[...this.data.contents,s];return new ViewBuilder({...this.data,contents:c},[...this.extensions,o])}tab(e,t,n){return this.place(e,t,n,`main`)}aside(e,t,n){return this.place(e,t,n,`aside`)}build(){let e=[`views`,`0`];requireBuilderName(this.data.name,[...e,`name`]),requireBuilderName(this.data.object,[...e,`object`]);let t=Pe.safeParse(this.data);if(!t.success)throw D.fromZodErrors(t.error.issues.map(t=>({path:[...e,...t.path.map(String)],message:t.message})));return this.data.contents.forEach((t,n)=>{let r=[...e,`contents`,String(n)];requireBuilderName(t.name,[...r,`name`]),t.type===`form`&&t.groups.forEach((e,t)=>requireBuilderName(e.name,[...r,`groups`,String(t),`name`])),(t.type===`custom`?this.extensions[n]?.requiresRecord:t.type!==`collection`||collectionSourceAddress(t.source).kind!==`object`)&&requireRecordContentContext(t.name,this.data.context,r)}),{kind:`view`,definition:cloneBuilderValue(this.data,e)}}};function detailView(e,t){return new ka({name:e,label:t,object:void 0,context:`record`,contents:[]})}function listView(e,t){return new ka({name:e,label:t,object:void 0,context:`collection`,contents:[]})}function relationProperty(e){return requireBuilderName(e,[`relationProperty`]),{relationProperty:e}}var z=class ContentBuilder{constructor(e,t){this.data=cloneBuilderValue(e,[`content`]),this.extension=t===void 0?void 0:Object.freeze({name:t.name,requiresRecord:t.requiresRecord,parameters:t.parameters})}set(e){return new ContentBuilder({...this.data,...e},this.extension)}icon(e){return this.set({icon:e})}object(e){return this.data.type===`forms`?this.set({objectName:e}):this.set({source:{object:e}})}related(e){return this.set({source:{relation:e}})}relatedFrom(e,t){return this.set({source:{object:e,relation:t}})}layout(e){let{layout:t,groupByAttribute:n,columnSizing:r,kanbanColumnOrder:i,kanbanColumnVisibility:a,kanbanPinnedColumns:o,...s}={...this.data,layout:void 0,groupByAttribute:void 0,columnSizing:void 0,kanbanColumnOrder:void 0,kanbanColumnVisibility:void 0,kanbanPinnedColumns:void 0};return new ContentBuilder({...s,...e},this.extension)}table(){return this.layout({layout:`table`})}list(){return this.layout({layout:`list`})}kanban(e){return this.layout({layout:`kanban`,groupByAttribute:e})}columns(...e){return this.set({columns:e})}filter(e){return this.set({filters:e})}sort(e,t=`asc`){let n=[...`sorts`in this.data&&Array.isArray(this.data.sorts)?this.data.sorts:[],{attribute:e,direction:t}];return this.set({sorts:n})}actions(...e){return this.set({actions:e})}openMode(e){return this.set({openMode:e})}createMode(e){return this.set({createMode:e})}visibility(e){return this.set({visibility:e})}descriptionAttribute(e){return this.set({descriptionAttribute:e})}displayAttributes(...e){return this.set({displayAttributes:e})}columnSizing(e){return this.set({columnSizing:e})}kanbanColumnOrder(...e){return this.set({kanbanColumnOrder:e})}kanbanColumnVisibility(e){return this.set({kanbanColumnVisibility:e})}kanbanPinnedColumns(...e){return this.set({kanbanPinnedColumns:e})}formColumns(e){return this.set({formColumns:e})}density(e){return this.set({density:e})}titleAttribute(e){return this.set({titleAttribute:e})}allowUpload(e){return this.set({allowUpload:e})}allowRemove(e){return this.set({allowRemove:e})}hideAttachments(e){return this.set({hideAttachments:e})}relations(...e){return this.set({relations:e})}build(){let e=validateLiteralContent(this.data,[`content`]);if(this.extension&&e.type===`custom`){let t=this.extension.parameters.safeParse(cloneBuilderValue(e.parameters??{},[`content`,`parameters`]));if(!t.success)throw D.fromZodErrors(t.error.issues.map(e=>({path:[`content`,`parameters`,...e.path.map(String)],message:e.message})))}return e}},Aa=class GroupBuilder{constructor(e,t,n,r={}){this.data=cloneBuilderValue({name:e,label:t,fields:n,...r},[`group`])}field(e,t){let{name:n,label:r,fields:i,...a}=this.data;return new GroupBuilder(n,r,[...i,{attribute:e,...t}],a)}fields(...e){let{name:t,label:n,fields:r,...i}=this.data;return new GroupBuilder(t,n,[...r,...e.map(e=>({attribute:e}))],i)}description(e){return new GroupBuilder(this.data.name,this.data.label,this.data.fields,{...this.presentation(),description:e})}collapsible(e=!1){return new GroupBuilder(this.data.name,this.data.label,this.data.fields,{...this.presentation(),collapsible:!0,collapsed:e})}presentation(){let{name:e,label:t,fields:n,...r}=this.data;return r}build(){requireBuilderName(this.data.name,[`group`,`name`]);try{validateLiteralContent({type:`form`,groups:[this.data]},[`group`])}catch(e){throw e instanceof D?new D(e.message,e.errors.map(e=>({...e,path:e.path[1]===`groups`?[`group`,...e.path.slice(3)]:e.path}))):e}return cloneBuilderValue(this.data,[`group`])}};function group(e,t){return new Aa(e,t,[])}function collection(){return new z({type:`collection`})}function form$1(...e){return new z({type:`form`,groups:e.map(e=>`build`in e?e.build():e)})}function activity(){return new z({type:`activity`})}function richtext$1(e){return new z({type:`richtext`,attribute:e})}function documents(){return new z({type:`documents`})}function forms(){return new z({type:`forms`})}function emails(...e){return new z({type:`emails`,emailAttributes:e})}function meetings(...e){return new z({type:`meetings`,emailAttributes:e})}function custom(e,t){if(typeof e!=`object`||!e||typeof e.name!=`string`)throw new D(`Expected registered extension declaration`,[{path:[`content`,`extension`],message:`Expected registered extension declaration`}]);let n=validateContentConfiguration({type:`custom`,extension:e.name,parameters:t},[`content`]);if(n.type!==`custom`)throw new D(`Expected custom content`,[]);let r=new z({...n,extension:e.name},e);return r.build(),r}const B={collection,form:form$1,activity,richtext:richtext$1,documents,forms,emails,meetings,custom};function validateFlagName(e){if(!/^[a-z][a-z0-9-]*[a-z0-9]$|^[a-z]$/.test(e))throw Error(`Invalid flag name "${e}". Flag names must be kebab-case (e.g., "architect-mode", "ai-features").`)}var BaseFlagBuilder=class{constructor(e,t,n){validateFlagName(e),this.flag={name:e,valueType:t,defaultValue:n,allowedLevels:[`global`,`tenant`,`user`]}}label(e){return this.flag.label=e,this}description(e){return this.flag.description=e,this}category(e){return this.flag.category=e,this}system(){return this.flag.system=!0,this}tenantScoped(){return this.flag.allowedLevels=[`global`,`tenant`],this}globalOnly(){return this.flag.allowedLevels=[`global`],this}allowedLevels(e){return this.flag.allowedLevels=[...e],this}build(){if(!this.flag.label?.trim())throw Error(`Flag "${this.flag.name}" must have a label. Use .label("Human-readable label").`);return{...this.flag,allowedLevels:[...this.flag.allowedLevels||[]]}}},BooleanFlagBuilder=class extends BaseFlagBuilder{constructor(e){super(e,`boolean`,!1)}defaultValue(e){return this.flag.defaultValue=e,this}enabledByDefault(){return this.flag.defaultValue=!0,this}},StringFlagBuilder=class extends BaseFlagBuilder{constructor(e){super(e,`string`,``)}defaultValue(e){return this.flag.defaultValue=e,this}},NumberFlagBuilder=class extends BaseFlagBuilder{constructor(e){super(e,`number`,0)}defaultValue(e){return this.flag.defaultValue=e,this}},JsonFlagBuilder=class extends BaseFlagBuilder{constructor(e,t){super(e,`json`,t)}defaultValue(e){return this.flag.defaultValue=e,this}};function booleanFlag(e){return new BooleanFlagBuilder(e)}function stringFlag(e){return new StringFlagBuilder(e)}function numberFlag(e){return new NumberFlagBuilder(e)}function jsonFlag(e,t){return new JsonFlagBuilder(e,t)}function duplicateFlagError(e){return new C(`feature flag`,e,`Flag "${e}" is already registered. Each flag name must be unique.`)}function cloneFlagDefinition(e){return{...e,allowedLevels:[...e.allowedLevels]}}var FlagRegistry=class{constructor(){this.flags=new Map}register(e){if(this.flags.has(e.name))throw duplicateFlagError(e.name);this.flags.set(e.name,cloneFlagDefinition(e))}registerAll(e){let t=new Set;for(let n of e){if(this.flags.has(n.name)||t.has(n.name))throw duplicateFlagError(n.name);t.add(n.name)}for(let t of e)this.register(t)}get(e){let t=this.flags.get(e);return t?cloneFlagDefinition(t):void 0}getOrThrow(e){let t=this.get(e);if(!t)throw new w(`Feature flag`,e,void 0,`Flag "${e}" is not registered. Available flags: ${this.listNames().join(`, `)}`);return t}has(e){return this.flags.has(e)}list(){return Array.from(this.flags.values(),cloneFlagDefinition)}listNames(){return Array.from(this.flags.keys())}unregister(e){return this.flags.delete(e)}clear(){this.flags.clear()}get size(){return this.flags.size}};const ja=new FlagRegistry;function createFlagRegistry(){return new FlagRegistry}var FlagService=class{constructor(e){this.registry=e.registry,this.staticDefaults=new Map(e.staticDefaults?.map(e=>[e.name,e.value])??[])}resolveAll(){let e=new Map;for(let t of this.registry.listNames())e.set(t,this.getValue(t));for(let t of this.staticDefaults.keys())e.set(t,this.getValue(t));return e}getValue(e){return this.staticDefaults.has(e)?this.staticDefaults.get(e):this.registry.get(e)?.defaultValue}isEnabled(e){return this.getValue(e)===!0}};function createFlagService(e){return new FlagService(e)}const Ma=Symbol(`stndrds.native-object`);function markNativeDefinition(e){return Object.defineProperty(e,Ma,{value:!0,enumerable:!1}),e}var NativeObjectBuilder=class extends ObjectBuilder{build(){return markNativeDefinition(super.build())}};function nativeObject(e){return new NativeObjectBuilder(e)}function isNativeDefinition(e){return e[Ma]===!0}function cloneObjectDefinition(e){let t=structuredClone(e);return isNativeDefinition(e)?markNativeDefinition(t):t}var NativeObjectRegistryClass=class{constructor(){this.objects=new Map}register(e){let t=(Array.isArray(e)?e:[e]).map(e=>`build`in e&&typeof e.build==`function`?e.build():e),n=new Set;for(let e of t){if(this.validate(e),n.has(e.name))throw new C(`object`,e.name,`[NativeObjectRegistry] Duplicate object name "${e.name}" within a single register() batch.`);n.add(e.name)}for(let e of t)this.objects.set(e.name,cloneObjectDefinition(e));return this}validate(e){if(!e.system){let t=`[NativeObjectRegistry] Cannot register object "${e.name}" (id: ${e.id}): missing system flag.\nNative objects must have system=true. Did you call .runtime() on the builder? Remove that call — objects are system:true by default.`;throw new D(t,[])}if(Dt(e.name)&&!isNativeDefinition(e))throw new ft(e.name,`registry`);if(this.objects.has(e.name)){let t=this.objects.get(e.name),n=`[NativeObjectRegistry] Duplicate object name "${e.name}":\n - Existing: "${t?.label}" (id: ${t?.id})\n - New: "${e.label}" (id: ${e.id})\nPlease use unique names for each native object.`;throw new C(`object`,e.name,n)}}getByName(e){let t=this.objects.get(e);return t?cloneObjectDefinition(t):void 0}getByNameOrThrow(e){let t=this.getByName(e);if(!t){let t=`[NativeObjectRegistry] Native object "${e}" not found.\nAvailable objects: ${this.listNames().join(`, `)}`;throw new w(`Native object`,e,E.OBJECT_NOT_FOUND,t)}return t}getAll(){return Array.from(this.objects.values(),cloneObjectDefinition)}listNames(){return Array.from(this.objects.keys())}has(e){return this.objects.has(e)}get size(){return this.objects.size}clear(){this.objects.clear()}summary(){let e=this.getAll();return[`[NativeObjectRegistry] ${this.size} native object(s) registered:`,...e.map(e=>` - ${e.name}: "${e.label}" (${e.attributes.length} attributes)`)].join(`
|
|
2
|
+
import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as ee,S as v,T as y,U as b,V as te,W as ne,X as re,Y as ie,Z as ae,_ as oe,a as se,at as ce,b as le,c as ue,ct as de,d as fe,dt as pe,et as me,f as he,ft as ge,g as _e,h as ve,ht as ye,i as be,it as xe,j as Se,k as Ce,l as x,lt as we,m as Te,mt as Ee,n as De,nt as Oe,o as ke,ot as Ae,p as je,pt as Me,q as Ne,r as Pe,rt as S,s as Fe,st as Ie,t as Le,tt as Re,u as ze,ut as Be,v as Ve,w as He,x as Ue,y as We,z as Ge}from"./view-config.schema-DbDc6VTO.mjs";import{AccessDeniedError as Ke,AmbiguousSchemaChangeError as qe,AttributeInUseError as Je,AttributeNotFoundError as Ye,ConcurrentModificationError as Xe,DuplicateError as C,ForbiddenError as Ze,InvalidPermissionGrantError as Qe,MemoryNotFoundError as $e,NotFoundError as w,NotImplementedError as et,ObjectNotFoundError as tt,ObjectReferencedError as nt,OrphanSystemAttributeError as rt,ProtectedResourceError as it,ProtectedRoleError as at,RealtimeDeliveryError as ot,RealtimeRateLimitedError as st,RealtimeSubscriptionError as ct,RecordNotFoundError as lt,RecordReferencedError as ut,RepositoryError as dt,ReservedObjectNameError as ft,RoleNotFoundError as pt,SchemaError as T,SchemaErrorCode as E,SearchBackendError as mt,StorageError as ht,SyncCascadeError as gt,SyncConflictError as _t,SyncError as vt,SystemEntityImmutableError as yt,ValidationError as D,isAttributeInUseError as bt,isNotFoundError as xt,isObjectReferencedError as St,isProtectedResourceError as Ct,isRecordReferencedError as wt,isSchemaError as Tt,isValidationError as Et}from"./exceptions.mjs";import{$ as Dt,A as Ot,B as kt,C as At,D as jt,E as Mt,F as Nt,G as Pt,H as Ft,I as It,J as Lt,K as Rt,L as zt,M as Bt,N as Vt,O as Ht,P as Ut,Q as Wt,R as O,S as Gt,T as Kt,U as qt,V as Jt,W as k,X as Yt,Y as Xt,Z as Zt,_ as Qt,a as $t,b as en,c as tn,d as nn,f as rn,g as an,h as on,i as sn,j as cn,k as ln,l as un,m as dn,n as fn,o as pn,p as mn,q as hn,r as gn,s as _n,t as vn,u as yn,v as bn,w as xn,x as Sn,y as Cn,z as wn}from"./config-BkMUw1Ho.mjs";import{n as Tn,r as En,t as Dn}from"./text-C8Lb-NFo.mjs";import{n as On,t as kn}from"./core-BLHhNykL.mjs";import{createNumberValidator as An}from"./validation/primitives/number.mjs";import{createCheckboxValidator as jn}from"./validation/primitives/checkbox.mjs";import{createDateValidator as Mn}from"./validation/primitives/date.mjs";import{a as Nn,c as Pn,i as Fn,l as In,n as Ln,o as Rn,r as zn,s as A,t as Bn,u as Vn}from"./utils-fXIvFFl6.mjs";import{n as Hn,t as j}from"./empty-BgAwlO54.mjs";import{a as Un,i as Wn,n as Gn,r as Kn}from"./phone-CRbCvH20.mjs";import{a as qn,c as Jn,d as Yn,f as Xn,i as Zn,o as Qn,r as $n,s as er,u as tr}from"./object-sbH7KtsH.mjs";import{z as M}from"zod";import{AVATAR_COLOR_IDS as nr,MEMORY_DESCRIPTION_MAX_LENGTH as rr,MEMORY_NAME_MAX_LENGTH as ir,SKILL_DESCRIPTION_MAX_LENGTH as ar,SKILL_NAME_MAX_LENGTH as or,getCountryByIso2 as sr,getCountryDisplayNameByIso3 as N,isValidCurrencyCode as cr,isValidIso3 as lr}from"@stndrds/constants";import{parsePhoneNumberFromString as ur}from"libphonenumber-js";const dr=[`fyi`,`task`,`question`,`handoff`,`system`],fr=[`low`,`normal`,`high`,`urgent`],pr=[`public`,`internal`,`sensitive`],mr=[`unread`,`read`,`archived`,`snoozed`],hr=[`none`,`pending`,`processing`,`completed`,`dismissed`,`expired`,`failed`],gr=`agent.session.waiting_human`,_r=`agent.task.assigned`,vr=`agent.question.requested`,yr=[gr,_r,vr],br=[`name`,`type`],xr=[`required`,`hidden`,`archived`,`deprecated`,`defaultValue`,`config`,`order`,`unique`],Sr=[`label`,`description`,`placeholder`,`icon`],Cr=[`record`,`object`,`attribute`,`view`,`user`,`role`,`settings`,`file`,`agent`,`schema_source`,`tenant_invitation`,`api_key`],wr=`record.created,record.updated,record.deleted,record.restored,record.purged,record.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(`,`),Tr=`agentSessionId`;function isAgentWrittenAuditEntry(e){return e.actorType===`agent`||typeof e.metadata?.agentSessionId==`string`}function isTerminalState(e){return e.phase===`terminal`}function sessionStateToLegacyStatus(e){switch(e.phase){case`running`:return`active`;case`queued`:return`idle`;case`parked`:if(e.parkedOn===void 0)throw new T(`parked state without parkedOn`,E.INVARIANT_VIOLATION);return e.parkedOn===`agents`?`waiting_agents`:`waiting_human`;case`terminal`:if(e.outcome===void 0)throw new T(`terminal state without outcome`,E.INVARIANT_VIOLATION);return e.outcome}}function legacyStatusToSessionState(e){switch(e){case`active`:return{phase:`running`};case`idle`:return{phase:`queued`};case`waiting_human`:return{phase:`parked`,parkedOn:`human`,humanRequestIds:[]};case`waiting_agents`:return{phase:`parked`,parkedOn:`agents`};default:return{phase:`terminal`,outcome:e}}}const Er=[`completed`,`failed`,`cancelled`,`timeout`,`expired`];function isTerminalSessionStatus(e){return Er.includes(e)}const Dr=[`idle`,`completed`,`waiting_human`,`waiting_agents`,`cancelled`,`failed`,`timeout`];function isClaimableSessionStatus(e){return Dr.includes(e)}const Or=Object.freeze({mutation:`ask`,destructive:`ask`,outward:`ask`}),kr=[`active`,`completed`,`abandoned`],Ar=[`openai`,`anthropic`,`google`,`spacexai`,`deepseek`,`moonshotai`,`alibaba`,`mistral`,`minimax`,`meta`,`zai`],jr=[`standard`,`fast`],Mr=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`],Nr=[`conversation`,`writing`,`coding`,`analysis`,`extraction`],Pr=[`light`,`standard`,`heavy`],Fr=[`manual`,`auto`],Ir={interactive:{inputPerMillionUsd:5,outputPerMillionUsd:25},delegated:{inputPerMillionUsd:2,outputPerMillionUsd:12}},Lr=[`model`,`speed`,`reasoning`,`imageModel`,`routing`];function isRoutineActorMetadata(e){return e?.kind===`routine`}const Rr=[`octopus`,`clover`,`flower`,`triangle`,`square`,`blob`,`circle`,`drop`,`hexagon`,`pill`,`pebble`,`puddle`],zr=[`relaxed`,`neutral`],Br=4,Vr=200;function agentDisplayName(e){return e.label?.trim()||e.name}const Hr=[`approval-requested`,`approval-responded`,`approval-dispatched`],Ur=[`streaming`,`running`,`pending`,...Hr];function isOpenToolPartState(e){return Ur.includes(e)}function isToolApprovalState(e){return Hr.includes(e)}const Wr=[`CREDITS_EXHAUSTED`];function isSystemPartCode(e){return typeof e==`string`&&Wr.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 Gr=200,Kr=182,qr=366,Jr=`agent-notification`;function isAgentNotificationMetadata(e){return e?.kind===Jr}const Yr=`agent-message`;function isAgentMessageMetadata(e){return e?.kind===Yr}const Xr=[`pending`,`in_progress`,`completed`,`blocked`],Zr=50,Qr=80,$r=500,ei=`session-state`,ti=`__stndrdsNativeUiPartIds`,ni=1;function invalidNativePartIds(){throw new D(`Native agent UI part IDs metadata is invalid`,[])}function isPlainRecord$1(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function nativeAgentUIPartIdMetadataKey(e,t){if(e.type===`text`||e.type===`reasoning`)return`${e.type}:${t}`;if(e.type===`tool`)return`tool:${e.toolCallId}`}function parseNativeAgentUIPartIdsMetadata(e){let t=e.metadata?.[ti];isPlainRecord$1(t)||invalidNativePartIds(),(Object.keys(t).length!==2||t.schemaVersion!==1||!isPlainRecord$1(t.partIds))&&invalidNativePartIds();let n=new Map;for(let[t,r]of e.parts.entries()){let e=nativeAgentUIPartIdMetadataKey(r,t);if(!e||n.has(e)){e&&invalidNativePartIds();continue}n.set(e,r)}let r=Object.entries(t.partIds);r.length!==n.size&&invalidNativePartIds();let i=new Map,a={};for(let[e,t]of r){let r=n.get(e);r&&typeof t==`string`&&t.length>0||invalidNativePartIds();let o=i.get(t);o&&(r.type===`tool`||o!==r.type)&&invalidNativePartIds(),r.type===`tool`&&t!==r.toolCallId&&invalidNativePartIds(),i.set(t,r.type),a[e]=t}return a}const ri=16e3,ii=3200,ai=6400,oi=16e3,si=65536,ci=15e3,li=1e4,ui=5e3,di=`google/gemini-3.5-transcribe-live`,fi={maxDurationMs:3e5,dailyDurationMs:36e5,monthlyDurationMs:72e6,tenantMonthlyBudgetMicrousd:5e7,globalMonthlyBudgetMicrousd:5e7,estimatedMicrousdPerSecond:150,reservationMultiplier:2},pi=`/v1/device-worker/channel`,mi=262144,hi=15e4,gi=1e4,_i=2e3,vi=2e3,yi=2e4,bi=4008,xi={initialMs:1e3,maxMs:3e4};function deviceChannelUrl(e){let t=new URL(e);return`${t.protocol===`https:`?`wss:`:`ws:`}//${t.host}${pi}`}function computeRetryDelay(e,t,n){return Math.min(n.initialMs*2**e,n.maxMs)+Math.floor(t()*250)}function computeReconnectDelay(e,t=Math.random){return computeRetryDelay(e,t,xi)}const Si=[`worker_disconnected`,`cancelled`,`timed_out`,`execution_failed`,`stale_reference`,`tab_unavailable`,`debugger_unavailable`,`blocked_by_user`,`not_actionable`,`javascript_error`,`batch_cap_exceeded`,`no_reference_screenshot`],Ci=`UPGRADE_REQUIRED`;var DeviceChannelProtocolError=class extends T{constructor(e){super(e,E.DEVICE_CHANNEL_PROTOCOL),this._tag=`DeviceChannelProtocolError`,this.name=`DeviceChannelProtocolError`}};const P={id:M.uuid(),leaseToken:M.string().min(1)},wi=M.record(M.string(),M.unknown());function defineDeviceChannelFrames(e){return{worker:M.discriminatedUnion(`type`,[M.strictObject({type:M.literal(`authenticate`),credential:M.string().regex(/^(Device|Bearer) \S+$/),protocol:M.number().int().positive().optional()}),M.strictObject({type:M.literal(`running`),...P}),M.strictObject({type:M.literal(`heartbeat`),...P}),M.strictObject({type:M.literal(`output`),...P,stdout:M.string().optional(),stderr:M.string().optional()}),M.strictObject({type:M.literal(`complete`),...P,result:M.strictObject({stdout:M.string().optional(),stderr:M.string().optional(),exitCode:M.number().int(),success:M.boolean(),errorCode:M.enum(Si).optional(),result:e.result.optional()})}),M.strictObject({type:M.literal(`pong`)})]),server:M.discriminatedUnion(`type`,[M.strictObject({type:M.literal(`ready`),device:M.strictObject({id:M.string(),name:M.string(),capability:M.enum([`shell`,`browser`])}),protocol:M.number().int().positive().optional()}),M.strictObject({type:M.literal(`command`),...P,kind:M.enum([`shell`,`browser`]),intent:M.string(),timeoutMs:M.number().int(),command:M.string().optional(),cwd:M.string().nullable().optional(),action:e.action.optional()}),M.strictObject({type:M.literal(`cancel`),id:M.uuid(),reason:M.enum([`cancelled`,`timed_out`,`revoked`])}),M.strictObject({type:M.literal(`reauthenticate`)}),M.strictObject({type:M.literal(`revoked`)}),M.strictObject({type:M.literal(`ping`)})])}}const Ti=defineDeviceChannelFrames({action:wi,result:wi}),Ei=Ti.worker,Di=Ti.server;function parseDeviceChannelFrame(e,t){let n;try{n=JSON.parse(t)}catch{throw new DeviceChannelProtocolError(`Frame is not JSON`)}let r=e.safeParse(n);if(!r.success)throw new DeviceChannelProtocolError(`Frame does not match the channel protocol`);return r.data}function parseWorkerFrame(e){return parseDeviceChannelFrame(Ei,e)}function parseServerFrame(e){return parseDeviceChannelFrame(Di,e)}const Oi=[`web`,`presentation`,`document`,`spreadsheet`,`image`,`code`,`other`],ki=[`ephemeral`,`conversation`,`persistent`],Ai=[`source`,`preview`,`entrypoint`,`asset`],ji=5,Mi=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])}function getErrorMessage(e){return e instanceof Error?e.message:typeof e==`string`?e:e&&typeof e==`object`?`message`in e&&typeof e.message==`string`?e.message:JSON.stringify(e):String(e)}function isFormDefinition(e){return typeof e==`object`&&!!e&&`slots`in e&&`steps`in e&&`name`in e&&typeof e.name==`string`&&Array.isArray(e.slots)&&Array.isArray(e.steps)}const Ni=[`relation`,`multiRelation`,`formula`,`rollup`,`document`,`richtext`,`user`];function isFormSlotFieldRef(e){return e.type===`slot`}function isFormFreeFieldRef(e){return e.type===`free`}function resolveFieldRequired(e){return e.fieldRequired===void 0?e.slotMode===`create`&&e.attributeRequired===!0:e.fieldRequired}function getSlotFieldTargets(e){return e.additionalSlotIds?.length?[e.slotId,...e.additionalSlotIds]:[e.slotId]}function formFieldKey(e){return isFormSlotFieldRef(e)?`${e.slotId}.${e.attribute}`:`free.${e.attribute.name}`}function formFieldFlatKey(e){return isFormSlotFieldRef(e)?e.attribute:e.attribute.name}function readFormFieldValue(e,t){return e[formFieldKey(t)]??e[formFieldFlatKey(t)]}function isFormFieldsRow(e){return e.type===`fields`}function isFormHeadingRow(e){return e.type===`heading`}function isFormSeparatorRow(e){return e.type===`separator`}function isFormTextRow(e){return e.type===`text`}var NoopGeocodingAdapter=class{async autocomplete(){return await Promise.resolve([])}async geocode(){return await Promise.resolve(null)}};const Pi=[`reader`,`editor`],Fi=[`manual`,`meeting_attendee`];function parseRecordAccessRole(e){if(typeof e==`string`&&Pi.includes(e))return e;let t=`role must be one of: ${Pi.join(`, `)}`;throw new D(t,[{path:[`role`],message:t}])}function deriveViewerAccess(e,t){return e.visibility===`workspace`?`workspace`:e.ownedBy!==null&&t.includes(e.ownedBy)?`owner`:e.viewerGrant===`editor`?`editor`:`reader`}function resolvePropertyDefinitions(e){let t=e.properties;if(!t)return[];if(Array.isArray(t))return t;let n=t;return Array.isArray(n.definitions)?n.definitions:[]}function hasOptions(e){return e.type===`select`||e.type===`status`||e.type===`multiselect`}const Ii=`Notetaker`,Li={meetingRecordingPolicy:`none`,meetingBotDisplayName:Ii},Ri=6048e5,zi=36e5,Bi=2592e6,Vi=6e4,Hi=[`active`,`suspended`],Ui=[`architect`,`manual`,`auto`];function schemaGroupKey(e){return`${e.kind}:${e.id}`}function refuse$2(e,t){throw new D(t,[{path:[e],message:t}])}function parseSchemaGroupPresentation(e){let t=e??{},n={};if(t.label!==void 0){let e=t.label;if(e===null)n.label=null;else if(typeof e!=`string`)refuse$2(`label`,`Label must be a string`);else{let t=e.trim();t.length===0&&refuse$2(`label`,`Label must not be empty`),t.length>Pt.labelLength&&refuse$2(`label`,`Label is too long (max ${Pt.labelLength} characters)`),n.label=t}}if(t.icon!==void 0){let e=t.icon;if(e===null)n.icon=null;else{let t=k.safeParse(e);t.success||refuse$2(`icon`,`Invalid icon name`),n.icon=t.data}}return n}const Wi=[`square`,`landscape`,`portrait`];function imageModelFormatDefect(e){if(e.formats.length===0)return`declares no output format`;for(let t of e.formats)if(e.requests[t]===void 0)return`declares the format "${t}" without a request`;for(let t of Object.keys(e.requests))if(!e.formats.includes(t))return`carries a request for the undeclared format "${t}"`}function declaredImageRequests(e){let t={};for(let n of e.formats){let r=e.requests[n];r!==void 0&&(t[n]=r)}return t}function modelReferenceSpellings(e){let t=e.apiModelId??e.id;return{display:[`${e.provider}/${e.id}`,e.id],upstream:[`${e.provider}/${t}`,t]}}function splitReference(e){let t=e.indexOf(`/`);return t<=0?void 0:{provider:e.slice(0,t),model:e.slice(t+1)}}function findModelByReference(e,t,n={}){let r=typeof t==`string`?splitReference(t):t,i=typeof t==`string`&&n.allowBare===!0?t:void 0;function names(e,t){return r!==void 0&&e.provider===r.provider&&t===r.model||t===i}return e.find(e=>names(e,e.id))??e.find(e=>names(e,e.apiModelId??e.id))}const Gi=[`none`,`estimated`,`exact`];function parseCountMode(e){if(typeof e==`string`&&Gi.includes(e))return e;throw new D(`countMode must be one of: ${Gi.join(`, `)} (received: ${String(e)})`,[])}function parseOptionalCountMode(e){return e===void 0?void 0:parseCountMode(e)}const Ki=1e4,qi=[`storage.bytes`,`members.seats`,`data.live_records`];function isEmptyObject(e){return e==null||typeof e==`object`&&Object.keys(e).length===0}function isNotEmpty(e){return typeof e==`object`&&!!e&&Object.keys(e).length>0}function toUndefinedIfEmpty(e){return isNotEmpty(e)?e:void 0}function computeByteMagnitude(e){if(e<=0)return{value:0,unitIndex:0};let t=1e3,n=Math.min(4,Math.floor(Math.log(e)/Math.log(t)));return{value:Number.parseFloat((e/t**n).toFixed(1)),unitIndex:n}}const Ji=[`B`,`KB`,`MB`,`GB`,`TB`];function formatByteSize(e){let{value:t,unitIndex:n}=computeByteMagnitude(e);return`${t} ${Ji[n]}`}const Yi={ATTACHMENTS:`attachments`};function isDocumentAttribute(e){return e.type===`document`}function matchesAccepts(e,t){if(!t||t.length===0)return!0;let n=e.name.toLowerCase();return t.some(t=>t.endsWith(`/*`)?e.mimeType.startsWith(t.slice(0,-1)):t.startsWith(`.`)?n.endsWith(t.toLowerCase()):e.mimeType===t)}const Xi=Object.freeze([`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`status`,`select`,`multiselect`,`location`]);function buildPropertySchema(e){let t=[];for(let n of e){let e=n.build();if(!Xi.includes(e.type))throw Error(`Property type "${e.type}" is not supported in .qualifyWith()`);t.push(e)}return{definitions:t}}const Zi=`__`;function qualifiedToolName(e,t,n){return`${e}__${t}__${n}`}function parseQualifiedToolName(e,t){let n=`${e}__`;if(!t.startsWith(n))return null;let r=t.slice(n.length),i=r.indexOf(`__`);if(i<=0)return null;let a=r.slice(i+2);return a===``?null:{namespace:r.slice(0,i),tool:a}}const Qi=/\\([!-/:-@[-`{-~])/g,$i=57344;function markdownToPlainText(e){if(e.length===0)return``;let t=[];return e.replace(Qi,(e,n)=>(t.push(n),String.fromCharCode($i+t.length-1))).replace(/^[ \t]*```[^\n]*$/gm,``).replace(/<[^>\n]+>/g,` `).replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[([^\]]+)\]\([^)]*\)/g,`$1`).replace(/^[ \t]*\|?[ \t]*:?-{2,}:?[ \t]*(\|[ \t]*:?-{2,}:?[ \t]*)*\|?[ \t]*$/gm,``).replace(/\|/g,` `).replace(/^[ \t]*(#{1,6}[ \t]+|>[ \t]?|[-*+][ \t]+|\d+[.)][ \t]+)/gm,``).replace(/\[[ xX]\][ \t]+/g,``).replace(/(\*\*|__|\*|_|~~|`)/g,``).replace(/^[ \t]*([-*_][ \t]*){3,}$/gm,``).replace(/\s+/g,` `).trim().replace(/[\ue000-\uf8ff]/g,e=>t[e.charCodeAt(0)-$i]??e)}const ea=`—`;function formatText(e){return String(e)}function formatCheckbox(e){return e?`Yes`:`No`}function formatNumber(e,t){if(typeof e!=`number`)return String(e);if(t.renderAs===`rating`)return`${e}/${t.max??5}`;let n=t.decimals;return t.unit===`integer`?e.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:0}):t.unit===`percentage`?(e/100).toLocaleString(void 0,{style:`percent`,minimumFractionDigits:n,maximumFractionDigits:n}):e.toLocaleString(void 0,{minimumFractionDigits:n,maximumFractionDigits:n})}function formatCurrency(e,t){if(typeof e!=`object`||!e)return String(e);let n=e;return`value`in n&&`code`in n?`${n.value.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})} ${n.code}`:String(e)}function formatDate(e){if(Jt(e)){let t=formatDate(e.start);return e.end?`${t} → ${formatDate(e.end)}`:t}if(e instanceof Date)return e.toISOString().split(`T`)[0];if(typeof e==`string`){let t=new Date(e);if(!Number.isNaN(t.getTime()))return t.toISOString().split(`T`)[0]}return String(e)}function formatPhone(e){if(typeof e!=`object`||!e)return String(e);let t=e;return`phoneNumber`in t?t.phoneNumber?t.countryCode?Gn(t):t.phoneNumber:``:String(e)}function formatLocationValue(e,t=`full`){if(typeof e!=`object`||!e)return``;let n=e,r=[];switch(t){case`country`:n.country&&r.push(N(n.country));break;case`state`:n.state&&r.push(n.state),n.country&&r.push(N(n.country));break;case`city`:n.city&&r.push(n.city),n.state&&r.push(n.state),n.country&&r.push(N(n.country));break;case`coordinates`:n.latitude!==void 0&&n.longitude!==void 0&&r.push(`${n.latitude}, ${n.longitude}`);break;case`address`:n.address&&r.push(n.address),n.city&&r.push(n.city),n.state&&r.push(n.state),n.country&&r.push(N(n.country));break;default:n.address&&r.push(n.address),n.address2&&r.push(n.address2),n.city&&r.push(n.city),n.state&&r.push(n.state),n.postalCode&&r.push(n.postalCode),n.country&&r.push(N(n.country))}return r.join(`, `)}function formatLocation(e,t){return typeof e!=`object`||!e?String(e):formatLocationValue(e,t.granularity??`full`)||`—`}function formatSelect(e,t){return typeof e==`string`?t.options?.find(t=>t.value===e)?.label??String(e):String(e)}function formatMultiselect(e,t){return Array.isArray(e)?t.options?e.map(e=>t.options.find(t=>t.value===e)?.label).filter(Boolean).join(`, `):e.join(`, `):String(e)}function formatAttributeValue(e,t){if(j(e))return`—`;switch(t.type){case`text`:return formatText(e);case`richtext`:return typeof e==`string`?markdownToPlainText(e):String(e);case`checkbox`:return formatCheckbox(e);case`number`:return formatNumber(e,t);case`currency`:return formatCurrency(e,t);case`date`:return formatDate(e);case`phone`:return formatPhone(e);case`location`:return formatLocation(e,t);case`select`:case`status`:return formatSelect(e,t);case`multiselect`:return formatMultiselect(e,t);case`user`:case`relation`:return Array.isArray(e)?e.join(`, `):String(e);default:return Array.isArray(e)?e.join(`, `):String(e)}}const ta=[`UPPER`,`LOWER`,`capitalize`,`trim`],na=[`prefix`,`suffix`,`wrap`,`default`],ra=[...ta,...na],F=M.string().min(1,`labelExpression cannot be empty`).refine(e=>isLabelExpression(e),{message:`labelExpression must contain at least one {{ attribute }} interpolation`}).refine(e=>!/\{\{\s*\}\}/.test(e),{message:`labelExpression contains empty {{ }} interpolation`}).refine(e=>{let t=/(?<!\|)\|(?!\|)\s*(\w+)(?::[^|}]*)?/g,n;for(;(n=t.exec(e))!==null;){let e=n[1];if(!ra.includes(e))return!1}return!0},{message:`Invalid pipe name. Valid pipes: ${ra.join(`, `)}`});function validateLabelExpression(e){let t=F.safeParse(e);return t.success?{success:!0,attributes:extractAttributeNames(e)}:{success:!1,error:t.error.issues[0]?.message??`Invalid labelExpression`}}function applyPipe(e,t){let{name:n,args:r}=parsePipeExpression(t);switch(n){case`UPPER`:return e.toUpperCase();case`LOWER`:return e.toLowerCase();case`capitalize`:return e.replace(/(^|\s)\S/g,e=>e.toUpperCase());case`trim`:return e.trim();case`prefix`:return e?`${r[0]??``}${e}`:``;case`suffix`:return e?`${e}${r[0]??``}`:``;case`wrap`:return e?`${r[0]??``}${e}${r[1]??``}`:``;case`default`:return e||r[0]||``;default:return e}}function applyPipes(e,t){let n=e;for(let e of t)n=applyPipe(n,e);return n}function getValue(e,t){return t.split(`.`).reduce((e,t)=>{if(typeof e==`object`&&e)return e[t]},e)}const ia=`(Untitled)`;function parsePipeExpression(e){let t=e.match(/^(\w+)(?::(.*))?$/);if(!t)return{name:e,args:[]};let n=t[1],r=t[2];if(!r)return{name:n,args:[]};let i=[],a=/["']([^"']*?)["']/g,o;for(;(o=a.exec(r))!==null;)i.push(o[1]);return{name:n,args:i}}function*templateBlocks(e){let t=0;for(;t<e.length;){let n=e.indexOf(`{{`,t);if(n<0)return;let r=e.indexOf(`}`,n+2);if(r<0)return;if(e[r+1]!==`}`){t=r+1;continue}t=r+2;let i=e.slice(n+2,r);i.length>0&&(yield{start:n,end:t,expr:i})}}function resolveLabelBlock(e,t){let n=e.split(`||`).map(e=>e.trim()),r=n[n.length-1].split(`|`).map(e=>e.trim());n[n.length-1]=r[0];let i=r.slice(1).filter(Boolean),a=n.filter(Boolean),o=``;for(let e of a){let n=toText(getValue(t,e));if(n!==``){o=n;break}}return applyPipes(o,i)}function renderLabelExpression(e,t,n=ia){let r=[],i=0;for(let n of templateBlocks(e))r.push(e.slice(i,n.start),resolveLabelBlock(n.expr,t)),i=n.end;return r.push(e.slice(i)),r.join(``).trim()||n}function toText(e){if(e==null||typeof e==`function`)return``;if(typeof e!=`object`)return String(e);if(Array.isArray(e))return e.map(toText).filter(Boolean).join(`,`);let t=e.toString;return typeof t==`function`&&t!==Object.prototype.toString?String(e):``}function isLabelExpression(e){let t=0;for(;t<e.length;){let n=e.indexOf(`{{`,t);if(n<0)return!1;let r=e.indexOf(`}}`,n+2);if(r<0)return!1;if(e.slice(n+2,r).trim().length>0)return!0;t=r+2}return!1}function extractAttributeNames(e){let t=[];for(let n of templateBlocks(e)){let e=n.expr.trim();if(!e)continue;let r=e.split(`||`).map(e=>e.trim()),i=r[r.length-1];r[r.length-1]=i.split(`|`)[0].trim();for(let e of r){if(!e)continue;let n=e.split(`.`)[0];n&&!t.includes(n)&&t.push(n)}}return t}const aa=/^\{\{\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\}\}$/;function getSingleAttributeFromExpression(e){let t=e.trim().match(aa);return t?t[1]:null}function getEditableLabelAttribute(e,t){let n=getSingleAttributeFromExpression(e);if(n===null)return null;let r=t.find(e=>e.name===n);return!r||r.type!==`text`||S(r).authoring.readOnly?null:r}const oa=/\{\{\s*props\./;function applyRelationProps(e,t,n){if(!oa.test(e))return e;let r={},i=new Map(n?.map(e=>[e.name,e]));if(t)for(let[e,n]of Object.entries(t)){if(n==null)continue;let t=i.get(e);if(t){let i=formatAttributeValue(n,t);r[e]=i===`—`?``:i}else r[e]=n}return renderLabelExpression(e,{props:r},``).replace(/\(\s*\)/g,``).replace(/\[\s*\]/g,``).replace(/\s*[-—|:]\s*$/g,``).replace(/\s{2,}/g,` `).trim()}function relationPropertyDefs(e){if(e?.type===`relation`)return e.properties?.definitions}function qualifiedPropertyDefs(e){if(e?.type===`relation`||e?.type===`document`)return e.properties?.definitions}function extractValueRefs(e){if(j(e))return[];if(typeof e==`string`)return[{id:e}];if(Array.isArray(e))return e.flatMap(e=>extractValueRefs(e));if(typeof e==`object`&&`id`in e){let t=e;if(typeof t.id==`string`)return[{id:t.id,props:t.props}]}return[]}const sa=80;function chosenUserName(e){return e.preferredName?.trim()||void 0}function getUserDisplayName(e){let t=chosenUserName(e);if(t!==void 0)return t;let n=[e.firstName,e.lastName].map(e=>e?.trim()).filter(Boolean).join(` `);return n===``?e.email?.split(`@`)[0]??``:n}const ca=/\p{L}|\p{N}/u;function deriveInitials(e,t){let n=e?.trim()??``;if(n===``)return t;let r=n.split(/\s+/),i=(r.length===1?n.split(`@`)[0].split(/[._-]/):r).map(e=>{let t=e.match(ca)?.[0];return t===void 0?``:[...t.toUpperCase()][0]??``}).filter(Boolean).slice(0,2).join(``);return i===``?t:i}const la=`__creatorRootActorId`;function getRecordCreatorPrincipalId(e){let t=e.metadata?.[la];return typeof t==`string`&&t.length>0?t:e.createdBy}const ua=[{id:`data`,capabilities:[{id:`forms`,resources:[`forms`],levels:[{id:`fill`,add:[`read`]},{id:`edit`,add:[`create`,`update`,`delete`]},{id:`manage`,add:[`manage`]}]}]},{id:`structure`,capabilities:[{id:`schema`,resources:[`architect`],levels:[{id:`use`,add:[`read`]},{id:`edit`,add:[`create`,`update`,`delete`]}]}]},{id:`ai`,capabilities:[{id:`agents`,resources:[`agents`],levels:[{id:`chat`,add:[`read`]},{id:`build`,add:[`create`,`update`,`delete`]},{id:`manage`,add:[`manage`]}]},{id:`workstations`,resources:[`workstations`],levels:[{id:`use`,add:[`create`]}]}]},{id:`files`,capabilities:[{id:`files`,resources:[`files`,`documents`],levels:[{id:`read`,add:[`read`]},{id:`edit`,add:[`create`,`update`]},{id:`full`,add:[`delete`]}]}]},{id:`team`,capabilities:[{id:`people`,resources:[`people`],levels:[{id:`view`,add:[`read`]},{id:`invite`,add:[`create`]},{id:`manage`,add:[`update`,`delete`]}]}]},{id:`integrations`,capabilities:[{id:`connectors`,resources:[`connectors`],levels:[{id:`use`,add:[`read`,`create`,`update`,`delete`]}]},{id:`api-keys`,resources:[`api-keys`],levels:[{id:`view`,add:[`read`]},{id:`manage`,add:[`create`,`delete`]}]},{id:`env-vars`,resources:[`env-vars`],levels:[{id:`view`,add:[`read`]},{id:`manage`,add:[`create`,`delete`]}]}]},{id:`administration`,capabilities:[{id:`settings`,resources:[`settings`],levels:[{id:`view`,add:[`read`]},{id:`manage`,add:[`update`,`delete`,`manage`]}]},{id:`audit`,resources:[`audit`],levels:[{id:`view`,add:[`read`]}]},{id:`billing`,resources:[`billing`],levels:[{id:`view`,add:[`read`]}]}]}],da=`none`,fa=`custom`,I={actions:[`read`,`create`,`update`,`delete`],purge:`manage`,levels:[{id:`read`,add:[`read`]},{id:`edit`,add:[`create`,`update`]},{id:`full`,add:[`delete`]}]},L=ua.flatMap(e=>e.capabilities),pa=L.flatMap(e=>e.resources),ma=new Map(L.flatMap(e=>e.resources.map(t=>[t,e])));function isCatalogResource(e){return ma.has(e)}function capabilityForResource(e){let t=ma.get(e);if(!t)throw new T(`Unknown catalog resource "${e}"`,E.INVARIANT_VIOLATION);return t}function sameActions(e,t){let n=new Set(e),r=new Set(t);return n.size===r.size&&[...n].every(e=>r.has(e))}function levelActions(e,t){let n=new Set;for(let r of e.levels){for(let e of r.add)n.add(e);if(r.id===t)return[...n]}return[]}function levelOf(e,t){if(t.length===0)return da;let n=e.levels[e.levels.length-1];if(t.includes(`*`)&&n)return n.id;let r=new Set(t),i=new Set;for(let t of e.levels){for(let e of t.add)i.add(e);if(i.size===r.size&&[...r].every(e=>i.has(e)))return t.id}return fa}const ha=[`read`,`create`,`update`,`delete`,`manage`],ga=M.object({scope:M.enum([`object`,`system`]),target:M.string().min(1),actions:M.array(M.enum(ha))}).strict();function findGrantIssues(e,t){let n=[],r=new Map;for(let i of e){let e=ga.safeParse(i);if(!e.success){let e=typeof i==`object`&&i&&`target`in i?String(i.target):`?`;n.push({target:e,reason:`shape`});continue}let a=e.data;if(a.scope===`system`){if(!isCatalogResource(a.target)){n.push({target:a.target,reason:`unknown-resource`});continue}if(levelOf(capabilityForResource(a.target),a.actions)===`custom`){n.push({target:a.target,reason:`off-level`});continue}r.set(a.target,a.actions);continue}if(a.target!==`*`&&!t.objectNames.has(a.target)){n.push({target:a.target,reason:`unknown-object`});continue}let o=a.target===`*`?[...I.actions,I.purge]:I.actions;a.actions.every(e=>o.includes(e))||n.push({target:a.target,reason:`object-action`})}let i=new Set;for(let[e,t]of r){let a=capabilityForResource(e);if(!i.has(a)){for(let o of a.resources)if(!sameActions(t,r.get(o)??[])){n.push({target:e,reason:`split-capability`}),i.add(a);break}}}return n}function includesAction(e,t){return e?.includes(`*`)===!0||e?.includes(t)===!0}function grantCovers(e,t,n){return includesAction(e?.[`*`],n)||includesAction(e?.[t],n)}function buildPermissionFlags(e){return{canRead:includesAction(e,`read`),canCreate:includesAction(e,`create`),canUpdate:includesAction(e,`update`),canDelete:includesAction(e,`delete`),canManage:includesAction(e,`manage`)}}function isInertLegacyGrant(e){return e.scope===`system`&&e.target!==`*`&&!isCatalogResource(e.target)}function uncoveredGrants(e,t){let n=[];for(let r of t){if(isInertLegacyGrant(r))continue;let t=r.scope===`object`?e.objectPermissions:e.systemPermissions??{},i=r.actions.flatMap(e=>e===`*`?[...ha]:e===`observe`?[]:[e]);for(let e of i)grantCovers(t,r.target,e)||n.push({scope:r.scope,target:r.target,action:e})}return n}function sliceFlags(e,t){return buildPermissionFlags([...e?.[`*`]??[],...e?.[t]??[]])}function objectPermissionFlags(e,t){return sliceFlags(e.objectPermissions,t)}function systemPermissionFlags(e,t){return sliceFlags(e.systemPermissions,t)}const _a=`mixed`;function levelWithin(e,t){let n=new Set(e.levels.flatMap(e=>e.add));return levelOf(e,t.filter(e=>e===`*`||n.has(e)))}function grantsToPermissions(e){let t={},n={};for(let r of e){let e=r.scope===`object`?t:n;e[r.target]=[...new Set([...e[r.target]??[],...r.actions])]}return{objectPermissions:t,systemPermissions:n}}function readAccessLevels(e){let t=e.systemPermissions??{},n=e.objectPermissions??{},r={};for(let e of L){let n=new Set(e.resources.map(n=>levelWithin(e,[...t[n]??[],...t[`*`]??[]]))),[i]=n;r[e.id]=n.size===1&&i!==void 0?i:fa}let i=n[`*`]??[],a=levelWithin(I,i),o=[];for(let[e,t]of Object.entries(n)){if(e===`*`)continue;let n=levelWithin(I,[...i,...t]);n!==a&&o.push({objectName:e,level:n})}return{capabilities:r,defaultObjectLevel:a,exceptions:o,purge:includesAction(i,I.purge)}}function readRoleLevels(e){return readAccessLevels(grantsToPermissions(e))}function summarizeGroup(e,t){let n=ua.find(e=>e.id===t);if(!n)throw new T(`Unknown permission group "${t}"`,E.INVARIANT_VIOLATION);let{capabilities:r}=readRoleLevels(e),i=new Set(n.capabilities.map(e=>r[e.id]??`none`)),[a]=i;return i.size===1&&a!==void 0?a:_a}function knownActions(e,t){let n=[...new Set(e.levels.flatMap(e=>e.add))];return t.includes(`*`)?n:n.filter(e=>t.includes(e))}function storedActions(e,t,n){return e.filter(e=>e.scope===t&&e.target===n).flatMap(e=>e.actions)}function isSubset(e,t){return e.every(e=>t.includes(e))}function isLevelOf(e,t){return t===`none`||e.levels.some(e=>e.id===t)}function defaultObjectActions(e,t){return e.defaultObjectLevel===`custom`?knownActions(I,storedActions(t,`object`,`*`)):levelActions(I,e.defaultObjectLevel)}function grantsFromLevels(e,t){let n=[];for(let r of L){let i=e.capabilities[r.id]??`none`;if(i!==`none`)for(let e of r.resources){let a=i===`custom`?knownActions(r,[...storedActions(t,`system`,e),...storedActions(t,`system`,`*`)]):levelActions(r,i);a.length>0&&n.push({scope:`system`,target:e,actions:a})}}let r=defaultObjectActions(e,t),i=e.purge?[...r,I.purge]:r;i.length>0&&n.push({scope:`object`,target:`*`,actions:i});for(let{objectName:i,level:a}of e.exceptions){let e=a===`custom`?knownActions(I,storedActions(t,`object`,i)):levelActions(I,a);isSubset(e,r)||n.push({scope:`object`,target:i,actions:e})}return n}function withLevels(e,t){return grantsFromLevels(t(readRoleLevels(e)),e)}function normalizeRoleGrants(e){return withLevels(e,e=>e)}function setCapabilityLevel(e,t,n){let r=L.find(e=>e.id===t);return r&&isLevelOf(r,n)?withLevels(e,e=>({...e,capabilities:{...e.capabilities,[t]:n}})):e}function setDefaultObjectLevel(e,t){return isLevelOf(I,t)?withLevels(e,e=>({...e,defaultObjectLevel:t})):e}function exceptionLevels(e){let t=defaultObjectActions(readRoleLevels(e),e);return I.levels.map(e=>e.id).filter(e=>!isSubset(levelActions(I,e),t))}function setObjectException(e,t,n){return t===`*`||!exceptionLevels(e).includes(n)?e:withLevels(e,e=>{let r=e.exceptions.some(e=>e.objectName===t);return{...e,exceptions:r?e.exceptions.map(e=>e.objectName===t?{objectName:t,level:n}:e):[...e.exceptions,{objectName:t,level:n}]}})}function removeObjectException(e,t){return withLevels(e,e=>({...e,exceptions:e.exceptions.filter(e=>e.objectName!==t)}))}function setPurge(e,t){return withLevels(e,e=>({...e,purge:t}))}function canCopyRole(e,t){return uncoveredGrants(e,normalizeRoleGrants(t)).length===0}function canGrantLevel(e,t,n,r=!1){if(`objectName`in t){if(!isLevelOf(I,n))return!1;let i=levelActions(I,n),a=t.objectName===`*`&&r?[...i,I.purge]:i;return uncoveredGrants(e,[{scope:`object`,target:t.objectName,actions:a}]).length===0}let i=L.find(e=>e.id===t.capabilityId);if(!i||!isLevelOf(i,n))return!1;let a=levelActions(i,n);return uncoveredGrants(e,i.resources.map(e=>({scope:`system`,target:e,actions:a}))).length===0}function canGrantPurge(e){return uncoveredGrants(e,[{scope:`object`,target:`*`,actions:[I.purge]}]).length===0}function normalizeRoleLabel(e){return e.trim().toLowerCase()}function isRoleLabelTaken(e,t,n){let r=normalizeRoleLabel(t);return e.some(e=>e.id!==n&&normalizeRoleLabel(e.label)===r)}function roleNameFromLabel(e,t){let n=e.normalize(`NFKD`).replace(/\p{M}/gu,``).toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``),r=n===``?`role`:/^[a-z]/.test(n)?n:`role_${n}`,i=r.slice(0,63);if(!t.has(i))return i;let a=2;for(;;){let e=`_${a}`,n=`${r.slice(0,63-e.length)}${e}`;if(!t.has(n))return n;a+=1}}const va=new Set([`id`,`name`,`label`,`type`,`required`,`system`,`unique`,`order`]),ya={OWNER:`owner`,MEMBER:`member`,AGENT_DEFAULT:`agent_default`},ba={owner:`Owner`,member:`Member`,agent_default:`Agent Default`},xa={owner:`Full access to all platform features and data`,member:`Can view, create, edit and delete business data`,agent_default:`Default role for AI agents — CRUD on records plus documents, files, and read access to the audit trail`},R=[...I.actions],Sa=[...ha],Ca={owner:{system:[{target:`*`,actions:Sa}],object:[{target:`*`,actions:Sa}]},member:{system:[{target:`people`,actions:[`read`]},{target:`architect`,actions:[`read`]},{target:`agents`,actions:[`read`]},{target:`settings`,actions:[`read`]},{target:`audit`,actions:[`read`]},{target:`forms`,actions:[`read`]},{target:`workstations`,actions:[`create`]},{target:`connectors`,actions:R},{target:`files`,actions:R},{target:`documents`,actions:R}],object:[{target:`*`,actions:R}]},agent_default:{system:[{target:`documents`,actions:[`read`,`create`,`update`]},{target:`files`,actions:[`read`,`create`,`update`]},{target:`env-vars`,actions:[`read`]},{target:`audit`,actions:[`read`]}],object:[{target:`*`,actions:R}]}},wa=[{role:`member`,scope:`object`,target:`*`,actions:[`manage`]}];function isDefaultRole(e){return Object.values(ya).includes(e)}const Ta=[{id:`claude-code`,label:`Claude Code`,available:!0,loginCommand:`claude setup-token 2>&1 | tee ~/.standards/login.log`,credentialPaths:[`~/.standards/login.log`,`~/.claude/.credentials.json`],provider:`anthropic`,apiKeyEnv:{anthropic:`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`,available:!0,loginCommand:`codex login --device-auth`,credentialPaths:[`~/.codex/auth.json`],provider:`openai`,apiKeyEnv:{openai:`OPENAI_API_KEY`},models:[{id:`gpt-6-sol`,label:`GPT-6 Sol`},{id:`gpt-6-luna`,label:`GPT-6 Luna`},{id:`gpt-5.5`,label:`GPT-5.5`}],defaultModel:`gpt-6-sol`},{id:`opencode`,label:`OpenCode`,available:!0,credentialPaths:[`~/.local/share/opencode/auth.json`],apiKeyEnv:{anthropic:`ANTHROPIC_API_KEY`,openai:`OPENAI_API_KEY`},models:[{id:`anthropic/claude-sonnet-5`,label:`Claude Sonnet 5`},{id:`anthropic/claude-opus-5-5`,label:`Claude Opus 5.5`},{id:`openai/gpt-6-sol`,label:`GPT-6 Sol`},{id:`openai/gpt-6-luna`,label:`GPT-6 Luna`}],defaultModel:`anthropic/claude-sonnet-5`},{id:`cursor`,label:`Cursor`,available:!1,loginCommand:`cursor-agent login`,credentialPaths:[`~/.config/cursor/auth.json`],provider:`anthropic`,apiKeyEnv:{anthropic:`CURSOR_API_KEY`},models:[{id:`auto`,label:`Auto`}],defaultModel:`auto`},{id:`grok-build`,label:`Grok Build`,available:!1,loginCommand:`grok login`,credentialPaths:[`~/.grok/auth.json`],provider:`spacexai`,apiKeyEnv:{spacexai:`XAI_API_KEY`},models:[{id:`grok-code-fast-1`,label:`Grok Code Fast 1`}],defaultModel:`grok-code-fast-1`}],Ea=new Map(Ta.map(e=>[e.id,e]));function isWorkstationHarnessId(e){return Ea.has(e)}function findWorkstationHarness(e){return Ea.get(e)}function workstationModelProvider(e,t){if(e.provider)return e.provider;let n=t.split(`/`,1)[0];return Object.keys(e.apiKeyEnv).find(e=>e===n)}const Da={maxConcurrentRuns:3,retryPolicy:{maxRetries:3,backoffMs:1e3,backoffMultiplier:2}};var AgentBuilder=class{constructor(e){if(!e.name||e.name.trim().length===0)throw new D(`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}tools(e){return this.bp.tools=[...e],this}schedule(e){return this.bp.schedule={...e,enabled:e.enabled??!0},this}config(e){let t=this.bp.config??Da,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}mcpServers(e){return this.bp.mcpServers=Array.isArray(e)?[...e]:e,this}approval(e){return this.bp.approval={...Or,...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 D(`Agent "${this.bp.name}": systemPrompt is required`,[]);if(!this.bp.model)throw new D(`Agent "${this.bp.name}": model is required`,[]);if(this.bp.system&&this.bp.visibility===`private`)throw new D(`Agent "${this.bp.name}": system agents must use workspace visibility`,[]);return Vt(this.bp.triggers,e=>e.name,e=>new D(`Agent "${this.bp.name}": duplicate trigger name "${e}"`,[])),{...this.bp,visibility:this.bp.visibility??`workspace`,config:this.bp.config??Da,systemPrompt:this.bp.systemPrompt,model:this.bp.model}}};function agent(e){return new AgentBuilder(e)}const Oa=`@stndrds/schema`;function createStandardSchemaProps(e){return{version:1,vendor:Oa,validate:t=>{let n=e.safeParse(t);return n.success?{value:n.data}:{issues:n.error.issues.map(e=>({message:e.message,path:e.path}))}}}}function isStandardSchema(e){return typeof e==`object`&&!!e&&`~standard`in e&&typeof e[`~standard`]==`object`&&e[`~standard`].version===1}function asMutableArray(e){return e}var BaseAttributeBuilder=class{get"~standard"(){return createStandardSchemaProps(Yn(this.build()))}constructor(e,t,n){Ut(t),It(n),this.attr={name:t,label:n,type:e,required:!1,system:!0}}setRequired(e){this.attr.required=e}asRequiredState(){return this}asPhantomState(){return this}runtime(){return this.attr.system=!1,this}hidden(){return this.attr.hidden=!0,this}placeholder(e){return this.attr.placeholder=e,this}description(e){return this.attr.description=e,this}icon(e){return Nt(e,`attribute "${this.attr.name}"`),this.attr.icon=e,this}order(e){return this.attr.order=e,this}defaultValue(e){return(`defaultValue`in this.attr||![`formula`,`rollup`].includes(this.attr.type))&&(this.attr.defaultValue=e),this}metadata(e){return this.attr.metadata=e,this}build(){return this.attr}},TextAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`text`,e,t)}minLength(e){return this.attr.minLength=e,this}maxLength(e){return this.attr.maxLength=e,this}pattern(e){return this.attr.pattern=e,this.attr.format=void 0,this}multiline(e=!0){return this.attr.multiline=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}email(){return this.attr.format=`email`,this.attr.pattern=void 0,this}url(){return this.attr.format=`url`,this.attr.pattern=void 0,this}slug(){return this.attr.format=`slug`,this.attr.pattern=void 0,this}};function text(e){return new TextAttributeBuilder(e.name,e.label)}var RichtextAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`richtext`,e,t)}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function richtext(e){return new RichtextAttributeBuilder(e.name,e.label)}var NumberAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`number`,e,t)}min(e){return this.attr.min=e,this}max(e){return this.attr.max=e,this}integer(){return this.attr.unit=`integer`,this.attr.decimals=0,this}decimal(e=2){return this.attr.unit=`decimal`,this.attr.decimals=e,this}percentage(){return this.attr.unit=`percentage`,this}renderAs(e){return this.attr.renderAs=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function number(e){return new NumberAttributeBuilder(e.name,e.label)}var CheckboxAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`checkbox`,e,t)}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function checkbox(e){return new CheckboxAttributeBuilder(e.name,e.label)}var DateAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`date`,e,t)}format(e){return this.attr.dateFormat=e,this}minDate(e){return this.attr.minDate=e,this}maxDate(e){return this.attr.maxDate=e,this}endDate(){return this.attr.endDate=!0,this.asPhantomState()}includeTime(){return this.attr.includeTime=!0,this}timeFormat(e){return this.attr.timeFormat=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function date(e){return new DateAttributeBuilder(e.name,e.label)}var PhoneAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`phone`,e,t)}defaultCountry(e){return this.attr.defaultCountryCode=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function phone(e){return new PhoneAttributeBuilder(e.name,e.label)}var CurrencyAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`currency`,e,t)}defaultCurrency(e){return this.attr.defaultCurrency=e,this}allowedCurrencies(e){return this.attr.allowedCurrencies=e,this}allowNegative(e=!0){return this.attr.allowNegative=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function currency(e){return new CurrencyAttributeBuilder(e.name,e.label)}var StatusAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`status`,e,t)}options(e){let t=asMutableArray(e);return O(this.attr.name??`unknown`,t),this.attr.options=t,this.asPhantomState()}option(e){this.attr.options||(this.attr.options=[]);let t=[...this.attr.options,e];return O(this.attr.name??`unknown`,t),this.attr.options.push(e),this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function status(e){return new StatusAttributeBuilder(e.name,e.label)}var SelectAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`select`,e,t)}options(e){let t=asMutableArray(e);return O(this.attr.name??`unknown`,t),this.attr.options=t,this.asPhantomState()}option(e){this.attr.options||(this.attr.options=[]);let t=[...this.attr.options,e];return O(this.attr.name??`unknown`,t),this.attr.options.push(e),this}renderAs(e){return this.attr.renderAs=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function select(e){return new SelectAttributeBuilder(e.name,e.label)}var MultiselectAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`multiselect`,e,t)}options(e){let t=asMutableArray(e);return O(this.attr.name??`unknown`,t),this.attr.options=t,this.asPhantomState()}option(e){this.attr.options||(this.attr.options=[]);let t=[...this.attr.options,e];return O(this.attr.name??`unknown`,t),this.attr.options.push(e),this}renderAs(e){return this.attr.renderAs=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function multiselect(e){return new MultiselectAttributeBuilder(e.name,e.label)}var LocationAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`location`,e,t)}granularity(e){return this.attr.granularity=e,this}defaultCountry(e){return this.attr.defaultCountry=e,this}allowedCountries(e){return this.attr.allowedCountries=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function location(e){return new LocationAttributeBuilder(e.name,e.label)}var UserAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`user`,e,t),this.attr.types=[`user`,`agent`]}types(e){let t=[...new Set(e)];if(t.length===0)throw Error(`[AttributeBuilder] user.types must contain at least one type.`);return this.attr.types=t,this}multiple(){return this.attr.multiple=!0,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function user(e){return new UserAttributeBuilder(e.name,e.label)}var BaseRelationAttributeBuilder=class extends BaseAttributeBuilder{to(e,t){let n={object:e,...t};return this.attr.targets?.push(n),this}toAny(){return this.attr.targets=[{object:`*`}],this}qualifyWith(...e){let t=this.attr.targets;if(!t||t.length===0)throw Error(`.qualifyWith() must be called AFTER .to(). Example: relation({ name: "companies" }).to("companies").qualifyWith(...)`);return this.attr.properties=buildPropertySchema(e),this}bilateral(t){let n=this.attr.targets;if(!n||n.length===0)throw Error(`.bilateral() must be called AFTER .to(). Example: relation({ name: "company" }).to("companies").bilateral({ ... })`);if(n.length>1)throw Error(`Bilateral relations are not supported for polymorphic relations (multiple .to() targets).`);if(e(this.attr))throw Error(`Bilateral relations are not supported for universal relations (.toAny()).`);let r=n[0]?.object;if(!r)throw new D(`Bilateral relation requires one target object`,[{path:[`bilateral`,`object`],message:`Bilateral relation requires one target object`}]);if(t.object&&t.object!==r){let e=`Bilateral inverse object ${t.object} must match relation target ${r}`;throw new D(e,[{path:[`bilateral`,`object`],message:e}])}return this.attr.bilateral={...t,object:r},this}},SingleRelationAttributeBuilder=class extends BaseRelationAttributeBuilder{constructor(e,t){super(`relation`,e,t),this.attr.cardinality=`one`,this.attr.targets=[]}many(){let e=new MultiRelationAttributeBuilder(this.attr.name,this.attr.label??``,{targets:this.attr.targets,isRequired:this.attr.required});return this.attr.system===!1&&e.runtime(),this.attr.hidden&&e.hidden(),this.attr.placeholder&&e.placeholder(this.attr.placeholder),this.attr.description&&e.description(this.attr.description),this.attr.icon&&e.icon(this.attr.icon),this.attr.order!==void 0&&e.order(this.attr.order),this.attr.metadata&&e.metadata(this.attr.metadata),e}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}},MultiRelationAttributeBuilder=class extends BaseRelationAttributeBuilder{constructor(e,t,n){super(`relation`,e,t),this.attr.cardinality=`many`,this.attr.targets=n?.targets??[],this.attr.defaultValue=[],n?.isRequired&&this.setRequired(!0)}maxItems(e){return this.attr.maxItems=e,this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function relation(e){return new SingleRelationAttributeBuilder(e.name,e.label)}var FormulaAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`formula`,e,t),this.attr.required=!1}expression(e){return this.attr.expression=e,this}returns(e){return this.attr.returnType=e,this}decimals(e){return this.attr.decimals=e,this}currency(e){return this.attr.currencyCode=e,this}required(){throw Error(`Formula attributes cannot be required: they are computed read-only values. Remove .required() from this attribute definition.`)}optional(){return this}};function formula(e){return new FormulaAttributeBuilder(e.name,e.label)}var RollupAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`rollup`,e,t),this.attr.required=!1}from(e){return this.attr.relationAttribute=e,this}aggregate(e){return this.attr.targetAttribute=e,this}using(e){return this.attr.function=e,this}decimals(e){return this.attr.decimals=e,this}path(e){return this.attr.relationPath=e,this}targetType(e){return this.attr.targetAttributeType=e,this}targetOptions(e){return this.attr.targetAttributeOptions=asMutableArray(e),this}targetCurrency(e){return this.attr.targetCurrencyCode=e,this}build(){let e=this.attr.function,t=this.attr.targetAttributeType;if(e===`original`&&t!==void 0&&t!==`select`&&t!==`status`&&t!==`multiselect`){let e=this.attr.relationAttribute??`relation`,n=this.attr.targetAttribute??`field`;throw new T(`Rollup "${this.attr.name}": .using("original") only supports a "select", "status", or "multiselect" target, but .targetType("${t}") was given. To surface a plain ${t} value from a related record, use a formula instead — e.g. formula({ name: "${this.attr.name}", label: "…" }).expression("${e}.${n}").`,E.VALIDATION_FAILED)}return super.build()}required(){throw Error(`Rollup attributes cannot be required: they are computed read-only values. Remove .required() from this attribute definition.`)}optional(){return this}};function rollup(e){return new RollupAttributeBuilder(e.name,e.label)}var DocumentAttributeBuilder=class extends BaseAttributeBuilder{constructor(e,t){super(`document`,e,t)}accepts(e){return this.attr.accepts=e,this}maxFileSize(e){return this.attr.maxFileSize=e,this}qualifyWith(...e){return this.attr.properties=buildPropertySchema(e),this}required(){return this.setRequired(!0),this.asRequiredState()}optional(){return this.setRequired(!1),this.asRequiredState()}};function document(e){return new DocumentAttributeBuilder(e.name,e.label)}function buildSlotFieldRef(e,t,n){let[r,...i]=Array.isArray(e)?e:[e];return{type:`slot`,slotId:r,additionalSlotIds:i.length>0?i:void 0,attribute:t,label:n?.label,required:n?.required,tooltip:n?.tooltip}}var FormRowBuilder=class{constructor(e,t,n){this._finalized=!1,this.stepBuilder=e,this.rowData={id:t,order:n,type:`fields`,fields:[]}}field(e,t,n){return this.rowData.fields.push(buildSlotFieldRef(e,t,n)),this}freeField(e,t){let n={type:`free`,attribute:e.build(),label:t?.label,required:t?.required,prefillExpression:t?.prefillExpression};return this.rowData.fields.push(n),this}row(e){return this._finalized=!0,this.stepBuilder._finalizeRow(this.rowData).row(e)}heading(e,t){return this._finalized=!0,this.stepBuilder._finalizeRow(this.rowData).heading(e,t)}separator(){return this._finalized=!0,this.stepBuilder._finalizeRow(this.rowData).separator()}text(e){return this._finalized=!0,this.stepBuilder._finalizeRow(this.rowData).text(e)}endRow(){return this._finalized?this.stepBuilder:(this._finalized=!0,this.stepBuilder._finalizeRow(this.rowData))}},FormStepBuilder=class{constructor(e,t,n){this.rowOrder=0,this.formBuilder=e,this.stepData={id:t,label:n,rows:[]}}description(e){return this.stepData.description=e,this}field(e,t,n){this.rowOrder++;let r=`row-${this.stepData.id}-${this.rowOrder}`,i=buildSlotFieldRef(e,t,n),a={id:r,order:this.rowOrder,type:`fields`,fields:[i]};return this.stepData.rows.push(a),this}freeField(e,t){this.rowOrder++;let n=`row-${this.stepData.id}-${this.rowOrder}`,r={type:`free`,attribute:e.build(),label:t?.label,required:t?.required,prefillExpression:t?.prefillExpression},i={id:n,order:this.rowOrder,type:`fields`,fields:[r]};return this.stepData.rows.push(i),this}row(e){return this.rowOrder++,new FormRowBuilder(this,e,this.rowOrder)}heading(e,t){this.rowOrder++;let n={id:`heading-${this.stepData.id}-${this.rowOrder}`,order:this.rowOrder,type:`heading`,content:e,level:t};return this.stepData.rows.push(n),this}separator(){this.rowOrder++;let e={id:`sep-${this.stepData.id}-${this.rowOrder}`,order:this.rowOrder,type:`separator`};return this.stepData.rows.push(e),this}text(e){this.rowOrder++;let t={id:`text-${this.stepData.id}-${this.rowOrder}`,order:this.rowOrder,type:`text`,content:e};return this.stepData.rows.push(t),this}step(e,t){return this.formBuilder._finalizeStep(this.stepData).step(e,t)}build(){return this.formBuilder._finalizeStep(this.stepData).build()}_finalizeRow(e){return e.fields.length>0&&this.stepData.rows.push(e),this}_getData(){return this.stepData}},FormBuilder=class{constructor(e,t){this.data={slots:[],steps:[],status:`draft`,version:1},this.validateName(e),this.data.name=e,this.data.label=t}description(e){return this.data.description=e,this}icon(e){return this.data.icon=e,this}status(e){return this.data.status=e,this}metadata(e){return this.data.metadata=e,this}slot(e,t,n){if(this.data.slots.some(t=>t.id===e))throw Error(`[FormBuilder] Duplicate slot id: "${e}"`);let r={id:e,objectName:t,label:n.label,mode:n.mode??`create`,color:n.color,icon:n.icon};return this.data.slots.push(r),this}step(e,t){if(this.data.steps.some(t=>t.id===e))throw Error(`[FormBuilder] Duplicate step id: "${e}"`);return new FormStepBuilder(this,e,t)}build(){return this.validateRequiredData(),this.validateSlotReferences(),this.validateFreeFields(),this.validatePrefillExpressions(),this.data}_finalizeStep(e){return this.data.steps.push(e),this}validateName(e){let t=M.string().min(1,`Form name cannot be empty`).max(63,`Form name is too long (max 63 characters)`).regex(/^[a-z0-9]+(-[a-z0-9]+)*$/,{message:`Invalid form name format. Name must be in kebab-case: 'client-onboarding', 'contact-creation'`});try{t.parse(e)}catch(e){throw e instanceof M.ZodError?Error(`[FormBuilder] ${e.issues[0].message}`):e}}validateRequiredData(){if(this.data.slots.length===0)throw Error(`[FormBuilder] At least one slot is required. Use .slot() to add slots.`);if(this.data.steps.length===0)throw Error(`[FormBuilder] At least one step is required. Use .step() to add steps.`)}validateSlotReferences(){let e=new Map(this.data.slots.map(e=>[e.id,e.objectName]));for(let t of this.data.steps)for(let n of t.rows)if(isFormFieldsRow(n))for(let r of n.fields){if(r.type!==`slot`)continue;let n=getSlotFieldTargets(r);for(let r of n)if(!e.has(r))throw Error(`[FormBuilder] Step "${t.id}" references unknown slot "${r}". Declare it with .slot("${r}", ...) first.`);let i=new Set(n.map(t=>e.get(t)));if(i.size>1)throw Error(`[FormBuilder] Step "${t.id}" field on attribute "${r.attribute}" targets slots of different objects (${[...i].join(`, `)}). A multi-slot field must target slots of the same object.`)}}validatePrefillExpressions(){let e=[...ra,`join`];for(let t of this.data.steps)for(let n of t.rows)if(isFormFieldsRow(n))for(let r of n.fields){if(!isFormFreeFieldRef(r)||!r.prefillExpression)continue;let n=r.prefillExpression,i=`prefillExpression on free field "${r.attribute.name}" in step "${t.id}"`;if(!isLabelExpression(n))throw Error(`[FormBuilder] ${i} must contain at least one {{ attribute }} interpolation.`);if(/\{\{\s*\}\}/.test(n))throw Error(`[FormBuilder] ${i} contains empty {{ }} interpolation.`);for(let t of n.matchAll(/(?<!\|)\|(?!\|)\s*(\w+)(?::[^|}]*)?/g)){let n=t[1];if(!e.includes(n))throw Error(`[FormBuilder] ${i} uses invalid pipe "${n}". Valid pipes: ${e.join(`, `)}`)}}}validateFreeFields(){let e=new Set(Ni);for(let t of this.data.steps)for(let n of t.rows)if(isFormFieldsRow(n)){for(let r of n.fields)if(isFormFreeFieldRef(r)){let n=r.attribute.type;if(e.has(n))throw Error(`[FormBuilder] Free field in step "${t.id}" uses forbidden attribute type "${n}". Forbidden types: ${Ni.join(`, `)}`)}}}};function form(e,t){return new FormBuilder(e,t)}function validateObjectExpressions(e){let{name:t,labelExpression:n,embeddingExpression:r}=e;if(!n)throw new T(`Object "${t}" must have a labelExpression. The labelExpression defines how records are displayed in lists and relations (e.g. "{{ name }}").`,E.VALIDATION_FAILED);let i=F.safeParse(n);if(!i.success){let e=i.error.issues[0]?.message??`Invalid labelExpression`;throw new T(`Invalid labelExpression for "${t}": ${e}`,E.VALIDATION_FAILED)}if(r!==void 0){let e=F.safeParse(r);if(!e.success){let n=e.error.issues[0]?.message??`Invalid embeddingExpression`;throw new T(`Invalid embeddingExpression for "${t}": ${n}`,E.VALIDATION_FAILED)}}}var ObjectBuilder=class{get"~standard"(){return createStandardSchemaProps(tr(this.build()))}constructor(e){this._sealed=!1,this._toleratedAttributes=[],this.validateName(e.name),this.obj={name:e.name,label:e.label,attributes:[],system:!0},e.id&&(this.obj.id=e.id)}description(e){return this.obj.description=e,this}pluralLabel(e){return this._pluralLabel=e,this}icon(e){return this.obj.icon=e,this}runtime(){return this.obj.system=!1,this}sealed(){return this._sealed=!0,this}tolerate(e){return this._toleratedAttributes=[...this._toleratedAttributes,...e],this}attribute(e){return this.pushAttributes([e]),this}attributes(e){return this.pushAttributes(e),this}pushAttributes(e){let t=e.map(e=>`build`in e&&typeof e.build==`function`?e.build():e);Vt([...this.obj.attributes,...t],e=>e.name,e=>new C(`attribute`,e,`Object "${this.obj.name}": duplicate attribute name "${e}"`)),this.obj.attributes.push(...t)}metadata(e){return this.obj.metadata={...this.obj.metadata,...e},this}order(e){return this.obj.metadata={...this.obj.metadata,order:e},this}hidden(){return this.obj.metadata={...this.obj.metadata,hidden:!0},this}labelExpression(e){return this._labelExpression=e,this}embeddingExpression(e){return this._embeddingExpression=e,this}documentLayout(e){if(e.presets)for(let t of e.presets)validatePresetStructure(t.id,t.structure,1);return this.obj.documentLayout=e,this}build(){if(!this.obj.name)throw new D(`[ObjectBuilder] Missing required field: name`,[{path:[`name`],message:`name is required`}]);if(!this.obj.label)throw new D(`[ObjectBuilder] Missing required field: label`,[{path:[`label`],message:`label is required`}]);return validateObjectExpressions({name:this.obj.name,labelExpression:this._labelExpression,embeddingExpression:this._embeddingExpression}),{...this.obj,pluralLabel:this._pluralLabel,labelExpression:this._labelExpression,embeddingExpression:this._embeddingExpression,sealed:this._sealed,toleratedAttributes:this._toleratedAttributes}}validateName(e){e!==void 0&&zt(e)}};function object(e){if(Dt(e.name))throw new ft(e.name,`builder`);return new ObjectBuilder(e)}function validatePresetStructure(e,t,n){let fail=(t,n)=>{throw new D(t,[{path:[`documentLayout`,`presets`,e],message:n}])};n>5&&fail(`Preset structure exceeds max depth of 5`,`Preset structure too deep`);let r=new Set;for(let i of t){let t=i.title.trim();t.length===0&&fail(`Folder preset node title is required`,`Empty folder title`),t.includes(`/`)&&fail(`Folder preset node title cannot contain /`,`Folder title contains /: "${t}"`),r.has(t)&&fail(`Folder preset sibling titles must be unique`,`Duplicate folder title: "${t}"`),r.add(t),i.children&&i.children.length>0&&validatePresetStructure(e,i.children,n+1)}}function cloneBuilderValue(e,t){try{return structuredClone(e)}catch{let e=`Builder configuration must contain cloneable data`;throw new D(e,[{path:t,message:e}])}}function requireBuilderName(e,t){if(typeof e!=`string`||e.trim().length===0)throw new D(`Name must not be blank`,[{path:t,message:`Name must not be blank`}])}function validateContentConfiguration(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw new D(`Invalid content configuration`,[{path:t,message:`Expected content configuration`}]);for(let n of[`name`,`label`,`placement`])if(Object.hasOwn(e,n)){let e=`Independent content configuration cannot define ${n}`;throw new D(e,[{path:[...t,n],message:e}])}let n=x.safeParse({...e,name:`content`,placement:`main`});if(!n.success)throw D.fromZodErrors(n.error.issues.map(e=>({path:[...t,...e.path.map(String)],message:e.message})));n.data.type===`form`&&n.data.groups.forEach((e,n)=>requireBuilderName(e.name,[...t,`groups`,String(n),`name`]));let{name:r,label:i,placement:a,...o}=n.data;return cloneBuilderValue(o,t)}function validateLiteralContent(e,t){return validateContentConfiguration(e,t),cloneBuilderValue(e,t)}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`?{object:e,attribute:t.attribute}:void 0;if(t.type!==`collection`)return;let n=collectionSourceAddressOf(t.source);if(n?.kind===`related`)return{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 t=`Content "${e}" requires record context. In 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 D(t,[{path:n,message:t}])}}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))}var ka=class ViewBuilder{constructor(e,t=[]){this.kind=`view`,this.data=cloneBuilderValue(e,[`views`,`0`]),this.extensions=t.map(e=>e&&{...e})}for(e){return new ViewBuilder({...this.data,object:e},this.extensions)}default(){return new ViewBuilder({...this.data,default:!0},this.extensions)}description(e){return new ViewBuilder({...this.data,description:e},this.extensions)}icon(e){return new ViewBuilder({...this.data,icon:e},this.extensions)}place(e,t,n,r){let i=[`views`,`0`,`contents`,String(this.data.contents.length)],a,o;try{typeof n==`object`&&n&&`build`in n&&typeof n.build==`function`?(a=validateContentConfiguration(n.build(),i),o=n.extension):a=validateContentConfiguration(n,i)}catch(e){throw e instanceof D?new D(e.message,e.errors.map(e=>({...e,path:e.path[0]===`content`?[...i,...e.path.slice(1)]:e.path}))):e}let s={...a,name:e,label:t,placement:r},c=[...this.data.contents,s];return new ViewBuilder({...this.data,contents:c},[...this.extensions,o])}tab(e,t,n){return this.place(e,t,n,`main`)}aside(e,t,n){return this.place(e,t,n,`aside`)}build(){let e=[`views`,`0`];requireBuilderName(this.data.name,[...e,`name`]),requireBuilderName(this.data.object,[...e,`object`]);let t=Pe.safeParse(this.data);if(!t.success)throw D.fromZodErrors(t.error.issues.map(t=>({path:[...e,...t.path.map(String)],message:t.message})));return this.data.contents.forEach((t,n)=>{let r=[...e,`contents`,String(n)];requireBuilderName(t.name,[...r,`name`]),t.type===`form`&&t.groups.forEach((e,t)=>requireBuilderName(e.name,[...r,`groups`,String(t),`name`])),(t.type===`custom`?this.extensions[n]?.requiresRecord:t.type!==`collection`||collectionSourceAddress(t.source).kind!==`object`)&&requireRecordContentContext(t.name,this.data.context,r)}),{kind:`view`,definition:cloneBuilderValue(this.data,e)}}};function detailView(e,t){return new ka({name:e,label:t,object:void 0,context:`record`,contents:[]})}function listView(e,t){return new ka({name:e,label:t,object:void 0,context:`collection`,contents:[]})}function relationProperty(e){return requireBuilderName(e,[`relationProperty`]),{relationProperty:e}}var z=class ContentBuilder{constructor(e,t){this.data=cloneBuilderValue(e,[`content`]),this.extension=t===void 0?void 0:Object.freeze({name:t.name,requiresRecord:t.requiresRecord,parameters:t.parameters})}set(e){return new ContentBuilder({...this.data,...e},this.extension)}icon(e){return this.set({icon:e})}object(e){return this.data.type===`forms`?this.set({objectName:e}):this.set({source:{object:e}})}related(e){return this.set({source:{relation:e}})}relatedFrom(e,t){return this.set({source:{object:e,relation:t}})}layout(e){let{layout:t,groupByAttribute:n,columnSizing:r,kanbanColumnOrder:i,kanbanColumnVisibility:a,kanbanPinnedColumns:o,...s}={...this.data,layout:void 0,groupByAttribute:void 0,columnSizing:void 0,kanbanColumnOrder:void 0,kanbanColumnVisibility:void 0,kanbanPinnedColumns:void 0};return new ContentBuilder({...s,...e},this.extension)}table(){return this.layout({layout:`table`})}list(){return this.layout({layout:`list`})}kanban(e){return this.layout({layout:`kanban`,groupByAttribute:e})}columns(...e){return this.set({columns:e})}filter(e){return this.set({filters:e})}sort(e,t=`asc`){let n=[...`sorts`in this.data&&Array.isArray(this.data.sorts)?this.data.sorts:[],{attribute:e,direction:t}];return this.set({sorts:n})}actions(...e){return this.set({actions:e})}openMode(e){return this.set({openMode:e})}createMode(e){return this.set({createMode:e})}visibility(e){return this.set({visibility:e})}descriptionAttribute(e){return this.set({descriptionAttribute:e})}displayAttributes(...e){return this.set({displayAttributes:e})}columnSizing(e){return this.set({columnSizing:e})}kanbanColumnOrder(...e){return this.set({kanbanColumnOrder:e})}kanbanColumnVisibility(e){return this.set({kanbanColumnVisibility:e})}kanbanPinnedColumns(...e){return this.set({kanbanPinnedColumns:e})}formColumns(e){return this.set({formColumns:e})}density(e){return this.set({density:e})}titleAttribute(e){return this.set({titleAttribute:e})}allowUpload(e){return this.set({allowUpload:e})}allowRemove(e){return this.set({allowRemove:e})}hideAttachments(e){return this.set({hideAttachments:e})}relations(...e){return this.set({relations:e})}build(){let e=validateLiteralContent(this.data,[`content`]);if(this.extension&&e.type===`custom`){let t=this.extension.parameters.safeParse(cloneBuilderValue(e.parameters??{},[`content`,`parameters`]));if(!t.success)throw D.fromZodErrors(t.error.issues.map(e=>({path:[`content`,`parameters`,...e.path.map(String)],message:e.message})))}return e}},Aa=class GroupBuilder{constructor(e,t,n,r={}){this.data=cloneBuilderValue({name:e,label:t,fields:n,...r},[`group`])}field(e,t){let{name:n,label:r,fields:i,...a}=this.data;return new GroupBuilder(n,r,[...i,{attribute:e,...t}],a)}fields(...e){let{name:t,label:n,fields:r,...i}=this.data;return new GroupBuilder(t,n,[...r,...e.map(e=>({attribute:e}))],i)}description(e){return new GroupBuilder(this.data.name,this.data.label,this.data.fields,{...this.presentation(),description:e})}collapsible(e=!1){return new GroupBuilder(this.data.name,this.data.label,this.data.fields,{...this.presentation(),collapsible:!0,collapsed:e})}presentation(){let{name:e,label:t,fields:n,...r}=this.data;return r}build(){requireBuilderName(this.data.name,[`group`,`name`]);try{validateLiteralContent({type:`form`,groups:[this.data]},[`group`])}catch(e){throw e instanceof D?new D(e.message,e.errors.map(e=>({...e,path:e.path[1]===`groups`?[`group`,...e.path.slice(3)]:e.path}))):e}return cloneBuilderValue(this.data,[`group`])}};function group(e,t){return new Aa(e,t,[])}function collection(){return new z({type:`collection`})}function form$1(...e){return new z({type:`form`,groups:e.map(e=>`build`in e?e.build():e)})}function activity(){return new z({type:`activity`})}function richtext$1(e){return new z({type:`richtext`,attribute:e})}function documents(){return new z({type:`documents`})}function forms(){return new z({type:`forms`})}function emails(...e){return new z({type:`emails`,emailAttributes:e})}function meetings(...e){return new z({type:`meetings`,emailAttributes:e})}function custom(e,t){if(typeof e!=`object`||!e||typeof e.name!=`string`)throw new D(`Expected registered extension declaration`,[{path:[`content`,`extension`],message:`Expected registered extension declaration`}]);let n=validateContentConfiguration({type:`custom`,extension:e.name,parameters:t},[`content`]);if(n.type!==`custom`)throw new D(`Expected custom content`,[]);let r=new z({...n,extension:e.name},e);return r.build(),r}const B={collection,form:form$1,activity,richtext:richtext$1,documents,forms,emails,meetings,custom};function validateFlagName(e){if(!/^[a-z][a-z0-9-]*[a-z0-9]$|^[a-z]$/.test(e))throw Error(`Invalid flag name "${e}". Flag names must be kebab-case (e.g., "architect-mode", "ai-features").`)}var BaseFlagBuilder=class{constructor(e,t,n){validateFlagName(e),this.flag={name:e,valueType:t,defaultValue:n,allowedLevels:[`global`,`tenant`,`user`]}}label(e){return this.flag.label=e,this}description(e){return this.flag.description=e,this}category(e){return this.flag.category=e,this}system(){return this.flag.system=!0,this}tenantScoped(){return this.flag.allowedLevels=[`global`,`tenant`],this}globalOnly(){return this.flag.allowedLevels=[`global`],this}allowedLevels(e){return this.flag.allowedLevels=[...e],this}build(){if(!this.flag.label?.trim())throw Error(`Flag "${this.flag.name}" must have a label. Use .label("Human-readable label").`);return{...this.flag,allowedLevels:[...this.flag.allowedLevels||[]]}}},BooleanFlagBuilder=class extends BaseFlagBuilder{constructor(e){super(e,`boolean`,!1)}defaultValue(e){return this.flag.defaultValue=e,this}enabledByDefault(){return this.flag.defaultValue=!0,this}},StringFlagBuilder=class extends BaseFlagBuilder{constructor(e){super(e,`string`,``)}defaultValue(e){return this.flag.defaultValue=e,this}},NumberFlagBuilder=class extends BaseFlagBuilder{constructor(e){super(e,`number`,0)}defaultValue(e){return this.flag.defaultValue=e,this}},JsonFlagBuilder=class extends BaseFlagBuilder{constructor(e,t){super(e,`json`,t)}defaultValue(e){return this.flag.defaultValue=e,this}};function booleanFlag(e){return new BooleanFlagBuilder(e)}function stringFlag(e){return new StringFlagBuilder(e)}function numberFlag(e){return new NumberFlagBuilder(e)}function jsonFlag(e,t){return new JsonFlagBuilder(e,t)}function duplicateFlagError(e){return new C(`feature flag`,e,`Flag "${e}" is already registered. Each flag name must be unique.`)}function cloneFlagDefinition(e){return{...e,allowedLevels:[...e.allowedLevels]}}var FlagRegistry=class{constructor(){this.flags=new Map}register(e){if(this.flags.has(e.name))throw duplicateFlagError(e.name);this.flags.set(e.name,cloneFlagDefinition(e))}registerAll(e){let t=new Set;for(let n of e){if(this.flags.has(n.name)||t.has(n.name))throw duplicateFlagError(n.name);t.add(n.name)}for(let t of e)this.register(t)}get(e){let t=this.flags.get(e);return t?cloneFlagDefinition(t):void 0}getOrThrow(e){let t=this.get(e);if(!t)throw new w(`Feature flag`,e,void 0,`Flag "${e}" is not registered. Available flags: ${this.listNames().join(`, `)}`);return t}has(e){return this.flags.has(e)}list(){return Array.from(this.flags.values(),cloneFlagDefinition)}listNames(){return Array.from(this.flags.keys())}unregister(e){return this.flags.delete(e)}clear(){this.flags.clear()}get size(){return this.flags.size}};const ja=new FlagRegistry;function createFlagRegistry(){return new FlagRegistry}var FlagService=class{constructor(e){this.registry=e.registry,this.staticDefaults=new Map(e.staticDefaults?.map(e=>[e.name,e.value])??[])}resolveAll(){let e=new Map;for(let t of this.registry.listNames())e.set(t,this.getValue(t));for(let t of this.staticDefaults.keys())e.set(t,this.getValue(t));return e}getValue(e){return this.staticDefaults.has(e)?this.staticDefaults.get(e):this.registry.get(e)?.defaultValue}isEnabled(e){return this.getValue(e)===!0}};function createFlagService(e){return new FlagService(e)}const Ma=Symbol(`stndrds.native-object`);function markNativeDefinition(e){return Object.defineProperty(e,Ma,{value:!0,enumerable:!1}),e}var NativeObjectBuilder=class extends ObjectBuilder{build(){return markNativeDefinition(super.build())}};function nativeObject(e){return new NativeObjectBuilder(e)}function isNativeDefinition(e){return e[Ma]===!0}function cloneObjectDefinition(e){let t=structuredClone(e);return isNativeDefinition(e)?markNativeDefinition(t):t}var NativeObjectRegistryClass=class{constructor(){this.objects=new Map}register(e){let t=(Array.isArray(e)?e:[e]).map(e=>`build`in e&&typeof e.build==`function`?e.build():e),n=new Set;for(let e of t){if(this.validate(e),n.has(e.name))throw new C(`object`,e.name,`[NativeObjectRegistry] Duplicate object name "${e.name}" within a single register() batch.`);n.add(e.name)}for(let e of t)this.objects.set(e.name,cloneObjectDefinition(e));return this}validate(e){if(!e.system){let t=`[NativeObjectRegistry] Cannot register object "${e.name}" (id: ${e.id}): missing system flag.\nNative objects must have system=true. Did you call .runtime() on the builder? Remove that call — objects are system:true by default.`;throw new D(t,[])}if(Dt(e.name)&&!isNativeDefinition(e))throw new ft(e.name,`registry`);if(this.objects.has(e.name)){let t=this.objects.get(e.name),n=`[NativeObjectRegistry] Duplicate object name "${e.name}":\n - Existing: "${t?.label}" (id: ${t?.id})\n - New: "${e.label}" (id: ${e.id})\nPlease use unique names for each native object.`;throw new C(`object`,e.name,n)}}getByName(e){let t=this.objects.get(e);return t?cloneObjectDefinition(t):void 0}getByNameOrThrow(e){let t=this.getByName(e);if(!t){let t=`[NativeObjectRegistry] Native object "${e}" not found.\nAvailable objects: ${this.listNames().join(`, `)}`;throw new w(`Native object`,e,E.OBJECT_NOT_FOUND,t)}return t}getAll(){return Array.from(this.objects.values(),cloneObjectDefinition)}listNames(){return Array.from(this.objects.keys())}has(e){return this.objects.has(e)}get size(){return this.objects.size}clear(){this.objects.clear()}summary(){let e=this.getAll();return[`[NativeObjectRegistry] ${this.size} native object(s) registered:`,...e.map(e=>` - ${e.name}: "${e.label}" (${e.attributes.length} attributes)`)].join(`
|
|
3
3
|
`)}debug(e){let t=this.summary();return e?.(t),t}};const Na=new NativeObjectRegistryClass,Pa=new WeakSet;function markSystemView(e){return Pa.add(e.definition),e}function isSystemViewDefinition(e){return typeof e==`object`&&!!e&&Pa.has(e)}const Fa=`## Overview
|
|
4
4
|
|
|
5
5
|
Describe in one or two sentences what this skill does and the outcome it produces. The agent reads this page when it uses the skill — write instructions for the agent, not documentation for people.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { d as colorIdSchema, f as iconNameSchema, l as publishedViewContentDefinitionSchema, o as draftContentViewDefinitionSchema, p as SCHEMA_LIMITS, r as contentViewDefinitionSchema, t as collectionContentSourceSchema } from "../all-
|
|
2
|
+
import { d as colorIdSchema, f as iconNameSchema, l as publishedViewContentDefinitionSchema, o as draftContentViewDefinitionSchema, p as SCHEMA_LIMITS, r as contentViewDefinitionSchema, t as collectionContentSourceSchema } from "../all-Cr6EWK7O.mjs";
|
|
3
3
|
import { a as validateDraft, c as validateObjectOrThrow, f as createFormAttributeValidator, o as validateDraftOrThrow, r as rejectUnknownAttributesOrThrow, s as validateObject } from "../index-BT21OFT0.mjs";
|
|
4
4
|
import { _ as statusGroupSchema, b as withoutUnknownOptionKeys, c as parseAttributeConfig, d as propertyAttributeSchema, f as propertyAttributeWireSchema, g as selectOptionWriteSchema, h as refuseForeignKeys, i as attributeConfigSchemas, l as parseAttributeConfigForCreate, m as propertySchemaWireSchema, p as propertySchemaSchema, r as WIRE_OMITTED_CONFIG_KEYS, s as multiselectOptionWriteSchema, t as SIMPLE_PROPERTY_TYPES, u as parseAttributeConfigForUpdate, v as statusOptionWriteSchema, y as wireOmittedConfigKeysFor } from "../index-BRGf8Pj9.mjs";
|
|
5
5
|
import { n as DEFAULT_VALIDATION_MESSAGES, r as ValidationMessages, t as formatZodErrors } from "../index-D9Zkc3Zp.mjs";
|
package/dist/validation/all.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { d as colorIdSchema, f as iconNameSchema, l as publishedViewContentDefinitionSchema, o as draftContentViewDefinitionSchema, p as SCHEMA_LIMITS, r as contentViewDefinitionSchema, t as collectionContentSourceSchema } from "../all-
|
|
2
|
+
import { d as colorIdSchema, f as iconNameSchema, l as publishedViewContentDefinitionSchema, o as draftContentViewDefinitionSchema, p as SCHEMA_LIMITS, r as contentViewDefinitionSchema, t as collectionContentSourceSchema } from "../all-BzWxCmLO.js";
|
|
3
3
|
import { a as validateDraft, c as validateObjectOrThrow, f as createFormAttributeValidator, o as validateDraftOrThrow, r as rejectUnknownAttributesOrThrow, s as validateObject } from "../index-B8VLnf0C.js";
|
|
4
4
|
import { _ as statusGroupSchema, b as withoutUnknownOptionKeys, c as parseAttributeConfig, d as propertyAttributeSchema, f as propertyAttributeWireSchema, g as selectOptionWriteSchema, h as refuseForeignKeys, i as attributeConfigSchemas, l as parseAttributeConfigForCreate, m as propertySchemaWireSchema, p as propertySchemaSchema, r as WIRE_OMITTED_CONFIG_KEYS, s as multiselectOptionWriteSchema, t as SIMPLE_PROPERTY_TYPES, u as parseAttributeConfigForUpdate, v as statusOptionWriteSchema, y as wireOmittedConfigKeysFor } from "../index-BQ7N0iEr.js";
|
|
5
5
|
import { n as DEFAULT_VALIDATION_MESSAGES, r as ValidationMessages, t as formatZodErrors } from "../index-BxM_oMmi.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stndrds/schema",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.355",
|
|
4
4
|
"description": "Standard schema definitions and utilities",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -237,7 +237,7 @@
|
|
|
237
237
|
"@standard-schema/spec": "^1.1.0",
|
|
238
238
|
"libphonenumber-js": "^1.12.31",
|
|
239
239
|
"zod": "^4.2.1",
|
|
240
|
-
"@stndrds/constants": "1.0.0-alpha.
|
|
240
|
+
"@stndrds/constants": "1.0.0-alpha.355"
|
|
241
241
|
},
|
|
242
242
|
"devDependencies": {
|
|
243
243
|
"@types/node": "^25.0.3",
|