@stndrds/schema 1.0.0-alpha.345 → 1.0.0-alpha.347

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.
Files changed (77) hide show
  1. package/dist/{all-DdTEiYEh.d.mts → all-BDkJ5lPJ.d.mts} +8 -8
  2. package/dist/{all-BfNS2KEx.d.ts → all-n32KD_Pw.d.ts} +8 -8
  3. package/dist/capabilities.d.mts +7 -0
  4. package/dist/capabilities.d.ts +7 -0
  5. package/dist/capabilities.js +1 -1
  6. package/dist/capabilities.mjs +1 -1
  7. package/dist/{checkbox-DSzn5epa.d.mts → checkbox-BR-7mIkg.d.mts} +2 -2
  8. package/dist/{checkbox-D8nK0oIO.d.ts → checkbox-BVTPPcis.d.ts} +2 -2
  9. package/dist/{config-6uO9OYWQ.mjs → config-BiQGgy7f.mjs} +1 -1
  10. package/dist/{config-DIBMi8S_.js → config-WUWITOeW.js} +1 -1
  11. package/dist/{date-CteDw_88.d.mts → date-CJWfx4s2.d.mts} +2 -2
  12. package/dist/{date-BGULTVlX.d.ts → date-Cmk9GSXp.d.ts} +2 -2
  13. package/dist/{exceptions-BCfkN2ct.d.mts → exceptions-Bon8Edct.d.mts} +39 -1
  14. package/dist/{exceptions-BCfkN2ct.d.ts → exceptions-Bon8Edct.d.ts} +39 -1
  15. package/dist/exceptions.d.mts +2 -2
  16. package/dist/exceptions.d.ts +2 -2
  17. package/dist/exceptions.js +2 -2
  18. package/dist/exceptions.mjs +2 -2
  19. package/dist/{index-_gdqRN1W.d.mts → index-By2s4V9c.d.mts} +1 -1
  20. package/dist/{index-CLEwI8GE.d.ts → index-CBnIKnvt.d.ts} +2 -2
  21. package/dist/{index-Ds0DxPHk.d.mts → index-ChtJn338.d.mts} +2 -2
  22. package/dist/{index-DzEWbzP-.d.mts → index-DF2Os8Es.d.mts} +1 -1
  23. package/dist/{index-BKv7a08I.d.ts → index-DPOFnGla.d.ts} +1 -1
  24. package/dist/{index-DyeLYnEc.d.ts → index-OO5ADZYz.d.ts} +1 -1
  25. package/dist/index.d.mts +10777 -10478
  26. package/dist/index.d.ts +10777 -10478
  27. package/dist/index.js +9 -9
  28. package/dist/index.mjs +9 -9
  29. package/dist/{number-U7UMAXKt.d.mts → number-C1HpLQUY.d.mts} +2 -2
  30. package/dist/{number-BcMYyg8j.d.ts → number-DuIbEHO4.d.ts} +2 -2
  31. package/dist/{text-CjhjkBXJ.d.mts → text-BrCsJIFO.d.mts} +2 -2
  32. package/dist/{text-C4EAE9Ap.d.ts → text-Jg083ClK.d.ts} +2 -2
  33. package/dist/utils.d.mts +1 -1
  34. package/dist/utils.d.ts +1 -1
  35. package/dist/validation/all.d.mts +4 -4
  36. package/dist/validation/all.d.ts +4 -4
  37. package/dist/validation/all.js +1 -1
  38. package/dist/validation/all.mjs +1 -1
  39. package/dist/validation/complex/currency.d.mts +2 -2
  40. package/dist/validation/complex/currency.d.ts +2 -2
  41. package/dist/validation/complex/location.d.mts +2 -2
  42. package/dist/validation/complex/location.d.ts +2 -2
  43. package/dist/validation/complex/phone.d.mts +2 -2
  44. package/dist/validation/complex/phone.d.ts +2 -2
  45. package/dist/validation/complex/relation.d.mts +2 -2
  46. package/dist/validation/complex/relation.d.ts +2 -2
  47. package/dist/validation/complex/richtext.d.mts +2 -2
  48. package/dist/validation/complex/richtext.d.ts +2 -2
  49. package/dist/validation/complex/select.d.mts +2 -2
  50. package/dist/validation/complex/select.d.ts +2 -2
  51. package/dist/validation/complex/user.d.mts +2 -2
  52. package/dist/validation/complex/user.d.ts +2 -2
  53. package/dist/validation/computed/formula.d.mts +2 -2
  54. package/dist/validation/computed/formula.d.ts +2 -2
  55. package/dist/validation/computed/rollup.d.mts +2 -2
  56. package/dist/validation/computed/rollup.d.ts +2 -2
  57. package/dist/validation/config/index.d.mts +1 -1
  58. package/dist/validation/config/index.d.ts +1 -1
  59. package/dist/validation/config/index.js +1 -1
  60. package/dist/validation/config/index.mjs +1 -1
  61. package/dist/validation/core/index.d.mts +1 -1
  62. package/dist/validation/core/index.d.ts +1 -1
  63. package/dist/validation/object/index.d.mts +1 -1
  64. package/dist/validation/object/index.d.ts +1 -1
  65. package/dist/validation/primitives/checkbox.d.mts +1 -1
  66. package/dist/validation/primitives/checkbox.d.ts +1 -1
  67. package/dist/validation/primitives/date.d.mts +1 -1
  68. package/dist/validation/primitives/date.d.ts +1 -1
  69. package/dist/validation/primitives/number.d.mts +1 -1
  70. package/dist/validation/primitives/number.d.ts +1 -1
  71. package/dist/validation/primitives/text.d.mts +1 -1
  72. package/dist/validation/primitives/text.d.ts +1 -1
  73. package/dist/view-config.schema-PCAznd98.mjs +2 -0
  74. package/dist/view-config.schema-VEoY_VAd.js +2 -0
  75. package/package.json +2 -2
  76. package/dist/view-config.schema-DbO6eQgP.mjs +0 -2
  77. package/dist/view-config.schema-Omtzavho.js +0 -2
@@ -1,12 +1,12 @@
1
1
 
2
- import { Tt as RollupAttribute, Y as Attribute, Z as AttributeType } from "./exceptions-BCfkN2ct.mjs";
3
- import { m as ListViewTabVisibility } from "./index-Ds0DxPHk.mjs";
4
- import "./index-_gdqRN1W.mjs";
5
- import "./index-DzEWbzP-.mjs";
6
- import "./text-CjhjkBXJ.mjs";
7
- import "./number-U7UMAXKt.mjs";
8
- import "./checkbox-DSzn5epa.mjs";
9
- import "./date-CteDw_88.mjs";
2
+ import { Ot as RollupAttribute, Q as Attribute, et as AttributeType } from "./exceptions-Bon8Edct.mjs";
3
+ import { m as ListViewTabVisibility } from "./index-ChtJn338.mjs";
4
+ import "./index-By2s4V9c.mjs";
5
+ import "./index-DF2Os8Es.mjs";
6
+ import "./text-BrCsJIFO.mjs";
7
+ import "./number-C1HpLQUY.mjs";
8
+ import "./checkbox-BR-7mIkg.mjs";
9
+ import "./date-CJWfx4s2.mjs";
10
10
  import { z as z$1 } from "zod";
11
11
  import { IconName } from "@stndrds/constants";
12
12
  //#region src/types/filters.d.ts
@@ -1,12 +1,12 @@
1
1
 
2
- import { Tt as RollupAttribute, Y as Attribute, Z as AttributeType } from "./exceptions-BCfkN2ct.js";
3
- import { m as ListViewTabVisibility } from "./index-CLEwI8GE.js";
4
- import "./index-BKv7a08I.js";
5
- import "./index-DyeLYnEc.js";
6
- import "./text-C4EAE9Ap.js";
7
- import "./number-BcMYyg8j.js";
8
- import "./checkbox-D8nK0oIO.js";
9
- import "./date-BGULTVlX.js";
2
+ import { Ot as RollupAttribute, Q as Attribute, et as AttributeType } from "./exceptions-Bon8Edct.js";
3
+ import { m as ListViewTabVisibility } from "./index-CBnIKnvt.js";
4
+ import "./index-DPOFnGla.js";
5
+ import "./index-OO5ADZYz.js";
6
+ import "./text-Jg083ClK.js";
7
+ import "./number-DuIbEHO4.js";
8
+ import "./checkbox-BVTPPcis.js";
9
+ import "./date-Cmk9GSXp.js";
10
10
  import { z as z$1 } from "zod";
11
11
  import { IconName } from "@stndrds/constants";
12
12
  //#region src/types/filters.d.ts
@@ -3,6 +3,13 @@ import { z as z$1 } from "zod";
3
3
  //#region src/capabilities.d.ts
4
4
  /** Accepted forms of the object identifier every object-scoped capability takes. */
5
5
  export declare const OBJECT_ID_DESCRIPTION = "Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.";
6
+ /**
7
+ * The `query` argument of every record search. The rule it states is what
8
+ * #3849 was missing: a model handed "with query / without query" answered a
9
+ * postal-code question with `query: "56"`, and a hit list ranked by token
10
+ * relevance is neither exact nor complete.
11
+ */
12
+ export declare const QUERY_DESCRIPTION = "Relevance ranking for a name or a phrase — matches tokens, not values. Exact criteria go in filters with NO query.";
6
13
  /** Shared suffix for record `data` inputs that accept `$fromSandboxFile` references for large content. */
7
14
  export declare const SANDBOX_FILE_DATA_HINT = " For large text content (> a few KB), write it to a sandbox file first and pass {\"$fromSandboxFile\": \"/workspace/<file>\"} as the attribute value — the server substitutes the file content.";
8
15
  /**
@@ -3,6 +3,13 @@ import { z as z$1 } from "zod";
3
3
  //#region src/capabilities.d.ts
4
4
  /** Accepted forms of the object identifier every object-scoped capability takes. */
5
5
  export declare const OBJECT_ID_DESCRIPTION = "Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.";
6
+ /**
7
+ * The `query` argument of every record search. The rule it states is what
8
+ * #3849 was missing: a model handed "with query / without query" answered a
9
+ * postal-code question with `query: "56"`, and a hit list ranked by token
10
+ * relevance is neither exact nor complete.
11
+ */
12
+ export declare const QUERY_DESCRIPTION = "Relevance ranking for a name or a phrase — matches tokens, not values. Exact criteria go in filters with NO query.";
6
13
  /** Shared suffix for record `data` inputs that accept `$fromSandboxFile` references for large content. */
7
14
  export declare const SANDBOX_FILE_DATA_HINT = " For large text content (> a few KB), write it to a sandbox file first and pass {\"$fromSandboxFile\": \"/workspace/<file>\"} as the attribute value — the server substitutes the file content.";
8
15
  /**
@@ -1,2 +1,2 @@
1
1
  /*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
2
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("zod");const t=`Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.`,n=` For large text content (> a few KB), write it to a sandbox file first and pass {"$fromSandboxFile": "/workspace/<file>"} as the attribute value — the server substitutes the file content.`,r=e.z.object({combinator:e.z.enum([`and`,`or`]).default(`and`),rules:e.z.array(e.z.object({attribute:e.z.string().describe(`Attribute name on the object being searched`),property:e.z.string().optional().describe(`Optional. Only valid when 'attribute' is a relation / document / user attribute declared with .qualifyWith({...}). When set, the rule filters on the named EDGE property (not the linked record) and the operator must be valid for that property's type. See <filter_operators>.`),operator:e.z.string().describe(`Filter operator (canonical: is, is_not, contains, not_contains, starts_with, ends_with, less_than, greater_than, less_or_equal, greater_or_equal, is_within, on_day_month, any_of, none_of, is_empty, is_not_empty). Short codes (lt, gt, lte, gte, eq, neq, in) are accepted as input and auto-normalized to the canonical names. The valid set depends on the attribute type (or property type when 'property' is set) — see <filter_operators>.`),value:e.z.unknown().nullable().describe(`Value matching the attribute (or property) type: scalar for is/contains/less_than/etc (checkbox is: true|false); array (string[]) for any_of/none_of; null for is_empty/is_not_empty; { amount, unit, direction } for is_within; { day, month } for on_day_month.`)}))}),i=e.z.array(e.z.object({attribute:e.z.string().describe(`Attribute name`),direction:e.z.enum([`asc`,`desc`])})),a=e.z.object({recordId:e.z.string().describe(`Record UUID`),fields:e.z.array(e.z.string()).optional().describe(`Attribute names to return`)}),o=e.z.object({objectId:e.z.string().describe(t),_displayLabel:e.z.string().optional().describe(`Display label`),query:e.z.string().optional().describe(`Full-text search query (omit to browse/list)`),limit:e.z.number().optional().describe(`Max results per call: 1-1000 (default 20). Paginate via offset for more.`),offset:e.z.number().optional().describe(`Skip N records (default 0)`),fields:e.z.array(e.z.string()).optional().describe(`Attribute names to include in values`),filters:r.optional().describe(`Structured filter: { combinator: 'and'|'or', rules: [{attribute, operator, value, property?}] }. Operators are constrained per attribute type — see <filter_operators>. Use 'property' on a rule to filter on a qualified edge property.`),sorts:i.optional().describe(`Sorts: [{ attribute, direction: 'asc'|'desc' }]`)}),s=e.z.object({objectId:e.z.string().describe(t),_displayLabel:e.z.string().optional().describe(`Display label`),data:e.z.record(e.z.string(),e.z.unknown()).describe(`Record data.${n}`)}),c=e.z.object({recordId:e.z.string().describe(`Record UUID`),data:e.z.record(e.z.string(),e.z.unknown()).describe(`Fields to update.${n}`)}),l=e.z.object({recordId:e.z.string().describe(`Record UUID`)}),u={get_record:{name:`get_record`,kind:`read`,input:a},search_records:{name:`search_records`,kind:`read`,input:o},create_record:{name:`create_record`,kind:`create`,input:s},update_record:{name:`update_record`,kind:`update`,input:c},delete_record:{name:`delete_record`,kind:`delete`,input:l}},d=Object.freeze(Object.fromEntries(Object.values(u).map(e=>[e.name,e.kind])));exports.OBJECT_ID_DESCRIPTION=t,exports.RECORD_CAPABILITIES=u,exports.RECORD_CAPABILITY_KINDS=d,exports.SANDBOX_FILE_DATA_HINT=n,exports.filtersSchema=r,exports.sortsSchema=i;
2
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("zod");const t=`Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.`,n=`Relevance ranking for a name or a phrase — matches tokens, not values. Exact criteria go in filters with NO query.`,r=` For large text content (> a few KB), write it to a sandbox file first and pass {"$fromSandboxFile": "/workspace/<file>"} as the attribute value — the server substitutes the file content.`,i=e.z.object({combinator:e.z.enum([`and`,`or`]).default(`and`),rules:e.z.array(e.z.object({attribute:e.z.string().describe(`Attribute name on the object being searched`),property:e.z.string().optional().describe(`Optional, and the only way to read one part of a compound value. On a relation / document / user attribute declared with .qualifyWith({...}) it names an EDGE property (not the linked record); on a location attribute it is one of city | postalCode | country, which is how a postal code or a city is filtered exactly. The operator must be valid for that property's type. See <filter_operators>.`),operator:e.z.string().describe(`Filter operator (canonical: is, is_not, contains, not_contains, starts_with, ends_with, less_than, greater_than, less_or_equal, greater_or_equal, is_within, on_day_month, any_of, none_of, is_empty, is_not_empty). Short codes (lt, gt, lte, gte, eq, neq, in) are accepted as input and auto-normalized to the canonical names. The valid set depends on the attribute type (or property type when 'property' is set) — see <filter_operators>.`),value:e.z.unknown().nullable().describe(`Value matching the attribute (or property) type: scalar for is/contains/less_than/etc (checkbox is: true|false); array (string[]) for any_of/none_of; null for is_empty/is_not_empty; { amount, unit, direction } for is_within; { day, month } for on_day_month.`)}))}),a=e.z.array(e.z.object({attribute:e.z.string().describe(`Attribute name`),direction:e.z.enum([`asc`,`desc`])})),o=e.z.object({recordId:e.z.string().describe(`Record UUID`),fields:e.z.array(e.z.string()).optional().describe(`Attribute names to return`)}),s=e.z.object({objectId:e.z.string().describe(t),_displayLabel:e.z.string().optional().describe(`Display label`),query:e.z.string().optional().describe(n),limit:e.z.number().optional().describe(`Max results per call: 1-1000 (default 20). Paginate via offset for more.`),offset:e.z.number().optional().describe(`Skip N records (default 0)`),fields:e.z.array(e.z.string()).optional().describe(`Attribute names to include in values`),filters:i.optional().describe(`Structured filter: { combinator: 'and'|'or', rules: [{attribute, operator, value, property?}] }. Operators are constrained per attribute type — see <filter_operators>. Use 'property' on a rule to filter on a qualified edge property.`),sorts:a.optional().describe(`Sorts: [{ attribute, direction: 'asc'|'desc' }]`)}),c=e.z.object({objectId:e.z.string().describe(t),_displayLabel:e.z.string().optional().describe(`Display label`),data:e.z.record(e.z.string(),e.z.unknown()).describe(`Record data.${r}`)}),l=e.z.object({recordId:e.z.string().describe(`Record UUID`),data:e.z.record(e.z.string(),e.z.unknown()).describe(`Fields to update.${r}`)}),u=e.z.object({recordId:e.z.string().describe(`Record UUID`)}),d={get_record:{name:`get_record`,kind:`read`,input:o},search_records:{name:`search_records`,kind:`read`,input:s},create_record:{name:`create_record`,kind:`create`,input:c},update_record:{name:`update_record`,kind:`update`,input:l},delete_record:{name:`delete_record`,kind:`delete`,input:u}},f=Object.freeze(Object.fromEntries(Object.values(d).map(e=>[e.name,e.kind])));exports.OBJECT_ID_DESCRIPTION=t,exports.QUERY_DESCRIPTION=n,exports.RECORD_CAPABILITIES=d,exports.RECORD_CAPABILITY_KINDS=f,exports.SANDBOX_FILE_DATA_HINT=r,exports.filtersSchema=i,exports.sortsSchema=a;
@@ -1,2 +1,2 @@
1
1
  /*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
2
- import{z as e}from"zod";const t=`Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.`,n=` For large text content (> a few KB), write it to a sandbox file first and pass {"$fromSandboxFile": "/workspace/<file>"} as the attribute value — the server substitutes the file content.`,r=e.object({combinator:e.enum([`and`,`or`]).default(`and`),rules:e.array(e.object({attribute:e.string().describe(`Attribute name on the object being searched`),property:e.string().optional().describe(`Optional. Only valid when 'attribute' is a relation / document / user attribute declared with .qualifyWith({...}). When set, the rule filters on the named EDGE property (not the linked record) and the operator must be valid for that property's type. See <filter_operators>.`),operator:e.string().describe(`Filter operator (canonical: is, is_not, contains, not_contains, starts_with, ends_with, less_than, greater_than, less_or_equal, greater_or_equal, is_within, on_day_month, any_of, none_of, is_empty, is_not_empty). Short codes (lt, gt, lte, gte, eq, neq, in) are accepted as input and auto-normalized to the canonical names. The valid set depends on the attribute type (or property type when 'property' is set) — see <filter_operators>.`),value:e.unknown().nullable().describe(`Value matching the attribute (or property) type: scalar for is/contains/less_than/etc (checkbox is: true|false); array (string[]) for any_of/none_of; null for is_empty/is_not_empty; { amount, unit, direction } for is_within; { day, month } for on_day_month.`)}))}),i=e.array(e.object({attribute:e.string().describe(`Attribute name`),direction:e.enum([`asc`,`desc`])})),a=e.object({recordId:e.string().describe(`Record UUID`),fields:e.array(e.string()).optional().describe(`Attribute names to return`)}),o=e.object({objectId:e.string().describe(t),_displayLabel:e.string().optional().describe(`Display label`),query:e.string().optional().describe(`Full-text search query (omit to browse/list)`),limit:e.number().optional().describe(`Max results per call: 1-1000 (default 20). Paginate via offset for more.`),offset:e.number().optional().describe(`Skip N records (default 0)`),fields:e.array(e.string()).optional().describe(`Attribute names to include in values`),filters:r.optional().describe(`Structured filter: { combinator: 'and'|'or', rules: [{attribute, operator, value, property?}] }. Operators are constrained per attribute type — see <filter_operators>. Use 'property' on a rule to filter on a qualified edge property.`),sorts:i.optional().describe(`Sorts: [{ attribute, direction: 'asc'|'desc' }]`)}),s=e.object({objectId:e.string().describe(t),_displayLabel:e.string().optional().describe(`Display label`),data:e.record(e.string(),e.unknown()).describe(`Record data.${n}`)}),c=e.object({recordId:e.string().describe(`Record UUID`),data:e.record(e.string(),e.unknown()).describe(`Fields to update.${n}`)}),l=e.object({recordId:e.string().describe(`Record UUID`)}),u={get_record:{name:`get_record`,kind:`read`,input:a},search_records:{name:`search_records`,kind:`read`,input:o},create_record:{name:`create_record`,kind:`create`,input:s},update_record:{name:`update_record`,kind:`update`,input:c},delete_record:{name:`delete_record`,kind:`delete`,input:l}},d=Object.freeze(Object.fromEntries(Object.values(u).map(e=>[e.name,e.kind])));export{t as OBJECT_ID_DESCRIPTION,u as RECORD_CAPABILITIES,d as RECORD_CAPABILITY_KINDS,n as SANDBOX_FILE_DATA_HINT,r as filtersSchema,i as sortsSchema};
2
+ import{z as e}from"zod";const t=`Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.`,n=`Relevance ranking for a name or a phrase — matches tokens, not values. Exact criteria go in filters with NO query.`,r=` For large text content (> a few KB), write it to a sandbox file first and pass {"$fromSandboxFile": "/workspace/<file>"} as the attribute value — the server substitutes the file content.`,i=e.object({combinator:e.enum([`and`,`or`]).default(`and`),rules:e.array(e.object({attribute:e.string().describe(`Attribute name on the object being searched`),property:e.string().optional().describe(`Optional, and the only way to read one part of a compound value. On a relation / document / user attribute declared with .qualifyWith({...}) it names an EDGE property (not the linked record); on a location attribute it is one of city | postalCode | country, which is how a postal code or a city is filtered exactly. The operator must be valid for that property's type. See <filter_operators>.`),operator:e.string().describe(`Filter operator (canonical: is, is_not, contains, not_contains, starts_with, ends_with, less_than, greater_than, less_or_equal, greater_or_equal, is_within, on_day_month, any_of, none_of, is_empty, is_not_empty). Short codes (lt, gt, lte, gte, eq, neq, in) are accepted as input and auto-normalized to the canonical names. The valid set depends on the attribute type (or property type when 'property' is set) — see <filter_operators>.`),value:e.unknown().nullable().describe(`Value matching the attribute (or property) type: scalar for is/contains/less_than/etc (checkbox is: true|false); array (string[]) for any_of/none_of; null for is_empty/is_not_empty; { amount, unit, direction } for is_within; { day, month } for on_day_month.`)}))}),a=e.array(e.object({attribute:e.string().describe(`Attribute name`),direction:e.enum([`asc`,`desc`])})),o=e.object({recordId:e.string().describe(`Record UUID`),fields:e.array(e.string()).optional().describe(`Attribute names to return`)}),s=e.object({objectId:e.string().describe(t),_displayLabel:e.string().optional().describe(`Display label`),query:e.string().optional().describe(n),limit:e.number().optional().describe(`Max results per call: 1-1000 (default 20). Paginate via offset for more.`),offset:e.number().optional().describe(`Skip N records (default 0)`),fields:e.array(e.string()).optional().describe(`Attribute names to include in values`),filters:i.optional().describe(`Structured filter: { combinator: 'and'|'or', rules: [{attribute, operator, value, property?}] }. Operators are constrained per attribute type — see <filter_operators>. Use 'property' on a rule to filter on a qualified edge property.`),sorts:a.optional().describe(`Sorts: [{ attribute, direction: 'asc'|'desc' }]`)}),c=e.object({objectId:e.string().describe(t),_displayLabel:e.string().optional().describe(`Display label`),data:e.record(e.string(),e.unknown()).describe(`Record data.${r}`)}),l=e.object({recordId:e.string().describe(`Record UUID`),data:e.record(e.string(),e.unknown()).describe(`Fields to update.${r}`)}),u=e.object({recordId:e.string().describe(`Record UUID`)}),d={get_record:{name:`get_record`,kind:`read`,input:o},search_records:{name:`search_records`,kind:`read`,input:s},create_record:{name:`create_record`,kind:`create`,input:c},update_record:{name:`update_record`,kind:`update`,input:l},delete_record:{name:`delete_record`,kind:`delete`,input:u}},f=Object.freeze(Object.fromEntries(Object.values(d).map(e=>[e.name,e.kind])));export{t as OBJECT_ID_DESCRIPTION,n as QUERY_DESCRIPTION,d as RECORD_CAPABILITIES,f as RECORD_CAPABILITY_KINDS,r as SANDBOX_FILE_DATA_HINT,i as filtersSchema,a as sortsSchema};
@@ -1,6 +1,6 @@
1
1
 
2
- import { et as CheckboxAttribute } from "./exceptions-BCfkN2ct.mjs";
3
- import { r as ValidationMessages } from "./index-DzEWbzP-.mjs";
2
+ import { rt as CheckboxAttribute } from "./exceptions-Bon8Edct.mjs";
3
+ import { r as ValidationMessages } from "./index-DF2Os8Es.mjs";
4
4
  import { z as z$1 } from "zod";
5
5
  //#region src/validation/primitives/checkbox.d.ts
6
6
  /**
@@ -1,6 +1,6 @@
1
1
 
2
- import { et as CheckboxAttribute } from "./exceptions-BCfkN2ct.js";
3
- import { r as ValidationMessages } from "./index-DyeLYnEc.js";
2
+ import { rt as CheckboxAttribute } from "./exceptions-Bon8Edct.js";
3
+ import { r as ValidationMessages } from "./index-OO5ADZYz.js";
4
4
  import { z as z$1 } from "zod";
5
5
  //#region src/validation/primitives/checkbox.d.ts
6
6
  /**
@@ -10,4 +10,4 @@ Name must be a valid variable identifier:
10
10
  ✅ Valid: 'firstName', 'first_name', 'FirstName', 'FIRST_NAME'
11
11
  ❌ Invalid: 'first-name', 'first name', '123name', 'first.name'`);if(u.includes(e))throw Error(`[AttributeBuilder] "${e}" is a reserved name and cannot be used as an attribute name.\nReserved names: ${u.join(`, `)}`)}function validateLabel(e){if(!e||e.length===0)throw Error(`[AttributeBuilder] Attribute label cannot be empty`);if(e.length>_)throw Error(`[AttributeBuilder] Attribute label is too long (max ${_} characters)`)}function validateIconName(e,t){if(!ne.has(e))throw Error(`[AttributeBuilder] Invalid icon "${e}" in ${t}.\nIcon must be one of the predefined icons from @stndrds/constants.`)}function validateOptions(e,t){let n=new Set;for(let r of t){if(!r.value?.trim())throw Error(`[AttributeBuilder] Option in "${e}" has an empty or missing value.`);if(!r.label?.trim())throw Error(`[AttributeBuilder] Option "${r.value}" in "${e}" has an empty or missing label.`);if(n.has(r.value))throw Error(`[AttributeBuilder] Duplicate option value "${r.value}" in "${e}".`);n.add(r.value)}for(let n of t){if(n.inverse===void 0)continue;let r=t.find(e=>e.value===n.inverse);if(!r)throw Error(`[AttributeBuilder] Option "${n.value}" in "${e}" has inverse "${n.inverse}" which does not match any option value.`);if(r.inverse!==n.value)throw Error(`[AttributeBuilder] Inverse mismatch in "${e}": "${n.value}" points to "${n.inverse}", but "${n.inverse}" points to "${r.inverse??`(none)`}". Inverse pairs must be symmetric.`)}}var ComputedFormulaParseError=class extends Error{constructor(e){super(e),this.name=`ComputedFormulaParseError`}};function parseComputedFormula(e){let t=new Parser(tokenize(e)),n=t.parseExpression();return t.expectEnd(),n}function tokenize(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===` `||r===` `||r===`
12
12
  `||r===`\r`){n+=1;continue}if(r===`"`||r===`'`){let i=scanString(e,n,r);t.push({kind:`string`,value:i.value,position:n}),n=i.nextIndex;continue}if(isDigit(r)){let r=scanNumber(e,n);t.push({kind:`number`,value:r.value,position:n}),n=r.nextIndex;continue}if(isIdentifierStart(r)){let r=scanIdentifier(e,n),i=r.value.toLowerCase();i===`true`?t.push({kind:`boolean`,value:!0,position:n}):i===`false`?t.push({kind:`boolean`,value:!1,position:n}):i===`null`?t.push({kind:`null`,position:n}):t.push({kind:`identifier`,value:r.value,position:n}),n=r.nextIndex;continue}let i=e.slice(n,n+2);if(i===`>=`||i===`<=`||i===`==`||i===`!=`){t.push({kind:`operator`,value:i,position:n}),n+=2;continue}if(r===`>`||r===`<`||r===`+`||r===`-`||r===`*`||r===`/`){t.push({kind:`operator`,value:r,position:n}),n+=1;continue}if(r===`(`||r===`)`||r===`,`||r===`.`){t.push({kind:`punctuation`,value:r,position:n}),n+=1;continue}throw new ComputedFormulaParseError(`Unexpected character "${r}" at position ${n}`)}return t}function scanString(e,t,n=`"`){let r=``,i=t+1;for(;i<e.length;){let t=e[i];if(t===n)return{value:r,nextIndex:i+1};if(t===`\\`){let t=e[i+1];if(t===void 0)throw new ComputedFormulaParseError(`Unterminated string literal at position ${i}`);r+=decodeEscape(t,i),i+=2;continue}r+=t,i+=1}throw new ComputedFormulaParseError(`Unterminated string literal at position ${t}`)}function decodeEscape(e,t){switch(e){case`"`:case`\\`:return e;case`n`:return`
13
- `;case`r`:return`\r`;case`t`:return` `;default:throw new ComputedFormulaParseError(`Unknown escape sequence "\\${e}" at position ${t}`)}}function scanNumber(e,t){let n=t;for(;n<e.length&&isDigit(e[n]);)n+=1;if(e[n]===`.`){let t=n;if(n+=1,!isDigit(e[n]))throw new ComputedFormulaParseError(`Invalid number literal at position ${t}`);for(;n<e.length&&isDigit(e[n]);)n+=1}let r=e.slice(t,n),i=Number(r);if(!Number.isFinite(i))throw new ComputedFormulaParseError(`Invalid number literal "${r}"`);return{value:i,nextIndex:n}}function scanIdentifier(e,t){let n=t+1;for(;n<e.length&&isIdentifierPart(e[n]);)n+=1;return{value:e.slice(t,n),nextIndex:n}}function isDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}function isIdentifierStart(e){return e!==void 0&&/[A-Za-z_]/.test(e)}function isIdentifierPart(e){return e!==void 0&&/[A-Za-z0-9_]/.test(e)}var Parser=class{constructor(e){this.tokens=e,this.position=0}parseExpression(){return this.parseBinaryExpression(0)}expectEnd(){let e=this.peek();if(e!==void 0)throw new ComputedFormulaParseError(`Unexpected token ${describeToken(e)} at position ${e.position}`)}parseBinaryExpression(e){let t=this.parsePrimary();for(;;){let n=this.peek();if(n?.kind!==`operator`)return t;let r=getOperatorPrecedence(n.value);if(r<e)return t;let i=n.value;this.consume();let a=this.parseBinaryExpression(r+1);t={kind:`binary`,operator:i,left:t,right:a}}}parsePrimary(){let e=this.consume();if(e===void 0)throw new ComputedFormulaParseError(`Unexpected end of expression`);switch(e.kind){case`string`:case`number`:case`boolean`:return{kind:`literal`,value:e.value};case`null`:return{kind:`literal`,value:null};case`identifier`:return this.parseIdentifier(e.value);case`punctuation`:if(e.value===`(`){let e=this.parseExpression();return this.expectPunctuation(`)`),e}break;case`operator`:if(e.value===`-`){let e=this.consume();if(e?.kind===`number`)return{kind:`literal`,value:-e.value}}}throw new ComputedFormulaParseError(`Expected literal, path, call, or parenthesized expression at position ${e.position}`)}parseIdentifier(e){if(this.matchPunctuation(`(`)){let t=[];if(!this.matchPunctuation(`)`)){do t.push(this.parseExpression());while(this.matchPunctuation(`,`));this.expectPunctuation(`)`)}return{kind:`call`,functionName:e.toLowerCase(),args:t}}let t=[e];for(;this.matchPunctuation(`.`);){let e=this.consume();if(e?.kind!==`identifier`)throw new ComputedFormulaParseError(`Expected attribute name after path separator at position ${e?.position??this.previousPosition()}`);t.push(e.value)}return{kind:`path`,parts:t}}expectPunctuation(e){if(!this.matchPunctuation(e))throw new ComputedFormulaParseError(`Expected "${e}" at position ${this.peek()?.position??this.previousPosition()}`)}matchPunctuation(e){let t=this.peek();return t?.kind===`punctuation`&&t.value===e&&(this.consume(),!0)}peek(){return this.tokens[this.position]}consume(){let e=this.tokens[this.position];return this.position+=1,e}previousPosition(){return this.tokens[this.position-1]?.position??0}};function describeToken(e){switch(e.kind){case`identifier`:case`number`:case`string`:case`boolean`:case`operator`:case`punctuation`:return`"${String(e.value)}"`;case`null`:return`"null"`;default:return e}}function getOperatorPrecedence(e){switch(e){case`*`:case`/`:return 3;case`+`:case`-`:return 2;case`>`:case`<`:case`>=`:case`<=`:case`==`:case`!=`:return 1;default:return e}}const b=i.object({placeholder:i.string().optional(),description:i.string().optional(),defaultValue:i.unknown().optional(),icon:i.string().optional(),order:i.number().int().optional(),hidden:i.boolean().optional(),archived:i.boolean().optional(),deprecated:i.boolean().optional(),metadata:i.record(i.string(),i.unknown()).optional()}),x=[`placeholder`,`description`,`defaultValue`,`icon`,`order`,`hidden`,`archived`,`deprecated`,`metadata`];function refuseForeignKeys(e,t,n=[]){let r=new Set(n);return function refuse(n,i,a,o=[]){let s=e[n];if(s!==void 0&&i!==void 0)for(let e of Object.keys(i))s.has(e)||r.has(e)||a.addIssue({code:`custom`,path:[...o,e],message:`"${e}" is not a ${n} ${t}; keys of ${n}: ${[...s].join(`, `)}`})}}const S=i.object({value:i.string().min(1).describe(`Stored value`),label:i.string().min(1).describe(`Label people see`),description:i.string().describe(`Extra context`).optional(),inverse:i.string().describe(`Paired option's value (symmetric)`).optional(),archived:i.boolean().describe(`Hides without deleting`).optional()}),C=i.enum([`idle`,`in_progress`,`finished`]).describe(`Workflow stage`),w=S.extend({color:m}).strict(),T=w,E=S.extend({color:m,group:C}).strict(),D=S.extend({color:i.string().optional().describe(`A color id`),group:C.optional()}).strict(),O=i.array(D).min(1).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`});function writeOptionsArraySchema(e){return i.array(e).min(1).max(f.optionsPerAttribute).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`})}const k=writeOptionsArraySchema(w),A=writeOptionsArraySchema(T),j=writeOptionsArraySchema(E),ie=i.object({object:i.string().min(1).describe(`Target object`),displayTemplate:i.string().optional().describe(`Linked record label template`),filter:i.record(i.string(),i.unknown()).optional().describe(`Restricts linkable records`)}),ae=i.object({object:i.string().min(1).describe(`Other side's object`),attribute:i.string().min(1).describe(`Other side's attribute`),cardinality:i.enum([`one`,`many`]).optional().describe(`Other side's cardinality`),label:i.string().min(1).optional().describe(`Other side's label`),storageOwner:i.boolean().optional().describe(`Owns the join storage`)}),M=i.object({objectName:i.string().min(1).describe(`API name of the object whose options are mirrored`),attributeName:i.string().min(1).describe(`API name of the select/status attribute to mirror options from`),attributeId:i.string().optional().describe(`Id of the source attribute, resolved by the server`)}),N=b.extend({multiline:i.boolean().describe(`Renders as a multi-line textarea`).optional(),minLength:i.number().int().min(0).describe(`Minimum character count`).optional(),maxLength:i.number().int().min(1).describe(`Maximum character count`).optional(),pattern:i.string().describe(`Regular expression the value must match`).optional(),format:i.enum([`email`,`url`,`slug`]).describe(`Validates and renders as this format`).optional()}),oe=b,P=b.extend({renderAs:i.enum([`number`,`rating`]).describe(`Plain number or a star rating`).optional(),min:i.number().describe(`Minimum allowed value`).optional(),max:i.number().describe(`Maximum allowed value`).optional(),unit:i.enum([`integer`,`decimal`,`percentage`]).describe(`How the value is stored and rendered`).optional(),decimals:i.number().int().min(0).max(10).describe(`Decimal places shown`).optional()}),F=b,I=b.extend({dateFormat:i.enum([`short`,`long`,`full`,`relative`]).describe(`How the date is rendered`).optional(),minDate:i.string().describe(`Earliest allowed date (ISO)`).optional(),maxDate:i.string().describe(`Latest allowed date (ISO)`).optional(),includeTime:i.boolean().describe(`Also captures a time of day`).optional(),endDate:i.boolean().describe(`Paired with another date attribute as a range's end`).optional(),timeFormat:i.enum([`12h`,`24h`]).describe(`Clock format when a time is included`).optional()}),L=b.extend({defaultCountryCode:i.string().length(3).describe(`ISO country code preselected in the dialer`).optional()}),R=b.extend({defaultCurrency:i.string().length(3).describe(`ISO currency code preselected for new values`).optional(),allowedCurrencies:i.array(i.string().length(3)).describe(`ISO currency codes a value may use; any currency when omitted`).optional(),allowNegative:i.boolean().describe(`Whether a negative amount is accepted`).optional()}),z=b.extend({options:O.describe(`The workflow statuses, in order`)}),B=b.extend({granularity:i.enum([`full`,`address`,`city`,`state`,`country`,`coordinates`]).describe(`How precise a location must be captured`).optional(),defaultCountry:i.string().length(3).describe(`ISO country code preselected for new values`).optional(),allowedCountries:i.array(i.string().length(3)).describe(`ISO country codes a value may use; any country when omitted`).optional()}),V=b.extend({options:O.describe(`Options`),renderAs:i.literal(`badges`).optional().describe(`Renders the chosen option as a colored badge`)}),H=b.extend({options:O.describe(`Options`),renderAs:i.literal(`badges`).optional().describe(`Renders the chosen options as colored badges`)}),U=b.extend({types:i.array(i.enum([`user`,`agent`])).min(1).optional().describe(`Which kinds of actor can be picked; both when omitted`),multiple:i.boolean().optional().describe(`Whether more than one actor can be picked`)}),W={name:y.describe(`Property API name`),label:i.string().min(1).describe(`Label people see`),required:i.boolean().describe(`Required on every edge`).optional()},G={id:i.string().optional(),objectId:i.string().optional(),system:i.boolean().optional(),unique:i.boolean().optional()},K=Object.fromEntries(x.map(e=>[e,!0])),q=[`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`location`],J=[...q,`select`,`multiselect`,`status`],Y={text:N,number:P,checkbox:F,date:I,phone:L,currency:R,location:B,select:V,multiselect:H,status:z},se={...Y,select:V.extend({options:k.describe(`Options`)}),multiselect:H.extend({options:A.describe(`Options`)}),status:z.extend({options:j.describe(`Statuses`)})},propertyWireConfigShapeFor=e=>se[e].omit(K).shape,storedPropertyMember=e=>i.object({...W,...G,type:i.literal(e).describe(`Property type`),...Y[e].shape}).strip(),X=i.discriminatedUnion(`type`,J.map(storedPropertyMember)),Z=i.object({definitions:i.array(X).min(1).max(f.optionsPerAttribute).describe(`Edge properties`)}).strip().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),ce=refuseForeignKeys(Object.fromEntries(J.map(e=>[e,new Set(Object.keys(propertyWireConfigShapeFor(e)))])),`property key`,[...Object.keys(W),`type`]);function refuseForeignPropertyKeys(e,t){ce(e.type,e,t)}const le=q.reduce((e,t)=>(Object.assign(e,propertyWireConfigShapeFor(t)),e),{}),optionPropertyWireMember=e=>i.object({...W,type:e.length===1?i.literal(e[0]).describe(`Property type`):i.enum(e).describe(`Property type`),...propertyWireConfigShapeFor(e[0])}).strict(),Q=i.discriminatedUnion(`type`,[optionPropertyWireMember([`select`,`multiselect`]),optionPropertyWireMember([`status`]),i.object({...W,type:i.enum(q).describe(`Property type`),...le}).strict().superRefine(refuseForeignPropertyKeys)]),ue=i.object({definitions:i.array(Q).min(1).max(f.optionsPerAttribute).describe(`Edge properties`)}).strict().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),de=b.extend({targets:i.array(ie).min(1).describe(`Target object(s)`),cardinality:i.enum([`one`,`many`]).describe(`one or many`),maxItems:i.number().int().min(1).optional().describe(`Max linked records`),bilateral:ae.optional().describe(`Syncs the other side's attribute`),properties:Z.optional()}),fe=b.extend({expression:i.string().min(1).superRefine((e,t)=>{try{parseComputedFormula(e)}catch(e){t.addIssue({code:i.ZodIssueCode.custom,message:e instanceof Error?e.message:`Invalid formula expression`})}}).describe(`The formula expression, compiled against this object's attributes`),returnType:i.enum([`text`,`number`,`boolean`,`date`,`select`,`multiselect`]).describe(`The formula's result type`),decimals:i.number().int().min(0).max(10).optional().describe(`Decimal places shown for a number result`),allowRelations:i.boolean().optional().describe(`Whether the expression may read across a relation`),optionsSource:M.optional().describe(`Mirrors an option set`)}),pe=b.extend({relationAttribute:i.string().min(1).optional().describe(`API name of the relation this rollup aggregates through`),relationPath:i.string().optional().describe(`Not supported yet — single-hop only`),targetAttribute:i.string().min(1).optional().describe(`API name of the attribute aggregated on the relation's target object; not read by count`),function:i.enum([`sum`,`avg`,`earliest`,`latest`,`count`,`countValues`,`countUniqueValues`,`countEmpty`,`percentEmpty`,`percentNotEmpty`,`original`]).describe(`The aggregation applied across the linked records`),decimals:i.number().int().min(0).max(10).optional().describe(`Decimal places shown for a numeric result`),targetAttributeType:i.string().optional().describe(`Server-set`),targetAttributeOptions:i.array(D).optional().describe(`Server-set`),targetCurrencyCode:i.string().length(3).optional().describe(`Server-set`),optionsSource:M.optional().describe(`Mirrors an option set`)});function rollupTargetIssue(e,t){if(e===`rollup`&&t.function!==`count`&&t.targetAttribute===void 0)return{path:[`targetAttribute`],message:`targetAttribute is required for a "${String(t.function)}" rollup`}}const $={text:N,richtext:oe,number:P,checkbox:F,date:I,phone:L,currency:R,status:z,location:B,select:V,multiselect:H,user:U,relation:de,formula:fe,rollup:pe,document:b.extend({properties:Z.optional(),accepts:i.array(i.string().min(1)).optional().describe("MIME prefixes or globs a file must match (e.g. `image/*`, `*.pdf`)"),maxFileSize:i.number().int().min(1).optional().describe(`Maximum file size in bytes`)})};function getAttributeConfigSchema(e){let t=$[e];if(!t)throw new n(`Unsupported attribute type: ${e}`,[]);return t}function parseAttributeConfig(e,t){let n=getAttributeConfigSchema(e).strip().parse(t),r=rollupTargetIssue(e,n);if(r)throw validationErrorFromIssues([r]);return n}function getAttributeConfigWriteSchema(e){let t=getAttributeConfigSchema(e).extend({icon:h.optional()});switch(e){case`select`:return t.extend({options:k.describe(`Options`)});case`multiselect`:return t.extend({options:A.describe(`Options`)});case`status`:return t.extend({options:j.describe(`Statuses`)});default:return t}}function validationErrorFromIssues(e){return n.fromZodErrors(e.map(e=>({path:e.path.map(e=>typeof e==`symbol`?String(e):e),message:e.message})))}function parseWriteSchema(e,t){let n=getAttributeConfigWriteSchema(e).strip().safeParse(t);if(!n.success)throw validationErrorFromIssues(n.error.issues);let r=rollupTargetIssue(e,n.data);if(r)throw validationErrorFromIssues([r]);return n.data}function parseAttributeConfigForCreate(e,t){return parseWriteSchema(e,t)}function validatePatchedIcon(e){if(!Object.prototype.hasOwnProperty.call(e,`icon`))return;let t=h.optional().safeParse(e.icon);if(!t.success)throw n.fromZodErrors(t.error.issues.map(e=>({path:[`icon`,...e.path.map(e=>typeof e==`symbol`?String(e):e)],message:e.message})))}function isSelectLike(e){return e===`select`||e===`multiselect`||e===`status`}function parseAttributeConfigForUpdate(e,t){let n=Object.prototype.hasOwnProperty.call(t,`options`),r=Object.prototype.hasOwnProperty.call(t,`icon`),i={...e,...t};if(validatePatchedIcon(t),n){let{icon:t,...n}=i,a=parseWriteSchema(e.type,r?i:n);return!r&&t!==void 0&&(a.icon=t),a}let a=e.options;isSelectLike(e.type)&&(i.options=[{value:`__legacy__`,label:`__legacy__`}]);let o=getAttributeConfigSchema(e.type).strip().safeParse(i);if(!o.success)throw validationErrorFromIssues(o.error.issues);let s=o.data;return isSelectLike(e.type)&&(s.options=a),s}export{h as A,validateAttributeName as C,validateOptions as D,validateObjectName as E,c as F,l as I,parseResourceVisibility as L,ee as M,u as N,validateViewName as O,d as P,s as R,assertUniqueBy as S,validateLabel as T,E as _,getAttributeConfigWriteSchema as a,y as b,parseAttributeConfigForCreate as c,Q as d,Z as f,C as g,w as h,getAttributeConfigSchema as i,f as j,m as k,parseAttributeConfigForUpdate as l,refuseForeignKeys as m,x as n,T as o,ue as p,$ as r,parseAttributeConfig as s,q as t,X as u,ComputedFormulaParseError as v,validateIconName as w,v as x,parseComputedFormula as y,isNativeObjectName as z};
13
+ `;case`r`:return`\r`;case`t`:return` `;default:throw new ComputedFormulaParseError(`Unknown escape sequence "\\${e}" at position ${t}`)}}function scanNumber(e,t){let n=t;for(;n<e.length&&isDigit(e[n]);)n+=1;if(e[n]===`.`){let t=n;if(n+=1,!isDigit(e[n]))throw new ComputedFormulaParseError(`Invalid number literal at position ${t}`);for(;n<e.length&&isDigit(e[n]);)n+=1}let r=e.slice(t,n),i=Number(r);if(!Number.isFinite(i))throw new ComputedFormulaParseError(`Invalid number literal "${r}"`);return{value:i,nextIndex:n}}function scanIdentifier(e,t){let n=t+1;for(;n<e.length&&isIdentifierPart(e[n]);)n+=1;return{value:e.slice(t,n),nextIndex:n}}function isDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}function isIdentifierStart(e){return e!==void 0&&/[A-Za-z_]/.test(e)}function isIdentifierPart(e){return e!==void 0&&/[A-Za-z0-9_]/.test(e)}var Parser=class{constructor(e){this.tokens=e,this.position=0}parseExpression(){return this.parseBinaryExpression(0)}expectEnd(){let e=this.peek();if(e!==void 0)throw new ComputedFormulaParseError(`Unexpected token ${describeToken(e)} at position ${e.position}`)}parseBinaryExpression(e){let t=this.parsePrimary();for(;;){let n=this.peek();if(n?.kind!==`operator`)return t;let r=getOperatorPrecedence(n.value);if(r<e)return t;let i=n.value;this.consume();let a=this.parseBinaryExpression(r+1);t={kind:`binary`,operator:i,left:t,right:a}}}parsePrimary(){let e=this.consume();if(e===void 0)throw new ComputedFormulaParseError(`Unexpected end of expression`);switch(e.kind){case`string`:case`number`:case`boolean`:return{kind:`literal`,value:e.value};case`null`:return{kind:`literal`,value:null};case`identifier`:return this.parseIdentifier(e.value);case`punctuation`:if(e.value===`(`){let e=this.parseExpression();return this.expectPunctuation(`)`),e}break;case`operator`:if(e.value===`-`){let e=this.consume();if(e?.kind===`number`)return{kind:`literal`,value:-e.value}}}throw new ComputedFormulaParseError(`Expected literal, path, call, or parenthesized expression at position ${e.position}`)}parseIdentifier(e){if(this.matchPunctuation(`(`)){let t=[];if(!this.matchPunctuation(`)`)){do t.push(this.parseExpression());while(this.matchPunctuation(`,`));this.expectPunctuation(`)`)}return{kind:`call`,functionName:e.toLowerCase(),args:t}}let t=[e];for(;this.matchPunctuation(`.`);){let e=this.consume();if(e?.kind!==`identifier`)throw new ComputedFormulaParseError(`Expected attribute name after path separator at position ${e?.position??this.previousPosition()}`);t.push(e.value)}return{kind:`path`,parts:t}}expectPunctuation(e){if(!this.matchPunctuation(e))throw new ComputedFormulaParseError(`Expected "${e}" at position ${this.peek()?.position??this.previousPosition()}`)}matchPunctuation(e){let t=this.peek();return t?.kind===`punctuation`&&t.value===e&&(this.consume(),!0)}peek(){return this.tokens[this.position]}consume(){let e=this.tokens[this.position];return this.position+=1,e}previousPosition(){return this.tokens[this.position-1]?.position??0}};function describeToken(e){switch(e.kind){case`identifier`:case`number`:case`string`:case`boolean`:case`operator`:case`punctuation`:return`"${String(e.value)}"`;case`null`:return`"null"`;default:return e}}function getOperatorPrecedence(e){switch(e){case`*`:case`/`:return 3;case`+`:case`-`:return 2;case`>`:case`<`:case`>=`:case`<=`:case`==`:case`!=`:return 1;default:return e}}const b=i.object({placeholder:i.string().optional(),description:i.string().optional(),defaultValue:i.unknown().optional(),icon:i.string().optional(),order:i.number().int().optional(),hidden:i.boolean().optional(),archived:i.boolean().optional(),deprecated:i.boolean().optional(),metadata:i.record(i.string(),i.unknown()).optional()}),x=[`placeholder`,`description`,`defaultValue`,`icon`,`order`,`hidden`,`archived`,`deprecated`,`metadata`];function refuseForeignKeys(e,t,n=[]){let r=new Set(n);return function refuse(n,i,a,o=[]){let s=e[n];if(s!==void 0&&i!==void 0)for(let e of Object.keys(i))s.has(e)||r.has(e)||a.addIssue({code:`custom`,path:[...o,e],message:`"${e}" is not a ${n} ${t}; keys of ${n}: ${[...s].join(`, `)}`})}}const S=i.object({value:i.string().min(1).describe(`Stored value`),label:i.string().min(1).describe(`Label people see`),description:i.string().describe(`Extra context`).optional(),inverse:i.string().describe(`Paired option's value (symmetric)`).optional(),archived:i.boolean().describe(`Hides without deleting`).optional()}),C=i.enum([`idle`,`in_progress`,`finished`]).describe(`Workflow stage`),w=S.extend({color:m}).strict(),T=w,E=S.extend({color:m,group:C}).strict(),D=S.extend({color:i.string().optional().describe(`A color id`),group:C.optional()}).strict(),O=i.array(D).min(1).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`});function writeOptionsArraySchema(e){return i.array(e).min(1).max(f.optionsPerAttribute).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`})}const k=writeOptionsArraySchema(w),A=writeOptionsArraySchema(T),j=writeOptionsArraySchema(E),ie=i.object({object:i.string().min(1).describe(`Target object`),displayTemplate:i.string().optional().describe(`Linked record label template`),filter:i.record(i.string(),i.unknown()).optional().describe(`Restricts linkable records`)}),ae=i.object({object:i.string().min(1).describe(`Other side's object`),attribute:i.string().min(1).describe(`Other side's attribute`),cardinality:i.enum([`one`,`many`]).optional().describe(`Other side's cardinality`),label:i.string().min(1).optional().describe(`Other side's label`),storageOwner:i.boolean().optional().describe(`Owns the join storage`)}),M=i.object({objectName:i.string().min(1).describe(`API name of the object whose options are mirrored`),attributeName:i.string().min(1).describe(`API name of the select/status attribute to mirror options from`),attributeId:i.string().optional().describe(`Id of the source attribute, resolved by the server`)}),N=b.extend({multiline:i.boolean().describe(`Renders as a multi-line textarea`).optional(),minLength:i.number().int().min(0).describe(`Minimum character count`).optional(),maxLength:i.number().int().min(1).describe(`Maximum character count`).optional(),pattern:i.string().describe(`Regular expression the value must match`).optional(),format:i.enum([`email`,`url`,`slug`]).describe(`Validates and renders as this format`).optional()}),oe=b,P=b.extend({renderAs:i.enum([`number`,`rating`]).describe(`Plain number or a star rating`).optional(),min:i.number().describe(`Minimum allowed value`).optional(),max:i.number().describe(`Maximum allowed value`).optional(),unit:i.enum([`integer`,`decimal`,`percentage`]).describe(`How the value is stored and rendered`).optional(),decimals:i.number().int().min(0).max(10).describe(`Decimal places shown`).optional()}),F=b,I=b.extend({dateFormat:i.enum([`short`,`long`,`full`,`relative`]).describe(`How the date is rendered`).optional(),minDate:i.string().describe(`Earliest allowed date (ISO)`).optional(),maxDate:i.string().describe(`Latest allowed date (ISO)`).optional(),includeTime:i.boolean().describe(`Also captures a time of day`).optional(),endDate:i.boolean().describe(`Paired with another date attribute as a range's end`).optional(),timeFormat:i.enum([`12h`,`24h`]).describe(`Clock format when a time is included`).optional()}),L=b.extend({defaultCountryCode:i.string().length(3).describe(`ISO country code preselected in the dialer`).optional()}),R=b.extend({defaultCurrency:i.string().length(3).describe(`ISO currency code preselected for new values`).optional(),allowedCurrencies:i.array(i.string().length(3)).describe(`ISO currency codes a value may use; any currency when omitted`).optional(),allowNegative:i.boolean().describe(`Whether a negative amount is accepted`).optional()}),z=b.extend({options:O.describe(`The workflow statuses, in order`)}),B=b.extend({granularity:i.enum([`full`,`address`,`city`,`state`,`country`,`coordinates`]).describe(`How precise a location must be captured`).optional(),defaultCountry:i.string().length(3).describe(`ISO country code preselected for new values`).optional(),allowedCountries:i.array(i.string().length(3)).describe(`ISO country codes a value may use; any country when omitted`).optional()}),V=b.extend({options:O.describe(`Options`),renderAs:i.literal(`badges`).optional().describe(`Renders the chosen option as a colored badge`)}),H=b.extend({options:O.describe(`Options`),renderAs:i.literal(`badges`).optional().describe(`Renders the chosen options as colored badges`)}),U=b.extend({types:i.array(i.enum([`user`,`agent`])).min(1).optional().describe(`Which kinds of actor can be picked; both when omitted`),multiple:i.boolean().optional().describe(`Whether more than one actor can be picked`)}),W={name:y.describe(`Property API name`),label:i.string().min(1).describe(`Label people see`),required:i.boolean().describe(`Required on every edge`).optional()},G={id:i.string().optional(),objectId:i.string().optional(),system:i.boolean().optional(),unique:i.boolean().optional()},K=Object.fromEntries(x.map(e=>[e,!0])),q=[`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`location`],J=[...q,`select`,`multiselect`,`status`],Y={text:N,number:P,checkbox:F,date:I,phone:L,currency:R,location:B,select:V,multiselect:H,status:z},se={...Y,select:V.extend({options:k.describe(`Options`)}),multiselect:H.extend({options:A.describe(`Options`)}),status:z.extend({options:j.describe(`Statuses`)})},propertyWireConfigShapeFor=e=>se[e].omit(K).shape,storedPropertyMember=e=>i.object({...W,...G,type:i.literal(e).describe(`Property type`),...Y[e].shape}).strip(),X=i.discriminatedUnion(`type`,J.map(storedPropertyMember)),Z=i.object({definitions:i.array(X).min(1).max(f.optionsPerAttribute).describe(`Edge properties`)}).strip().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),ce=refuseForeignKeys(Object.fromEntries(J.map(e=>[e,new Set(Object.keys(propertyWireConfigShapeFor(e)))])),`property key`,[...Object.keys(W),`type`]);function refuseForeignPropertyKeys(e,t){ce(e.type,e,t)}const le=q.reduce((e,t)=>(Object.assign(e,propertyWireConfigShapeFor(t)),e),{}),optionPropertyWireMember=e=>i.object({...W,type:e.length===1?i.literal(e[0]).describe(`Property type`):i.enum(e).describe(`Property type`),...propertyWireConfigShapeFor(e[0])}).strict(),Q=i.discriminatedUnion(`type`,[optionPropertyWireMember([`select`,`multiselect`]),optionPropertyWireMember([`status`]),i.object({...W,type:i.enum(q).describe(`Property type`),...le}).strict().superRefine(refuseForeignPropertyKeys)]),ue=i.object({definitions:i.array(Q).min(1).max(f.optionsPerAttribute).describe(`Edge properties`)}).strict().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),de=b.extend({targets:i.array(ie).min(1).describe(`Target object(s)`),cardinality:i.enum([`one`,`many`]).describe(`one or many`),maxItems:i.number().int().min(1).optional().describe(`Max linked records`),bilateral:ae.optional().describe(`Syncs the other side's attribute`),properties:Z.optional()}),fe=b.extend({expression:i.string().min(1).superRefine((e,t)=>{try{parseComputedFormula(e)}catch(e){t.addIssue({code:i.ZodIssueCode.custom,message:e instanceof Error?e.message:`Invalid formula expression`})}}).describe(`The formula expression, compiled against this object's attributes`),returnType:i.enum([`text`,`number`,`boolean`,`date`,`select`,`multiselect`]).describe(`The formula's result type`),decimals:i.number().int().min(0).max(10).optional().describe(`Decimal places shown for a number result`),currencyCode:i.string().length(3).optional().describe(`ISO 4217 code a number result renders with; presentation only`),allowRelations:i.boolean().optional().describe(`Whether the expression may read across a relation`),optionsSource:M.optional().describe(`Mirrors an option set`)}),pe=b.extend({relationAttribute:i.string().min(1).optional().describe(`API name of the relation this rollup aggregates through`),relationPath:i.string().optional().describe(`Not supported yet — single-hop only`),targetAttribute:i.string().min(1).optional().describe(`API name of the attribute aggregated on the relation's target object; not read by count`),function:i.enum([`sum`,`avg`,`earliest`,`latest`,`count`,`countValues`,`countUniqueValues`,`countEmpty`,`percentEmpty`,`percentNotEmpty`,`original`]).describe(`The aggregation applied across the linked records`),decimals:i.number().int().min(0).max(10).optional().describe(`Decimal places shown for a numeric result`),targetAttributeType:i.string().optional().describe(`Server-set`),targetAttributeOptions:i.array(D).optional().describe(`Server-set`),targetCurrencyCode:i.string().length(3).optional().describe(`Server-set`),optionsSource:M.optional().describe(`Mirrors an option set`)});function rollupTargetIssue(e,t){if(e===`rollup`&&t.function!==`count`&&t.targetAttribute===void 0)return{path:[`targetAttribute`],message:`targetAttribute is required for a "${String(t.function)}" rollup`}}const $={text:N,richtext:oe,number:P,checkbox:F,date:I,phone:L,currency:R,status:z,location:B,select:V,multiselect:H,user:U,relation:de,formula:fe,rollup:pe,document:b.extend({properties:Z.optional(),accepts:i.array(i.string().min(1)).optional().describe("MIME prefixes or globs a file must match (e.g. `image/*`, `*.pdf`)"),maxFileSize:i.number().int().min(1).optional().describe(`Maximum file size in bytes`)})};function getAttributeConfigSchema(e){let t=$[e];if(!t)throw new n(`Unsupported attribute type: ${e}`,[]);return t}function parseAttributeConfig(e,t){let n=getAttributeConfigSchema(e).strip().parse(t),r=rollupTargetIssue(e,n);if(r)throw validationErrorFromIssues([r]);return n}function getAttributeConfigWriteSchema(e){let t=getAttributeConfigSchema(e).extend({icon:h.optional()});switch(e){case`select`:return t.extend({options:k.describe(`Options`)});case`multiselect`:return t.extend({options:A.describe(`Options`)});case`status`:return t.extend({options:j.describe(`Statuses`)});default:return t}}function validationErrorFromIssues(e){return n.fromZodErrors(e.map(e=>({path:e.path.map(e=>typeof e==`symbol`?String(e):e),message:e.message})))}function parseWriteSchema(e,t){let n=getAttributeConfigWriteSchema(e).strip().safeParse(t);if(!n.success)throw validationErrorFromIssues(n.error.issues);let r=rollupTargetIssue(e,n.data);if(r)throw validationErrorFromIssues([r]);return n.data}function parseAttributeConfigForCreate(e,t){return parseWriteSchema(e,t)}function validatePatchedIcon(e){if(!Object.prototype.hasOwnProperty.call(e,`icon`))return;let t=h.optional().safeParse(e.icon);if(!t.success)throw n.fromZodErrors(t.error.issues.map(e=>({path:[`icon`,...e.path.map(e=>typeof e==`symbol`?String(e):e)],message:e.message})))}function isSelectLike(e){return e===`select`||e===`multiselect`||e===`status`}function parseAttributeConfigForUpdate(e,t){let n=Object.prototype.hasOwnProperty.call(t,`options`),r=Object.prototype.hasOwnProperty.call(t,`icon`),i={...e,...t};if(validatePatchedIcon(t),n){let{icon:t,...n}=i,a=parseWriteSchema(e.type,r?i:n);return!r&&t!==void 0&&(a.icon=t),a}let a=e.options;isSelectLike(e.type)&&(i.options=[{value:`__legacy__`,label:`__legacy__`}]);let o=getAttributeConfigSchema(e.type).strip().safeParse(i);if(!o.success)throw validationErrorFromIssues(o.error.issues);let s=o.data;return isSelectLike(e.type)&&(s.options=a),s}export{h as A,validateAttributeName as C,validateOptions as D,validateObjectName as E,c as F,l as I,parseResourceVisibility as L,ee as M,u as N,validateViewName as O,d as P,s as R,assertUniqueBy as S,validateLabel as T,E as _,getAttributeConfigWriteSchema as a,y as b,parseAttributeConfigForCreate as c,Q as d,Z as f,C as g,w as h,getAttributeConfigSchema as i,f as j,m as k,parseAttributeConfigForUpdate as l,refuseForeignKeys as m,x as n,T as o,ue as p,$ as r,parseAttributeConfig as s,q as t,X as u,ComputedFormulaParseError as v,validateIconName as w,v as x,parseComputedFormula as y,isNativeObjectName as z};
@@ -10,4 +10,4 @@ Name must be a valid variable identifier:
10
10
  ✅ Valid: 'firstName', 'first_name', 'FirstName', 'FIRST_NAME'
11
11
  ❌ Invalid: 'first-name', 'first name', '123name', 'first.name'`);if(p.includes(e))throw Error(`[AttributeBuilder] "${e}" is a reserved name and cannot be used as an attribute name.\nReserved names: ${p.join(`, `)}`)}function validateLabel(e){if(!e||e.length===0)throw Error(`[AttributeBuilder] Attribute label cannot be empty`);if(e.length>y)throw Error(`[AttributeBuilder] Attribute label is too long (max ${y} characters)`)}function validateIconName(e,t){if(!ne.has(e))throw Error(`[AttributeBuilder] Invalid icon "${e}" in ${t}.\nIcon must be one of the predefined icons from @stndrds/constants.`)}function validateOptions(e,t){let n=new Set;for(let r of t){if(!r.value?.trim())throw Error(`[AttributeBuilder] Option in "${e}" has an empty or missing value.`);if(!r.label?.trim())throw Error(`[AttributeBuilder] Option "${r.value}" in "${e}" has an empty or missing label.`);if(n.has(r.value))throw Error(`[AttributeBuilder] Duplicate option value "${r.value}" in "${e}".`);n.add(r.value)}for(let n of t){if(n.inverse===void 0)continue;let r=t.find(e=>e.value===n.inverse);if(!r)throw Error(`[AttributeBuilder] Option "${n.value}" in "${e}" has inverse "${n.inverse}" which does not match any option value.`);if(r.inverse!==n.value)throw Error(`[AttributeBuilder] Inverse mismatch in "${e}": "${n.value}" points to "${n.inverse}", but "${n.inverse}" points to "${r.inverse??`(none)`}". Inverse pairs must be symmetric.`)}}var ComputedFormulaParseError=class extends Error{constructor(e){super(e),this.name=`ComputedFormulaParseError`}};function parseComputedFormula(e){let t=new Parser(tokenize(e)),n=t.parseExpression();return t.expectEnd(),n}function tokenize(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===` `||r===` `||r===`
12
12
  `||r===`\r`){n+=1;continue}if(r===`"`||r===`'`){let i=scanString(e,n,r);t.push({kind:`string`,value:i.value,position:n}),n=i.nextIndex;continue}if(isDigit(r)){let r=scanNumber(e,n);t.push({kind:`number`,value:r.value,position:n}),n=r.nextIndex;continue}if(isIdentifierStart(r)){let r=scanIdentifier(e,n),i=r.value.toLowerCase();i===`true`?t.push({kind:`boolean`,value:!0,position:n}):i===`false`?t.push({kind:`boolean`,value:!1,position:n}):i===`null`?t.push({kind:`null`,position:n}):t.push({kind:`identifier`,value:r.value,position:n}),n=r.nextIndex;continue}let i=e.slice(n,n+2);if(i===`>=`||i===`<=`||i===`==`||i===`!=`){t.push({kind:`operator`,value:i,position:n}),n+=2;continue}if(r===`>`||r===`<`||r===`+`||r===`-`||r===`*`||r===`/`){t.push({kind:`operator`,value:r,position:n}),n+=1;continue}if(r===`(`||r===`)`||r===`,`||r===`.`){t.push({kind:`punctuation`,value:r,position:n}),n+=1;continue}throw new ComputedFormulaParseError(`Unexpected character "${r}" at position ${n}`)}return t}function scanString(e,t,n=`"`){let r=``,i=t+1;for(;i<e.length;){let t=e[i];if(t===n)return{value:r,nextIndex:i+1};if(t===`\\`){let t=e[i+1];if(t===void 0)throw new ComputedFormulaParseError(`Unterminated string literal at position ${i}`);r+=decodeEscape(t,i),i+=2;continue}r+=t,i+=1}throw new ComputedFormulaParseError(`Unterminated string literal at position ${t}`)}function decodeEscape(e,t){switch(e){case`"`:case`\\`:return e;case`n`:return`
13
- `;case`r`:return`\r`;case`t`:return` `;default:throw new ComputedFormulaParseError(`Unknown escape sequence "\\${e}" at position ${t}`)}}function scanNumber(e,t){let n=t;for(;n<e.length&&isDigit(e[n]);)n+=1;if(e[n]===`.`){let t=n;if(n+=1,!isDigit(e[n]))throw new ComputedFormulaParseError(`Invalid number literal at position ${t}`);for(;n<e.length&&isDigit(e[n]);)n+=1}let r=e.slice(t,n),i=Number(r);if(!Number.isFinite(i))throw new ComputedFormulaParseError(`Invalid number literal "${r}"`);return{value:i,nextIndex:n}}function scanIdentifier(e,t){let n=t+1;for(;n<e.length&&isIdentifierPart(e[n]);)n+=1;return{value:e.slice(t,n),nextIndex:n}}function isDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}function isIdentifierStart(e){return e!==void 0&&/[A-Za-z_]/.test(e)}function isIdentifierPart(e){return e!==void 0&&/[A-Za-z0-9_]/.test(e)}var Parser=class{constructor(e){this.tokens=e,this.position=0}parseExpression(){return this.parseBinaryExpression(0)}expectEnd(){let e=this.peek();if(e!==void 0)throw new ComputedFormulaParseError(`Unexpected token ${describeToken(e)} at position ${e.position}`)}parseBinaryExpression(e){let t=this.parsePrimary();for(;;){let n=this.peek();if(n?.kind!==`operator`)return t;let r=getOperatorPrecedence(n.value);if(r<e)return t;let i=n.value;this.consume();let a=this.parseBinaryExpression(r+1);t={kind:`binary`,operator:i,left:t,right:a}}}parsePrimary(){let e=this.consume();if(e===void 0)throw new ComputedFormulaParseError(`Unexpected end of expression`);switch(e.kind){case`string`:case`number`:case`boolean`:return{kind:`literal`,value:e.value};case`null`:return{kind:`literal`,value:null};case`identifier`:return this.parseIdentifier(e.value);case`punctuation`:if(e.value===`(`){let e=this.parseExpression();return this.expectPunctuation(`)`),e}break;case`operator`:if(e.value===`-`){let e=this.consume();if(e?.kind===`number`)return{kind:`literal`,value:-e.value}}}throw new ComputedFormulaParseError(`Expected literal, path, call, or parenthesized expression at position ${e.position}`)}parseIdentifier(e){if(this.matchPunctuation(`(`)){let t=[];if(!this.matchPunctuation(`)`)){do t.push(this.parseExpression());while(this.matchPunctuation(`,`));this.expectPunctuation(`)`)}return{kind:`call`,functionName:e.toLowerCase(),args:t}}let t=[e];for(;this.matchPunctuation(`.`);){let e=this.consume();if(e?.kind!==`identifier`)throw new ComputedFormulaParseError(`Expected attribute name after path separator at position ${e?.position??this.previousPosition()}`);t.push(e.value)}return{kind:`path`,parts:t}}expectPunctuation(e){if(!this.matchPunctuation(e))throw new ComputedFormulaParseError(`Expected "${e}" at position ${this.peek()?.position??this.previousPosition()}`)}matchPunctuation(e){let t=this.peek();return t?.kind===`punctuation`&&t.value===e&&(this.consume(),!0)}peek(){return this.tokens[this.position]}consume(){let e=this.tokens[this.position];return this.position+=1,e}previousPosition(){return this.tokens[this.position-1]?.position??0}};function describeToken(e){switch(e.kind){case`identifier`:case`number`:case`string`:case`boolean`:case`operator`:case`punctuation`:return`"${String(e.value)}"`;case`null`:return`"null"`;default:return e}}function getOperatorPrecedence(e){switch(e){case`*`:case`/`:return 3;case`+`:case`-`:return 2;case`>`:case`<`:case`>=`:case`<=`:case`==`:case`!=`:return 1;default:return e}}const S=s.z.object({placeholder:s.z.string().optional(),description:s.z.string().optional(),defaultValue:s.z.unknown().optional(),icon:s.z.string().optional(),order:s.z.number().int().optional(),hidden:s.z.boolean().optional(),archived:s.z.boolean().optional(),deprecated:s.z.boolean().optional(),metadata:s.z.record(s.z.string(),s.z.unknown()).optional()}),C=[`placeholder`,`description`,`defaultValue`,`icon`,`order`,`hidden`,`archived`,`deprecated`,`metadata`];function refuseForeignKeys(e,t,n=[]){let r=new Set(n);return function refuse(n,i,a,o=[]){let s=e[n];if(s!==void 0&&i!==void 0)for(let e of Object.keys(i))s.has(e)||r.has(e)||a.addIssue({code:`custom`,path:[...o,e],message:`"${e}" is not a ${n} ${t}; keys of ${n}: ${[...s].join(`, `)}`})}}const w=s.z.object({value:s.z.string().min(1).describe(`Stored value`),label:s.z.string().min(1).describe(`Label people see`),description:s.z.string().describe(`Extra context`).optional(),inverse:s.z.string().describe(`Paired option's value (symmetric)`).optional(),archived:s.z.boolean().describe(`Hides without deleting`).optional()}),T=s.z.enum([`idle`,`in_progress`,`finished`]).describe(`Workflow stage`),E=w.extend({color:g}).strict(),D=E,O=w.extend({color:g,group:T}).strict(),k=w.extend({color:s.z.string().optional().describe(`A color id`),group:T.optional()}).strict(),A=s.z.array(k).min(1).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`});function writeOptionsArraySchema(e){return s.z.array(e).min(1).max(h.optionsPerAttribute).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`})}const j=writeOptionsArraySchema(E),M=writeOptionsArraySchema(D),N=writeOptionsArraySchema(O),ie=s.z.object({object:s.z.string().min(1).describe(`Target object`),displayTemplate:s.z.string().optional().describe(`Linked record label template`),filter:s.z.record(s.z.string(),s.z.unknown()).optional().describe(`Restricts linkable records`)}),ae=s.z.object({object:s.z.string().min(1).describe(`Other side's object`),attribute:s.z.string().min(1).describe(`Other side's attribute`),cardinality:s.z.enum([`one`,`many`]).optional().describe(`Other side's cardinality`),label:s.z.string().min(1).optional().describe(`Other side's label`),storageOwner:s.z.boolean().optional().describe(`Owns the join storage`)}),P=s.z.object({objectName:s.z.string().min(1).describe(`API name of the object whose options are mirrored`),attributeName:s.z.string().min(1).describe(`API name of the select/status attribute to mirror options from`),attributeId:s.z.string().optional().describe(`Id of the source attribute, resolved by the server`)}),F=S.extend({multiline:s.z.boolean().describe(`Renders as a multi-line textarea`).optional(),minLength:s.z.number().int().min(0).describe(`Minimum character count`).optional(),maxLength:s.z.number().int().min(1).describe(`Maximum character count`).optional(),pattern:s.z.string().describe(`Regular expression the value must match`).optional(),format:s.z.enum([`email`,`url`,`slug`]).describe(`Validates and renders as this format`).optional()}),oe=S,I=S.extend({renderAs:s.z.enum([`number`,`rating`]).describe(`Plain number or a star rating`).optional(),min:s.z.number().describe(`Minimum allowed value`).optional(),max:s.z.number().describe(`Maximum allowed value`).optional(),unit:s.z.enum([`integer`,`decimal`,`percentage`]).describe(`How the value is stored and rendered`).optional(),decimals:s.z.number().int().min(0).max(10).describe(`Decimal places shown`).optional()}),L=S,R=S.extend({dateFormat:s.z.enum([`short`,`long`,`full`,`relative`]).describe(`How the date is rendered`).optional(),minDate:s.z.string().describe(`Earliest allowed date (ISO)`).optional(),maxDate:s.z.string().describe(`Latest allowed date (ISO)`).optional(),includeTime:s.z.boolean().describe(`Also captures a time of day`).optional(),endDate:s.z.boolean().describe(`Paired with another date attribute as a range's end`).optional(),timeFormat:s.z.enum([`12h`,`24h`]).describe(`Clock format when a time is included`).optional()}),z=S.extend({defaultCountryCode:s.z.string().length(3).describe(`ISO country code preselected in the dialer`).optional()}),B=S.extend({defaultCurrency:s.z.string().length(3).describe(`ISO currency code preselected for new values`).optional(),allowedCurrencies:s.z.array(s.z.string().length(3)).describe(`ISO currency codes a value may use; any currency when omitted`).optional(),allowNegative:s.z.boolean().describe(`Whether a negative amount is accepted`).optional()}),V=S.extend({options:A.describe(`The workflow statuses, in order`)}),H=S.extend({granularity:s.z.enum([`full`,`address`,`city`,`state`,`country`,`coordinates`]).describe(`How precise a location must be captured`).optional(),defaultCountry:s.z.string().length(3).describe(`ISO country code preselected for new values`).optional(),allowedCountries:s.z.array(s.z.string().length(3)).describe(`ISO country codes a value may use; any country when omitted`).optional()}),U=S.extend({options:A.describe(`Options`),renderAs:s.z.literal(`badges`).optional().describe(`Renders the chosen option as a colored badge`)}),W=S.extend({options:A.describe(`Options`),renderAs:s.z.literal(`badges`).optional().describe(`Renders the chosen options as colored badges`)}),se=S.extend({types:s.z.array(s.z.enum([`user`,`agent`])).min(1).optional().describe(`Which kinds of actor can be picked; both when omitted`),multiple:s.z.boolean().optional().describe(`Whether more than one actor can be picked`)}),G={name:x.describe(`Property API name`),label:s.z.string().min(1).describe(`Label people see`),required:s.z.boolean().describe(`Required on every edge`).optional()},ce={id:s.z.string().optional(),objectId:s.z.string().optional(),system:s.z.boolean().optional(),unique:s.z.boolean().optional()},le=Object.fromEntries(C.map(e=>[e,!0])),K=[`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`location`],q=[...K,`select`,`multiselect`,`status`],J={text:F,number:I,checkbox:L,date:R,phone:z,currency:B,location:H,select:U,multiselect:W,status:V},ue={...J,select:U.extend({options:j.describe(`Options`)}),multiselect:W.extend({options:M.describe(`Options`)}),status:V.extend({options:N.describe(`Statuses`)})},propertyWireConfigShapeFor=e=>ue[e].omit(le).shape,storedPropertyMember=e=>s.z.object({...G,...ce,type:s.z.literal(e).describe(`Property type`),...J[e].shape}).strip(),Y=s.z.discriminatedUnion(`type`,q.map(storedPropertyMember)),X=s.z.object({definitions:s.z.array(Y).min(1).max(h.optionsPerAttribute).describe(`Edge properties`)}).strip().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),de=refuseForeignKeys(Object.fromEntries(q.map(e=>[e,new Set(Object.keys(propertyWireConfigShapeFor(e)))])),`property key`,[...Object.keys(G),`type`]);function refuseForeignPropertyKeys(e,t){de(e.type,e,t)}const Z=K.reduce((e,t)=>(Object.assign(e,propertyWireConfigShapeFor(t)),e),{}),optionPropertyWireMember=e=>s.z.object({...G,type:e.length===1?s.z.literal(e[0]).describe(`Property type`):s.z.enum(e).describe(`Property type`),...propertyWireConfigShapeFor(e[0])}).strict(),Q=s.z.discriminatedUnion(`type`,[optionPropertyWireMember([`select`,`multiselect`]),optionPropertyWireMember([`status`]),s.z.object({...G,type:s.z.enum(K).describe(`Property type`),...Z}).strict().superRefine(refuseForeignPropertyKeys)]),fe=s.z.object({definitions:s.z.array(Q).min(1).max(h.optionsPerAttribute).describe(`Edge properties`)}).strict().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),pe=S.extend({targets:s.z.array(ie).min(1).describe(`Target object(s)`),cardinality:s.z.enum([`one`,`many`]).describe(`one or many`),maxItems:s.z.number().int().min(1).optional().describe(`Max linked records`),bilateral:ae.optional().describe(`Syncs the other side's attribute`),properties:X.optional()}),me=S.extend({expression:s.z.string().min(1).superRefine((e,t)=>{try{parseComputedFormula(e)}catch(e){t.addIssue({code:s.z.ZodIssueCode.custom,message:e instanceof Error?e.message:`Invalid formula expression`})}}).describe(`The formula expression, compiled against this object's attributes`),returnType:s.z.enum([`text`,`number`,`boolean`,`date`,`select`,`multiselect`]).describe(`The formula's result type`),decimals:s.z.number().int().min(0).max(10).optional().describe(`Decimal places shown for a number result`),allowRelations:s.z.boolean().optional().describe(`Whether the expression may read across a relation`),optionsSource:P.optional().describe(`Mirrors an option set`)}),he=S.extend({relationAttribute:s.z.string().min(1).optional().describe(`API name of the relation this rollup aggregates through`),relationPath:s.z.string().optional().describe(`Not supported yet — single-hop only`),targetAttribute:s.z.string().min(1).optional().describe(`API name of the attribute aggregated on the relation's target object; not read by count`),function:s.z.enum([`sum`,`avg`,`earliest`,`latest`,`count`,`countValues`,`countUniqueValues`,`countEmpty`,`percentEmpty`,`percentNotEmpty`,`original`]).describe(`The aggregation applied across the linked records`),decimals:s.z.number().int().min(0).max(10).optional().describe(`Decimal places shown for a numeric result`),targetAttributeType:s.z.string().optional().describe(`Server-set`),targetAttributeOptions:s.z.array(k).optional().describe(`Server-set`),targetCurrencyCode:s.z.string().length(3).optional().describe(`Server-set`),optionsSource:P.optional().describe(`Mirrors an option set`)});function rollupTargetIssue(e,t){if(e===`rollup`&&t.function!==`count`&&t.targetAttribute===void 0)return{path:[`targetAttribute`],message:`targetAttribute is required for a "${String(t.function)}" rollup`}}const $={text:F,richtext:oe,number:I,checkbox:L,date:R,phone:z,currency:B,status:V,location:H,select:U,multiselect:W,user:se,relation:pe,formula:me,rollup:he,document:S.extend({properties:X.optional(),accepts:s.z.array(s.z.string().min(1)).optional().describe("MIME prefixes or globs a file must match (e.g. `image/*`, `*.pdf`)"),maxFileSize:s.z.number().int().min(1).optional().describe(`Maximum file size in bytes`)})};function getAttributeConfigSchema(e){let t=$[e];if(!t)throw new o.ValidationError(`Unsupported attribute type: ${e}`,[]);return t}function parseAttributeConfig(e,t){let n=getAttributeConfigSchema(e).strip().parse(t),r=rollupTargetIssue(e,n);if(r)throw validationErrorFromIssues([r]);return n}function getAttributeConfigWriteSchema(e){let t=getAttributeConfigSchema(e).extend({icon:_.optional()});switch(e){case`select`:return t.extend({options:j.describe(`Options`)});case`multiselect`:return t.extend({options:M.describe(`Options`)});case`status`:return t.extend({options:N.describe(`Statuses`)});default:return t}}function validationErrorFromIssues(e){return o.ValidationError.fromZodErrors(e.map(e=>({path:e.path.map(e=>typeof e==`symbol`?String(e):e),message:e.message})))}function parseWriteSchema(e,t){let n=getAttributeConfigWriteSchema(e).strip().safeParse(t);if(!n.success)throw validationErrorFromIssues(n.error.issues);let r=rollupTargetIssue(e,n.data);if(r)throw validationErrorFromIssues([r]);return n.data}function parseAttributeConfigForCreate(e,t){return parseWriteSchema(e,t)}function validatePatchedIcon(e){if(!Object.prototype.hasOwnProperty.call(e,`icon`))return;let t=_.optional().safeParse(e.icon);if(!t.success)throw o.ValidationError.fromZodErrors(t.error.issues.map(e=>({path:[`icon`,...e.path.map(e=>typeof e==`symbol`?String(e):e)],message:e.message})))}function isSelectLike(e){return e===`select`||e===`multiselect`||e===`status`}function parseAttributeConfigForUpdate(e,t){let n=Object.prototype.hasOwnProperty.call(t,`options`),r=Object.prototype.hasOwnProperty.call(t,`icon`),i={...e,...t};if(validatePatchedIcon(t),n){let{icon:t,...n}=i,a=parseWriteSchema(e.type,r?i:n);return!r&&t!==void 0&&(a.icon=t),a}let a=e.options;isSelectLike(e.type)&&(i.options=[{value:`__legacy__`,label:`__legacy__`}]);let o=getAttributeConfigSchema(e.type).strip().safeParse(i);if(!o.success)throw validationErrorFromIssues(o.error.issues);let s=o.data;return isSelectLike(e.type)&&(s.options=a),s}Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return validateAttributeName}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return validateOptions}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return validateObjectName}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return parseResourceVisibility}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return validateViewName}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return assertUniqueBy}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return validateLabel}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return getAttributeConfigWriteSchema}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return parseAttributeConfigForCreate}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return getAttributeConfigSchema}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return parseAttributeConfigForUpdate}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return refuseForeignKeys}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return parseAttributeConfig}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return ComputedFormulaParseError}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return validateIconName}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return parseComputedFormula}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return isNativeObjectName}});
13
+ `;case`r`:return`\r`;case`t`:return` `;default:throw new ComputedFormulaParseError(`Unknown escape sequence "\\${e}" at position ${t}`)}}function scanNumber(e,t){let n=t;for(;n<e.length&&isDigit(e[n]);)n+=1;if(e[n]===`.`){let t=n;if(n+=1,!isDigit(e[n]))throw new ComputedFormulaParseError(`Invalid number literal at position ${t}`);for(;n<e.length&&isDigit(e[n]);)n+=1}let r=e.slice(t,n),i=Number(r);if(!Number.isFinite(i))throw new ComputedFormulaParseError(`Invalid number literal "${r}"`);return{value:i,nextIndex:n}}function scanIdentifier(e,t){let n=t+1;for(;n<e.length&&isIdentifierPart(e[n]);)n+=1;return{value:e.slice(t,n),nextIndex:n}}function isDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}function isIdentifierStart(e){return e!==void 0&&/[A-Za-z_]/.test(e)}function isIdentifierPart(e){return e!==void 0&&/[A-Za-z0-9_]/.test(e)}var Parser=class{constructor(e){this.tokens=e,this.position=0}parseExpression(){return this.parseBinaryExpression(0)}expectEnd(){let e=this.peek();if(e!==void 0)throw new ComputedFormulaParseError(`Unexpected token ${describeToken(e)} at position ${e.position}`)}parseBinaryExpression(e){let t=this.parsePrimary();for(;;){let n=this.peek();if(n?.kind!==`operator`)return t;let r=getOperatorPrecedence(n.value);if(r<e)return t;let i=n.value;this.consume();let a=this.parseBinaryExpression(r+1);t={kind:`binary`,operator:i,left:t,right:a}}}parsePrimary(){let e=this.consume();if(e===void 0)throw new ComputedFormulaParseError(`Unexpected end of expression`);switch(e.kind){case`string`:case`number`:case`boolean`:return{kind:`literal`,value:e.value};case`null`:return{kind:`literal`,value:null};case`identifier`:return this.parseIdentifier(e.value);case`punctuation`:if(e.value===`(`){let e=this.parseExpression();return this.expectPunctuation(`)`),e}break;case`operator`:if(e.value===`-`){let e=this.consume();if(e?.kind===`number`)return{kind:`literal`,value:-e.value}}}throw new ComputedFormulaParseError(`Expected literal, path, call, or parenthesized expression at position ${e.position}`)}parseIdentifier(e){if(this.matchPunctuation(`(`)){let t=[];if(!this.matchPunctuation(`)`)){do t.push(this.parseExpression());while(this.matchPunctuation(`,`));this.expectPunctuation(`)`)}return{kind:`call`,functionName:e.toLowerCase(),args:t}}let t=[e];for(;this.matchPunctuation(`.`);){let e=this.consume();if(e?.kind!==`identifier`)throw new ComputedFormulaParseError(`Expected attribute name after path separator at position ${e?.position??this.previousPosition()}`);t.push(e.value)}return{kind:`path`,parts:t}}expectPunctuation(e){if(!this.matchPunctuation(e))throw new ComputedFormulaParseError(`Expected "${e}" at position ${this.peek()?.position??this.previousPosition()}`)}matchPunctuation(e){let t=this.peek();return t?.kind===`punctuation`&&t.value===e&&(this.consume(),!0)}peek(){return this.tokens[this.position]}consume(){let e=this.tokens[this.position];return this.position+=1,e}previousPosition(){return this.tokens[this.position-1]?.position??0}};function describeToken(e){switch(e.kind){case`identifier`:case`number`:case`string`:case`boolean`:case`operator`:case`punctuation`:return`"${String(e.value)}"`;case`null`:return`"null"`;default:return e}}function getOperatorPrecedence(e){switch(e){case`*`:case`/`:return 3;case`+`:case`-`:return 2;case`>`:case`<`:case`>=`:case`<=`:case`==`:case`!=`:return 1;default:return e}}const S=s.z.object({placeholder:s.z.string().optional(),description:s.z.string().optional(),defaultValue:s.z.unknown().optional(),icon:s.z.string().optional(),order:s.z.number().int().optional(),hidden:s.z.boolean().optional(),archived:s.z.boolean().optional(),deprecated:s.z.boolean().optional(),metadata:s.z.record(s.z.string(),s.z.unknown()).optional()}),C=[`placeholder`,`description`,`defaultValue`,`icon`,`order`,`hidden`,`archived`,`deprecated`,`metadata`];function refuseForeignKeys(e,t,n=[]){let r=new Set(n);return function refuse(n,i,a,o=[]){let s=e[n];if(s!==void 0&&i!==void 0)for(let e of Object.keys(i))s.has(e)||r.has(e)||a.addIssue({code:`custom`,path:[...o,e],message:`"${e}" is not a ${n} ${t}; keys of ${n}: ${[...s].join(`, `)}`})}}const w=s.z.object({value:s.z.string().min(1).describe(`Stored value`),label:s.z.string().min(1).describe(`Label people see`),description:s.z.string().describe(`Extra context`).optional(),inverse:s.z.string().describe(`Paired option's value (symmetric)`).optional(),archived:s.z.boolean().describe(`Hides without deleting`).optional()}),T=s.z.enum([`idle`,`in_progress`,`finished`]).describe(`Workflow stage`),E=w.extend({color:g}).strict(),D=E,O=w.extend({color:g,group:T}).strict(),k=w.extend({color:s.z.string().optional().describe(`A color id`),group:T.optional()}).strict(),A=s.z.array(k).min(1).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`});function writeOptionsArraySchema(e){return s.z.array(e).min(1).max(h.optionsPerAttribute).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`})}const j=writeOptionsArraySchema(E),M=writeOptionsArraySchema(D),N=writeOptionsArraySchema(O),ie=s.z.object({object:s.z.string().min(1).describe(`Target object`),displayTemplate:s.z.string().optional().describe(`Linked record label template`),filter:s.z.record(s.z.string(),s.z.unknown()).optional().describe(`Restricts linkable records`)}),ae=s.z.object({object:s.z.string().min(1).describe(`Other side's object`),attribute:s.z.string().min(1).describe(`Other side's attribute`),cardinality:s.z.enum([`one`,`many`]).optional().describe(`Other side's cardinality`),label:s.z.string().min(1).optional().describe(`Other side's label`),storageOwner:s.z.boolean().optional().describe(`Owns the join storage`)}),P=s.z.object({objectName:s.z.string().min(1).describe(`API name of the object whose options are mirrored`),attributeName:s.z.string().min(1).describe(`API name of the select/status attribute to mirror options from`),attributeId:s.z.string().optional().describe(`Id of the source attribute, resolved by the server`)}),F=S.extend({multiline:s.z.boolean().describe(`Renders as a multi-line textarea`).optional(),minLength:s.z.number().int().min(0).describe(`Minimum character count`).optional(),maxLength:s.z.number().int().min(1).describe(`Maximum character count`).optional(),pattern:s.z.string().describe(`Regular expression the value must match`).optional(),format:s.z.enum([`email`,`url`,`slug`]).describe(`Validates and renders as this format`).optional()}),oe=S,I=S.extend({renderAs:s.z.enum([`number`,`rating`]).describe(`Plain number or a star rating`).optional(),min:s.z.number().describe(`Minimum allowed value`).optional(),max:s.z.number().describe(`Maximum allowed value`).optional(),unit:s.z.enum([`integer`,`decimal`,`percentage`]).describe(`How the value is stored and rendered`).optional(),decimals:s.z.number().int().min(0).max(10).describe(`Decimal places shown`).optional()}),L=S,R=S.extend({dateFormat:s.z.enum([`short`,`long`,`full`,`relative`]).describe(`How the date is rendered`).optional(),minDate:s.z.string().describe(`Earliest allowed date (ISO)`).optional(),maxDate:s.z.string().describe(`Latest allowed date (ISO)`).optional(),includeTime:s.z.boolean().describe(`Also captures a time of day`).optional(),endDate:s.z.boolean().describe(`Paired with another date attribute as a range's end`).optional(),timeFormat:s.z.enum([`12h`,`24h`]).describe(`Clock format when a time is included`).optional()}),z=S.extend({defaultCountryCode:s.z.string().length(3).describe(`ISO country code preselected in the dialer`).optional()}),B=S.extend({defaultCurrency:s.z.string().length(3).describe(`ISO currency code preselected for new values`).optional(),allowedCurrencies:s.z.array(s.z.string().length(3)).describe(`ISO currency codes a value may use; any currency when omitted`).optional(),allowNegative:s.z.boolean().describe(`Whether a negative amount is accepted`).optional()}),V=S.extend({options:A.describe(`The workflow statuses, in order`)}),H=S.extend({granularity:s.z.enum([`full`,`address`,`city`,`state`,`country`,`coordinates`]).describe(`How precise a location must be captured`).optional(),defaultCountry:s.z.string().length(3).describe(`ISO country code preselected for new values`).optional(),allowedCountries:s.z.array(s.z.string().length(3)).describe(`ISO country codes a value may use; any country when omitted`).optional()}),U=S.extend({options:A.describe(`Options`),renderAs:s.z.literal(`badges`).optional().describe(`Renders the chosen option as a colored badge`)}),W=S.extend({options:A.describe(`Options`),renderAs:s.z.literal(`badges`).optional().describe(`Renders the chosen options as colored badges`)}),se=S.extend({types:s.z.array(s.z.enum([`user`,`agent`])).min(1).optional().describe(`Which kinds of actor can be picked; both when omitted`),multiple:s.z.boolean().optional().describe(`Whether more than one actor can be picked`)}),G={name:x.describe(`Property API name`),label:s.z.string().min(1).describe(`Label people see`),required:s.z.boolean().describe(`Required on every edge`).optional()},ce={id:s.z.string().optional(),objectId:s.z.string().optional(),system:s.z.boolean().optional(),unique:s.z.boolean().optional()},le=Object.fromEntries(C.map(e=>[e,!0])),K=[`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`location`],q=[...K,`select`,`multiselect`,`status`],J={text:F,number:I,checkbox:L,date:R,phone:z,currency:B,location:H,select:U,multiselect:W,status:V},ue={...J,select:U.extend({options:j.describe(`Options`)}),multiselect:W.extend({options:M.describe(`Options`)}),status:V.extend({options:N.describe(`Statuses`)})},propertyWireConfigShapeFor=e=>ue[e].omit(le).shape,storedPropertyMember=e=>s.z.object({...G,...ce,type:s.z.literal(e).describe(`Property type`),...J[e].shape}).strip(),Y=s.z.discriminatedUnion(`type`,q.map(storedPropertyMember)),X=s.z.object({definitions:s.z.array(Y).min(1).max(h.optionsPerAttribute).describe(`Edge properties`)}).strip().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),de=refuseForeignKeys(Object.fromEntries(q.map(e=>[e,new Set(Object.keys(propertyWireConfigShapeFor(e)))])),`property key`,[...Object.keys(G),`type`]);function refuseForeignPropertyKeys(e,t){de(e.type,e,t)}const Z=K.reduce((e,t)=>(Object.assign(e,propertyWireConfigShapeFor(t)),e),{}),optionPropertyWireMember=e=>s.z.object({...G,type:e.length===1?s.z.literal(e[0]).describe(`Property type`):s.z.enum(e).describe(`Property type`),...propertyWireConfigShapeFor(e[0])}).strict(),Q=s.z.discriminatedUnion(`type`,[optionPropertyWireMember([`select`,`multiselect`]),optionPropertyWireMember([`status`]),s.z.object({...G,type:s.z.enum(K).describe(`Property type`),...Z}).strict().superRefine(refuseForeignPropertyKeys)]),fe=s.z.object({definitions:s.z.array(Q).min(1).max(h.optionsPerAttribute).describe(`Edge properties`)}).strict().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),pe=S.extend({targets:s.z.array(ie).min(1).describe(`Target object(s)`),cardinality:s.z.enum([`one`,`many`]).describe(`one or many`),maxItems:s.z.number().int().min(1).optional().describe(`Max linked records`),bilateral:ae.optional().describe(`Syncs the other side's attribute`),properties:X.optional()}),me=S.extend({expression:s.z.string().min(1).superRefine((e,t)=>{try{parseComputedFormula(e)}catch(e){t.addIssue({code:s.z.ZodIssueCode.custom,message:e instanceof Error?e.message:`Invalid formula expression`})}}).describe(`The formula expression, compiled against this object's attributes`),returnType:s.z.enum([`text`,`number`,`boolean`,`date`,`select`,`multiselect`]).describe(`The formula's result type`),decimals:s.z.number().int().min(0).max(10).optional().describe(`Decimal places shown for a number result`),currencyCode:s.z.string().length(3).optional().describe(`ISO 4217 code a number result renders with; presentation only`),allowRelations:s.z.boolean().optional().describe(`Whether the expression may read across a relation`),optionsSource:P.optional().describe(`Mirrors an option set`)}),he=S.extend({relationAttribute:s.z.string().min(1).optional().describe(`API name of the relation this rollup aggregates through`),relationPath:s.z.string().optional().describe(`Not supported yet — single-hop only`),targetAttribute:s.z.string().min(1).optional().describe(`API name of the attribute aggregated on the relation's target object; not read by count`),function:s.z.enum([`sum`,`avg`,`earliest`,`latest`,`count`,`countValues`,`countUniqueValues`,`countEmpty`,`percentEmpty`,`percentNotEmpty`,`original`]).describe(`The aggregation applied across the linked records`),decimals:s.z.number().int().min(0).max(10).optional().describe(`Decimal places shown for a numeric result`),targetAttributeType:s.z.string().optional().describe(`Server-set`),targetAttributeOptions:s.z.array(k).optional().describe(`Server-set`),targetCurrencyCode:s.z.string().length(3).optional().describe(`Server-set`),optionsSource:P.optional().describe(`Mirrors an option set`)});function rollupTargetIssue(e,t){if(e===`rollup`&&t.function!==`count`&&t.targetAttribute===void 0)return{path:[`targetAttribute`],message:`targetAttribute is required for a "${String(t.function)}" rollup`}}const $={text:F,richtext:oe,number:I,checkbox:L,date:R,phone:z,currency:B,status:V,location:H,select:U,multiselect:W,user:se,relation:pe,formula:me,rollup:he,document:S.extend({properties:X.optional(),accepts:s.z.array(s.z.string().min(1)).optional().describe("MIME prefixes or globs a file must match (e.g. `image/*`, `*.pdf`)"),maxFileSize:s.z.number().int().min(1).optional().describe(`Maximum file size in bytes`)})};function getAttributeConfigSchema(e){let t=$[e];if(!t)throw new o.ValidationError(`Unsupported attribute type: ${e}`,[]);return t}function parseAttributeConfig(e,t){let n=getAttributeConfigSchema(e).strip().parse(t),r=rollupTargetIssue(e,n);if(r)throw validationErrorFromIssues([r]);return n}function getAttributeConfigWriteSchema(e){let t=getAttributeConfigSchema(e).extend({icon:_.optional()});switch(e){case`select`:return t.extend({options:j.describe(`Options`)});case`multiselect`:return t.extend({options:M.describe(`Options`)});case`status`:return t.extend({options:N.describe(`Statuses`)});default:return t}}function validationErrorFromIssues(e){return o.ValidationError.fromZodErrors(e.map(e=>({path:e.path.map(e=>typeof e==`symbol`?String(e):e),message:e.message})))}function parseWriteSchema(e,t){let n=getAttributeConfigWriteSchema(e).strip().safeParse(t);if(!n.success)throw validationErrorFromIssues(n.error.issues);let r=rollupTargetIssue(e,n.data);if(r)throw validationErrorFromIssues([r]);return n.data}function parseAttributeConfigForCreate(e,t){return parseWriteSchema(e,t)}function validatePatchedIcon(e){if(!Object.prototype.hasOwnProperty.call(e,`icon`))return;let t=_.optional().safeParse(e.icon);if(!t.success)throw o.ValidationError.fromZodErrors(t.error.issues.map(e=>({path:[`icon`,...e.path.map(e=>typeof e==`symbol`?String(e):e)],message:e.message})))}function isSelectLike(e){return e===`select`||e===`multiselect`||e===`status`}function parseAttributeConfigForUpdate(e,t){let n=Object.prototype.hasOwnProperty.call(t,`options`),r=Object.prototype.hasOwnProperty.call(t,`icon`),i={...e,...t};if(validatePatchedIcon(t),n){let{icon:t,...n}=i,a=parseWriteSchema(e.type,r?i:n);return!r&&t!==void 0&&(a.icon=t),a}let a=e.options;isSelectLike(e.type)&&(i.options=[{value:`__legacy__`,label:`__legacy__`}]);let o=getAttributeConfigSchema(e.type).strip().safeParse(i);if(!o.success)throw validationErrorFromIssues(o.error.issues);let s=o.data;return isSelectLike(e.type)&&(s.options=a),s}Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return validateAttributeName}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return validateOptions}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return validateObjectName}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return parseResourceVisibility}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return validateViewName}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return assertUniqueBy}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return validateLabel}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return getAttributeConfigWriteSchema}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return parseAttributeConfigForCreate}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return getAttributeConfigSchema}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return parseAttributeConfigForUpdate}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return refuseForeignKeys}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return parseAttributeConfig}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return ComputedFormulaParseError}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return validateIconName}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return parseComputedFormula}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return isNativeObjectName}});
@@ -1,6 +1,6 @@
1
1
 
2
- import { rt as DateAttribute } from "./exceptions-BCfkN2ct.mjs";
3
- import { r as ValidationMessages } from "./index-DzEWbzP-.mjs";
2
+ import { ot as DateAttribute } from "./exceptions-Bon8Edct.mjs";
3
+ import { r as ValidationMessages } from "./index-DF2Os8Es.mjs";
4
4
  import { z as z$1 } from "zod";
5
5
  //#region src/validation/primitives/date.d.ts
6
6
  /**
@@ -1,6 +1,6 @@
1
1
 
2
- import { rt as DateAttribute } from "./exceptions-BCfkN2ct.js";
3
- import { r as ValidationMessages } from "./index-DyeLYnEc.js";
2
+ import { ot as DateAttribute } from "./exceptions-Bon8Edct.js";
3
+ import { r as ValidationMessages } from "./index-OO5ADZYz.js";
4
4
  import { z as z$1 } from "zod";
5
5
  //#region src/validation/primitives/date.d.ts
6
6
  /**
@@ -704,6 +704,15 @@ interface FormulaAttribute extends Omit<BaseAttribute<never>, "defaultValue" | "
704
704
  returnType: FormulaReturnType;
705
705
  /** Decimal places for number results */
706
706
  decimals?: number;
707
+ /**
708
+ * ISO 4217 code a `number` result renders with — `123 456 €` instead of
709
+ * `123456` — for a formula over money (#3419). Presentation only: the
710
+ * stored value stays a number, sort, filter and aggregation are untouched,
711
+ * and `returnType` stays `"number"` because that IS what the expression
712
+ * returns. The rollup's `targetCurrencyCode` (#2644), mirrored. Absent →
713
+ * the bare number, exactly as before.
714
+ */
715
+ currencyCode?: CurrencyCode;
707
716
  /** Source attribute for select-like computed options */
708
717
  optionsSource?: ComputedOptionsSource;
709
718
  /** Whether to allow relation references in the expression (e.g., "company.name") */
@@ -972,6 +981,12 @@ declare const SchemaErrorCode: {
972
981
  readonly AGENT_MESSAGE_NOT_FOUND: "AGENT_MESSAGE_NOT_FOUND";
973
982
  readonly AGENT_MESSAGE_NOT_EDITABLE: "AGENT_MESSAGE_NOT_EDITABLE";
974
983
  readonly INVALID_TOOL_INPUT: "INVALID_TOOL_INPUT";
984
+ readonly AGENT_EXECUTION_CANCELLED: "AGENT_EXECUTION_CANCELLED";
985
+ readonly AGENT_EXECUTION_TIMEOUT: "AGENT_EXECUTION_TIMEOUT";
986
+ readonly AGENT_EXTERNAL_OUTCOME_UNKNOWN: "AGENT_EXTERNAL_OUTCOME_UNKNOWN";
987
+ readonly AGENT_TOOL_CANCELLATION_POLICY: "AGENT_TOOL_CANCELLATION_POLICY";
988
+ readonly AGENT_CANCELLATION_WATCH_CAPACITY: "AGENT_CANCELLATION_WATCH_CAPACITY";
989
+ readonly AGENT_CANCELLATION_CLEANUP: "AGENT_CANCELLATION_CLEANUP";
975
990
  readonly DEVICE_NOT_FOUND: "DEVICE_NOT_FOUND";
976
991
  readonly DEVICE_OFFLINE: "DEVICE_OFFLINE";
977
992
  readonly DEVICE_CAPABILITY_MISMATCH: "DEVICE_CAPABILITY_MISMATCH";
@@ -986,6 +1001,7 @@ declare const SchemaErrorCode: {
986
1001
  readonly AI_DECISION_FAILED: "AI_DECISION_FAILED";
987
1002
  readonly AI_IMAGE_USAGE_PENDING: "AI_IMAGE_USAGE_PENDING";
988
1003
  readonly AI_IMAGE_GENERATION_INDETERMINATE: "AI_IMAGE_GENERATION_INDETERMINATE";
1004
+ readonly AI_IMAGE_RESERVATION_CLEANUP_INDETERMINATE: "AI_IMAGE_RESERVATION_CLEANUP_INDETERMINATE";
989
1005
  readonly AI_IMAGE_PUBLICATION_FAILED: "AI_IMAGE_PUBLICATION_FAILED";
990
1006
  readonly DOCUMENT_MIME_NOT_ACCEPTED: "DOCUMENT_MIME_NOT_ACCEPTED";
991
1007
  readonly DOCUMENT_MULTIPLE_NOT_ALLOWED: "DOCUMENT_MULTIPLE_NOT_ALLOWED";
@@ -1399,6 +1415,28 @@ declare class ObjectReferencedError extends SchemaError {
1399
1415
  readonly referencingObjects: string[];
1400
1416
  constructor(objectName: string, referencingObjects: string[]);
1401
1417
  }
1418
+ /**
1419
+ * Supabase Realtime refused a publish because the channel was rate limited.
1420
+ *
1421
+ * Lives here rather than beside the publisher so the browser channel client and
1422
+ * the server publisher can share one error vocabulary without either package
1423
+ * depending on the other.
1424
+ */
1425
+ declare class RealtimeRateLimitedError extends SchemaError {
1426
+ constructor();
1427
+ }
1428
+ /**
1429
+ * A Supabase Realtime publish did not reach the channel.
1430
+ */
1431
+ declare class RealtimeDeliveryError extends SchemaError {
1432
+ constructor();
1433
+ }
1434
+ /**
1435
+ * A Supabase Realtime channel could not be subscribed to.
1436
+ */
1437
+ declare class RealtimeSubscriptionError extends SchemaError {
1438
+ constructor();
1439
+ }
1402
1440
  /**
1403
1441
  * Check if an error is a RecordReferencedError
1404
1442
  */
@@ -1412,4 +1450,4 @@ declare function isAttributeInUseError(error: unknown): error is AttributeInUseE
1412
1450
  */
1413
1451
  declare function isObjectReferencedError(error: unknown): error is ObjectReferencedError;
1414
1452
  //#endregion
1415
- export { BilateralConfig as $, indexBy as $t, StorageError as A, ComputedDependency as An, StatusGroup as At, isObjectReferencedError as B, ComputedFormulaLiteralNode as Bn, OptionPropertyAttribute as Bt, RepositoryOperation as C, assertAcyclicComputedDependencies as Cn, RichTextAttribute as Ct, SchemaErrorCode as D, ComputedFunctionName as Dn, SelectAttribute as Dt, SchemaError as E, COMPUTED_FUNCTION_NAMES as En, RollupFunction as Et, SystemEntityImmutableError as F, ComputedValueType as Fn, inferInverseCardinality as Ft, BuiltInTransform as G, resolvePropertyDefinitions as Gt, isRecordReferencedError as H, ComputedFormulaPathNode as Hn, PropertySchema as Ht, ValidationError as I, ComputedFormulaAstNode as In, isAttributeSortable as It, ATTRIBUTE_TYPES as J, Uuid as Jt, MigrationDefinition as K, TenantId as Kt, ValidationErrorDetail as L, ComputedFormulaBinaryNode as Ln, isBilateralRelation as Lt, SyncCascadeError as M, ComputedOptionsSource as Mn, TimeFormat as Mt, SyncConflictError as N, ComputedPlan as Nn, UserAttribute as Nt, SchemaPlanNotFoundError as O, ComputedFunctionSignature as On, SingleRelationAttribute as Ot, SyncError as P, ComputedReturnType as Pn, UserReferenceType as Pt, BaseAttribute as Q, generateId as Qt, isAttributeInUseError as R, ComputedFormulaBinaryOperator as Rn, isUniversalRelation as Rt, RepositoryError as S, ComputedFormulaCompileError as Sn, RelationTarget as St, RoleNotFoundError as T, COMPUTED_FUNCTIONS as Tn, RollupAttribute as Tt, isSchemaError as U, parseComputedFormula as Un, PropertyType as Ut, isProtectedResourceError as V, ComputedFormulaParseError as Vn, PropertyAttribute as Vt, isValidationError as W, hasOptions as Wt, AttributeGroup as X, asUserId as Xt, Attribute as Y, asTenantId as Yt, AttributeType as Z, deepEqual as Zt, ProtectedResourceError as _, CompileComputedFormulaInput as _n, Option as _t, ChangeTypeNotSupportedError as a, COMPUTED_FUNCTION_METADATA as an, DateRangeValue as at, RecordReference as b, ComputedCompileSchema as bn, RELATION_TARGET_ANY as bt, DuplicateError as c, ComputedFormulaResult as cn, FormulaAttribute as ct, MigrationTimeoutError as d, evaluateComputedFormulaWithResult as dn, LocationAttribute as dt, NonJsonValueError as en, CheckboxAttribute as et, NotFoundError as f, formatComputedResult as fn, LocationGranularity as ft, OrphanSystemAttributeError as g, rollupToFormulaExpression as gn, NumberUnit as gt, ObjectReferencedError as h, inferRollupReturnType as hn, NumberAttribute as ht, AttributeUsage as i, serializeStableJson as in, DateFormat as it, StorageOperation as j, ComputedFieldKind as jn, TextAttribute as jt, SearchBackendError as k, isComputedFunctionName as kn, StatusAttribute as kt, ForbiddenError as l, evaluateComputedAst as ln, FormulaReturnType as lt, ObjectNotFoundError as m, compileRollupAttribute as mn, MultiselectAttribute as mt, AttributeInUseError as n, sameStableValue as nn, CurrencyAttribute as nt, ConcurrentModificationError as o, ComputedFunctionCategory as on, DateValue as ot, NotImplementedError as p, isPlainRecord as pn, MultiRelationAttribute as pt, SchemaOperation as q, UserId as qt, AttributeNotFoundError as r, serializeCanonicalJson as rn, DateAttribute as rt, DestructiveSyncNotAllowedError as s, ComputedFunctionMetadata as sn, DocumentAttribute as st, AccessDeniedError as t, canonicalStringify as tn, Currency as tt, MemoryNotFoundError as u, evaluateComputedFormula as un, Location as ut, ProtectedRoleError as v, ComputedCompileAttribute as vn, Phone as vt, ReservedObjectNameError as w, compileComputedFormula as wn, RichtextAttribute as wt, RecordReferencedError as x, ComputedDependencyGraphNode as xn, RelationAttribute as xt, RecordNotFoundError as y, ComputedCompileObject as yn, PhoneAttribute as yt, isNotFoundError as z, ComputedFormulaCallNode as zn, relationTargetsOf as zt };
1453
+ export { AttributeGroup as $, asUserId as $t, SchemaErrorCode as A, ComputedFunctionName as An, SelectAttribute as At, ValidationErrorDetail as B, ComputedFormulaBinaryNode as Bn, isBilateralRelation as Bt, RecordReference as C, ComputedCompileSchema as Cn, RELATION_TARGET_ANY as Ct, ReservedObjectNameError as D, compileComputedFormula as Dn, RichtextAttribute as Dt, RepositoryOperation as E, assertAcyclicComputedDependencies as En, RichTextAttribute as Et, SyncCascadeError as F, ComputedOptionsSource as Fn, TimeFormat as Ft, isRecordReferencedError as G, ComputedFormulaPathNode as Gn, PropertySchema as Gt, isNotFoundError as H, ComputedFormulaCallNode as Hn, relationTargetsOf as Ht, SyncConflictError as I, ComputedPlan as In, UserAttribute as It, BuiltInTransform as J, resolvePropertyDefinitions as Jt, isSchemaError as K, parseComputedFormula as Kn, PropertyType as Kt, SyncError as L, ComputedReturnType as Ln, UserReferenceType as Lt, SearchBackendError as M, isComputedFunctionName as Mn, StatusAttribute as Mt, StorageError as N, ComputedDependency as Nn, StatusGroup as Nt, RoleNotFoundError as O, COMPUTED_FUNCTIONS as On, RollupAttribute as Ot, StorageOperation as P, ComputedFieldKind as Pn, TextAttribute as Pt, Attribute as Q, asTenantId as Qt, SystemEntityImmutableError as R, ComputedValueType as Rn, inferInverseCardinality as Rt, RecordNotFoundError as S, ComputedCompileObject as Sn, PhoneAttribute as St, RepositoryError as T, ComputedFormulaCompileError as Tn, RelationTarget as Tt, isObjectReferencedError as U, ComputedFormulaLiteralNode as Un, OptionPropertyAttribute as Ut, isAttributeInUseError as V, ComputedFormulaBinaryOperator as Vn, isUniversalRelation as Vt, isProtectedResourceError as W, ComputedFormulaParseError as Wn, PropertyAttribute as Wt, SchemaOperation as X, UserId as Xt, MigrationDefinition as Y, TenantId as Yt, ATTRIBUTE_TYPES as Z, Uuid as Zt, ProtectedResourceError as _, compileRollupAttribute as _n, MultiselectAttribute as _t, ChangeTypeNotSupportedError as a, sameStableValue as an, CurrencyAttribute as at, RealtimeRateLimitedError as b, CompileComputedFormulaInput as bn, Option as bt, DuplicateError as c, COMPUTED_FUNCTION_METADATA as cn, DateRangeValue as ct, MigrationTimeoutError as d, ComputedFormulaResult as dn, FormulaAttribute as dt, deepEqual as en, AttributeType as et, NotFoundError as f, evaluateComputedAst as fn, FormulaReturnType as ft, OrphanSystemAttributeError as g, isPlainRecord as gn, MultiRelationAttribute as gt, ObjectReferencedError as h, formatComputedResult as hn, LocationGranularity as ht, AttributeUsage as i, canonicalStringify as in, Currency as it, SchemaPlanNotFoundError as j, ComputedFunctionSignature as jn, SingleRelationAttribute as jt, SchemaError as k, COMPUTED_FUNCTION_NAMES as kn, RollupFunction as kt, ForbiddenError as l, ComputedFunctionCategory as ln, DateValue as lt, ObjectNotFoundError as m, evaluateComputedFormulaWithResult as mn, LocationAttribute as mt, AttributeInUseError as n, indexBy as nn, BilateralConfig as nt, ConcurrentModificationError as o, serializeCanonicalJson as on, DateAttribute as ot, NotImplementedError as p, evaluateComputedFormula as pn, Location as pt, isValidationError as q, hasOptions as qt, AttributeNotFoundError as r, NonJsonValueError as rn, CheckboxAttribute as rt, DestructiveSyncNotAllowedError as s, serializeStableJson as sn, DateFormat as st, AccessDeniedError as t, generateId as tn, BaseAttribute as tt, MemoryNotFoundError as u, ComputedFunctionMetadata as un, DocumentAttribute as ut, ProtectedRoleError as v, inferRollupReturnType as vn, NumberAttribute as vt, RecordReferencedError as w, ComputedDependencyGraphNode as wn, RelationAttribute as wt, RealtimeSubscriptionError as x, ComputedCompileAttribute as xn, Phone as xt, RealtimeDeliveryError as y, rollupToFormulaExpression as yn, NumberUnit as yt, ValidationError as z, ComputedFormulaAstNode as zn, isAttributeSortable as zt };
@@ -704,6 +704,15 @@ interface FormulaAttribute extends Omit<BaseAttribute<never>, "defaultValue" | "
704
704
  returnType: FormulaReturnType;
705
705
  /** Decimal places for number results */
706
706
  decimals?: number;
707
+ /**
708
+ * ISO 4217 code a `number` result renders with — `123 456 €` instead of
709
+ * `123456` — for a formula over money (#3419). Presentation only: the
710
+ * stored value stays a number, sort, filter and aggregation are untouched,
711
+ * and `returnType` stays `"number"` because that IS what the expression
712
+ * returns. The rollup's `targetCurrencyCode` (#2644), mirrored. Absent →
713
+ * the bare number, exactly as before.
714
+ */
715
+ currencyCode?: CurrencyCode;
707
716
  /** Source attribute for select-like computed options */
708
717
  optionsSource?: ComputedOptionsSource;
709
718
  /** Whether to allow relation references in the expression (e.g., "company.name") */
@@ -972,6 +981,12 @@ declare const SchemaErrorCode: {
972
981
  readonly AGENT_MESSAGE_NOT_FOUND: "AGENT_MESSAGE_NOT_FOUND";
973
982
  readonly AGENT_MESSAGE_NOT_EDITABLE: "AGENT_MESSAGE_NOT_EDITABLE";
974
983
  readonly INVALID_TOOL_INPUT: "INVALID_TOOL_INPUT";
984
+ readonly AGENT_EXECUTION_CANCELLED: "AGENT_EXECUTION_CANCELLED";
985
+ readonly AGENT_EXECUTION_TIMEOUT: "AGENT_EXECUTION_TIMEOUT";
986
+ readonly AGENT_EXTERNAL_OUTCOME_UNKNOWN: "AGENT_EXTERNAL_OUTCOME_UNKNOWN";
987
+ readonly AGENT_TOOL_CANCELLATION_POLICY: "AGENT_TOOL_CANCELLATION_POLICY";
988
+ readonly AGENT_CANCELLATION_WATCH_CAPACITY: "AGENT_CANCELLATION_WATCH_CAPACITY";
989
+ readonly AGENT_CANCELLATION_CLEANUP: "AGENT_CANCELLATION_CLEANUP";
975
990
  readonly DEVICE_NOT_FOUND: "DEVICE_NOT_FOUND";
976
991
  readonly DEVICE_OFFLINE: "DEVICE_OFFLINE";
977
992
  readonly DEVICE_CAPABILITY_MISMATCH: "DEVICE_CAPABILITY_MISMATCH";
@@ -986,6 +1001,7 @@ declare const SchemaErrorCode: {
986
1001
  readonly AI_DECISION_FAILED: "AI_DECISION_FAILED";
987
1002
  readonly AI_IMAGE_USAGE_PENDING: "AI_IMAGE_USAGE_PENDING";
988
1003
  readonly AI_IMAGE_GENERATION_INDETERMINATE: "AI_IMAGE_GENERATION_INDETERMINATE";
1004
+ readonly AI_IMAGE_RESERVATION_CLEANUP_INDETERMINATE: "AI_IMAGE_RESERVATION_CLEANUP_INDETERMINATE";
989
1005
  readonly AI_IMAGE_PUBLICATION_FAILED: "AI_IMAGE_PUBLICATION_FAILED";
990
1006
  readonly DOCUMENT_MIME_NOT_ACCEPTED: "DOCUMENT_MIME_NOT_ACCEPTED";
991
1007
  readonly DOCUMENT_MULTIPLE_NOT_ALLOWED: "DOCUMENT_MULTIPLE_NOT_ALLOWED";
@@ -1399,6 +1415,28 @@ declare class ObjectReferencedError extends SchemaError {
1399
1415
  readonly referencingObjects: string[];
1400
1416
  constructor(objectName: string, referencingObjects: string[]);
1401
1417
  }
1418
+ /**
1419
+ * Supabase Realtime refused a publish because the channel was rate limited.
1420
+ *
1421
+ * Lives here rather than beside the publisher so the browser channel client and
1422
+ * the server publisher can share one error vocabulary without either package
1423
+ * depending on the other.
1424
+ */
1425
+ declare class RealtimeRateLimitedError extends SchemaError {
1426
+ constructor();
1427
+ }
1428
+ /**
1429
+ * A Supabase Realtime publish did not reach the channel.
1430
+ */
1431
+ declare class RealtimeDeliveryError extends SchemaError {
1432
+ constructor();
1433
+ }
1434
+ /**
1435
+ * A Supabase Realtime channel could not be subscribed to.
1436
+ */
1437
+ declare class RealtimeSubscriptionError extends SchemaError {
1438
+ constructor();
1439
+ }
1402
1440
  /**
1403
1441
  * Check if an error is a RecordReferencedError
1404
1442
  */
@@ -1412,4 +1450,4 @@ declare function isAttributeInUseError(error: unknown): error is AttributeInUseE
1412
1450
  */
1413
1451
  declare function isObjectReferencedError(error: unknown): error is ObjectReferencedError;
1414
1452
  //#endregion
1415
- export { BilateralConfig as $, indexBy as $t, StorageError as A, ComputedDependency as An, StatusGroup as At, isObjectReferencedError as B, ComputedFormulaLiteralNode as Bn, OptionPropertyAttribute as Bt, RepositoryOperation as C, assertAcyclicComputedDependencies as Cn, RichTextAttribute as Ct, SchemaErrorCode as D, ComputedFunctionName as Dn, SelectAttribute as Dt, SchemaError as E, COMPUTED_FUNCTION_NAMES as En, RollupFunction as Et, SystemEntityImmutableError as F, ComputedValueType as Fn, inferInverseCardinality as Ft, BuiltInTransform as G, resolvePropertyDefinitions as Gt, isRecordReferencedError as H, ComputedFormulaPathNode as Hn, PropertySchema as Ht, ValidationError as I, ComputedFormulaAstNode as In, isAttributeSortable as It, ATTRIBUTE_TYPES as J, Uuid as Jt, MigrationDefinition as K, TenantId as Kt, ValidationErrorDetail as L, ComputedFormulaBinaryNode as Ln, isBilateralRelation as Lt, SyncCascadeError as M, ComputedOptionsSource as Mn, TimeFormat as Mt, SyncConflictError as N, ComputedPlan as Nn, UserAttribute as Nt, SchemaPlanNotFoundError as O, ComputedFunctionSignature as On, SingleRelationAttribute as Ot, SyncError as P, ComputedReturnType as Pn, UserReferenceType as Pt, BaseAttribute as Q, generateId as Qt, isAttributeInUseError as R, ComputedFormulaBinaryOperator as Rn, isUniversalRelation as Rt, RepositoryError as S, ComputedFormulaCompileError as Sn, RelationTarget as St, RoleNotFoundError as T, COMPUTED_FUNCTIONS as Tn, RollupAttribute as Tt, isSchemaError as U, parseComputedFormula as Un, PropertyType as Ut, isProtectedResourceError as V, ComputedFormulaParseError as Vn, PropertyAttribute as Vt, isValidationError as W, hasOptions as Wt, AttributeGroup as X, asUserId as Xt, Attribute as Y, asTenantId as Yt, AttributeType as Z, deepEqual as Zt, ProtectedResourceError as _, CompileComputedFormulaInput as _n, Option as _t, ChangeTypeNotSupportedError as a, COMPUTED_FUNCTION_METADATA as an, DateRangeValue as at, RecordReference as b, ComputedCompileSchema as bn, RELATION_TARGET_ANY as bt, DuplicateError as c, ComputedFormulaResult as cn, FormulaAttribute as ct, MigrationTimeoutError as d, evaluateComputedFormulaWithResult as dn, LocationAttribute as dt, NonJsonValueError as en, CheckboxAttribute as et, NotFoundError as f, formatComputedResult as fn, LocationGranularity as ft, OrphanSystemAttributeError as g, rollupToFormulaExpression as gn, NumberUnit as gt, ObjectReferencedError as h, inferRollupReturnType as hn, NumberAttribute as ht, AttributeUsage as i, serializeStableJson as in, DateFormat as it, StorageOperation as j, ComputedFieldKind as jn, TextAttribute as jt, SearchBackendError as k, isComputedFunctionName as kn, StatusAttribute as kt, ForbiddenError as l, evaluateComputedAst as ln, FormulaReturnType as lt, ObjectNotFoundError as m, compileRollupAttribute as mn, MultiselectAttribute as mt, AttributeInUseError as n, sameStableValue as nn, CurrencyAttribute as nt, ConcurrentModificationError as o, ComputedFunctionCategory as on, DateValue as ot, NotImplementedError as p, isPlainRecord as pn, MultiRelationAttribute as pt, SchemaOperation as q, UserId as qt, AttributeNotFoundError as r, serializeCanonicalJson as rn, DateAttribute as rt, DestructiveSyncNotAllowedError as s, ComputedFunctionMetadata as sn, DocumentAttribute as st, AccessDeniedError as t, canonicalStringify as tn, Currency as tt, MemoryNotFoundError as u, evaluateComputedFormula as un, Location as ut, ProtectedRoleError as v, ComputedCompileAttribute as vn, Phone as vt, ReservedObjectNameError as w, compileComputedFormula as wn, RichtextAttribute as wt, RecordReferencedError as x, ComputedDependencyGraphNode as xn, RelationAttribute as xt, RecordNotFoundError as y, ComputedCompileObject as yn, PhoneAttribute as yt, isNotFoundError as z, ComputedFormulaCallNode as zn, relationTargetsOf as zt };
1453
+ export { AttributeGroup as $, asUserId as $t, SchemaErrorCode as A, ComputedFunctionName as An, SelectAttribute as At, ValidationErrorDetail as B, ComputedFormulaBinaryNode as Bn, isBilateralRelation as Bt, RecordReference as C, ComputedCompileSchema as Cn, RELATION_TARGET_ANY as Ct, ReservedObjectNameError as D, compileComputedFormula as Dn, RichtextAttribute as Dt, RepositoryOperation as E, assertAcyclicComputedDependencies as En, RichTextAttribute as Et, SyncCascadeError as F, ComputedOptionsSource as Fn, TimeFormat as Ft, isRecordReferencedError as G, ComputedFormulaPathNode as Gn, PropertySchema as Gt, isNotFoundError as H, ComputedFormulaCallNode as Hn, relationTargetsOf as Ht, SyncConflictError as I, ComputedPlan as In, UserAttribute as It, BuiltInTransform as J, resolvePropertyDefinitions as Jt, isSchemaError as K, parseComputedFormula as Kn, PropertyType as Kt, SyncError as L, ComputedReturnType as Ln, UserReferenceType as Lt, SearchBackendError as M, isComputedFunctionName as Mn, StatusAttribute as Mt, StorageError as N, ComputedDependency as Nn, StatusGroup as Nt, RoleNotFoundError as O, COMPUTED_FUNCTIONS as On, RollupAttribute as Ot, StorageOperation as P, ComputedFieldKind as Pn, TextAttribute as Pt, Attribute as Q, asTenantId as Qt, SystemEntityImmutableError as R, ComputedValueType as Rn, inferInverseCardinality as Rt, RecordNotFoundError as S, ComputedCompileObject as Sn, PhoneAttribute as St, RepositoryError as T, ComputedFormulaCompileError as Tn, RelationTarget as Tt, isObjectReferencedError as U, ComputedFormulaLiteralNode as Un, OptionPropertyAttribute as Ut, isAttributeInUseError as V, ComputedFormulaBinaryOperator as Vn, isUniversalRelation as Vt, isProtectedResourceError as W, ComputedFormulaParseError as Wn, PropertyAttribute as Wt, SchemaOperation as X, UserId as Xt, MigrationDefinition as Y, TenantId as Yt, ATTRIBUTE_TYPES as Z, Uuid as Zt, ProtectedResourceError as _, compileRollupAttribute as _n, MultiselectAttribute as _t, ChangeTypeNotSupportedError as a, sameStableValue as an, CurrencyAttribute as at, RealtimeRateLimitedError as b, CompileComputedFormulaInput as bn, Option as bt, DuplicateError as c, COMPUTED_FUNCTION_METADATA as cn, DateRangeValue as ct, MigrationTimeoutError as d, ComputedFormulaResult as dn, FormulaAttribute as dt, deepEqual as en, AttributeType as et, NotFoundError as f, evaluateComputedAst as fn, FormulaReturnType as ft, OrphanSystemAttributeError as g, isPlainRecord as gn, MultiRelationAttribute as gt, ObjectReferencedError as h, formatComputedResult as hn, LocationGranularity as ht, AttributeUsage as i, canonicalStringify as in, Currency as it, SchemaPlanNotFoundError as j, ComputedFunctionSignature as jn, SingleRelationAttribute as jt, SchemaError as k, COMPUTED_FUNCTION_NAMES as kn, RollupFunction as kt, ForbiddenError as l, ComputedFunctionCategory as ln, DateValue as lt, ObjectNotFoundError as m, evaluateComputedFormulaWithResult as mn, LocationAttribute as mt, AttributeInUseError as n, indexBy as nn, BilateralConfig as nt, ConcurrentModificationError as o, serializeCanonicalJson as on, DateAttribute as ot, NotImplementedError as p, evaluateComputedFormula as pn, Location as pt, isValidationError as q, hasOptions as qt, AttributeNotFoundError as r, NonJsonValueError as rn, CheckboxAttribute as rt, DestructiveSyncNotAllowedError as s, serializeStableJson as sn, DateFormat as st, AccessDeniedError as t, generateId as tn, BaseAttribute as tt, MemoryNotFoundError as u, ComputedFunctionMetadata as un, DocumentAttribute as ut, ProtectedRoleError as v, inferRollupReturnType as vn, NumberAttribute as vt, RecordReferencedError as w, ComputedDependencyGraphNode as wn, RelationAttribute as wt, RealtimeSubscriptionError as x, ComputedCompileAttribute as xn, Phone as xt, RealtimeDeliveryError as y, rollupToFormulaExpression as yn, NumberUnit as yt, ValidationError as z, ComputedFormulaAstNode as zn, isAttributeSortable as zt };
@@ -1,3 +1,3 @@
1
1
 
2
- import { A as StorageError, B as isObjectReferencedError, C as RepositoryOperation, D as SchemaErrorCode, E as SchemaError, F as SystemEntityImmutableError, H as isRecordReferencedError, I as ValidationError, L as ValidationErrorDetail, M as SyncCascadeError, N as SyncConflictError, O as SchemaPlanNotFoundError, P as SyncError, R as isAttributeInUseError, S as RepositoryError, T as RoleNotFoundError, U as isSchemaError, V as isProtectedResourceError, W as isValidationError, _ as ProtectedResourceError, a as ChangeTypeNotSupportedError, b as RecordReference, c as DuplicateError, d as MigrationTimeoutError, f as NotFoundError, g as OrphanSystemAttributeError, h as ObjectReferencedError, i as AttributeUsage, j as StorageOperation, k as SearchBackendError, l as ForbiddenError, m as ObjectNotFoundError, n as AttributeInUseError, o as ConcurrentModificationError, p as NotImplementedError, r as AttributeNotFoundError, s as DestructiveSyncNotAllowedError, t as AccessDeniedError, u as MemoryNotFoundError, v as ProtectedRoleError, w as ReservedObjectNameError, x as RecordReferencedError, y as RecordNotFoundError, z as isNotFoundError } from "./exceptions-BCfkN2ct.mjs";
3
- export { AccessDeniedError, AttributeInUseError, AttributeNotFoundError, AttributeUsage, ChangeTypeNotSupportedError, ConcurrentModificationError, DestructiveSyncNotAllowedError, DuplicateError, ForbiddenError, MemoryNotFoundError, MigrationTimeoutError, NotFoundError, NotImplementedError, ObjectNotFoundError, ObjectReferencedError, OrphanSystemAttributeError, ProtectedResourceError, ProtectedRoleError, RecordNotFoundError, RecordReference, RecordReferencedError, RepositoryError, RepositoryOperation, ReservedObjectNameError, RoleNotFoundError, SchemaError, SchemaErrorCode, SchemaPlanNotFoundError, SearchBackendError, StorageError, StorageOperation, SyncCascadeError, SyncConflictError, SyncError, SystemEntityImmutableError, ValidationError, ValidationErrorDetail, isAttributeInUseError, isNotFoundError, isObjectReferencedError, isProtectedResourceError, isRecordReferencedError, isSchemaError, isValidationError };
2
+ import { A as SchemaErrorCode, B as ValidationErrorDetail, C as RecordReference, D as ReservedObjectNameError, E as RepositoryOperation, F as SyncCascadeError, G as isRecordReferencedError, H as isNotFoundError, I as SyncConflictError, K as isSchemaError, L as SyncError, M as SearchBackendError, N as StorageError, O as RoleNotFoundError, P as StorageOperation, R as SystemEntityImmutableError, S as RecordNotFoundError, T as RepositoryError, U as isObjectReferencedError, V as isAttributeInUseError, W as isProtectedResourceError, _ as ProtectedResourceError, a as ChangeTypeNotSupportedError, b as RealtimeRateLimitedError, c as DuplicateError, d as MigrationTimeoutError, f as NotFoundError, g as OrphanSystemAttributeError, h as ObjectReferencedError, i as AttributeUsage, j as SchemaPlanNotFoundError, k as SchemaError, l as ForbiddenError, m as ObjectNotFoundError, n as AttributeInUseError, o as ConcurrentModificationError, p as NotImplementedError, q as isValidationError, r as AttributeNotFoundError, s as DestructiveSyncNotAllowedError, t as AccessDeniedError, u as MemoryNotFoundError, v as ProtectedRoleError, w as RecordReferencedError, x as RealtimeSubscriptionError, y as RealtimeDeliveryError, z as ValidationError } from "./exceptions-Bon8Edct.mjs";
3
+ export { AccessDeniedError, AttributeInUseError, AttributeNotFoundError, AttributeUsage, ChangeTypeNotSupportedError, ConcurrentModificationError, DestructiveSyncNotAllowedError, DuplicateError, ForbiddenError, MemoryNotFoundError, MigrationTimeoutError, NotFoundError, NotImplementedError, ObjectNotFoundError, ObjectReferencedError, OrphanSystemAttributeError, ProtectedResourceError, ProtectedRoleError, RealtimeDeliveryError, RealtimeRateLimitedError, RealtimeSubscriptionError, RecordNotFoundError, RecordReference, RecordReferencedError, RepositoryError, RepositoryOperation, ReservedObjectNameError, RoleNotFoundError, SchemaError, SchemaErrorCode, SchemaPlanNotFoundError, SearchBackendError, StorageError, StorageOperation, SyncCascadeError, SyncConflictError, SyncError, SystemEntityImmutableError, ValidationError, ValidationErrorDetail, isAttributeInUseError, isNotFoundError, isObjectReferencedError, isProtectedResourceError, isRecordReferencedError, isSchemaError, isValidationError };
@@ -1,3 +1,3 @@
1
1
 
2
- import { A as StorageError, B as isObjectReferencedError, C as RepositoryOperation, D as SchemaErrorCode, E as SchemaError, F as SystemEntityImmutableError, H as isRecordReferencedError, I as ValidationError, L as ValidationErrorDetail, M as SyncCascadeError, N as SyncConflictError, O as SchemaPlanNotFoundError, P as SyncError, R as isAttributeInUseError, S as RepositoryError, T as RoleNotFoundError, U as isSchemaError, V as isProtectedResourceError, W as isValidationError, _ as ProtectedResourceError, a as ChangeTypeNotSupportedError, b as RecordReference, c as DuplicateError, d as MigrationTimeoutError, f as NotFoundError, g as OrphanSystemAttributeError, h as ObjectReferencedError, i as AttributeUsage, j as StorageOperation, k as SearchBackendError, l as ForbiddenError, m as ObjectNotFoundError, n as AttributeInUseError, o as ConcurrentModificationError, p as NotImplementedError, r as AttributeNotFoundError, s as DestructiveSyncNotAllowedError, t as AccessDeniedError, u as MemoryNotFoundError, v as ProtectedRoleError, w as ReservedObjectNameError, x as RecordReferencedError, y as RecordNotFoundError, z as isNotFoundError } from "./exceptions-BCfkN2ct.js";
3
- export { AccessDeniedError, AttributeInUseError, AttributeNotFoundError, AttributeUsage, ChangeTypeNotSupportedError, ConcurrentModificationError, DestructiveSyncNotAllowedError, DuplicateError, ForbiddenError, MemoryNotFoundError, MigrationTimeoutError, NotFoundError, NotImplementedError, ObjectNotFoundError, ObjectReferencedError, OrphanSystemAttributeError, ProtectedResourceError, ProtectedRoleError, RecordNotFoundError, RecordReference, RecordReferencedError, RepositoryError, RepositoryOperation, ReservedObjectNameError, RoleNotFoundError, SchemaError, SchemaErrorCode, SchemaPlanNotFoundError, SearchBackendError, StorageError, StorageOperation, SyncCascadeError, SyncConflictError, SyncError, SystemEntityImmutableError, ValidationError, ValidationErrorDetail, isAttributeInUseError, isNotFoundError, isObjectReferencedError, isProtectedResourceError, isRecordReferencedError, isSchemaError, isValidationError };
2
+ import { A as SchemaErrorCode, B as ValidationErrorDetail, C as RecordReference, D as ReservedObjectNameError, E as RepositoryOperation, F as SyncCascadeError, G as isRecordReferencedError, H as isNotFoundError, I as SyncConflictError, K as isSchemaError, L as SyncError, M as SearchBackendError, N as StorageError, O as RoleNotFoundError, P as StorageOperation, R as SystemEntityImmutableError, S as RecordNotFoundError, T as RepositoryError, U as isObjectReferencedError, V as isAttributeInUseError, W as isProtectedResourceError, _ as ProtectedResourceError, a as ChangeTypeNotSupportedError, b as RealtimeRateLimitedError, c as DuplicateError, d as MigrationTimeoutError, f as NotFoundError, g as OrphanSystemAttributeError, h as ObjectReferencedError, i as AttributeUsage, j as SchemaPlanNotFoundError, k as SchemaError, l as ForbiddenError, m as ObjectNotFoundError, n as AttributeInUseError, o as ConcurrentModificationError, p as NotImplementedError, q as isValidationError, r as AttributeNotFoundError, s as DestructiveSyncNotAllowedError, t as AccessDeniedError, u as MemoryNotFoundError, v as ProtectedRoleError, w as RecordReferencedError, x as RealtimeSubscriptionError, y as RealtimeDeliveryError, z as ValidationError } from "./exceptions-Bon8Edct.js";
3
+ export { AccessDeniedError, AttributeInUseError, AttributeNotFoundError, AttributeUsage, ChangeTypeNotSupportedError, ConcurrentModificationError, DestructiveSyncNotAllowedError, DuplicateError, ForbiddenError, MemoryNotFoundError, MigrationTimeoutError, NotFoundError, NotImplementedError, ObjectNotFoundError, ObjectReferencedError, OrphanSystemAttributeError, ProtectedResourceError, ProtectedRoleError, RealtimeDeliveryError, RealtimeRateLimitedError, RealtimeSubscriptionError, RecordNotFoundError, RecordReference, RecordReferencedError, RepositoryError, RepositoryOperation, ReservedObjectNameError, RoleNotFoundError, SchemaError, SchemaErrorCode, SchemaPlanNotFoundError, SearchBackendError, StorageError, StorageOperation, SyncCascadeError, SyncConflictError, SyncError, SystemEntityImmutableError, ValidationError, ValidationErrorDetail, isAttributeInUseError, isNotFoundError, isObjectReferencedError, isProtectedResourceError, isRecordReferencedError, isSchemaError, isValidationError };