@objectstack/spec 1.0.10 → 1.0.12

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 (147) hide show
  1. package/README.md +41 -1
  2. package/dist/ai/index.d.mts +2 -1
  3. package/dist/ai/index.d.ts +2 -1
  4. package/dist/ai/index.js +2047 -1944
  5. package/dist/ai/index.js.map +1 -1
  6. package/dist/ai/index.mjs +2047 -1944
  7. package/dist/ai/index.mjs.map +1 -1
  8. package/dist/api/index.d.mts +3 -1
  9. package/dist/api/index.d.ts +3 -1
  10. package/dist/api/index.js +2599 -2292
  11. package/dist/api/index.js.map +1 -1
  12. package/dist/api/index.mjs +2587 -2292
  13. package/dist/api/index.mjs.map +1 -1
  14. package/dist/automation/index.d.mts +2 -1
  15. package/dist/automation/index.d.ts +2 -1
  16. package/dist/automation/index.js +83 -0
  17. package/dist/automation/index.js.map +1 -1
  18. package/dist/automation/index.mjs +77 -0
  19. package/dist/automation/index.mjs.map +1 -1
  20. package/dist/contracts/index.d.mts +3 -2
  21. package/dist/contracts/index.d.ts +3 -2
  22. package/dist/data/index.d.mts +3 -2
  23. package/dist/data/index.d.ts +3 -2
  24. package/dist/data/index.js +658 -556
  25. package/dist/data/index.js.map +1 -1
  26. package/dist/data/index.mjs +656 -556
  27. package/dist/data/index.mjs.map +1 -1
  28. package/dist/{driver.zod-lfi00zVT.d.ts → driver.zod-CfGk9GYh.d.ts} +2164 -11
  29. package/dist/{driver.zod-BOM_Etco.d.mts → driver.zod-y1cX6R3c.d.mts} +2164 -11
  30. package/dist/hub/index.d.mts +1 -1
  31. package/dist/hub/index.d.ts +1 -1
  32. package/dist/hub/index.js +789 -724
  33. package/dist/hub/index.js.map +1 -1
  34. package/dist/hub/index.mjs +789 -724
  35. package/dist/hub/index.mjs.map +1 -1
  36. package/dist/{index-C67cfwmW.d.ts → index-B0Hf65bV.d.ts} +13 -5
  37. package/dist/{index-DLcySG7U.d.ts → index-B5pKM0My.d.ts} +335 -4370
  38. package/dist/{index-Os7lItRe.d.mts → index-BA022mg2.d.ts} +6178 -129
  39. package/dist/{index-B5-VbOKg.d.mts → index-BGeLoH2z.d.ts} +4251 -74
  40. package/dist/{index-CH5zloR3.d.ts → index-BwO__aqV.d.ts} +1 -1
  41. package/dist/{index-Dp7GFJ8V.d.mts → index-Cia3JPQ8.d.mts} +13 -5
  42. package/dist/{index-D12rNohm.d.mts → index-CpD1q1FP.d.ts} +35 -18
  43. package/dist/{index-Os7lItRe.d.ts → index-D5RSFPuB.d.mts} +6178 -129
  44. package/dist/{index-CU4m6noq.d.mts → index-DGjpaj0X.d.mts} +1 -1
  45. package/dist/{index-D12rNohm.d.ts → index-Dfn5VXl6.d.mts} +35 -18
  46. package/dist/{index-l6WIlmOD.d.mts → index-Dgybxlky.d.mts} +177 -158
  47. package/dist/{index-l6WIlmOD.d.ts → index-Dgybxlky.d.ts} +177 -158
  48. package/dist/{index-DLcySG7U.d.mts → index-Dpsk8PF4.d.mts} +335 -4370
  49. package/dist/{index-CyognKSZ.d.ts → index-DrNah5E0.d.ts} +1952 -6990
  50. package/dist/{index-DE_lJ11p.d.mts → index-OO84R20k.d.mts} +1952 -6990
  51. package/dist/{index-B5-VbOKg.d.ts → index-upA3Xt04.d.mts} +4251 -74
  52. package/dist/index.d.mts +8072 -1922
  53. package/dist/index.d.ts +8072 -1922
  54. package/dist/index.js +8563 -8249
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.mjs +8563 -8249
  57. package/dist/index.mjs.map +1 -1
  58. package/dist/integration/index.d.mts +1 -1
  59. package/dist/integration/index.d.ts +1 -1
  60. package/dist/kernel/index.d.mts +2 -1
  61. package/dist/kernel/index.d.ts +2 -1
  62. package/dist/kernel/index.js +884 -684
  63. package/dist/kernel/index.js.map +1 -1
  64. package/dist/kernel/index.mjs +870 -684
  65. package/dist/kernel/index.mjs.map +1 -1
  66. package/dist/package-registry.zod-JMcOYNxM.d.mts +21119 -0
  67. package/dist/package-registry.zod-JMcOYNxM.d.ts +21119 -0
  68. package/dist/state-machine.zod-B-lFFSxQ.d.mts +285 -0
  69. package/dist/state-machine.zod-B-lFFSxQ.d.ts +285 -0
  70. package/dist/system/index.d.mts +2 -1
  71. package/dist/system/index.d.ts +2 -1
  72. package/dist/system/index.js +749 -651
  73. package/dist/system/index.js.map +1 -1
  74. package/dist/system/index.mjs +749 -651
  75. package/dist/system/index.mjs.map +1 -1
  76. package/dist/ui/index.d.mts +1 -1
  77. package/dist/ui/index.d.ts +1 -1
  78. package/json-schema/ai/Agent.json +499 -0
  79. package/json-schema/ai/DevOpsAgent.json +499 -0
  80. package/json-schema/ai/FeedbackLoop.json +2188 -186
  81. package/json-schema/ai/Resolution.json +2188 -186
  82. package/json-schema/api/ApiRoutes.json +4 -0
  83. package/json-schema/api/CompileManifestResponse.json +40 -10
  84. package/json-schema/api/DisablePackageRequest.json +18 -0
  85. package/json-schema/api/DisablePackageResponse.json +1521 -0
  86. package/json-schema/api/Discovery.json +4 -0
  87. package/json-schema/api/EnablePackageRequest.json +18 -0
  88. package/json-schema/api/EnablePackageResponse.json +1521 -0
  89. package/json-schema/api/GetDiscoveryResponse.json +4 -0
  90. package/json-schema/api/GetPackageRequest.json +18 -0
  91. package/json-schema/api/GetPackageResponse.json +1518 -0
  92. package/json-schema/api/InstallPackageRequest.json +1483 -0
  93. package/json-schema/api/InstallPackageResponse.json +1521 -0
  94. package/json-schema/api/ListPackagesRequest.json +42 -0
  95. package/json-schema/api/ListPackagesResponse.json +1525 -0
  96. package/json-schema/api/ObjectDefinitionResponse.json +1001 -0
  97. package/json-schema/api/ObjectStackProtocol.json +86 -1
  98. package/json-schema/api/RestApiConfig.json +5 -0
  99. package/json-schema/api/RestServerConfig.json +5 -0
  100. package/json-schema/api/UninstallPackageRequest.json +18 -0
  101. package/json-schema/api/UninstallPackageResponse.json +25 -0
  102. package/json-schema/automation/ActionRef.json +30 -0
  103. package/json-schema/automation/Event.json +24 -0
  104. package/json-schema/automation/Flow.json +1 -0
  105. package/json-schema/automation/FlowNode.json +1 -0
  106. package/json-schema/automation/FlowNodeAction.json +1 -0
  107. package/json-schema/automation/GuardRef.json +30 -0
  108. package/json-schema/automation/StateMachine.json +504 -0
  109. package/json-schema/automation/StateNode.json +324 -0
  110. package/json-schema/automation/Transition.json +73 -0
  111. package/json-schema/data/Object.json +1001 -0
  112. package/json-schema/data/ObjectExtension.json +2376 -0
  113. package/json-schema/data/ObjectOwnershipEnum.json +13 -0
  114. package/json-schema/hub/ComposerResponse.json +40 -10
  115. package/json-schema/kernel/DisablePackageRequest.json +18 -0
  116. package/json-schema/kernel/DisablePackageResponse.json +1521 -0
  117. package/json-schema/kernel/EnablePackageRequest.json +18 -0
  118. package/json-schema/kernel/EnablePackageResponse.json +1521 -0
  119. package/json-schema/kernel/EventBusConfig.json +15 -0
  120. package/json-schema/kernel/EventHandler.json +6 -0
  121. package/json-schema/kernel/EventPersistence.json +3 -0
  122. package/json-schema/kernel/EventRoute.json +3 -0
  123. package/json-schema/kernel/EventWebhookConfig.json +3 -0
  124. package/json-schema/kernel/GetPackageRequest.json +18 -0
  125. package/json-schema/kernel/GetPackageResponse.json +1518 -0
  126. package/json-schema/kernel/InstallPackageRequest.json +1483 -0
  127. package/json-schema/kernel/InstallPackageResponse.json +1521 -0
  128. package/json-schema/kernel/InstalledPackage.json +1509 -0
  129. package/json-schema/kernel/ListPackagesRequest.json +42 -0
  130. package/json-schema/kernel/ListPackagesResponse.json +1525 -0
  131. package/json-schema/kernel/Manifest.json +40 -10
  132. package/json-schema/kernel/PackageStatusEnum.json +16 -0
  133. package/json-schema/kernel/Plugin.json +5 -0
  134. package/json-schema/kernel/PluginContext.json +31 -7
  135. package/json-schema/kernel/PluginLifecycle.json +7 -1
  136. package/json-schema/kernel/RealTimeNotificationConfig.json +3 -0
  137. package/json-schema/kernel/UninstallPackageRequest.json +18 -0
  138. package/json-schema/kernel/UninstallPackageResponse.json +25 -0
  139. package/json-schema/system/ChangeSet.json +2188 -186
  140. package/json-schema/system/CreateObjectOperation.json +1001 -0
  141. package/json-schema/system/MigrationOperation.json +1001 -0
  142. package/package.json +29 -15
  143. package/prompts/create-new-project.md +37 -19
  144. package/dist/{index-I3piy4U4.d.mts → index-BmU_sD1f.d.mts} +8 -8
  145. package/dist/{index-CkhpsEUw.d.ts → index-BnXuc_HO.d.ts} +8 -8
  146. package/dist/{index-CIDI-8zR.d.mts → index-C_NTOcet.d.mts} +98 -98
  147. package/dist/{index-CIDI-8zR.d.ts → index-C_NTOcet.d.ts} +98 -98
@@ -1,8 +1,8 @@
1
1
  // src/hub/composer.zod.ts
2
- import { z as z5 } from "zod";
2
+ import { z as z6 } from "zod";
3
3
 
4
4
  // src/kernel/manifest.zod.ts
5
- import { z as z4 } from "zod";
5
+ import { z as z5 } from "zod";
6
6
 
7
7
  // src/kernel/plugin-capability.zod.ts
8
8
  import { z } from "zod";
@@ -821,48 +821,48 @@ var PluginLoadingStateSchema = z2.object({
821
821
  import { z as z3 } from "zod";
822
822
  var PluginContextSchema = z3.object({
823
823
  ql: z3.object({
824
- object: z3.function().returns(z3.any()),
824
+ object: z3.any(),
825
825
  // Return any to allow method chaining
826
- query: z3.function().returns(z3.any())
826
+ query: z3.any()
827
827
  }).passthrough().describe("ObjectQL Engine Interface"),
828
828
  os: z3.object({
829
- getCurrentUser: z3.function().returns(z3.any()),
830
- getConfig: z3.function().returns(z3.any())
829
+ getCurrentUser: z3.any(),
830
+ getConfig: z3.any()
831
831
  }).passthrough().describe("ObjectStack Kernel Interface"),
832
832
  logger: z3.object({
833
- debug: z3.function().returns(z3.void()),
834
- info: z3.function().returns(z3.void()),
835
- warn: z3.function().returns(z3.void()),
836
- error: z3.function().returns(z3.void())
833
+ debug: z3.any(),
834
+ info: z3.any(),
835
+ warn: z3.any(),
836
+ error: z3.any()
837
837
  }).passthrough().describe("Logger Interface"),
838
838
  storage: z3.object({
839
- get: z3.function().returns(z3.any()),
840
- set: z3.function().returns(z3.promise(z3.void())),
841
- delete: z3.function().returns(z3.promise(z3.void()))
839
+ get: z3.any(),
840
+ set: z3.any(),
841
+ delete: z3.any()
842
842
  }).passthrough().describe("Storage Interface"),
843
843
  i18n: z3.object({
844
- t: z3.function().returns(z3.string()),
845
- getLocale: z3.function().returns(z3.string())
844
+ t: z3.any(),
845
+ getLocale: z3.any()
846
846
  }).passthrough().describe("Internationalization Interface"),
847
847
  metadata: z3.record(z3.string(), z3.any()),
848
848
  events: z3.record(z3.string(), z3.any()),
849
849
  app: z3.object({
850
850
  router: z3.object({
851
- get: z3.function().returns(z3.any()),
852
- post: z3.function().returns(z3.any()),
853
- use: z3.function().returns(z3.any())
851
+ get: z3.any(),
852
+ post: z3.any(),
853
+ use: z3.any()
854
854
  }).passthrough()
855
855
  }).passthrough().describe("App Framework Interface"),
856
856
  drivers: z3.object({
857
- register: z3.function().returns(z3.void())
857
+ register: z3.any()
858
858
  }).passthrough().describe("Driver Registry")
859
859
  });
860
860
  var PluginLifecycleSchema = z3.object({
861
- onInstall: z3.function().args(PluginContextSchema).returns(z3.promise(z3.void())).optional(),
862
- onEnable: z3.function().args(PluginContextSchema).returns(z3.promise(z3.void())).optional(),
863
- onDisable: z3.function().args(PluginContextSchema).returns(z3.promise(z3.void())).optional(),
864
- onUninstall: z3.function().args(PluginContextSchema).returns(z3.promise(z3.void())).optional(),
865
- onUpgrade: z3.function().args(PluginContextSchema, z3.string(), z3.string()).returns(z3.promise(z3.void())).optional()
861
+ onInstall: z3.any().optional(),
862
+ onEnable: z3.any().optional(),
863
+ onDisable: z3.any().optional(),
864
+ onUninstall: z3.any().optional(),
865
+ onUpgrade: z3.any().optional()
866
866
  });
867
867
  var CORE_PLUGIN_TYPES = [
868
868
  "ui",
@@ -896,8 +896,53 @@ var PluginSchema = PluginLifecycleSchema.extend({
896
896
  homepage: z3.string().url().optional()
897
897
  });
898
898
 
899
+ // src/data/dataset.zod.ts
900
+ import { z as z4 } from "zod";
901
+ var DatasetMode = z4.enum([
902
+ "insert",
903
+ // Try to insert, fail on duplicate
904
+ "update",
905
+ // Only update found records, ignore new
906
+ "upsert",
907
+ // Create new or Update existing (Standard)
908
+ "replace",
909
+ // Delete ALL records in object then insert (Dangerous - use for cache tables)
910
+ "ignore"
911
+ // Try to insert, silently skip duplicates
912
+ ]);
913
+ var DatasetSchema = z4.object({
914
+ /**
915
+ * Target Object
916
+ * The machine name of the object to populate.
917
+ */
918
+ object: z4.string().regex(/^[a-z_][a-z0-9_]*$/).describe("Target Object Name"),
919
+ /**
920
+ * Idempotency Key (The "Upsert" Key)
921
+ * The field used to check if a record already exists.
922
+ * Best Practice: Use a natural key like 'code', 'slug', 'username' or 'external_id'.
923
+ * Standard: '_id' (internal ID) is rarely used for portable seed data.
924
+ */
925
+ externalId: z4.string().default("name").describe("Field match for uniqueness check"),
926
+ /**
927
+ * Import Strategy
928
+ */
929
+ mode: DatasetMode.default("upsert").describe("Conflict resolution strategy"),
930
+ /**
931
+ * Environment Scope
932
+ * - 'all': Always load
933
+ * - 'dev': Only for development/demo
934
+ * - 'test': Only for CI/CD tests
935
+ */
936
+ env: z4.array(z4.enum(["prod", "dev", "test"])).default(["prod", "dev", "test"]).describe("Applicable environments"),
937
+ /**
938
+ * The Payload
939
+ * Array of raw JSON objects matching the Object Schema.
940
+ */
941
+ records: z4.array(z4.record(z4.string(), z4.any())).describe("Data records")
942
+ });
943
+
899
944
  // src/kernel/manifest.zod.ts
900
- var ManifestSchema = z4.object({
945
+ var ManifestSchema = z5.object({
901
946
  /**
902
947
  * Unique package identifier using reverse domain notation.
903
948
  * Must be unique across the entire ecosystem.
@@ -905,14 +950,30 @@ var ManifestSchema = z4.object({
905
950
  * @example "com.steedos.crm"
906
951
  * @example "org.apache.superset"
907
952
  */
908
- id: z4.string().describe("Unique package identifier (reverse domain style)"),
953
+ id: z5.string().describe("Unique package identifier (reverse domain style)"),
954
+ /**
955
+ * Short namespace identifier for metadata scoping.
956
+ * Used as a prefix for objects and other metadata to prevent naming collisions
957
+ * across packages from different vendors.
958
+ *
959
+ * Rules:
960
+ * - 2-20 characters, lowercase letters, digits, and underscores only.
961
+ * - Must be unique within a running instance.
962
+ * - Platform-reserved namespaces (no prefix applied): "base", "system".
963
+ * - FQN (Fully Qualified Name) = `{namespace}__{short_name}` (double underscore separator).
964
+ *
965
+ * @example "crm" → objects become crm__account, crm__deal
966
+ * @example "todo" → objects become todo__task
967
+ * @example "base" → objects keep short name (platform reserved)
968
+ */
969
+ namespace: z5.string().regex(/^[a-z][a-z0-9_]{1,19}$/, "Namespace must be 2-20 chars, lowercase alphanumeric + underscore").optional().describe('Short namespace identifier for metadata scoping (e.g. "crm", "todo")'),
909
970
  /**
910
971
  * Package version following semantic versioning (major.minor.patch).
911
972
  *
912
973
  * @example "1.0.0"
913
974
  * @example "2.1.0-beta.1"
914
975
  */
915
- version: z4.string().regex(/^\d+\.\d+\.\d+$/).describe("Package version (semantic versioning)"),
976
+ version: z5.string().regex(/^\d+\.\d+\.\d+$/).describe("Package version (semantic versioning)"),
916
977
  /**
917
978
  * Type of the package in the ObjectStack ecosystem.
918
979
  * - plugin: General-purpose functionality extension (Runtime: standard)
@@ -926,7 +987,7 @@ var ManifestSchema = z4.object({
926
987
  * - objectql: Core engine
927
988
  * - adapter: Host adapter (Express, Fastify)
928
989
  */
929
- type: z4.enum([
990
+ type: z5.enum([
930
991
  "plugin",
931
992
  ...CORE_PLUGIN_TYPES,
932
993
  "module",
@@ -940,40 +1001,40 @@ var ManifestSchema = z4.object({
940
1001
  *
941
1002
  * @example "Project Management"
942
1003
  */
943
- name: z4.string().describe("Human-readable package name"),
1004
+ name: z5.string().describe("Human-readable package name"),
944
1005
  /**
945
1006
  * Brief description of the package functionality.
946
1007
  * Displayed in the marketplace and plugin manager.
947
1008
  */
948
- description: z4.string().optional().describe("Package description"),
1009
+ description: z5.string().optional().describe("Package description"),
949
1010
  /**
950
1011
  * Array of permission strings that the package requires.
951
1012
  * These form the "Scope" requested by the package at installation.
952
1013
  *
953
1014
  * @example ["system.user.read", "system.data.write"]
954
1015
  */
955
- permissions: z4.array(z4.string()).optional().describe("Array of required permission strings"),
1016
+ permissions: z5.array(z5.string()).optional().describe("Array of required permission strings"),
956
1017
  /**
957
1018
  * Glob patterns specifying ObjectQL schemas files.
958
1019
  * Matches `*.object.yml` or `*.object.ts` files to load business objects.
959
1020
  *
960
1021
  * @example ["./src/objects/*.object.yml"]
961
1022
  */
962
- objects: z4.array(z4.string()).optional().describe("Glob patterns for ObjectQL schemas files"),
1023
+ objects: z5.array(z5.string()).optional().describe("Glob patterns for ObjectQL schemas files"),
963
1024
  /**
964
1025
  * Defines system level DataSources.
965
1026
  * Matches `*.datasource.yml` files.
966
1027
  *
967
1028
  * @example ["./src/datasources/*.datasource.mongo.yml"]
968
1029
  */
969
- datasources: z4.array(z4.string()).optional().describe("Glob patterns for Datasource definitions"),
1030
+ datasources: z5.array(z5.string()).optional().describe("Glob patterns for Datasource definitions"),
970
1031
  /**
971
1032
  * Package Dependencies.
972
1033
  * Map of package IDs to version requirements.
973
1034
  *
974
1035
  * @example { "@steedos/plugin-auth": "^2.0.0" }
975
1036
  */
976
- dependencies: z4.record(z4.string(), z4.string()).optional().describe("Package dependencies"),
1037
+ dependencies: z5.record(z5.string(), z5.string()).optional().describe("Package dependencies"),
977
1038
  /**
978
1039
  * Plugin Configuration Schema.
979
1040
  * Defines the settings this plugin exposes to the user via UI/ENV.
@@ -988,110 +1049,114 @@ var ManifestSchema = z4.object({
988
1049
  * }
989
1050
  * }
990
1051
  */
991
- configuration: z4.object({
992
- title: z4.string().optional(),
993
- properties: z4.record(z4.string(), z4.object({
994
- type: z4.enum(["string", "number", "boolean", "array", "object"]).describe("Data type of the setting"),
995
- default: z4.any().optional().describe("Default value"),
996
- description: z4.string().optional().describe("Tooltip description"),
997
- required: z4.boolean().optional().describe("Is this setting required?"),
998
- secret: z4.boolean().optional().describe("If true, value is encrypted/masked (e.g. API Keys)"),
999
- enum: z4.array(z4.string()).optional().describe("Allowed values for select inputs")
1052
+ configuration: z5.object({
1053
+ title: z5.string().optional(),
1054
+ properties: z5.record(z5.string(), z5.object({
1055
+ type: z5.enum(["string", "number", "boolean", "array", "object"]).describe("Data type of the setting"),
1056
+ default: z5.any().optional().describe("Default value"),
1057
+ description: z5.string().optional().describe("Tooltip description"),
1058
+ required: z5.boolean().optional().describe("Is this setting required?"),
1059
+ secret: z5.boolean().optional().describe("If true, value is encrypted/masked (e.g. API Keys)"),
1060
+ enum: z5.array(z5.string()).optional().describe("Allowed values for select inputs")
1000
1061
  })).describe("Map of configuration keys to their definitions")
1001
1062
  }).optional().describe("Plugin configuration settings"),
1002
1063
  /**
1003
1064
  * Contribution Points (VS Code Style).
1004
1065
  * formalized way to extend the platform capabilities.
1005
1066
  */
1006
- contributes: z4.object({
1067
+ contributes: z5.object({
1007
1068
  /**
1008
1069
  * Register new Metadata Kinds (CRDs).
1009
1070
  * Enables the system to parse and validate new file types.
1010
1071
  * Example: Registering a BI plugin to handle *.report.ts
1011
1072
  */
1012
- kinds: z4.array(z4.object({
1013
- id: z4.string().describe('The generic identifier of the kind (e.g., "sys.bi.report")'),
1014
- globs: z4.array(z4.string()).describe('File patterns to watch (e.g., ["**/*.report.ts"])'),
1015
- description: z4.string().optional().describe("Description of what this kind represents")
1073
+ kinds: z5.array(z5.object({
1074
+ id: z5.string().describe('The generic identifier of the kind (e.g., "sys.bi.report")'),
1075
+ globs: z5.array(z5.string()).describe('File patterns to watch (e.g., ["**/*.report.ts"])'),
1076
+ description: z5.string().optional().describe("Description of what this kind represents")
1016
1077
  })).optional().describe("New Metadata Types to recognize"),
1017
1078
  /**
1018
1079
  * Register System Hooks.
1019
1080
  * Declares that this plugin listens to specific system events.
1020
1081
  */
1021
- events: z4.array(z4.string()).optional().describe("Events this plugin listens to"),
1082
+ events: z5.array(z5.string()).optional().describe("Events this plugin listens to"),
1022
1083
  /**
1023
1084
  * Register UI Menus.
1024
1085
  */
1025
- menus: z4.record(z4.string(), z4.array(z4.object({
1026
- id: z4.string(),
1027
- label: z4.string(),
1028
- command: z4.string().optional()
1086
+ menus: z5.record(z5.string(), z5.array(z5.object({
1087
+ id: z5.string(),
1088
+ label: z5.string(),
1089
+ command: z5.string().optional()
1029
1090
  }))).optional().describe("UI Menu contributions"),
1030
1091
  /**
1031
1092
  * Register Custom Themes.
1032
1093
  */
1033
- themes: z4.array(z4.object({
1034
- id: z4.string(),
1035
- label: z4.string(),
1036
- path: z4.string()
1094
+ themes: z5.array(z5.object({
1095
+ id: z5.string(),
1096
+ label: z5.string(),
1097
+ path: z5.string()
1037
1098
  })).optional().describe("Theme contributions"),
1038
1099
  /**
1039
1100
  * Register Translations.
1040
1101
  * Path to translation files (e.g. "locales/en.json").
1041
1102
  */
1042
- translations: z4.array(z4.object({
1043
- locale: z4.string(),
1044
- path: z4.string()
1103
+ translations: z5.array(z5.object({
1104
+ locale: z5.string(),
1105
+ path: z5.string()
1045
1106
  })).optional().describe("Translation resources"),
1046
1107
  /**
1047
1108
  * Register Server Actions.
1048
1109
  * Invocable functions exposed to Flows or API.
1049
1110
  */
1050
- actions: z4.array(z4.object({
1051
- name: z4.string().describe("Unique action name"),
1052
- label: z4.string().optional(),
1053
- description: z4.string().optional(),
1054
- input: z4.any().optional().describe("Input validation schema"),
1055
- output: z4.any().optional().describe("Output schema")
1111
+ actions: z5.array(z5.object({
1112
+ name: z5.string().describe("Unique action name"),
1113
+ label: z5.string().optional(),
1114
+ description: z5.string().optional(),
1115
+ input: z5.any().optional().describe("Input validation schema"),
1116
+ output: z5.any().optional().describe("Output schema")
1056
1117
  })).optional().describe("Exposed server actions"),
1057
1118
  /**
1058
1119
  * Register Storage Drivers.
1059
1120
  * Enables connecting to new types of datasources.
1060
1121
  */
1061
- drivers: z4.array(z4.object({
1062
- id: z4.string().describe('Driver unique identifier (e.g. "postgres", "mongo")'),
1063
- label: z4.string().describe("Human readable name"),
1064
- description: z4.string().optional()
1122
+ drivers: z5.array(z5.object({
1123
+ id: z5.string().describe('Driver unique identifier (e.g. "postgres", "mongo")'),
1124
+ label: z5.string().describe("Human readable name"),
1125
+ description: z5.string().optional()
1065
1126
  })).optional().describe("Driver contributions"),
1066
1127
  /**
1067
1128
  * Register Custom Field Types.
1068
1129
  * Extends the data model with new widget types.
1069
1130
  */
1070
- fieldTypes: z4.array(z4.object({
1071
- name: z4.string().describe('Unique field type name (e.g. "vector")'),
1072
- label: z4.string().describe("Display label"),
1073
- description: z4.string().optional()
1131
+ fieldTypes: z5.array(z5.object({
1132
+ name: z5.string().describe('Unique field type name (e.g. "vector")'),
1133
+ label: z5.string().describe("Display label"),
1134
+ description: z5.string().optional()
1074
1135
  })).optional().describe("Field Type contributions"),
1075
1136
  /**
1076
1137
  * Register Custom Query Operators/Functions.
1077
1138
  * Extends ObjectQL with new functions (e.g. distance()).
1078
1139
  */
1079
- functions: z4.array(z4.object({
1080
- name: z4.string().describe('Function name (e.g. "distance")'),
1081
- description: z4.string().optional(),
1082
- args: z4.array(z4.string()).optional().describe("Argument types"),
1083
- returnType: z4.string().optional()
1140
+ functions: z5.array(z5.object({
1141
+ name: z5.string().describe('Function name (e.g. "distance")'),
1142
+ description: z5.string().optional(),
1143
+ args: z5.array(z5.string()).optional().describe("Argument types"),
1144
+ returnType: z5.string().optional()
1084
1145
  })).optional().describe("Query Function contributions")
1085
1146
  }).optional().describe("Platform contributions"),
1086
1147
  /**
1087
1148
  * Initial data seeding configuration.
1088
1149
  * Defines default records to be inserted when the package is installed.
1150
+ *
1151
+ * Uses the standard DatasetSchema which supports idempotent upsert via
1152
+ * `externalId`, environment scoping via `env`, and multiple conflict
1153
+ * resolution modes.
1154
+ *
1155
+ * @deprecated Prefer using the top-level `data` field on the Stack Definition
1156
+ * (defineStack({ data: [...] })) for better visibility and metadata registration.
1157
+ * This field is retained for backward compatibility with manifest-only packages.
1089
1158
  */
1090
- data: z4.array(z4.object({
1091
- object: z4.string().describe("Target Object Name"),
1092
- records: z4.array(z4.record(z4.string(), z4.any())).describe("List of records to insert"),
1093
- mode: z4.enum(["upsert", "insert", "ignore"]).default("upsert").describe("Seeding mode")
1094
- })).optional().describe("Initial seed data"),
1159
+ data: z5.array(DatasetSchema).optional().describe("Initial seed data (prefer top-level data field)"),
1095
1160
  /**
1096
1161
  * Plugin Capability Manifest.
1097
1162
  * Declares protocols implemented, interfaces provided, dependencies, and extension points.
@@ -1102,7 +1167,7 @@ var ManifestSchema = z4.object({
1102
1167
  * Extension points contributed by this package.
1103
1168
  * Allows packages to extend UI components, add functionality, etc.
1104
1169
  */
1105
- extensions: z4.record(z4.string(), z4.any()).optional().describe("Extension points and contributions"),
1170
+ extensions: z5.record(z5.string(), z5.any()).optional().describe("Extension points and contributions"),
1106
1171
  /**
1107
1172
  * Plugin Loading Configuration.
1108
1173
  * Configures how the plugin is loaded, initialized, and managed at runtime.
@@ -1112,61 +1177,61 @@ var ManifestSchema = z4.object({
1112
1177
  });
1113
1178
 
1114
1179
  // src/hub/composer.zod.ts
1115
- var DependencyRequirementSchema = z5.object({
1116
- id: z5.string().describe('Plugin ID (e.g. "com.example.crm")'),
1117
- version: z5.string().default("latest").describe('SemVer range or "latest"'),
1180
+ var DependencyRequirementSchema = z6.object({
1181
+ id: z6.string().describe('Plugin ID (e.g. "com.example.crm")'),
1182
+ version: z6.string().default("latest").describe('SemVer range or "latest"'),
1118
1183
  /**
1119
1184
  * Configuration Overrides
1120
1185
  * Tenant-specific settings that override plugin defaults.
1121
1186
  * Example: { "currency": "USD", "apiKey": "..." }
1122
1187
  */
1123
- configuration: z5.record(z5.string(), z5.any()).optional().describe("Configuration overrides"),
1188
+ configuration: z6.record(z6.string(), z6.any()).optional().describe("Configuration overrides"),
1124
1189
  /**
1125
1190
  * Feature Flags
1126
1191
  * Enable/Disable specific features within the plugin.
1127
1192
  */
1128
- features: z5.record(z5.string(), z5.boolean()).optional().describe("Feature toggles")
1193
+ features: z6.record(z6.string(), z6.boolean()).optional().describe("Feature toggles")
1129
1194
  });
1130
- var BillOfMaterialsSchema = z5.object({
1131
- tenantId: z5.string().describe("Target Tenant ID"),
1195
+ var BillOfMaterialsSchema = z6.object({
1196
+ tenantId: z6.string().describe("Target Tenant ID"),
1132
1197
  /**
1133
1198
  * List of installed plugins/apps.
1134
1199
  * implementation order matters (later plugins override earlier ones by default).
1135
1200
  */
1136
- dependencies: z5.array(DependencyRequirementSchema).describe("Installed packages"),
1201
+ dependencies: z6.array(DependencyRequirementSchema).describe("Installed packages"),
1137
1202
  /**
1138
1203
  * Environment Variables injection.
1139
1204
  * Maps abstract keys to secure vault references or concrete values.
1140
1205
  */
1141
- environment: z5.record(z5.string(), z5.string()).optional(),
1206
+ environment: z6.record(z6.string(), z6.string()).optional(),
1142
1207
  /**
1143
1208
  * Global Resolution Strategy
1144
1209
  * How to handle conflicts when multiple plugins define the same resource.
1145
1210
  */
1146
- resolutionStrategy: z5.enum(["strict", "override", "merge"]).default("override").describe("Conflict resolution strategy (strict=fail, override=last-wins, merge=deep-merge)")
1211
+ resolutionStrategy: z6.enum(["strict", "override", "merge"]).default("override").describe("Conflict resolution strategy (strict=fail, override=last-wins, merge=deep-merge)")
1147
1212
  });
1148
- var ConflictReportSchema = z5.object({
1149
- resourceType: z5.enum(["object", "field", "api", "ui"]).describe("Type of colliding resource"),
1150
- resourceId: z5.string().describe("ID of the resource"),
1151
- sources: z5.array(z5.string()).describe("List of plugin IDs defining this resource"),
1152
- resolution: z5.string().describe('How it was resolved (e.g. "com.example.erp won")'),
1153
- severity: z5.enum(["info", "warning", "error"]).describe("Severity of the conflict")
1213
+ var ConflictReportSchema = z6.object({
1214
+ resourceType: z6.enum(["object", "field", "api", "ui"]).describe("Type of colliding resource"),
1215
+ resourceId: z6.string().describe("ID of the resource"),
1216
+ sources: z6.array(z6.string()).describe("List of plugin IDs defining this resource"),
1217
+ resolution: z6.string().describe('How it was resolved (e.g. "com.example.erp won")'),
1218
+ severity: z6.enum(["info", "warning", "error"]).describe("Severity of the conflict")
1154
1219
  });
1155
- var ComposerRequestSchema = z5.object({
1220
+ var ComposerRequestSchema = z6.object({
1156
1221
  bom: BillOfMaterialsSchema,
1157
1222
  /**
1158
1223
  * Target Runtime Version
1159
1224
  * Ensure generated manifest is compatible with the specific runtime version.
1160
1225
  */
1161
- runtimeVersion: z5.string().optional(),
1226
+ runtimeVersion: z6.string().optional(),
1162
1227
  /**
1163
1228
  * Dry Run
1164
1229
  * If true, generates report but does not persist the manifest.
1165
1230
  */
1166
- dryRun: z5.boolean().default(false)
1231
+ dryRun: z6.boolean().default(false)
1167
1232
  });
1168
- var ComposerResponseSchema = z5.object({
1169
- success: z5.boolean(),
1233
+ var ComposerResponseSchema = z6.object({
1234
+ success: z6.boolean(),
1170
1235
  /**
1171
1236
  * The Holy Grail: The Executable System Manifest.
1172
1237
  * This is what the Runtime loads to boot.
@@ -1176,150 +1241,150 @@ var ComposerResponseSchema = z5.object({
1176
1241
  * Manifest URL
1177
1242
  * Presigned URL to download the manifest if stored externally (e.g. Vercel KV/S3).
1178
1243
  */
1179
- manifestUrl: z5.string().url().optional().describe("Presigned download URL"),
1244
+ manifestUrl: z6.string().url().optional().describe("Presigned download URL"),
1180
1245
  /**
1181
1246
  * Compilation Metadata
1182
1247
  */
1183
- buildId: z5.string(),
1184
- timestamp: z5.string().datetime(),
1185
- duration: z5.number().describe("Compilation time in ms"),
1248
+ buildId: z6.string(),
1249
+ timestamp: z6.string().datetime(),
1250
+ duration: z6.number().describe("Compilation time in ms"),
1186
1251
  /**
1187
1252
  * Analysis
1188
1253
  */
1189
- conflicts: z5.array(ConflictReportSchema).optional(),
1190
- errors: z5.array(z5.string()).optional()
1254
+ conflicts: z6.array(ConflictReportSchema).optional(),
1255
+ errors: z6.array(z6.string()).optional()
1191
1256
  });
1192
1257
 
1193
1258
  // src/hub/marketplace.zod.ts
1194
- import { z as z7 } from "zod";
1259
+ import { z as z8 } from "zod";
1195
1260
 
1196
1261
  // src/hub/plugin-registry.zod.ts
1197
- import { z as z6 } from "zod";
1198
- var PluginVendorSchema = z6.object({
1262
+ import { z as z7 } from "zod";
1263
+ var PluginVendorSchema = z7.object({
1199
1264
  /**
1200
1265
  * Vendor identifier (reverse domain notation)
1201
1266
  * Example: "com.acme", "org.apache", "com.objectstack"
1202
1267
  */
1203
- id: z6.string().regex(/^[a-z][a-z0-9]*(\.[a-z][a-z0-9]*)+$/).describe("Vendor identifier (reverse domain)"),
1268
+ id: z7.string().regex(/^[a-z][a-z0-9]*(\.[a-z][a-z0-9]*)+$/).describe("Vendor identifier (reverse domain)"),
1204
1269
  /**
1205
1270
  * Vendor display name
1206
1271
  */
1207
- name: z6.string(),
1272
+ name: z7.string(),
1208
1273
  /**
1209
1274
  * Vendor website
1210
1275
  */
1211
- website: z6.string().url().optional(),
1276
+ website: z7.string().url().optional(),
1212
1277
  /**
1213
1278
  * Contact email
1214
1279
  */
1215
- email: z6.string().email().optional(),
1280
+ email: z7.string().email().optional(),
1216
1281
  /**
1217
1282
  * Verification status
1218
1283
  */
1219
- verified: z6.boolean().default(false).describe("Whether vendor is verified by ObjectStack"),
1284
+ verified: z7.boolean().default(false).describe("Whether vendor is verified by ObjectStack"),
1220
1285
  /**
1221
1286
  * Trust level
1222
1287
  */
1223
- trustLevel: z6.enum(["official", "verified", "community", "unverified"]).default("unverified")
1288
+ trustLevel: z7.enum(["official", "verified", "community", "unverified"]).default("unverified")
1224
1289
  });
1225
- var PluginQualityMetricsSchema = z6.object({
1290
+ var PluginQualityMetricsSchema = z7.object({
1226
1291
  /**
1227
1292
  * Test coverage percentage
1228
1293
  */
1229
- testCoverage: z6.number().min(0).max(100).optional(),
1294
+ testCoverage: z7.number().min(0).max(100).optional(),
1230
1295
  /**
1231
1296
  * Documentation score (0-100)
1232
1297
  */
1233
- documentationScore: z6.number().min(0).max(100).optional(),
1298
+ documentationScore: z7.number().min(0).max(100).optional(),
1234
1299
  /**
1235
1300
  * Code quality score (0-100)
1236
1301
  */
1237
- codeQuality: z6.number().min(0).max(100).optional(),
1302
+ codeQuality: z7.number().min(0).max(100).optional(),
1238
1303
  /**
1239
1304
  * Security scan status
1240
1305
  */
1241
- securityScan: z6.object({
1242
- lastScanDate: z6.string().datetime().optional(),
1243
- vulnerabilities: z6.object({
1244
- critical: z6.number().int().min(0).default(0),
1245
- high: z6.number().int().min(0).default(0),
1246
- medium: z6.number().int().min(0).default(0),
1247
- low: z6.number().int().min(0).default(0)
1306
+ securityScan: z7.object({
1307
+ lastScanDate: z7.string().datetime().optional(),
1308
+ vulnerabilities: z7.object({
1309
+ critical: z7.number().int().min(0).default(0),
1310
+ high: z7.number().int().min(0).default(0),
1311
+ medium: z7.number().int().min(0).default(0),
1312
+ low: z7.number().int().min(0).default(0)
1248
1313
  }).optional(),
1249
- passed: z6.boolean().default(false)
1314
+ passed: z7.boolean().default(false)
1250
1315
  }).optional(),
1251
1316
  /**
1252
1317
  * Conformance test results
1253
1318
  */
1254
- conformanceTests: z6.array(z6.object({
1255
- protocolId: z6.string().describe("Protocol being tested"),
1256
- passed: z6.boolean(),
1257
- totalTests: z6.number().int().min(0),
1258
- passedTests: z6.number().int().min(0),
1259
- lastRunDate: z6.string().datetime().optional()
1319
+ conformanceTests: z7.array(z7.object({
1320
+ protocolId: z7.string().describe("Protocol being tested"),
1321
+ passed: z7.boolean(),
1322
+ totalTests: z7.number().int().min(0),
1323
+ passedTests: z7.number().int().min(0),
1324
+ lastRunDate: z7.string().datetime().optional()
1260
1325
  })).optional()
1261
1326
  });
1262
- var PluginStatisticsSchema = z6.object({
1327
+ var PluginStatisticsSchema = z7.object({
1263
1328
  /**
1264
1329
  * Total downloads
1265
1330
  */
1266
- downloads: z6.number().int().min(0).default(0),
1331
+ downloads: z7.number().int().min(0).default(0),
1267
1332
  /**
1268
1333
  * Downloads in the last 30 days
1269
1334
  */
1270
- downloadsLastMonth: z6.number().int().min(0).default(0),
1335
+ downloadsLastMonth: z7.number().int().min(0).default(0),
1271
1336
  /**
1272
1337
  * Number of active installations
1273
1338
  */
1274
- activeInstallations: z6.number().int().min(0).default(0),
1339
+ activeInstallations: z7.number().int().min(0).default(0),
1275
1340
  /**
1276
1341
  * User ratings
1277
1342
  */
1278
- ratings: z6.object({
1279
- average: z6.number().min(0).max(5).default(0),
1280
- count: z6.number().int().min(0).default(0),
1281
- distribution: z6.object({
1282
- "5": z6.number().int().min(0).default(0),
1283
- "4": z6.number().int().min(0).default(0),
1284
- "3": z6.number().int().min(0).default(0),
1285
- "2": z6.number().int().min(0).default(0),
1286
- "1": z6.number().int().min(0).default(0)
1343
+ ratings: z7.object({
1344
+ average: z7.number().min(0).max(5).default(0),
1345
+ count: z7.number().int().min(0).default(0),
1346
+ distribution: z7.object({
1347
+ "5": z7.number().int().min(0).default(0),
1348
+ "4": z7.number().int().min(0).default(0),
1349
+ "3": z7.number().int().min(0).default(0),
1350
+ "2": z7.number().int().min(0).default(0),
1351
+ "1": z7.number().int().min(0).default(0)
1287
1352
  }).optional()
1288
1353
  }).optional(),
1289
1354
  /**
1290
1355
  * GitHub stars (if open source)
1291
1356
  */
1292
- stars: z6.number().int().min(0).optional(),
1357
+ stars: z7.number().int().min(0).optional(),
1293
1358
  /**
1294
1359
  * Number of dependent plugins
1295
1360
  */
1296
- dependents: z6.number().int().min(0).default(0)
1361
+ dependents: z7.number().int().min(0).default(0)
1297
1362
  });
1298
- var PluginRegistryEntrySchema = z6.object({
1363
+ var PluginRegistryEntrySchema = z7.object({
1299
1364
  /**
1300
1365
  * Plugin identifier (must match manifest.id)
1301
1366
  */
1302
- id: z6.string().regex(/^([a-z][a-z0-9]*\.)+[a-z][a-z0-9-]+$/).describe("Plugin identifier (reverse domain notation)"),
1367
+ id: z7.string().regex(/^([a-z][a-z0-9]*\.)+[a-z][a-z0-9-]+$/).describe("Plugin identifier (reverse domain notation)"),
1303
1368
  /**
1304
1369
  * Current version
1305
1370
  */
1306
- version: z6.string().regex(/^\d+\.\d+\.\d+$/),
1371
+ version: z7.string().regex(/^\d+\.\d+\.\d+$/),
1307
1372
  /**
1308
1373
  * Plugin display name
1309
1374
  */
1310
- name: z6.string(),
1375
+ name: z7.string(),
1311
1376
  /**
1312
1377
  * Short description
1313
1378
  */
1314
- description: z6.string().optional(),
1379
+ description: z7.string().optional(),
1315
1380
  /**
1316
1381
  * Detailed documentation/README
1317
1382
  */
1318
- readme: z6.string().optional(),
1383
+ readme: z7.string().optional(),
1319
1384
  /**
1320
1385
  * Plugin type/category
1321
1386
  */
1322
- category: z6.enum([
1387
+ category: z7.enum([
1323
1388
  "data",
1324
1389
  // Data management, storage, databases
1325
1390
  "integration",
@@ -1346,7 +1411,7 @@ var PluginRegistryEntrySchema = z6.object({
1346
1411
  /**
1347
1412
  * Tags for categorization
1348
1413
  */
1349
- tags: z6.array(z6.string()).optional(),
1414
+ tags: z7.array(z7.string()).optional(),
1350
1415
  /**
1351
1416
  * Vendor information
1352
1417
  */
@@ -1358,42 +1423,42 @@ var PluginRegistryEntrySchema = z6.object({
1358
1423
  /**
1359
1424
  * Compatibility information
1360
1425
  */
1361
- compatibility: z6.object({
1426
+ compatibility: z7.object({
1362
1427
  /**
1363
1428
  * Minimum ObjectStack version required
1364
1429
  */
1365
- minObjectStackVersion: z6.string().optional(),
1430
+ minObjectStackVersion: z7.string().optional(),
1366
1431
  /**
1367
1432
  * Maximum ObjectStack version supported
1368
1433
  */
1369
- maxObjectStackVersion: z6.string().optional(),
1434
+ maxObjectStackVersion: z7.string().optional(),
1370
1435
  /**
1371
1436
  * Node.js version requirement
1372
1437
  */
1373
- nodeVersion: z6.string().optional(),
1438
+ nodeVersion: z7.string().optional(),
1374
1439
  /**
1375
1440
  * Supported platforms
1376
1441
  */
1377
- platforms: z6.array(z6.enum(["linux", "darwin", "win32", "browser"])).optional()
1442
+ platforms: z7.array(z7.enum(["linux", "darwin", "win32", "browser"])).optional()
1378
1443
  }).optional(),
1379
1444
  /**
1380
1445
  * Links and resources
1381
1446
  */
1382
- links: z6.object({
1383
- homepage: z6.string().url().optional(),
1384
- repository: z6.string().url().optional(),
1385
- documentation: z6.string().url().optional(),
1386
- bugs: z6.string().url().optional(),
1387
- changelog: z6.string().url().optional()
1447
+ links: z7.object({
1448
+ homepage: z7.string().url().optional(),
1449
+ repository: z7.string().url().optional(),
1450
+ documentation: z7.string().url().optional(),
1451
+ bugs: z7.string().url().optional(),
1452
+ changelog: z7.string().url().optional()
1388
1453
  }).optional(),
1389
1454
  /**
1390
1455
  * Media assets
1391
1456
  */
1392
- media: z6.object({
1393
- icon: z6.string().url().optional(),
1394
- logo: z6.string().url().optional(),
1395
- screenshots: z6.array(z6.string().url()).optional(),
1396
- video: z6.string().url().optional()
1457
+ media: z7.object({
1458
+ icon: z7.string().url().optional(),
1459
+ logo: z7.string().url().optional(),
1460
+ screenshots: z7.array(z7.string().url()).optional(),
1461
+ video: z7.string().url().optional()
1397
1462
  }).optional(),
1398
1463
  /**
1399
1464
  * Quality metrics
@@ -1406,70 +1471,70 @@ var PluginRegistryEntrySchema = z6.object({
1406
1471
  /**
1407
1472
  * License information
1408
1473
  */
1409
- license: z6.string().optional().describe("SPDX license identifier"),
1474
+ license: z7.string().optional().describe("SPDX license identifier"),
1410
1475
  /**
1411
1476
  * Pricing (if commercial)
1412
1477
  */
1413
- pricing: z6.object({
1414
- model: z6.enum(["free", "freemium", "paid", "enterprise"]),
1415
- price: z6.number().min(0).optional(),
1416
- currency: z6.string().default("USD").optional(),
1417
- billingPeriod: z6.enum(["one-time", "monthly", "yearly"]).optional()
1478
+ pricing: z7.object({
1479
+ model: z7.enum(["free", "freemium", "paid", "enterprise"]),
1480
+ price: z7.number().min(0).optional(),
1481
+ currency: z7.string().default("USD").optional(),
1482
+ billingPeriod: z7.enum(["one-time", "monthly", "yearly"]).optional()
1418
1483
  }).optional(),
1419
1484
  /**
1420
1485
  * Publication dates
1421
1486
  */
1422
- publishedAt: z6.string().datetime().optional(),
1423
- updatedAt: z6.string().datetime().optional(),
1487
+ publishedAt: z7.string().datetime().optional(),
1488
+ updatedAt: z7.string().datetime().optional(),
1424
1489
  /**
1425
1490
  * Deprecation status
1426
1491
  */
1427
- deprecated: z6.boolean().default(false),
1428
- deprecationMessage: z6.string().optional(),
1429
- replacedBy: z6.string().optional().describe("Plugin ID that replaces this one"),
1492
+ deprecated: z7.boolean().default(false),
1493
+ deprecationMessage: z7.string().optional(),
1494
+ replacedBy: z7.string().optional().describe("Plugin ID that replaces this one"),
1430
1495
  /**
1431
1496
  * Feature flags
1432
1497
  */
1433
- flags: z6.object({
1434
- experimental: z6.boolean().default(false),
1435
- beta: z6.boolean().default(false),
1436
- featured: z6.boolean().default(false),
1437
- verified: z6.boolean().default(false)
1498
+ flags: z7.object({
1499
+ experimental: z7.boolean().default(false),
1500
+ beta: z7.boolean().default(false),
1501
+ featured: z7.boolean().default(false),
1502
+ verified: z7.boolean().default(false)
1438
1503
  }).optional()
1439
1504
  });
1440
- var PluginSearchFiltersSchema = z6.object({
1505
+ var PluginSearchFiltersSchema = z7.object({
1441
1506
  /**
1442
1507
  * Search query
1443
1508
  */
1444
- query: z6.string().optional(),
1509
+ query: z7.string().optional(),
1445
1510
  /**
1446
1511
  * Filter by category
1447
1512
  */
1448
- category: z6.array(z6.string()).optional(),
1513
+ category: z7.array(z7.string()).optional(),
1449
1514
  /**
1450
1515
  * Filter by tags
1451
1516
  */
1452
- tags: z6.array(z6.string()).optional(),
1517
+ tags: z7.array(z7.string()).optional(),
1453
1518
  /**
1454
1519
  * Filter by vendor trust level
1455
1520
  */
1456
- trustLevel: z6.array(z6.enum(["official", "verified", "community", "unverified"])).optional(),
1521
+ trustLevel: z7.array(z7.enum(["official", "verified", "community", "unverified"])).optional(),
1457
1522
  /**
1458
1523
  * Filter by protocols implemented
1459
1524
  */
1460
- implementsProtocols: z6.array(z6.string()).optional(),
1525
+ implementsProtocols: z7.array(z7.string()).optional(),
1461
1526
  /**
1462
1527
  * Filter by pricing model
1463
1528
  */
1464
- pricingModel: z6.array(z6.enum(["free", "freemium", "paid", "enterprise"])).optional(),
1529
+ pricingModel: z7.array(z7.enum(["free", "freemium", "paid", "enterprise"])).optional(),
1465
1530
  /**
1466
1531
  * Minimum rating
1467
1532
  */
1468
- minRating: z6.number().min(0).max(5).optional(),
1533
+ minRating: z7.number().min(0).max(5).optional(),
1469
1534
  /**
1470
1535
  * Sort options
1471
1536
  */
1472
- sortBy: z6.enum([
1537
+ sortBy: z7.enum([
1473
1538
  "relevance",
1474
1539
  "downloads",
1475
1540
  "rating",
@@ -1479,97 +1544,97 @@ var PluginSearchFiltersSchema = z6.object({
1479
1544
  /**
1480
1545
  * Sort order
1481
1546
  */
1482
- sortOrder: z6.enum(["asc", "desc"]).default("desc").optional(),
1547
+ sortOrder: z7.enum(["asc", "desc"]).default("desc").optional(),
1483
1548
  /**
1484
1549
  * Pagination
1485
1550
  */
1486
- page: z6.number().int().min(1).default(1).optional(),
1487
- limit: z6.number().int().min(1).max(100).default(20).optional()
1551
+ page: z7.number().int().min(1).default(1).optional(),
1552
+ limit: z7.number().int().min(1).max(100).default(20).optional()
1488
1553
  });
1489
- var PluginInstallConfigSchema = z6.object({
1554
+ var PluginInstallConfigSchema = z7.object({
1490
1555
  /**
1491
1556
  * Plugin identifier to install
1492
1557
  */
1493
- pluginId: z6.string(),
1558
+ pluginId: z7.string(),
1494
1559
  /**
1495
1560
  * Version to install (supports semver ranges)
1496
1561
  */
1497
- version: z6.string().optional().describe("Defaults to latest"),
1562
+ version: z7.string().optional().describe("Defaults to latest"),
1498
1563
  /**
1499
1564
  * Plugin-specific configuration values
1500
1565
  */
1501
- config: z6.record(z6.string(), z6.any()).optional(),
1566
+ config: z7.record(z7.string(), z7.any()).optional(),
1502
1567
  /**
1503
1568
  * Whether to auto-update
1504
1569
  */
1505
- autoUpdate: z6.boolean().default(false).optional(),
1570
+ autoUpdate: z7.boolean().default(false).optional(),
1506
1571
  /**
1507
1572
  * Installation options
1508
1573
  */
1509
- options: z6.object({
1574
+ options: z7.object({
1510
1575
  /**
1511
1576
  * Skip dependency installation
1512
1577
  */
1513
- skipDependencies: z6.boolean().default(false).optional(),
1578
+ skipDependencies: z7.boolean().default(false).optional(),
1514
1579
  /**
1515
1580
  * Force reinstall
1516
1581
  */
1517
- force: z6.boolean().default(false).optional(),
1582
+ force: z7.boolean().default(false).optional(),
1518
1583
  /**
1519
1584
  * Installation target
1520
1585
  */
1521
- target: z6.enum(["system", "space", "user"]).default("space").optional()
1586
+ target: z7.enum(["system", "space", "user"]).default("space").optional()
1522
1587
  }).optional()
1523
1588
  });
1524
1589
 
1525
1590
  // src/hub/marketplace.zod.ts
1526
1591
  var PluginAuthorSchema = PluginVendorSchema;
1527
- var PluginPricingSchema = z7.object({
1528
- type: z7.enum(["free", "one_time", "recurring"]),
1529
- currency: z7.string().default("USD"),
1530
- amount: z7.number().min(0),
1531
- interval: z7.enum(["month", "year"]).optional().describe("Required if type is recurring"),
1532
- trialDays: z7.number().int().optional()
1592
+ var PluginPricingSchema = z8.object({
1593
+ type: z8.enum(["free", "one_time", "recurring"]),
1594
+ currency: z8.string().default("USD"),
1595
+ amount: z8.number().min(0),
1596
+ interval: z8.enum(["month", "year"]).optional().describe("Required if type is recurring"),
1597
+ trialDays: z8.number().int().optional()
1533
1598
  });
1534
- var PluginVersionSchema = z7.object({
1535
- version: z7.string().describe("SemVer string (e.g. 1.0.0)"),
1536
- publishedAt: z7.string().datetime().describe("Publication date"),
1537
- downloadUrl: z7.string().url().describe("Archive download URL"),
1538
- checksum: z7.string().optional().describe("Integrity checksum (shasum)"),
1539
- engine: z7.object({
1540
- node: z7.string().optional(),
1541
- objectstack: z7.string().describe("Required ObjectStack kernel version range")
1599
+ var PluginVersionSchema = z8.object({
1600
+ version: z8.string().describe("SemVer string (e.g. 1.0.0)"),
1601
+ publishedAt: z8.string().datetime().describe("Publication date"),
1602
+ downloadUrl: z8.string().url().describe("Archive download URL"),
1603
+ checksum: z8.string().optional().describe("Integrity checksum (shasum)"),
1604
+ engine: z8.object({
1605
+ node: z8.string().optional(),
1606
+ objectstack: z8.string().describe("Required ObjectStack kernel version range")
1542
1607
  }).optional().describe("Engine compatibility"),
1543
- dependencies: z7.record(z7.string(), z7.string()).optional().describe("Runtime plugin dependencies"),
1544
- changeLog: z7.string().optional().describe("Release notes")
1608
+ dependencies: z8.record(z8.string(), z8.string()).optional().describe("Runtime plugin dependencies"),
1609
+ changeLog: z8.string().optional().describe("Release notes")
1545
1610
  });
1546
- var MarketplacePluginSchema = z7.object({
1611
+ var MarketplacePluginSchema = z8.object({
1547
1612
  /**
1548
1613
  * Package Identifier
1549
1614
  * Usually the NPM package name (e.g. "@steedos/plugin-crm")
1550
1615
  */
1551
- id: z7.string(),
1616
+ id: z8.string(),
1552
1617
  /**
1553
1618
  * Version History
1554
1619
  * Registry of all available versions
1555
1620
  */
1556
- versions: z7.record(z7.string(), PluginVersionSchema).optional().describe("Map of versions (1.0.0) -> Details"),
1621
+ versions: z8.record(z8.string(), PluginVersionSchema).optional().describe("Map of versions (1.0.0) -> Details"),
1557
1622
  /**
1558
1623
  * Display Name
1559
1624
  */
1560
- label: z7.string(),
1625
+ label: z8.string(),
1561
1626
  /**
1562
1627
  * Short Description
1563
1628
  */
1564
- description: z7.string().optional(),
1629
+ description: z8.string().optional(),
1565
1630
  /**
1566
1631
  * Detailed README / Documentation content
1567
1632
  */
1568
- readme: z7.string().optional(),
1633
+ readme: z8.string().optional(),
1569
1634
  /**
1570
1635
  * Latest Version
1571
1636
  */
1572
- version: z7.string(),
1637
+ version: z8.string(),
1573
1638
  /**
1574
1639
  * Vendor / Publisher
1575
1640
  */
@@ -1577,8 +1642,8 @@ var MarketplacePluginSchema = z7.object({
1577
1642
  /**
1578
1643
  * Categorization
1579
1644
  */
1580
- tags: z7.array(z7.string()).optional(),
1581
- category: z7.enum([
1645
+ tags: z8.array(z8.string()).optional(),
1646
+ category: z8.enum([
1582
1647
  "app",
1583
1648
  "integration",
1584
1649
  "theme",
@@ -1593,29 +1658,29 @@ var MarketplacePluginSchema = z7.object({
1593
1658
  /**
1594
1659
  * Assets
1595
1660
  */
1596
- icon: z7.string().url().optional(),
1597
- screenshots: z7.array(z7.string().url()).optional(),
1661
+ icon: z8.string().url().optional(),
1662
+ screenshots: z8.array(z8.string().url()).optional(),
1598
1663
  /**
1599
1664
  * Links
1600
1665
  */
1601
- homepage: z7.string().url().optional(),
1602
- repository: z7.string().url().optional(),
1603
- bugs: z7.string().url().optional(),
1666
+ homepage: z8.string().url().optional(),
1667
+ repository: z8.string().url().optional(),
1668
+ bugs: z8.string().url().optional(),
1604
1669
  /**
1605
1670
  * Statistics
1606
1671
  */
1607
- downloads: z7.number().int().optional(),
1608
- rating: z7.number().min(0).max(5).optional(),
1672
+ downloads: z8.number().int().optional(),
1673
+ rating: z8.number().min(0).max(5).optional(),
1609
1674
  /**
1610
1675
  * Commercial Information
1611
1676
  */
1612
1677
  pricing: PluginPricingSchema.optional(),
1613
- verified: z7.boolean().default(false).describe("Is verified maintaned by ObjectStack")
1678
+ verified: z8.boolean().default(false).describe("Is verified maintaned by ObjectStack")
1614
1679
  });
1615
1680
 
1616
1681
  // src/hub/registry-config.zod.ts
1617
- import { z as z8 } from "zod";
1618
- var RegistrySyncPolicySchema = z8.enum([
1682
+ import { z as z9 } from "zod";
1683
+ var RegistrySyncPolicySchema = z9.enum([
1619
1684
  "manual",
1620
1685
  // Manual synchronization only
1621
1686
  "auto",
@@ -1623,11 +1688,11 @@ var RegistrySyncPolicySchema = z8.enum([
1623
1688
  "proxy"
1624
1689
  // Proxy requests to upstream without caching
1625
1690
  ]).describe("Registry synchronization strategy");
1626
- var RegistryUpstreamSchema = z8.object({
1691
+ var RegistryUpstreamSchema = z9.object({
1627
1692
  /**
1628
1693
  * Upstream registry URL
1629
1694
  */
1630
- url: z8.string().url().describe("Upstream registry endpoint"),
1695
+ url: z9.string().url().describe("Upstream registry endpoint"),
1631
1696
  /**
1632
1697
  * Synchronization policy
1633
1698
  */
@@ -1635,43 +1700,43 @@ var RegistryUpstreamSchema = z8.object({
1635
1700
  /**
1636
1701
  * Sync interval in seconds (for auto sync)
1637
1702
  */
1638
- syncInterval: z8.number().int().min(60).optional().describe("Auto-sync interval in seconds"),
1703
+ syncInterval: z9.number().int().min(60).optional().describe("Auto-sync interval in seconds"),
1639
1704
  /**
1640
1705
  * Authentication credentials
1641
1706
  */
1642
- auth: z8.object({
1643
- type: z8.enum(["none", "basic", "bearer", "api-key", "oauth2"]).default("none"),
1644
- username: z8.string().optional(),
1645
- password: z8.string().optional(),
1646
- token: z8.string().optional(),
1647
- apiKey: z8.string().optional()
1707
+ auth: z9.object({
1708
+ type: z9.enum(["none", "basic", "bearer", "api-key", "oauth2"]).default("none"),
1709
+ username: z9.string().optional(),
1710
+ password: z9.string().optional(),
1711
+ token: z9.string().optional(),
1712
+ apiKey: z9.string().optional()
1648
1713
  }).optional(),
1649
1714
  /**
1650
1715
  * TLS/SSL configuration
1651
1716
  */
1652
- tls: z8.object({
1653
- enabled: z8.boolean().default(true),
1654
- verifyCertificate: z8.boolean().default(true),
1655
- certificate: z8.string().optional(),
1656
- privateKey: z8.string().optional()
1717
+ tls: z9.object({
1718
+ enabled: z9.boolean().default(true),
1719
+ verifyCertificate: z9.boolean().default(true),
1720
+ certificate: z9.string().optional(),
1721
+ privateKey: z9.string().optional()
1657
1722
  }).optional(),
1658
1723
  /**
1659
1724
  * Timeout settings
1660
1725
  */
1661
- timeout: z8.number().int().min(1e3).default(3e4).describe("Request timeout in milliseconds"),
1726
+ timeout: z9.number().int().min(1e3).default(3e4).describe("Request timeout in milliseconds"),
1662
1727
  /**
1663
1728
  * Retry configuration
1664
1729
  */
1665
- retry: z8.object({
1666
- maxAttempts: z8.number().int().min(0).default(3),
1667
- backoff: z8.enum(["fixed", "linear", "exponential"]).default("exponential")
1730
+ retry: z9.object({
1731
+ maxAttempts: z9.number().int().min(0).default(3),
1732
+ backoff: z9.enum(["fixed", "linear", "exponential"]).default("exponential")
1668
1733
  }).optional()
1669
1734
  });
1670
- var RegistryConfigSchema = z8.object({
1735
+ var RegistryConfigSchema = z9.object({
1671
1736
  /**
1672
1737
  * Registry type
1673
1738
  */
1674
- type: z8.enum([
1739
+ type: z9.enum([
1675
1740
  "public",
1676
1741
  // Public marketplace (e.g., plugins.objectstack.com)
1677
1742
  "private",
@@ -1682,76 +1747,76 @@ var RegistryConfigSchema = z8.object({
1682
1747
  /**
1683
1748
  * Upstream registries (for hybrid/private registries)
1684
1749
  */
1685
- upstream: z8.array(RegistryUpstreamSchema).optional().describe("Upstream registries to sync from or proxy to"),
1750
+ upstream: z9.array(RegistryUpstreamSchema).optional().describe("Upstream registries to sync from or proxy to"),
1686
1751
  /**
1687
1752
  * Scopes managed by this registry
1688
1753
  */
1689
- scope: z8.array(z8.string()).optional().describe("npm-style scopes managed by this registry (e.g., @my-corp, @enterprise)"),
1754
+ scope: z9.array(z9.string()).optional().describe("npm-style scopes managed by this registry (e.g., @my-corp, @enterprise)"),
1690
1755
  /**
1691
1756
  * Default scope for new plugins
1692
1757
  */
1693
- defaultScope: z8.string().optional().describe("Default scope prefix for new plugins"),
1758
+ defaultScope: z9.string().optional().describe("Default scope prefix for new plugins"),
1694
1759
  /**
1695
1760
  * Registry storage configuration
1696
1761
  */
1697
- storage: z8.object({
1762
+ storage: z9.object({
1698
1763
  /**
1699
1764
  * Storage backend type
1700
1765
  */
1701
- backend: z8.enum(["local", "s3", "gcs", "azure-blob", "oss"]).default("local"),
1766
+ backend: z9.enum(["local", "s3", "gcs", "azure-blob", "oss"]).default("local"),
1702
1767
  /**
1703
1768
  * Storage path or bucket name
1704
1769
  */
1705
- path: z8.string().optional(),
1770
+ path: z9.string().optional(),
1706
1771
  /**
1707
1772
  * Credentials
1708
1773
  */
1709
- credentials: z8.record(z8.string(), z8.any()).optional()
1774
+ credentials: z9.record(z9.string(), z9.any()).optional()
1710
1775
  }).optional(),
1711
1776
  /**
1712
1777
  * Registry visibility
1713
1778
  */
1714
- visibility: z8.enum(["public", "private", "internal"]).default("private").describe("Who can access this registry"),
1779
+ visibility: z9.enum(["public", "private", "internal"]).default("private").describe("Who can access this registry"),
1715
1780
  /**
1716
1781
  * Access control
1717
1782
  */
1718
- accessControl: z8.object({
1783
+ accessControl: z9.object({
1719
1784
  /**
1720
1785
  * Require authentication for read
1721
1786
  */
1722
- requireAuthForRead: z8.boolean().default(false),
1787
+ requireAuthForRead: z9.boolean().default(false),
1723
1788
  /**
1724
1789
  * Require authentication for write
1725
1790
  */
1726
- requireAuthForWrite: z8.boolean().default(true),
1791
+ requireAuthForWrite: z9.boolean().default(true),
1727
1792
  /**
1728
1793
  * Allowed users/teams
1729
1794
  */
1730
- allowedPrincipals: z8.array(z8.string()).optional()
1795
+ allowedPrincipals: z9.array(z9.string()).optional()
1731
1796
  }).optional(),
1732
1797
  /**
1733
1798
  * Caching configuration
1734
1799
  */
1735
- cache: z8.object({
1736
- enabled: z8.boolean().default(true),
1737
- ttl: z8.number().int().min(0).default(3600).describe("Cache TTL in seconds"),
1738
- maxSize: z8.number().int().optional().describe("Maximum cache size in bytes")
1800
+ cache: z9.object({
1801
+ enabled: z9.boolean().default(true),
1802
+ ttl: z9.number().int().min(0).default(3600).describe("Cache TTL in seconds"),
1803
+ maxSize: z9.number().int().optional().describe("Maximum cache size in bytes")
1739
1804
  }).optional(),
1740
1805
  /**
1741
1806
  * Mirroring configuration (for high availability)
1742
1807
  */
1743
- mirrors: z8.array(z8.object({
1744
- url: z8.string().url(),
1745
- priority: z8.number().int().min(1).default(1)
1808
+ mirrors: z9.array(z9.object({
1809
+ url: z9.string().url(),
1810
+ priority: z9.number().int().min(1).default(1)
1746
1811
  })).optional().describe("Mirror registries for redundancy")
1747
1812
  });
1748
1813
 
1749
1814
  // src/hub/space.zod.ts
1750
- import { z as z10 } from "zod";
1815
+ import { z as z11 } from "zod";
1751
1816
 
1752
1817
  // src/hub/tenant.zod.ts
1753
- import { z as z9 } from "zod";
1754
- var TenantIsolationLevel = z9.enum([
1818
+ import { z as z10 } from "zod";
1819
+ var TenantIsolationLevel = z10.enum([
1755
1820
  "shared_schema",
1756
1821
  // Shared DB, shared schema, row-level isolation (most economical)
1757
1822
  "isolated_schema",
@@ -1759,29 +1824,29 @@ var TenantIsolationLevel = z9.enum([
1759
1824
  "isolated_db"
1760
1825
  // Separate database per tenant (maximum isolation)
1761
1826
  ]);
1762
- var TenantQuotaSchema = z9.object({
1827
+ var TenantQuotaSchema = z10.object({
1763
1828
  /**
1764
1829
  * Maximum number of users allowed for this tenant
1765
1830
  */
1766
- maxUsers: z9.number().int().positive().optional().describe("Maximum number of users"),
1831
+ maxUsers: z10.number().int().positive().optional().describe("Maximum number of users"),
1767
1832
  /**
1768
1833
  * Maximum storage space in bytes
1769
1834
  */
1770
- maxStorage: z9.number().int().positive().optional().describe("Maximum storage in bytes"),
1835
+ maxStorage: z10.number().int().positive().optional().describe("Maximum storage in bytes"),
1771
1836
  /**
1772
1837
  * API rate limit (requests per minute)
1773
1838
  */
1774
- apiRateLimit: z9.number().int().positive().optional().describe("API requests per minute")
1839
+ apiRateLimit: z10.number().int().positive().optional().describe("API requests per minute")
1775
1840
  });
1776
- var TenantSchema = z9.object({
1841
+ var TenantSchema = z10.object({
1777
1842
  /**
1778
1843
  * Unique tenant identifier
1779
1844
  */
1780
- id: z9.string().describe("Unique tenant identifier"),
1845
+ id: z10.string().describe("Unique tenant identifier"),
1781
1846
  /**
1782
1847
  * Tenant display name
1783
1848
  */
1784
- name: z9.string().describe("Tenant display name"),
1849
+ name: z10.string().describe("Tenant display name"),
1785
1850
  /**
1786
1851
  * Data isolation level
1787
1852
  */
@@ -1789,26 +1854,26 @@ var TenantSchema = z9.object({
1789
1854
  /**
1790
1855
  * Custom configuration values
1791
1856
  */
1792
- customizations: z9.record(z9.string(), z9.any()).optional().describe("Custom configuration values"),
1857
+ customizations: z10.record(z10.string(), z10.any()).optional().describe("Custom configuration values"),
1793
1858
  /**
1794
1859
  * Resource quotas
1795
1860
  */
1796
1861
  quotas: TenantQuotaSchema.optional()
1797
1862
  });
1798
- var RowLevelIsolationStrategySchema = z9.object({
1799
- strategy: z9.literal("shared_schema").describe("Row-level isolation strategy"),
1863
+ var RowLevelIsolationStrategySchema = z10.object({
1864
+ strategy: z10.literal("shared_schema").describe("Row-level isolation strategy"),
1800
1865
  /**
1801
1866
  * Database configuration for row-level isolation
1802
1867
  */
1803
- database: z9.object({
1868
+ database: z10.object({
1804
1869
  /**
1805
1870
  * Whether to enable Row-Level Security (RLS)
1806
1871
  */
1807
- enableRLS: z9.boolean().default(true).describe("Enable PostgreSQL Row-Level Security"),
1872
+ enableRLS: z10.boolean().default(true).describe("Enable PostgreSQL Row-Level Security"),
1808
1873
  /**
1809
1874
  * Tenant context setting method
1810
1875
  */
1811
- contextMethod: z9.enum([
1876
+ contextMethod: z10.enum([
1812
1877
  "session_variable",
1813
1878
  // SET app.current_tenant = 'tenant_123'
1814
1879
  "search_path",
@@ -1819,63 +1884,63 @@ var RowLevelIsolationStrategySchema = z9.object({
1819
1884
  /**
1820
1885
  * Session variable name for tenant context
1821
1886
  */
1822
- contextVariable: z9.string().default("app.current_tenant").describe("Session variable name"),
1887
+ contextVariable: z10.string().default("app.current_tenant").describe("Session variable name"),
1823
1888
  /**
1824
1889
  * Whether to validate tenant_id at application level
1825
1890
  */
1826
- applicationValidation: z9.boolean().default(true).describe("Application-level tenant validation")
1891
+ applicationValidation: z10.boolean().default(true).describe("Application-level tenant validation")
1827
1892
  }).optional().describe("Database configuration"),
1828
1893
  /**
1829
1894
  * Performance optimization settings
1830
1895
  */
1831
- performance: z9.object({
1896
+ performance: z10.object({
1832
1897
  /**
1833
1898
  * Whether to use partial indexes for tenant_id
1834
1899
  */
1835
- usePartialIndexes: z9.boolean().default(true).describe("Use partial indexes per tenant"),
1900
+ usePartialIndexes: z10.boolean().default(true).describe("Use partial indexes per tenant"),
1836
1901
  /**
1837
1902
  * Whether to use table partitioning
1838
1903
  */
1839
- usePartitioning: z9.boolean().default(false).describe("Use table partitioning by tenant_id"),
1904
+ usePartitioning: z10.boolean().default(false).describe("Use table partitioning by tenant_id"),
1840
1905
  /**
1841
1906
  * Connection pool size per tenant
1842
1907
  */
1843
- poolSizePerTenant: z9.number().int().positive().optional().describe("Connection pool size per tenant")
1908
+ poolSizePerTenant: z10.number().int().positive().optional().describe("Connection pool size per tenant")
1844
1909
  }).optional().describe("Performance settings")
1845
1910
  });
1846
- var SchemaLevelIsolationStrategySchema = z9.object({
1847
- strategy: z9.literal("isolated_schema").describe("Schema-level isolation strategy"),
1911
+ var SchemaLevelIsolationStrategySchema = z10.object({
1912
+ strategy: z10.literal("isolated_schema").describe("Schema-level isolation strategy"),
1848
1913
  /**
1849
1914
  * Schema configuration
1850
1915
  */
1851
- schema: z9.object({
1916
+ schema: z10.object({
1852
1917
  /**
1853
1918
  * Schema naming pattern
1854
1919
  * Use {tenant_id} as placeholder (must contain only alphanumeric and underscores)
1855
1920
  * The tenant_id will be sanitized before substitution to prevent SQL injection
1856
1921
  */
1857
- namingPattern: z9.string().default("tenant_{tenant_id}").describe("Schema naming pattern"),
1922
+ namingPattern: z10.string().default("tenant_{tenant_id}").describe("Schema naming pattern"),
1858
1923
  /**
1859
1924
  * Whether to include public schema in search_path
1860
1925
  */
1861
- includePublicSchema: z9.boolean().default(true).describe("Include public schema"),
1926
+ includePublicSchema: z10.boolean().default(true).describe("Include public schema"),
1862
1927
  /**
1863
1928
  * Default schema for shared resources
1864
1929
  */
1865
- sharedSchema: z9.string().default("public").describe("Schema for shared resources"),
1930
+ sharedSchema: z10.string().default("public").describe("Schema for shared resources"),
1866
1931
  /**
1867
1932
  * Whether to automatically create schema on tenant creation
1868
1933
  */
1869
- autoCreateSchema: z9.boolean().default(true).describe("Auto-create schema")
1934
+ autoCreateSchema: z10.boolean().default(true).describe("Auto-create schema")
1870
1935
  }).optional().describe("Schema configuration"),
1871
1936
  /**
1872
1937
  * Migration configuration
1873
1938
  */
1874
- migrations: z9.object({
1939
+ migrations: z10.object({
1875
1940
  /**
1876
1941
  * Migration strategy
1877
1942
  */
1878
- strategy: z9.enum([
1943
+ strategy: z10.enum([
1879
1944
  "parallel",
1880
1945
  // Run migrations on all schemas in parallel
1881
1946
  "sequential",
@@ -1886,42 +1951,42 @@ var SchemaLevelIsolationStrategySchema = z9.object({
1886
1951
  /**
1887
1952
  * Maximum concurrent migrations
1888
1953
  */
1889
- maxConcurrent: z9.number().int().positive().default(10).describe("Max concurrent migrations"),
1954
+ maxConcurrent: z10.number().int().positive().default(10).describe("Max concurrent migrations"),
1890
1955
  /**
1891
1956
  * Whether to rollback on first failure
1892
1957
  */
1893
- rollbackOnError: z9.boolean().default(true).describe("Rollback on error")
1958
+ rollbackOnError: z10.boolean().default(true).describe("Rollback on error")
1894
1959
  }).optional().describe("Migration configuration"),
1895
1960
  /**
1896
1961
  * Performance optimization settings
1897
1962
  */
1898
- performance: z9.object({
1963
+ performance: z10.object({
1899
1964
  /**
1900
1965
  * Whether to use connection pooling per schema
1901
1966
  */
1902
- poolPerSchema: z9.boolean().default(false).describe("Separate pool per schema"),
1967
+ poolPerSchema: z10.boolean().default(false).describe("Separate pool per schema"),
1903
1968
  /**
1904
1969
  * Schema cache TTL in seconds
1905
1970
  */
1906
- schemaCacheTTL: z9.number().int().positive().default(3600).describe("Schema cache TTL")
1971
+ schemaCacheTTL: z10.number().int().positive().default(3600).describe("Schema cache TTL")
1907
1972
  }).optional().describe("Performance settings")
1908
1973
  });
1909
- var DatabaseLevelIsolationStrategySchema = z9.object({
1910
- strategy: z9.literal("isolated_db").describe("Database-level isolation strategy"),
1974
+ var DatabaseLevelIsolationStrategySchema = z10.object({
1975
+ strategy: z10.literal("isolated_db").describe("Database-level isolation strategy"),
1911
1976
  /**
1912
1977
  * Database configuration
1913
1978
  */
1914
- database: z9.object({
1979
+ database: z10.object({
1915
1980
  /**
1916
1981
  * Database naming pattern
1917
1982
  * Use {tenant_id} as placeholder (must contain only alphanumeric and underscores)
1918
1983
  * The tenant_id will be sanitized before substitution to prevent SQL injection
1919
1984
  */
1920
- namingPattern: z9.string().default("tenant_{tenant_id}").describe("Database naming pattern"),
1985
+ namingPattern: z10.string().default("tenant_{tenant_id}").describe("Database naming pattern"),
1921
1986
  /**
1922
1987
  * Database server/cluster assignment strategy
1923
1988
  */
1924
- serverStrategy: z9.enum([
1989
+ serverStrategy: z10.enum([
1925
1990
  "shared",
1926
1991
  // All tenant databases on same server
1927
1992
  "sharded",
@@ -1932,41 +1997,41 @@ var DatabaseLevelIsolationStrategySchema = z9.object({
1932
1997
  /**
1933
1998
  * Whether to use separate credentials per tenant
1934
1999
  */
1935
- separateCredentials: z9.boolean().default(true).describe("Separate credentials per tenant"),
2000
+ separateCredentials: z10.boolean().default(true).describe("Separate credentials per tenant"),
1936
2001
  /**
1937
2002
  * Whether to automatically create database on tenant creation
1938
2003
  */
1939
- autoCreateDatabase: z9.boolean().default(true).describe("Auto-create database")
2004
+ autoCreateDatabase: z10.boolean().default(true).describe("Auto-create database")
1940
2005
  }).optional().describe("Database configuration"),
1941
2006
  /**
1942
2007
  * Connection pooling configuration
1943
2008
  */
1944
- connectionPool: z9.object({
2009
+ connectionPool: z10.object({
1945
2010
  /**
1946
2011
  * Pool size per tenant database
1947
2012
  */
1948
- poolSize: z9.number().int().positive().default(10).describe("Connection pool size"),
2013
+ poolSize: z10.number().int().positive().default(10).describe("Connection pool size"),
1949
2014
  /**
1950
2015
  * Maximum number of tenant pools to keep active
1951
2016
  */
1952
- maxActivePools: z9.number().int().positive().default(100).describe("Max active pools"),
2017
+ maxActivePools: z10.number().int().positive().default(100).describe("Max active pools"),
1953
2018
  /**
1954
2019
  * Idle pool timeout in seconds
1955
2020
  */
1956
- idleTimeout: z9.number().int().positive().default(300).describe("Idle pool timeout"),
2021
+ idleTimeout: z10.number().int().positive().default(300).describe("Idle pool timeout"),
1957
2022
  /**
1958
2023
  * Whether to use connection pooler (PgBouncer, etc.)
1959
2024
  */
1960
- usePooler: z9.boolean().default(true).describe("Use connection pooler")
2025
+ usePooler: z10.boolean().default(true).describe("Use connection pooler")
1961
2026
  }).optional().describe("Connection pool configuration"),
1962
2027
  /**
1963
2028
  * Backup and restore configuration
1964
2029
  */
1965
- backup: z9.object({
2030
+ backup: z10.object({
1966
2031
  /**
1967
2032
  * Backup strategy per tenant
1968
2033
  */
1969
- strategy: z9.enum([
2034
+ strategy: z10.enum([
1970
2035
  "individual",
1971
2036
  // Separate backup per tenant
1972
2037
  "consolidated",
@@ -1977,82 +2042,82 @@ var DatabaseLevelIsolationStrategySchema = z9.object({
1977
2042
  /**
1978
2043
  * Backup frequency in hours
1979
2044
  */
1980
- frequencyHours: z9.number().int().positive().default(24).describe("Backup frequency"),
2045
+ frequencyHours: z10.number().int().positive().default(24).describe("Backup frequency"),
1981
2046
  /**
1982
2047
  * Retention period in days
1983
2048
  */
1984
- retentionDays: z9.number().int().positive().default(30).describe("Backup retention days")
2049
+ retentionDays: z10.number().int().positive().default(30).describe("Backup retention days")
1985
2050
  }).optional().describe("Backup configuration"),
1986
2051
  /**
1987
2052
  * Encryption configuration
1988
2053
  */
1989
- encryption: z9.object({
2054
+ encryption: z10.object({
1990
2055
  /**
1991
2056
  * Whether to use per-tenant encryption keys
1992
2057
  */
1993
- perTenantKeys: z9.boolean().default(false).describe("Per-tenant encryption keys"),
2058
+ perTenantKeys: z10.boolean().default(false).describe("Per-tenant encryption keys"),
1994
2059
  /**
1995
2060
  * Encryption algorithm
1996
2061
  */
1997
- algorithm: z9.string().default("AES-256-GCM").describe("Encryption algorithm"),
2062
+ algorithm: z10.string().default("AES-256-GCM").describe("Encryption algorithm"),
1998
2063
  /**
1999
2064
  * Key management service
2000
2065
  */
2001
- keyManagement: z9.enum(["aws_kms", "azure_key_vault", "gcp_kms", "hashicorp_vault", "custom"]).optional().describe("Key management service")
2066
+ keyManagement: z10.enum(["aws_kms", "azure_key_vault", "gcp_kms", "hashicorp_vault", "custom"]).optional().describe("Key management service")
2002
2067
  }).optional().describe("Encryption configuration")
2003
2068
  });
2004
- var TenantIsolationConfigSchema = z9.discriminatedUnion("strategy", [
2069
+ var TenantIsolationConfigSchema = z10.discriminatedUnion("strategy", [
2005
2070
  RowLevelIsolationStrategySchema,
2006
2071
  SchemaLevelIsolationStrategySchema,
2007
2072
  DatabaseLevelIsolationStrategySchema
2008
2073
  ]);
2009
- var TenantSecurityPolicySchema = z9.object({
2074
+ var TenantSecurityPolicySchema = z10.object({
2010
2075
  /**
2011
2076
  * Encryption requirements
2012
2077
  */
2013
- encryption: z9.object({
2078
+ encryption: z10.object({
2014
2079
  /**
2015
2080
  * Require encryption at rest
2016
2081
  */
2017
- atRest: z9.boolean().default(true).describe("Require encryption at rest"),
2082
+ atRest: z10.boolean().default(true).describe("Require encryption at rest"),
2018
2083
  /**
2019
2084
  * Require encryption in transit
2020
2085
  */
2021
- inTransit: z9.boolean().default(true).describe("Require encryption in transit"),
2086
+ inTransit: z10.boolean().default(true).describe("Require encryption in transit"),
2022
2087
  /**
2023
2088
  * Require field-level encryption for sensitive data
2024
2089
  */
2025
- fieldLevel: z9.boolean().default(false).describe("Require field-level encryption")
2090
+ fieldLevel: z10.boolean().default(false).describe("Require field-level encryption")
2026
2091
  }).optional().describe("Encryption requirements"),
2027
2092
  /**
2028
2093
  * Access control requirements
2029
2094
  */
2030
- accessControl: z9.object({
2095
+ accessControl: z10.object({
2031
2096
  /**
2032
2097
  * Require multi-factor authentication
2033
2098
  */
2034
- requireMFA: z9.boolean().default(false).describe("Require MFA"),
2099
+ requireMFA: z10.boolean().default(false).describe("Require MFA"),
2035
2100
  /**
2036
2101
  * Require SSO/SAML authentication
2037
2102
  */
2038
- requireSSO: z9.boolean().default(false).describe("Require SSO"),
2103
+ requireSSO: z10.boolean().default(false).describe("Require SSO"),
2039
2104
  /**
2040
2105
  * IP whitelist
2041
2106
  */
2042
- ipWhitelist: z9.array(z9.string()).optional().describe("Allowed IP addresses"),
2107
+ ipWhitelist: z10.array(z10.string()).optional().describe("Allowed IP addresses"),
2043
2108
  /**
2044
2109
  * Session timeout in seconds
2045
2110
  */
2046
- sessionTimeout: z9.number().int().positive().default(3600).describe("Session timeout")
2111
+ sessionTimeout: z10.number().int().positive().default(3600).describe("Session timeout")
2047
2112
  }).optional().describe("Access control requirements"),
2048
2113
  /**
2049
2114
  * Audit and compliance requirements
2050
2115
  */
2051
- compliance: z9.object({
2116
+ compliance: z10.object({
2052
2117
  /**
2053
2118
  * Compliance standards to enforce
2054
2119
  */
2055
- standards: z9.array(z9.enum([
2120
+ standards: z10.array(z10.enum([
2056
2121
  "sox",
2057
2122
  "hipaa",
2058
2123
  "gdpr",
@@ -2063,77 +2128,77 @@ var TenantSecurityPolicySchema = z9.object({
2063
2128
  /**
2064
2129
  * Require audit logging for all operations
2065
2130
  */
2066
- requireAuditLog: z9.boolean().default(true).describe("Require audit logging"),
2131
+ requireAuditLog: z10.boolean().default(true).describe("Require audit logging"),
2067
2132
  /**
2068
2133
  * Audit log retention period in days
2069
2134
  */
2070
- auditRetentionDays: z9.number().int().positive().default(365).describe("Audit retention days"),
2135
+ auditRetentionDays: z10.number().int().positive().default(365).describe("Audit retention days"),
2071
2136
  /**
2072
2137
  * Data residency requirements
2073
2138
  */
2074
- dataResidency: z9.object({
2139
+ dataResidency: z10.object({
2075
2140
  /**
2076
2141
  * Required geographic region
2077
2142
  */
2078
- region: z9.string().optional().describe("Required region (e.g., US, EU, APAC)"),
2143
+ region: z10.string().optional().describe("Required region (e.g., US, EU, APAC)"),
2079
2144
  /**
2080
2145
  * Prohibited regions
2081
2146
  */
2082
- excludeRegions: z9.array(z9.string()).optional().describe("Prohibited regions")
2147
+ excludeRegions: z10.array(z10.string()).optional().describe("Prohibited regions")
2083
2148
  }).optional().describe("Data residency requirements")
2084
2149
  }).optional().describe("Compliance requirements")
2085
2150
  });
2086
2151
 
2087
2152
  // src/hub/space.zod.ts
2088
- var SubscriptionStatus = z10.enum([
2153
+ var SubscriptionStatus = z11.enum([
2089
2154
  "active",
2090
2155
  "past_due",
2091
2156
  "canceled",
2092
2157
  "trialing",
2093
2158
  "incomplete"
2094
2159
  ]);
2095
- var SpaceSubscriptionSchema = z10.object({
2096
- planId: z10.string().describe("Reference to Plan Code"),
2160
+ var SpaceSubscriptionSchema = z11.object({
2161
+ planId: z11.string().describe("Reference to Plan Code"),
2097
2162
  status: SubscriptionStatus,
2098
- currentPeriodEnd: z10.string().datetime().optional(),
2099
- stripeCustomerId: z10.string().optional(),
2100
- stripeSubscriptionId: z10.string().optional(),
2163
+ currentPeriodEnd: z11.string().datetime().optional(),
2164
+ stripeCustomerId: z11.string().optional(),
2165
+ stripeSubscriptionId: z11.string().optional(),
2101
2166
  /**
2102
2167
  * Purchased Add-ons from Marketplace
2103
2168
  */
2104
- addons: z10.array(z10.object({
2105
- pluginId: z10.string().describe("Marketplace Plugin ID (NPM package name)"),
2106
- quantity: z10.number().default(1),
2169
+ addons: z11.array(z11.object({
2170
+ pluginId: z11.string().describe("Marketplace Plugin ID (NPM package name)"),
2171
+ quantity: z11.number().default(1),
2107
2172
  status: SubscriptionStatus.default("active")
2108
2173
  })).optional(),
2109
2174
  /**
2110
2175
  * Quota Usage Snapshot
2111
2176
  * Cached usage metrics for quick display/validation.
2112
2177
  */
2113
- usage: z10.record(z10.string(), z10.number()).optional()
2178
+ usage: z11.record(z11.string(), z11.number()).optional()
2114
2179
  });
2115
- var DeploymentTargetSchema = z10.object({
2116
- provider: z10.enum(["vercel", "docker", "kubernetes"]),
2117
- region: z10.string().optional(),
2118
- url: z10.string().url().optional().describe("Public Access URL"),
2119
- env: z10.record(z10.string(), z10.string()).optional().describe("Runtime Environment Variables")
2180
+ var DeploymentTargetSchema = z11.object({
2181
+ provider: z11.enum(["vercel", "docker", "kubernetes"]),
2182
+ region: z11.string().optional(),
2183
+ url: z11.string().url().optional().describe("Public Access URL"),
2184
+ env: z11.record(z11.string(), z11.string()).optional().describe("Runtime Environment Variables")
2120
2185
  });
2121
- var HubSpaceSchema = z10.object({
2122
- id: z10.string().uuid(),
2186
+ var HubSpaceSchema = z11.object({
2187
+ id: z11.string().uuid(),
2123
2188
  /**
2124
2189
  * Display Name
2125
2190
  */
2126
- name: z10.string(),
2127
- slug: z10.string().describe("URL friendly identifier"),
2191
+ name: z11.string(),
2192
+ slug: z11.string().describe("URL friendly identifier"),
2128
2193
  /**
2129
2194
  * Owner (User or Org ID in Hub)
2130
2195
  */
2131
- ownerId: z10.string(),
2196
+ ownerId: z11.string(),
2132
2197
  /**
2133
2198
  * The Runtime Instance Definition
2134
2199
  * Defines the technical execution environment.
2135
2200
  */
2136
- runtime: z10.object({
2201
+ runtime: z11.object({
2137
2202
  isolation: TenantIsolationLevel.describe("Data isolation strategy"),
2138
2203
  quotas: TenantQuotaSchema.optional().describe("Resource quotas")
2139
2204
  }).optional().describe("Runtime instance configuration"),
@@ -2145,11 +2210,11 @@ var HubSpaceSchema = z10.object({
2145
2210
  /**
2146
2211
  * The Current Actual State (Last Successful Build)
2147
2212
  */
2148
- lastBuild: z10.object({
2149
- id: z10.string(),
2150
- timestamp: z10.string().datetime(),
2151
- manifestUrl: z10.string().url().optional(),
2152
- status: z10.enum(["pending", "success", "failed"])
2213
+ lastBuild: z11.object({
2214
+ id: z11.string(),
2215
+ timestamp: z11.string().datetime(),
2216
+ manifestUrl: z11.string().url().optional(),
2217
+ status: z11.enum(["pending", "success", "failed"])
2153
2218
  }).optional(),
2154
2219
  /**
2155
2220
  * Commercial / Billing Info
@@ -2159,13 +2224,13 @@ var HubSpaceSchema = z10.object({
2159
2224
  * Infrastructure Settings
2160
2225
  */
2161
2226
  deployment: DeploymentTargetSchema.optional(),
2162
- createdAt: z10.string(),
2163
- updatedAt: z10.string()
2227
+ createdAt: z11.string(),
2228
+ updatedAt: z11.string()
2164
2229
  });
2165
2230
 
2166
2231
  // src/hub/license.zod.ts
2167
- import { z as z11 } from "zod";
2168
- var MetricType = z11.enum([
2232
+ import { z as z12 } from "zod";
2233
+ var MetricType = z12.enum([
2169
2234
  "boolean",
2170
2235
  // Feature Flag (Enabled/Disabled)
2171
2236
  "counter",
@@ -2173,115 +2238,115 @@ var MetricType = z11.enum([
2173
2238
  "gauge"
2174
2239
  // Current Level (e.g. Storage Used, Users Active) - Point in time
2175
2240
  ]);
2176
- var FeatureSchema = z11.object({
2177
- code: z11.string().regex(/^[a-z_][a-z0-9_.]*$/).describe("Feature code (e.g. core.api_access)"),
2178
- label: z11.string(),
2179
- description: z11.string().optional(),
2241
+ var FeatureSchema = z12.object({
2242
+ code: z12.string().regex(/^[a-z_][a-z0-9_.]*$/).describe("Feature code (e.g. core.api_access)"),
2243
+ label: z12.string(),
2244
+ description: z12.string().optional(),
2180
2245
  type: MetricType.default("boolean"),
2181
2246
  /** For counters/gauges */
2182
- unit: z11.enum(["count", "bytes", "seconds", "percent"]).optional(),
2247
+ unit: z12.enum(["count", "bytes", "seconds", "percent"]).optional(),
2183
2248
  /** Dependencies (e.g. 'audit_log' requires 'enterprise_tier') */
2184
- requires: z11.array(z11.string()).optional()
2249
+ requires: z12.array(z12.string()).optional()
2185
2250
  });
2186
- var PlanSchema = z11.object({
2187
- code: z11.string().describe("Plan code (e.g. pro_v1)"),
2188
- label: z11.string(),
2189
- active: z11.boolean().default(true),
2251
+ var PlanSchema = z12.object({
2252
+ code: z12.string().describe("Plan code (e.g. pro_v1)"),
2253
+ label: z12.string(),
2254
+ active: z12.boolean().default(true),
2190
2255
  /** Feature Entitlements */
2191
- features: z11.array(z11.string()).describe("List of enabled boolean features"),
2256
+ features: z12.array(z12.string()).describe("List of enabled boolean features"),
2192
2257
  /** Limit Quotas */
2193
- limits: z11.record(z11.string(), z11.number()).describe("Map of metric codes to limit values (e.g. { storage_gb: 10 })"),
2258
+ limits: z12.record(z12.string(), z12.number()).describe("Map of metric codes to limit values (e.g. { storage_gb: 10 })"),
2194
2259
  /** Pricing (Optional Metadata) */
2195
- currency: z11.string().default("USD").optional(),
2196
- priceMonthly: z11.number().optional(),
2197
- priceYearly: z11.number().optional()
2260
+ currency: z12.string().default("USD").optional(),
2261
+ priceMonthly: z12.number().optional(),
2262
+ priceYearly: z12.number().optional()
2198
2263
  });
2199
- var LicenseSchema = z11.object({
2264
+ var LicenseSchema = z12.object({
2200
2265
  /** Identity */
2201
- spaceId: z11.string().describe("Target Space ID"),
2202
- planCode: z11.string(),
2266
+ spaceId: z12.string().describe("Target Space ID"),
2267
+ planCode: z12.string(),
2203
2268
  /** Validity */
2204
- issuedAt: z11.string().datetime(),
2205
- expiresAt: z11.string().datetime().optional(),
2269
+ issuedAt: z12.string().datetime(),
2270
+ expiresAt: z12.string().datetime().optional(),
2206
2271
  // Null = Perpetual
2207
2272
  /** Status */
2208
- status: z11.enum(["active", "expired", "suspended", "trial"]),
2273
+ status: z12.enum(["active", "expired", "suspended", "trial"]),
2209
2274
  /** Overrides (Specific to this space, exceeding the plan) */
2210
- customFeatures: z11.array(z11.string()).optional(),
2211
- customLimits: z11.record(z11.string(), z11.number()).optional(),
2275
+ customFeatures: z12.array(z12.string()).optional(),
2276
+ customLimits: z12.record(z12.string(), z12.number()).optional(),
2212
2277
  /** Authorized Add-ons */
2213
- plugins: z11.array(z11.string()).optional().describe("List of enabled plugin package IDs"),
2278
+ plugins: z12.array(z12.string()).optional().describe("List of enabled plugin package IDs"),
2214
2279
  /** Signature */
2215
- signature: z11.string().optional().describe("Cryptographic signature of the license")
2280
+ signature: z12.string().optional().describe("Cryptographic signature of the license")
2216
2281
  });
2217
2282
 
2218
2283
  // src/hub/hub-federation.zod.ts
2219
- import { z as z12 } from "zod";
2220
- var RegionSchema = z12.object({
2284
+ import { z as z13 } from "zod";
2285
+ var RegionSchema = z13.object({
2221
2286
  /**
2222
2287
  * Region identifier (e.g., us-east-1, eu-west-1, ap-southeast-1)
2223
2288
  */
2224
- id: z12.string().regex(/^[a-z]{2}-[a-z]+-\d+$/).describe("Region identifier"),
2289
+ id: z13.string().regex(/^[a-z]{2}-[a-z]+-\d+$/).describe("Region identifier"),
2225
2290
  /**
2226
2291
  * Display name
2227
2292
  */
2228
- name: z12.string().describe("Human-readable region name"),
2293
+ name: z13.string().describe("Human-readable region name"),
2229
2294
  /**
2230
2295
  * Geographic location
2231
2296
  */
2232
- location: z12.object({
2233
- continent: z12.enum(["NA", "SA", "EU", "AF", "AS", "OC", "AN"]),
2234
- country: z12.string().regex(/^[A-Z]{2}$/).describe("ISO 3166-1 alpha-2 country code"),
2235
- city: z12.string().optional(),
2236
- latitude: z12.number().min(-90).max(90).optional(),
2237
- longitude: z12.number().min(-180).max(180).optional()
2297
+ location: z13.object({
2298
+ continent: z13.enum(["NA", "SA", "EU", "AF", "AS", "OC", "AN"]),
2299
+ country: z13.string().regex(/^[A-Z]{2}$/).describe("ISO 3166-1 alpha-2 country code"),
2300
+ city: z13.string().optional(),
2301
+ latitude: z13.number().min(-90).max(90).optional(),
2302
+ longitude: z13.number().min(-180).max(180).optional()
2238
2303
  }),
2239
2304
  /**
2240
2305
  * Cloud provider and region mapping
2241
2306
  */
2242
- provider: z12.object({
2243
- name: z12.enum(["aws", "azure", "gcp", "cloudflare", "vercel", "self-hosted"]),
2244
- region: z12.string().describe("Provider-specific region identifier")
2307
+ provider: z13.object({
2308
+ name: z13.enum(["aws", "azure", "gcp", "cloudflare", "vercel", "self-hosted"]),
2309
+ region: z13.string().describe("Provider-specific region identifier")
2245
2310
  }).optional(),
2246
2311
  /**
2247
2312
  * Region capabilities
2248
2313
  */
2249
- capabilities: z12.object({
2250
- databases: z12.array(z12.enum(["postgres", "mysql", "mongodb", "redis"])).default([]),
2251
- storage: z12.array(z12.enum(["s3", "azure-blob", "gcs"])).default([]),
2252
- compute: z12.array(z12.enum(["containers", "serverless", "vm"])).default([]),
2253
- cdn: z12.boolean().default(false)
2314
+ capabilities: z13.object({
2315
+ databases: z13.array(z13.enum(["postgres", "mysql", "mongodb", "redis"])).default([]),
2316
+ storage: z13.array(z13.enum(["s3", "azure-blob", "gcs"])).default([]),
2317
+ compute: z13.array(z13.enum(["containers", "serverless", "vm"])).default([]),
2318
+ cdn: z13.boolean().default(false)
2254
2319
  }).optional(),
2255
2320
  /**
2256
2321
  * Compliance and certifications
2257
2322
  */
2258
- compliance: z12.array(z12.enum(["gdpr", "hipaa", "soc2", "iso27001", "pci-dss"])).default([]),
2323
+ compliance: z13.array(z13.enum(["gdpr", "hipaa", "soc2", "iso27001", "pci-dss"])).default([]),
2259
2324
  /**
2260
2325
  * Region status
2261
2326
  */
2262
- status: z12.enum(["active", "read-only", "maintenance", "deprecated"]).default("active"),
2327
+ status: z13.enum(["active", "read-only", "maintenance", "deprecated"]).default("active"),
2263
2328
  /**
2264
2329
  * Resource limits for this region
2265
2330
  */
2266
- limits: z12.object({
2267
- maxSpaces: z12.number().int().positive().optional(),
2268
- maxTenants: z12.number().int().positive().optional(),
2269
- maxStorage: z12.number().int().positive().optional().describe("Bytes")
2331
+ limits: z13.object({
2332
+ maxSpaces: z13.number().int().positive().optional(),
2333
+ maxTenants: z13.number().int().positive().optional(),
2334
+ maxStorage: z13.number().int().positive().optional().describe("Bytes")
2270
2335
  }).optional()
2271
2336
  });
2272
- var HubInstanceSchema = z12.object({
2337
+ var HubInstanceSchema = z13.object({
2273
2338
  /**
2274
2339
  * Instance identifier
2275
2340
  */
2276
- id: z12.string().uuid(),
2341
+ id: z13.string().uuid(),
2277
2342
  /**
2278
2343
  * Region where this hub is deployed
2279
2344
  */
2280
- regionId: z12.string(),
2345
+ regionId: z13.string(),
2281
2346
  /**
2282
2347
  * Hub role in federation
2283
2348
  */
2284
- role: z12.enum([
2349
+ role: z13.enum([
2285
2350
  "primary",
2286
2351
  // Primary/master hub
2287
2352
  "secondary",
@@ -2292,71 +2357,71 @@ var HubInstanceSchema = z12.object({
2292
2357
  /**
2293
2358
  * Endpoint URLs
2294
2359
  */
2295
- endpoints: z12.object({
2296
- api: z12.string().url().describe("Public API endpoint"),
2297
- admin: z12.string().url().optional().describe("Admin console"),
2298
- grpc: z12.string().optional().describe("gRPC endpoint for inter-hub communication")
2360
+ endpoints: z13.object({
2361
+ api: z13.string().url().describe("Public API endpoint"),
2362
+ admin: z13.string().url().optional().describe("Admin console"),
2363
+ grpc: z13.string().optional().describe("gRPC endpoint for inter-hub communication")
2299
2364
  }),
2300
2365
  /**
2301
2366
  * Replication configuration
2302
2367
  */
2303
- replication: z12.object({
2368
+ replication: z13.object({
2304
2369
  /**
2305
2370
  * Source hub for replication (if this is a secondary)
2306
2371
  */
2307
- primaryHubId: z12.string().uuid().optional(),
2372
+ primaryHubId: z13.string().uuid().optional(),
2308
2373
  /**
2309
2374
  * Replication lag tolerance in seconds
2310
2375
  */
2311
- lagTolerance: z12.number().int().positive().default(5),
2376
+ lagTolerance: z13.number().int().positive().default(5),
2312
2377
  /**
2313
2378
  * Replication mode
2314
2379
  */
2315
- mode: z12.enum(["sync", "async", "semi-sync"]).default("async")
2380
+ mode: z13.enum(["sync", "async", "semi-sync"]).default("async")
2316
2381
  }).optional(),
2317
2382
  /**
2318
2383
  * Health status
2319
2384
  */
2320
- health: z12.object({
2321
- status: z12.enum(["healthy", "degraded", "unhealthy"]),
2322
- lastCheck: z12.string().datetime(),
2323
- uptime: z12.number().describe("Seconds")
2385
+ health: z13.object({
2386
+ status: z13.enum(["healthy", "degraded", "unhealthy"]),
2387
+ lastCheck: z13.string().datetime(),
2388
+ uptime: z13.number().describe("Seconds")
2324
2389
  }).optional(),
2325
2390
  /**
2326
2391
  * Version
2327
2392
  */
2328
- version: z12.string(),
2393
+ version: z13.string(),
2329
2394
  /**
2330
2395
  * Metadata
2331
2396
  */
2332
- createdAt: z12.string().datetime(),
2333
- updatedAt: z12.string().datetime()
2397
+ createdAt: z13.string().datetime(),
2398
+ updatedAt: z13.string().datetime()
2334
2399
  });
2335
- var FederationTopologySchema = z12.object({
2400
+ var FederationTopologySchema = z13.object({
2336
2401
  /**
2337
2402
  * Federation identifier
2338
2403
  */
2339
- id: z12.string().uuid(),
2404
+ id: z13.string().uuid(),
2340
2405
  /**
2341
2406
  * Federation name
2342
2407
  */
2343
- name: z12.string(),
2408
+ name: z13.string(),
2344
2409
  /**
2345
2410
  * Regions in this federation
2346
2411
  */
2347
- regions: z12.array(RegionSchema),
2412
+ regions: z13.array(RegionSchema),
2348
2413
  /**
2349
2414
  * Hub instances
2350
2415
  */
2351
- hubs: z12.array(HubInstanceSchema),
2416
+ hubs: z13.array(HubInstanceSchema),
2352
2417
  /**
2353
2418
  * Routing strategy
2354
2419
  */
2355
- routing: z12.object({
2420
+ routing: z13.object({
2356
2421
  /**
2357
2422
  * How to route tenant requests
2358
2423
  */
2359
- strategy: z12.enum([
2424
+ strategy: z13.enum([
2360
2425
  "geo-proximity",
2361
2426
  // Route to nearest region
2362
2427
  "data-residency",
@@ -2369,117 +2434,117 @@ var FederationTopologySchema = z12.object({
2369
2434
  /**
2370
2435
  * Failover behavior
2371
2436
  */
2372
- failover: z12.object({
2373
- enabled: z12.boolean().default(true),
2374
- maxRetries: z12.number().int().min(0).default(3),
2375
- timeout: z12.number().int().positive().default(5e3).describe("Milliseconds")
2437
+ failover: z13.object({
2438
+ enabled: z13.boolean().default(true),
2439
+ maxRetries: z13.number().int().min(0).default(3),
2440
+ timeout: z13.number().int().positive().default(5e3).describe("Milliseconds")
2376
2441
  })
2377
2442
  }),
2378
2443
  /**
2379
2444
  * Data synchronization settings
2380
2445
  */
2381
- synchronization: z12.object({
2446
+ synchronization: z13.object({
2382
2447
  /**
2383
2448
  * What data to sync across regions
2384
2449
  */
2385
- scope: z12.object({
2450
+ scope: z13.object({
2386
2451
  /**
2387
2452
  * Sync plugin registry
2388
2453
  */
2389
- plugins: z12.boolean().default(true),
2454
+ plugins: z13.boolean().default(true),
2390
2455
  /**
2391
2456
  * Sync tenant metadata (not data)
2392
2457
  */
2393
- tenants: z12.boolean().default(true),
2458
+ tenants: z13.boolean().default(true),
2394
2459
  /**
2395
2460
  * Sync spaces metadata
2396
2461
  */
2397
- spaces: z12.boolean().default(false),
2462
+ spaces: z13.boolean().default(false),
2398
2463
  /**
2399
2464
  * Sync licenses
2400
2465
  */
2401
- licenses: z12.boolean().default(true)
2466
+ licenses: z13.boolean().default(true)
2402
2467
  }),
2403
2468
  /**
2404
2469
  * Sync frequency
2405
2470
  */
2406
- frequency: z12.enum(["realtime", "hourly", "daily"]).default("realtime"),
2471
+ frequency: z13.enum(["realtime", "hourly", "daily"]).default("realtime"),
2407
2472
  /**
2408
2473
  * Conflict resolution
2409
2474
  */
2410
- conflictResolution: z12.enum(["last-write-wins", "primary-wins", "manual"]).default("last-write-wins")
2475
+ conflictResolution: z13.enum(["last-write-wins", "primary-wins", "manual"]).default("last-write-wins")
2411
2476
  })
2412
2477
  });
2413
- var TenantPlacementPolicySchema = z12.object({
2478
+ var TenantPlacementPolicySchema = z13.object({
2414
2479
  /**
2415
2480
  * Tenant identifier
2416
2481
  */
2417
- tenantId: z12.string(),
2482
+ tenantId: z13.string(),
2418
2483
  /**
2419
2484
  * Primary region (where tenant data lives)
2420
2485
  */
2421
- primaryRegion: z12.string(),
2486
+ primaryRegion: z13.string(),
2422
2487
  /**
2423
2488
  * Replica regions (for disaster recovery)
2424
2489
  */
2425
- replicaRegions: z12.array(z12.string()).default([]),
2490
+ replicaRegions: z13.array(z13.string()).default([]),
2426
2491
  /**
2427
2492
  * Data residency constraints
2428
2493
  */
2429
- dataResidency: z12.object({
2494
+ dataResidency: z13.object({
2430
2495
  /**
2431
2496
  * Allowed regions for data storage
2432
2497
  */
2433
- allowedRegions: z12.array(z12.string()).optional(),
2498
+ allowedRegions: z13.array(z13.string()).optional(),
2434
2499
  /**
2435
2500
  * Prohibited regions
2436
2501
  */
2437
- prohibitedRegions: z12.array(z12.string()).default([]),
2502
+ prohibitedRegions: z13.array(z13.string()).default([]),
2438
2503
  /**
2439
2504
  * Continent restriction
2440
2505
  */
2441
- continent: z12.enum(["NA", "SA", "EU", "AF", "AS", "OC", "AN"]).optional()
2506
+ continent: z13.enum(["NA", "SA", "EU", "AF", "AS", "OC", "AN"]).optional()
2442
2507
  }).optional(),
2443
2508
  /**
2444
2509
  * Failover policy
2445
2510
  */
2446
- failover: z12.object({
2511
+ failover: z13.object({
2447
2512
  /**
2448
2513
  * Enable automatic failover
2449
2514
  */
2450
- enabled: z12.boolean().default(true),
2515
+ enabled: z13.boolean().default(true),
2451
2516
  /**
2452
2517
  * Preferred failover order (region IDs)
2453
2518
  */
2454
- preferredOrder: z12.array(z12.string()).default([]),
2519
+ preferredOrder: z13.array(z13.string()).default([]),
2455
2520
  /**
2456
2521
  * Maximum acceptable latency for failover target (ms)
2457
2522
  */
2458
- maxLatency: z12.number().int().positive().default(100)
2523
+ maxLatency: z13.number().int().positive().default(100)
2459
2524
  }).optional(),
2460
2525
  /**
2461
2526
  * Latency requirements
2462
2527
  */
2463
- latency: z12.object({
2528
+ latency: z13.object({
2464
2529
  /**
2465
2530
  * Maximum acceptable latency for primary region (ms)
2466
2531
  */
2467
- maxPrimaryLatency: z12.number().int().positive().default(50),
2532
+ maxPrimaryLatency: z13.number().int().positive().default(50),
2468
2533
  /**
2469
2534
  * Maximum acceptable latency for replicas (ms)
2470
2535
  */
2471
- maxReplicaLatency: z12.number().int().positive().default(200)
2536
+ maxReplicaLatency: z13.number().int().positive().default(200)
2472
2537
  }).optional()
2473
2538
  });
2474
- var ReplicationJobSchema = z12.object({
2539
+ var ReplicationJobSchema = z13.object({
2475
2540
  /**
2476
2541
  * Job identifier
2477
2542
  */
2478
- id: z12.string().uuid(),
2543
+ id: z13.string().uuid(),
2479
2544
  /**
2480
2545
  * Job type
2481
2546
  */
2482
- type: z12.enum([
2547
+ type: z13.enum([
2483
2548
  "initial-sync",
2484
2549
  // First-time full sync
2485
2550
  "incremental",
@@ -2490,84 +2555,84 @@ var ReplicationJobSchema = z12.object({
2490
2555
  /**
2491
2556
  * Source hub
2492
2557
  */
2493
- sourceHubId: z12.string().uuid(),
2558
+ sourceHubId: z13.string().uuid(),
2494
2559
  /**
2495
2560
  * Target hub(s)
2496
2561
  */
2497
- targetHubIds: z12.array(z12.string().uuid()),
2562
+ targetHubIds: z13.array(z13.string().uuid()),
2498
2563
  /**
2499
2564
  * Resource scope
2500
2565
  */
2501
- scope: z12.object({
2566
+ scope: z13.object({
2502
2567
  /**
2503
2568
  * Resource type
2504
2569
  */
2505
- resourceType: z12.enum(["plugin", "tenant", "space", "license", "all"]),
2570
+ resourceType: z13.enum(["plugin", "tenant", "space", "license", "all"]),
2506
2571
  /**
2507
2572
  * Specific resource IDs (empty = all)
2508
2573
  */
2509
- resourceIds: z12.array(z12.string()).default([])
2574
+ resourceIds: z13.array(z13.string()).default([])
2510
2575
  }),
2511
2576
  /**
2512
2577
  * Job status
2513
2578
  */
2514
- status: z12.enum(["pending", "running", "completed", "failed", "cancelled"]),
2579
+ status: z13.enum(["pending", "running", "completed", "failed", "cancelled"]),
2515
2580
  /**
2516
2581
  * Progress
2517
2582
  */
2518
- progress: z12.object({
2519
- total: z12.number().int().min(0),
2520
- completed: z12.number().int().min(0),
2521
- failed: z12.number().int().min(0)
2583
+ progress: z13.object({
2584
+ total: z13.number().int().min(0),
2585
+ completed: z13.number().int().min(0),
2586
+ failed: z13.number().int().min(0)
2522
2587
  }).optional(),
2523
2588
  /**
2524
2589
  * Timestamps
2525
2590
  */
2526
- createdAt: z12.string().datetime(),
2527
- startedAt: z12.string().datetime().optional(),
2528
- completedAt: z12.string().datetime().optional(),
2591
+ createdAt: z13.string().datetime(),
2592
+ startedAt: z13.string().datetime().optional(),
2593
+ completedAt: z13.string().datetime().optional(),
2529
2594
  /**
2530
2595
  * Errors
2531
2596
  */
2532
- errors: z12.array(z12.object({
2533
- timestamp: z12.string().datetime(),
2534
- resourceId: z12.string(),
2535
- error: z12.string()
2597
+ errors: z13.array(z13.object({
2598
+ timestamp: z13.string().datetime(),
2599
+ resourceId: z13.string(),
2600
+ error: z13.string()
2536
2601
  })).default([])
2537
2602
  });
2538
- var GlobalRegistryEntrySchema = z12.object({
2603
+ var GlobalRegistryEntrySchema = z13.object({
2539
2604
  /**
2540
2605
  * Resource identifier
2541
2606
  */
2542
- resourceId: z12.string(),
2607
+ resourceId: z13.string(),
2543
2608
  /**
2544
2609
  * Resource type
2545
2610
  */
2546
- resourceType: z12.enum(["plugin", "tenant", "space", "license"]),
2611
+ resourceType: z13.enum(["plugin", "tenant", "space", "license"]),
2547
2612
  /**
2548
2613
  * Regions where this resource exists
2549
2614
  */
2550
- locations: z12.array(z12.object({
2551
- regionId: z12.string(),
2552
- hubId: z12.string().uuid(),
2553
- isPrimary: z12.boolean().default(false),
2554
- lastSyncedAt: z12.string().datetime().optional(),
2555
- version: z12.string().optional()
2615
+ locations: z13.array(z13.object({
2616
+ regionId: z13.string(),
2617
+ hubId: z13.string().uuid(),
2618
+ isPrimary: z13.boolean().default(false),
2619
+ lastSyncedAt: z13.string().datetime().optional(),
2620
+ version: z13.string().optional()
2556
2621
  })),
2557
2622
  /**
2558
2623
  * Global version vector clock (for conflict detection)
2559
2624
  */
2560
- versionVector: z12.record(z12.string(), z12.number().int()).optional()
2625
+ versionVector: z13.record(z13.string(), z13.number().int()).optional()
2561
2626
  });
2562
- var EdgeLocationSchema = z12.object({
2627
+ var EdgeLocationSchema = z13.object({
2563
2628
  /**
2564
2629
  * Location identifier
2565
2630
  */
2566
- id: z12.string(),
2631
+ id: z13.string(),
2567
2632
  /**
2568
2633
  * Parent region
2569
2634
  */
2570
- regionId: z12.string(),
2635
+ regionId: z13.string(),
2571
2636
  /**
2572
2637
  * Location details
2573
2638
  */
@@ -2575,24 +2640,24 @@ var EdgeLocationSchema = z12.object({
2575
2640
  /**
2576
2641
  * Caching configuration
2577
2642
  */
2578
- cache: z12.object({
2643
+ cache: z13.object({
2579
2644
  /**
2580
2645
  * What to cache at edge
2581
2646
  */
2582
- resources: z12.array(z12.enum(["plugins", "static-assets", "api-responses"])).default([]),
2647
+ resources: z13.array(z13.enum(["plugins", "static-assets", "api-responses"])).default([]),
2583
2648
  /**
2584
2649
  * TTL in seconds
2585
2650
  */
2586
- ttl: z12.number().int().positive().default(3600),
2651
+ ttl: z13.number().int().positive().default(3600),
2587
2652
  /**
2588
2653
  * Cache size limit (bytes)
2589
2654
  */
2590
- maxSize: z12.number().int().positive().optional()
2655
+ maxSize: z13.number().int().positive().optional()
2591
2656
  }),
2592
2657
  /**
2593
2658
  * Status
2594
2659
  */
2595
- status: z12.enum(["active", "inactive"]).default("active")
2660
+ status: z13.enum(["active", "inactive"]).default("active")
2596
2661
  });
2597
2662
  var HubFederationProtocol = {
2598
2663
  Region: RegionSchema,
@@ -2605,31 +2670,31 @@ var HubFederationProtocol = {
2605
2670
  };
2606
2671
 
2607
2672
  // src/hub/plugin-security.zod.ts
2608
- import { z as z13 } from "zod";
2609
- var VulnerabilitySeverity = z13.enum([
2673
+ import { z as z14 } from "zod";
2674
+ var VulnerabilitySeverity = z14.enum([
2610
2675
  "critical",
2611
2676
  "high",
2612
2677
  "medium",
2613
2678
  "low",
2614
2679
  "info"
2615
2680
  ]);
2616
- var SecurityVulnerabilitySchema = z13.object({
2681
+ var SecurityVulnerabilitySchema = z14.object({
2617
2682
  /**
2618
2683
  * CVE identifier (if applicable)
2619
2684
  */
2620
- cve: z13.string().regex(/^CVE-\d{4}-\d+$/).optional().describe("CVE identifier"),
2685
+ cve: z14.string().regex(/^CVE-\d{4}-\d+$/).optional().describe("CVE identifier"),
2621
2686
  /**
2622
2687
  * Vulnerability identifier (GHSA, SNYK, etc.)
2623
2688
  */
2624
- id: z13.string().describe("Vulnerability ID"),
2689
+ id: z14.string().describe("Vulnerability ID"),
2625
2690
  /**
2626
2691
  * Title
2627
2692
  */
2628
- title: z13.string(),
2693
+ title: z14.string(),
2629
2694
  /**
2630
2695
  * Description
2631
2696
  */
2632
- description: z13.string(),
2697
+ description: z14.string(),
2633
2698
  /**
2634
2699
  * Severity
2635
2700
  */
@@ -2637,149 +2702,149 @@ var SecurityVulnerabilitySchema = z13.object({
2637
2702
  /**
2638
2703
  * CVSS score (0-10)
2639
2704
  */
2640
- cvss: z13.number().min(0).max(10).optional(),
2705
+ cvss: z14.number().min(0).max(10).optional(),
2641
2706
  /**
2642
2707
  * Affected package
2643
2708
  */
2644
- package: z13.object({
2645
- name: z13.string(),
2646
- version: z13.string(),
2647
- ecosystem: z13.string().optional()
2709
+ package: z14.object({
2710
+ name: z14.string(),
2711
+ version: z14.string(),
2712
+ ecosystem: z14.string().optional()
2648
2713
  }),
2649
2714
  /**
2650
2715
  * Vulnerable version range
2651
2716
  */
2652
- vulnerableVersions: z13.string().describe("Semver range of vulnerable versions"),
2717
+ vulnerableVersions: z14.string().describe("Semver range of vulnerable versions"),
2653
2718
  /**
2654
2719
  * Patched versions
2655
2720
  */
2656
- patchedVersions: z13.string().optional().describe("Semver range of patched versions"),
2721
+ patchedVersions: z14.string().optional().describe("Semver range of patched versions"),
2657
2722
  /**
2658
2723
  * References
2659
2724
  */
2660
- references: z13.array(z13.object({
2661
- type: z13.enum(["advisory", "article", "report", "web"]),
2662
- url: z13.string().url()
2725
+ references: z14.array(z14.object({
2726
+ type: z14.enum(["advisory", "article", "report", "web"]),
2727
+ url: z14.string().url()
2663
2728
  })).default([]),
2664
2729
  /**
2665
2730
  * CWE (Common Weakness Enumeration)
2666
2731
  */
2667
- cwe: z13.array(z13.string()).default([]),
2732
+ cwe: z14.array(z14.string()).default([]),
2668
2733
  /**
2669
2734
  * Published date
2670
2735
  */
2671
- publishedAt: z13.string().datetime().optional(),
2736
+ publishedAt: z14.string().datetime().optional(),
2672
2737
  /**
2673
2738
  * Mitigation advice
2674
2739
  */
2675
- mitigation: z13.string().optional()
2740
+ mitigation: z14.string().optional()
2676
2741
  });
2677
- var SecurityScanResultSchema = z13.object({
2742
+ var SecurityScanResultSchema = z14.object({
2678
2743
  /**
2679
2744
  * Scan identifier
2680
2745
  */
2681
- scanId: z13.string().uuid(),
2746
+ scanId: z14.string().uuid(),
2682
2747
  /**
2683
2748
  * Plugin being scanned
2684
2749
  */
2685
- plugin: z13.object({
2686
- id: z13.string(),
2687
- version: z13.string()
2750
+ plugin: z14.object({
2751
+ id: z14.string(),
2752
+ version: z14.string()
2688
2753
  }),
2689
2754
  /**
2690
2755
  * Scan timestamp
2691
2756
  */
2692
- scannedAt: z13.string().datetime(),
2757
+ scannedAt: z14.string().datetime(),
2693
2758
  /**
2694
2759
  * Scanner information
2695
2760
  */
2696
- scanner: z13.object({
2697
- name: z13.string().describe("Scanner name (e.g., snyk, osv, trivy)"),
2698
- version: z13.string()
2761
+ scanner: z14.object({
2762
+ name: z14.string().describe("Scanner name (e.g., snyk, osv, trivy)"),
2763
+ version: z14.string()
2699
2764
  }),
2700
2765
  /**
2701
2766
  * Scan status
2702
2767
  */
2703
- status: z13.enum(["passed", "failed", "warning"]),
2768
+ status: z14.enum(["passed", "failed", "warning"]),
2704
2769
  /**
2705
2770
  * Vulnerabilities found
2706
2771
  */
2707
- vulnerabilities: z13.array(SecurityVulnerabilitySchema),
2772
+ vulnerabilities: z14.array(SecurityVulnerabilitySchema),
2708
2773
  /**
2709
2774
  * Vulnerability summary
2710
2775
  */
2711
- summary: z13.object({
2712
- critical: z13.number().int().min(0).default(0),
2713
- high: z13.number().int().min(0).default(0),
2714
- medium: z13.number().int().min(0).default(0),
2715
- low: z13.number().int().min(0).default(0),
2716
- info: z13.number().int().min(0).default(0),
2717
- total: z13.number().int().min(0).default(0)
2776
+ summary: z14.object({
2777
+ critical: z14.number().int().min(0).default(0),
2778
+ high: z14.number().int().min(0).default(0),
2779
+ medium: z14.number().int().min(0).default(0),
2780
+ low: z14.number().int().min(0).default(0),
2781
+ info: z14.number().int().min(0).default(0),
2782
+ total: z14.number().int().min(0).default(0)
2718
2783
  }),
2719
2784
  /**
2720
2785
  * License compliance issues
2721
2786
  */
2722
- licenseIssues: z13.array(z13.object({
2723
- package: z13.string(),
2724
- license: z13.string(),
2725
- reason: z13.string(),
2726
- severity: z13.enum(["error", "warning", "info"])
2787
+ licenseIssues: z14.array(z14.object({
2788
+ package: z14.string(),
2789
+ license: z14.string(),
2790
+ reason: z14.string(),
2791
+ severity: z14.enum(["error", "warning", "info"])
2727
2792
  })).default([]),
2728
2793
  /**
2729
2794
  * Code quality issues
2730
2795
  */
2731
- codeQuality: z13.object({
2732
- score: z13.number().min(0).max(100).optional(),
2733
- issues: z13.array(z13.object({
2734
- type: z13.enum(["security", "quality", "style"]),
2735
- severity: z13.enum(["error", "warning", "info"]),
2736
- message: z13.string(),
2737
- file: z13.string().optional(),
2738
- line: z13.number().int().optional()
2796
+ codeQuality: z14.object({
2797
+ score: z14.number().min(0).max(100).optional(),
2798
+ issues: z14.array(z14.object({
2799
+ type: z14.enum(["security", "quality", "style"]),
2800
+ severity: z14.enum(["error", "warning", "info"]),
2801
+ message: z14.string(),
2802
+ file: z14.string().optional(),
2803
+ line: z14.number().int().optional()
2739
2804
  })).default([])
2740
2805
  }).optional(),
2741
2806
  /**
2742
2807
  * Next scan scheduled
2743
2808
  */
2744
- nextScanAt: z13.string().datetime().optional()
2809
+ nextScanAt: z14.string().datetime().optional()
2745
2810
  });
2746
- var SecurityPolicySchema = z13.object({
2811
+ var SecurityPolicySchema = z14.object({
2747
2812
  /**
2748
2813
  * Policy identifier
2749
2814
  */
2750
- id: z13.string(),
2815
+ id: z14.string(),
2751
2816
  /**
2752
2817
  * Policy name
2753
2818
  */
2754
- name: z13.string(),
2819
+ name: z14.string(),
2755
2820
  /**
2756
2821
  * Automatic scanning
2757
2822
  */
2758
- autoScan: z13.object({
2759
- enabled: z13.boolean().default(true),
2760
- frequency: z13.enum(["on-publish", "daily", "weekly", "monthly"]).default("daily")
2823
+ autoScan: z14.object({
2824
+ enabled: z14.boolean().default(true),
2825
+ frequency: z14.enum(["on-publish", "daily", "weekly", "monthly"]).default("daily")
2761
2826
  }),
2762
2827
  /**
2763
2828
  * Vulnerability thresholds
2764
2829
  */
2765
- thresholds: z13.object({
2830
+ thresholds: z14.object({
2766
2831
  /**
2767
2832
  * Block plugin if critical vulnerabilities exceed this
2768
2833
  */
2769
- maxCritical: z13.number().int().min(0).default(0),
2834
+ maxCritical: z14.number().int().min(0).default(0),
2770
2835
  /**
2771
2836
  * Block plugin if high vulnerabilities exceed this
2772
2837
  */
2773
- maxHigh: z13.number().int().min(0).default(0),
2838
+ maxHigh: z14.number().int().min(0).default(0),
2774
2839
  /**
2775
2840
  * Warn if medium vulnerabilities exceed this
2776
2841
  */
2777
- maxMedium: z13.number().int().min(0).default(5)
2842
+ maxMedium: z14.number().int().min(0).default(5)
2778
2843
  }),
2779
2844
  /**
2780
2845
  * Allowed licenses
2781
2846
  */
2782
- allowedLicenses: z13.array(z13.string()).default([
2847
+ allowedLicenses: z14.array(z14.string()).default([
2783
2848
  "MIT",
2784
2849
  "Apache-2.0",
2785
2850
  "BSD-3-Clause",
@@ -2789,152 +2854,152 @@ var SecurityPolicySchema = z13.object({
2789
2854
  /**
2790
2855
  * Prohibited licenses
2791
2856
  */
2792
- prohibitedLicenses: z13.array(z13.string()).default([
2857
+ prohibitedLicenses: z14.array(z14.string()).default([
2793
2858
  "GPL-3.0",
2794
2859
  "AGPL-3.0"
2795
2860
  ]),
2796
2861
  /**
2797
2862
  * Code signing requirements
2798
2863
  */
2799
- codeSigning: z13.object({
2800
- required: z13.boolean().default(false),
2801
- allowedSigners: z13.array(z13.string()).default([])
2864
+ codeSigning: z14.object({
2865
+ required: z14.boolean().default(false),
2866
+ allowedSigners: z14.array(z14.string()).default([])
2802
2867
  }).optional(),
2803
2868
  /**
2804
2869
  * Sandbox restrictions
2805
2870
  */
2806
- sandbox: z13.object({
2871
+ sandbox: z14.object({
2807
2872
  /**
2808
2873
  * Restrict network access
2809
2874
  */
2810
- networkAccess: z13.enum(["none", "localhost", "allowlist", "all"]).default("all"),
2875
+ networkAccess: z14.enum(["none", "localhost", "allowlist", "all"]).default("all"),
2811
2876
  /**
2812
2877
  * Allowed network destinations (if allowlist)
2813
2878
  */
2814
- allowedDestinations: z13.array(z13.string()).default([]),
2879
+ allowedDestinations: z14.array(z14.string()).default([]),
2815
2880
  /**
2816
2881
  * File system access
2817
2882
  */
2818
- filesystemAccess: z13.enum(["none", "read-only", "temp-only", "full"]).default("full"),
2883
+ filesystemAccess: z14.enum(["none", "read-only", "temp-only", "full"]).default("full"),
2819
2884
  /**
2820
2885
  * Maximum memory (MB)
2821
2886
  */
2822
- maxMemoryMB: z13.number().int().positive().optional(),
2887
+ maxMemoryMB: z14.number().int().positive().optional(),
2823
2888
  /**
2824
2889
  * Maximum CPU time (seconds)
2825
2890
  */
2826
- maxCPUSeconds: z13.number().int().positive().optional()
2891
+ maxCPUSeconds: z14.number().int().positive().optional()
2827
2892
  }).optional()
2828
2893
  });
2829
- var PackageDependencySchema = z13.object({
2894
+ var PackageDependencySchema = z14.object({
2830
2895
  /**
2831
2896
  * Package name/ID
2832
2897
  */
2833
- name: z13.string(),
2898
+ name: z14.string(),
2834
2899
  /**
2835
2900
  * Version constraint (semver range)
2836
2901
  */
2837
- versionConstraint: z13.string().describe("Semver range (e.g., `^1.0.0`, `>=2.0.0 <3.0.0`)"),
2902
+ versionConstraint: z14.string().describe("Semver range (e.g., `^1.0.0`, `>=2.0.0 <3.0.0`)"),
2838
2903
  /**
2839
2904
  * Dependency type
2840
2905
  */
2841
- type: z13.enum(["required", "optional", "peer", "dev"]).default("required"),
2906
+ type: z14.enum(["required", "optional", "peer", "dev"]).default("required"),
2842
2907
  /**
2843
2908
  * Resolved version (filled during resolution)
2844
2909
  */
2845
- resolvedVersion: z13.string().optional()
2910
+ resolvedVersion: z14.string().optional()
2846
2911
  });
2847
- var DependencyGraphNodeSchema = z13.object({
2912
+ var DependencyGraphNodeSchema = z14.object({
2848
2913
  /**
2849
2914
  * Package identifier
2850
2915
  */
2851
- id: z13.string(),
2916
+ id: z14.string(),
2852
2917
  /**
2853
2918
  * Package version
2854
2919
  */
2855
- version: z13.string(),
2920
+ version: z14.string(),
2856
2921
  /**
2857
2922
  * Dependencies of this package
2858
2923
  */
2859
- dependencies: z13.array(PackageDependencySchema).default([]),
2924
+ dependencies: z14.array(PackageDependencySchema).default([]),
2860
2925
  /**
2861
2926
  * Depth in dependency tree
2862
2927
  */
2863
- depth: z13.number().int().min(0),
2928
+ depth: z14.number().int().min(0),
2864
2929
  /**
2865
2930
  * Whether this is a direct dependency
2866
2931
  */
2867
- isDirect: z13.boolean(),
2932
+ isDirect: z14.boolean(),
2868
2933
  /**
2869
2934
  * Package metadata
2870
2935
  */
2871
- metadata: z13.object({
2872
- name: z13.string(),
2873
- description: z13.string().optional(),
2874
- license: z13.string().optional(),
2875
- homepage: z13.string().url().optional()
2936
+ metadata: z14.object({
2937
+ name: z14.string(),
2938
+ description: z14.string().optional(),
2939
+ license: z14.string().optional(),
2940
+ homepage: z14.string().url().optional()
2876
2941
  }).optional()
2877
2942
  });
2878
- var DependencyGraphSchema = z13.object({
2943
+ var DependencyGraphSchema = z14.object({
2879
2944
  /**
2880
2945
  * Root package
2881
2946
  */
2882
- root: z13.object({
2883
- id: z13.string(),
2884
- version: z13.string()
2947
+ root: z14.object({
2948
+ id: z14.string(),
2949
+ version: z14.string()
2885
2950
  }),
2886
2951
  /**
2887
2952
  * All nodes in the graph
2888
2953
  */
2889
- nodes: z13.array(DependencyGraphNodeSchema),
2954
+ nodes: z14.array(DependencyGraphNodeSchema),
2890
2955
  /**
2891
2956
  * Edges (dependency relationships)
2892
2957
  */
2893
- edges: z13.array(z13.object({
2894
- from: z13.string().describe("Package ID"),
2895
- to: z13.string().describe("Package ID"),
2896
- constraint: z13.string().describe("Version constraint")
2958
+ edges: z14.array(z14.object({
2959
+ from: z14.string().describe("Package ID"),
2960
+ to: z14.string().describe("Package ID"),
2961
+ constraint: z14.string().describe("Version constraint")
2897
2962
  })),
2898
2963
  /**
2899
2964
  * Resolution statistics
2900
2965
  */
2901
- stats: z13.object({
2902
- totalDependencies: z13.number().int().min(0),
2903
- directDependencies: z13.number().int().min(0),
2904
- maxDepth: z13.number().int().min(0)
2966
+ stats: z14.object({
2967
+ totalDependencies: z14.number().int().min(0),
2968
+ directDependencies: z14.number().int().min(0),
2969
+ maxDepth: z14.number().int().min(0)
2905
2970
  })
2906
2971
  });
2907
- var DependencyConflictSchema = z13.object({
2972
+ var DependencyConflictSchema = z14.object({
2908
2973
  /**
2909
2974
  * Package with conflict
2910
2975
  */
2911
- package: z13.string(),
2976
+ package: z14.string(),
2912
2977
  /**
2913
2978
  * Conflicting versions
2914
2979
  */
2915
- conflicts: z13.array(z13.object({
2916
- version: z13.string(),
2917
- requestedBy: z13.array(z13.string()).describe("Packages that require this version"),
2918
- constraint: z13.string()
2980
+ conflicts: z14.array(z14.object({
2981
+ version: z14.string(),
2982
+ requestedBy: z14.array(z14.string()).describe("Packages that require this version"),
2983
+ constraint: z14.string()
2919
2984
  })),
2920
2985
  /**
2921
2986
  * Suggested resolution
2922
2987
  */
2923
- resolution: z13.object({
2924
- strategy: z13.enum(["pick-highest", "pick-lowest", "manual"]),
2925
- version: z13.string().optional(),
2926
- reason: z13.string().optional()
2988
+ resolution: z14.object({
2989
+ strategy: z14.enum(["pick-highest", "pick-lowest", "manual"]),
2990
+ version: z14.string().optional(),
2991
+ reason: z14.string().optional()
2927
2992
  }).optional(),
2928
2993
  /**
2929
2994
  * Severity
2930
2995
  */
2931
- severity: z13.enum(["error", "warning", "info"])
2996
+ severity: z14.enum(["error", "warning", "info"])
2932
2997
  });
2933
- var DependencyResolutionResultSchema = z13.object({
2998
+ var DependencyResolutionResultSchema = z14.object({
2934
2999
  /**
2935
3000
  * Resolution status
2936
3001
  */
2937
- status: z13.enum(["success", "conflict", "error"]),
3002
+ status: z14.enum(["success", "conflict", "error"]),
2938
3003
  /**
2939
3004
  * Resolved dependency graph
2940
3005
  */
@@ -2942,207 +3007,207 @@ var DependencyResolutionResultSchema = z13.object({
2942
3007
  /**
2943
3008
  * Conflicts detected
2944
3009
  */
2945
- conflicts: z13.array(DependencyConflictSchema).default([]),
3010
+ conflicts: z14.array(DependencyConflictSchema).default([]),
2946
3011
  /**
2947
3012
  * Errors encountered
2948
3013
  */
2949
- errors: z13.array(z13.object({
2950
- package: z13.string(),
2951
- error: z13.string()
3014
+ errors: z14.array(z14.object({
3015
+ package: z14.string(),
3016
+ error: z14.string()
2952
3017
  })).default([]),
2953
3018
  /**
2954
3019
  * Installation order (topological sort)
2955
3020
  */
2956
- installOrder: z13.array(z13.string()).default([]),
3021
+ installOrder: z14.array(z14.string()).default([]),
2957
3022
  /**
2958
3023
  * Resolution time (ms)
2959
3024
  */
2960
- resolvedIn: z13.number().int().min(0).optional()
3025
+ resolvedIn: z14.number().int().min(0).optional()
2961
3026
  });
2962
- var SBOMEntrySchema = z13.object({
3027
+ var SBOMEntrySchema = z14.object({
2963
3028
  /**
2964
3029
  * Component name
2965
3030
  */
2966
- name: z13.string(),
3031
+ name: z14.string(),
2967
3032
  /**
2968
3033
  * Component version
2969
3034
  */
2970
- version: z13.string(),
3035
+ version: z14.string(),
2971
3036
  /**
2972
3037
  * Package URL (purl)
2973
3038
  */
2974
- purl: z13.string().optional().describe("Package URL identifier"),
3039
+ purl: z14.string().optional().describe("Package URL identifier"),
2975
3040
  /**
2976
3041
  * License
2977
3042
  */
2978
- license: z13.string().optional(),
3043
+ license: z14.string().optional(),
2979
3044
  /**
2980
3045
  * Hashes
2981
3046
  */
2982
- hashes: z13.object({
2983
- sha256: z13.string().optional(),
2984
- sha512: z13.string().optional()
3047
+ hashes: z14.object({
3048
+ sha256: z14.string().optional(),
3049
+ sha512: z14.string().optional()
2985
3050
  }).optional(),
2986
3051
  /**
2987
3052
  * Supplier
2988
3053
  */
2989
- supplier: z13.object({
2990
- name: z13.string(),
2991
- url: z13.string().url().optional()
3054
+ supplier: z14.object({
3055
+ name: z14.string(),
3056
+ url: z14.string().url().optional()
2992
3057
  }).optional(),
2993
3058
  /**
2994
3059
  * External references
2995
3060
  */
2996
- externalRefs: z13.array(z13.object({
2997
- type: z13.enum(["website", "repository", "documentation", "issue-tracker"]),
2998
- url: z13.string().url()
3061
+ externalRefs: z14.array(z14.object({
3062
+ type: z14.enum(["website", "repository", "documentation", "issue-tracker"]),
3063
+ url: z14.string().url()
2999
3064
  })).default([])
3000
3065
  });
3001
- var SBOMSchema = z13.object({
3066
+ var SBOMSchema = z14.object({
3002
3067
  /**
3003
3068
  * SBOM format
3004
3069
  */
3005
- format: z13.enum(["spdx", "cyclonedx"]).default("cyclonedx"),
3070
+ format: z14.enum(["spdx", "cyclonedx"]).default("cyclonedx"),
3006
3071
  /**
3007
3072
  * SBOM version
3008
3073
  */
3009
- version: z13.string(),
3074
+ version: z14.string(),
3010
3075
  /**
3011
3076
  * Plugin metadata
3012
3077
  */
3013
- plugin: z13.object({
3014
- id: z13.string(),
3015
- version: z13.string(),
3016
- name: z13.string()
3078
+ plugin: z14.object({
3079
+ id: z14.string(),
3080
+ version: z14.string(),
3081
+ name: z14.string()
3017
3082
  }),
3018
3083
  /**
3019
3084
  * Components (dependencies)
3020
3085
  */
3021
- components: z13.array(SBOMEntrySchema),
3086
+ components: z14.array(SBOMEntrySchema),
3022
3087
  /**
3023
3088
  * Generation timestamp
3024
3089
  */
3025
- generatedAt: z13.string().datetime(),
3090
+ generatedAt: z14.string().datetime(),
3026
3091
  /**
3027
3092
  * Generator tool
3028
3093
  */
3029
- generator: z13.object({
3030
- name: z13.string(),
3031
- version: z13.string()
3094
+ generator: z14.object({
3095
+ name: z14.string(),
3096
+ version: z14.string()
3032
3097
  }).optional()
3033
3098
  });
3034
- var PluginProvenanceSchema = z13.object({
3099
+ var PluginProvenanceSchema = z14.object({
3035
3100
  /**
3036
3101
  * Plugin identifier
3037
3102
  */
3038
- pluginId: z13.string(),
3103
+ pluginId: z14.string(),
3039
3104
  /**
3040
3105
  * Plugin version
3041
3106
  */
3042
- version: z13.string(),
3107
+ version: z14.string(),
3043
3108
  /**
3044
3109
  * Build information
3045
3110
  */
3046
- build: z13.object({
3111
+ build: z14.object({
3047
3112
  /**
3048
3113
  * Build timestamp
3049
3114
  */
3050
- timestamp: z13.string().datetime(),
3115
+ timestamp: z14.string().datetime(),
3051
3116
  /**
3052
3117
  * Build environment
3053
3118
  */
3054
- environment: z13.object({
3055
- os: z13.string(),
3056
- arch: z13.string(),
3057
- nodeVersion: z13.string()
3119
+ environment: z14.object({
3120
+ os: z14.string(),
3121
+ arch: z14.string(),
3122
+ nodeVersion: z14.string()
3058
3123
  }).optional(),
3059
3124
  /**
3060
3125
  * Source repository
3061
3126
  */
3062
- source: z13.object({
3063
- repository: z13.string().url(),
3064
- commit: z13.string().regex(/^[a-f0-9]{40}$/),
3065
- branch: z13.string().optional(),
3066
- tag: z13.string().optional()
3127
+ source: z14.object({
3128
+ repository: z14.string().url(),
3129
+ commit: z14.string().regex(/^[a-f0-9]{40}$/),
3130
+ branch: z14.string().optional(),
3131
+ tag: z14.string().optional()
3067
3132
  }).optional(),
3068
3133
  /**
3069
3134
  * Builder identity
3070
3135
  */
3071
- builder: z13.object({
3072
- name: z13.string(),
3073
- email: z13.string().email().optional()
3136
+ builder: z14.object({
3137
+ name: z14.string(),
3138
+ email: z14.string().email().optional()
3074
3139
  }).optional()
3075
3140
  }),
3076
3141
  /**
3077
3142
  * Artifact hashes
3078
3143
  */
3079
- artifacts: z13.array(z13.object({
3080
- filename: z13.string(),
3081
- sha256: z13.string(),
3082
- size: z13.number().int().positive()
3144
+ artifacts: z14.array(z14.object({
3145
+ filename: z14.string(),
3146
+ sha256: z14.string(),
3147
+ size: z14.number().int().positive()
3083
3148
  })),
3084
3149
  /**
3085
3150
  * Signatures
3086
3151
  */
3087
- signatures: z13.array(z13.object({
3088
- algorithm: z13.enum(["rsa", "ecdsa", "ed25519"]),
3089
- publicKey: z13.string(),
3090
- signature: z13.string(),
3091
- signedBy: z13.string(),
3092
- timestamp: z13.string().datetime()
3152
+ signatures: z14.array(z14.object({
3153
+ algorithm: z14.enum(["rsa", "ecdsa", "ed25519"]),
3154
+ publicKey: z14.string(),
3155
+ signature: z14.string(),
3156
+ signedBy: z14.string(),
3157
+ timestamp: z14.string().datetime()
3093
3158
  })).default([]),
3094
3159
  /**
3095
3160
  * Attestations
3096
3161
  */
3097
- attestations: z13.array(z13.object({
3098
- type: z13.enum(["code-review", "security-scan", "test-results", "ci-build"]),
3099
- status: z13.enum(["passed", "failed"]),
3100
- url: z13.string().url().optional(),
3101
- timestamp: z13.string().datetime()
3162
+ attestations: z14.array(z14.object({
3163
+ type: z14.enum(["code-review", "security-scan", "test-results", "ci-build"]),
3164
+ status: z14.enum(["passed", "failed"]),
3165
+ url: z14.string().url().optional(),
3166
+ timestamp: z14.string().datetime()
3102
3167
  })).default([])
3103
3168
  });
3104
- var PluginTrustScoreSchema = z13.object({
3169
+ var PluginTrustScoreSchema = z14.object({
3105
3170
  /**
3106
3171
  * Plugin identifier
3107
3172
  */
3108
- pluginId: z13.string(),
3173
+ pluginId: z14.string(),
3109
3174
  /**
3110
3175
  * Overall trust score (0-100)
3111
3176
  */
3112
- score: z13.number().min(0).max(100),
3177
+ score: z14.number().min(0).max(100),
3113
3178
  /**
3114
3179
  * Score components
3115
3180
  */
3116
- components: z13.object({
3181
+ components: z14.object({
3117
3182
  /**
3118
3183
  * Vendor reputation (0-100)
3119
3184
  */
3120
- vendorReputation: z13.number().min(0).max(100),
3185
+ vendorReputation: z14.number().min(0).max(100),
3121
3186
  /**
3122
3187
  * Security scan results (0-100)
3123
3188
  */
3124
- securityScore: z13.number().min(0).max(100),
3189
+ securityScore: z14.number().min(0).max(100),
3125
3190
  /**
3126
3191
  * Code quality (0-100)
3127
3192
  */
3128
- codeQuality: z13.number().min(0).max(100),
3193
+ codeQuality: z14.number().min(0).max(100),
3129
3194
  /**
3130
3195
  * Community engagement (0-100)
3131
3196
  */
3132
- communityScore: z13.number().min(0).max(100),
3197
+ communityScore: z14.number().min(0).max(100),
3133
3198
  /**
3134
3199
  * Update frequency (0-100)
3135
3200
  */
3136
- maintenanceScore: z13.number().min(0).max(100)
3201
+ maintenanceScore: z14.number().min(0).max(100)
3137
3202
  }),
3138
3203
  /**
3139
3204
  * Trust level
3140
3205
  */
3141
- level: z13.enum(["verified", "trusted", "neutral", "untrusted", "blocked"]),
3206
+ level: z14.enum(["verified", "trusted", "neutral", "untrusted", "blocked"]),
3142
3207
  /**
3143
3208
  * Verification badges
3144
3209
  */
3145
- badges: z13.array(z13.enum([
3210
+ badges: z14.array(z14.enum([
3146
3211
  "official",
3147
3212
  // Official ObjectStack plugin
3148
3213
  "verified-vendor",
@@ -3159,7 +3224,7 @@ var PluginTrustScoreSchema = z13.object({
3159
3224
  /**
3160
3225
  * Last updated
3161
3226
  */
3162
- updatedAt: z13.string().datetime()
3227
+ updatedAt: z14.string().datetime()
3163
3228
  });
3164
3229
  var PluginSecurityProtocol = {
3165
3230
  VulnerabilitySeverity,