@pipeline-builder/api-core 0.0.1

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 (184) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +98 -0
  3. package/lib/constants/ai-providers.d.ts +52 -0
  4. package/lib/constants/ai-providers.js +129 -0
  5. package/lib/constants/http-status.d.ts +20 -0
  6. package/lib/constants/http-status.js +26 -0
  7. package/lib/constants/index.d.ts +3 -0
  8. package/lib/constants/index.js +6 -0
  9. package/lib/constants/time.d.ts +10 -0
  10. package/lib/constants/time.js +13 -0
  11. package/lib/errors/app-errors.d.ts +30 -0
  12. package/lib/errors/app-errors.js +53 -0
  13. package/lib/errors/index.d.ts +1 -0
  14. package/lib/errors/index.js +4 -0
  15. package/lib/helpers/access-helpers.d.ts +63 -0
  16. package/lib/helpers/access-helpers.js +82 -0
  17. package/lib/helpers/crud-helpers.d.ts +9 -0
  18. package/lib/helpers/crud-helpers.js +23 -0
  19. package/lib/helpers/index.d.ts +6 -0
  20. package/lib/helpers/index.js +9 -0
  21. package/lib/helpers/org-hierarchy-http.d.ts +74 -0
  22. package/lib/helpers/org-hierarchy-http.js +144 -0
  23. package/lib/helpers/org-hierarchy.d.ts +57 -0
  24. package/lib/helpers/org-hierarchy.js +110 -0
  25. package/lib/helpers/restore-helpers.d.ts +49 -0
  26. package/lib/helpers/restore-helpers.js +78 -0
  27. package/lib/helpers/sse-helpers.d.ts +20 -0
  28. package/lib/helpers/sse-helpers.js +45 -0
  29. package/lib/index.d.ts +58 -0
  30. package/lib/index.js +71 -0
  31. package/lib/middleware/auth.d.ts +208 -0
  32. package/lib/middleware/auth.js +588 -0
  33. package/lib/middleware/index.d.ts +3 -0
  34. package/lib/middleware/index.js +6 -0
  35. package/lib/middleware/mongo-sanitize.d.ts +32 -0
  36. package/lib/middleware/mongo-sanitize.js +100 -0
  37. package/lib/middleware/step-up.d.ts +45 -0
  38. package/lib/middleware/step-up.js +138 -0
  39. package/lib/openapi/extend-zod.d.ts +1 -0
  40. package/lib/openapi/extend-zod.js +6 -0
  41. package/lib/openapi/index.d.ts +2 -0
  42. package/lib/openapi/index.js +5 -0
  43. package/lib/openapi/registry.d.ts +17 -0
  44. package/lib/openapi/registry.js +38 -0
  45. package/lib/openapi/routes/ask-routes.d.ts +7 -0
  46. package/lib/openapi/routes/ask-routes.js +62 -0
  47. package/lib/openapi/routes/billing-routes.d.ts +1 -0
  48. package/lib/openapi/routes/billing-routes.js +66 -0
  49. package/lib/openapi/routes/image-registry-routes.d.ts +7 -0
  50. package/lib/openapi/routes/image-registry-routes.js +98 -0
  51. package/lib/openapi/routes/index.d.ts +5 -0
  52. package/lib/openapi/routes/index.js +28 -0
  53. package/lib/openapi/routes/message-routes.d.ts +1 -0
  54. package/lib/openapi/routes/message-routes.js +105 -0
  55. package/lib/openapi/routes/pipeline-routes.d.ts +1 -0
  56. package/lib/openapi/routes/pipeline-routes.js +105 -0
  57. package/lib/openapi/routes/pipeline-template-routes.d.ts +1 -0
  58. package/lib/openapi/routes/pipeline-template-routes.js +61 -0
  59. package/lib/openapi/routes/plugin-routes.d.ts +1 -0
  60. package/lib/openapi/routes/plugin-routes.js +96 -0
  61. package/lib/openapi/routes/quota-routes.d.ts +1 -0
  62. package/lib/openapi/routes/quota-routes.js +62 -0
  63. package/lib/openapi/schema-registry.d.ts +25 -0
  64. package/lib/openapi/schema-registry.js +91 -0
  65. package/lib/routes/health.d.ts +41 -0
  66. package/lib/routes/health.js +82 -0
  67. package/lib/routes/index.d.ts +1 -0
  68. package/lib/routes/index.js +4 -0
  69. package/lib/services/audit-spool.d.ts +80 -0
  70. package/lib/services/audit-spool.js +172 -0
  71. package/lib/services/cache-service.d.ts +124 -0
  72. package/lib/services/cache-service.js +276 -0
  73. package/lib/services/circuit-breaker.d.ts +45 -0
  74. package/lib/services/circuit-breaker.js +138 -0
  75. package/lib/services/compliance-client.d.ts +46 -0
  76. package/lib/services/compliance-client.js +128 -0
  77. package/lib/services/compliance-event-subscriber.d.ts +16 -0
  78. package/lib/services/compliance-event-subscriber.js +72 -0
  79. package/lib/services/durable-event-bus.d.ts +96 -0
  80. package/lib/services/durable-event-bus.js +204 -0
  81. package/lib/services/entity-events.d.ts +48 -0
  82. package/lib/services/entity-events.js +79 -0
  83. package/lib/services/env-redis.d.ts +44 -0
  84. package/lib/services/env-redis.js +94 -0
  85. package/lib/services/http-client.d.ts +143 -0
  86. package/lib/services/http-client.js +335 -0
  87. package/lib/services/index.d.ts +18 -0
  88. package/lib/services/index.js +20 -0
  89. package/lib/services/leader-lock.d.ts +45 -0
  90. package/lib/services/leader-lock.js +85 -0
  91. package/lib/services/quota.d.ts +130 -0
  92. package/lib/services/quota.js +264 -0
  93. package/lib/services/remote-audit-client.d.ts +160 -0
  94. package/lib/services/remote-audit-client.js +390 -0
  95. package/lib/services/retry-strategy.d.ts +74 -0
  96. package/lib/services/retry-strategy.js +118 -0
  97. package/lib/services/scheduler.d.ts +41 -0
  98. package/lib/services/scheduler.js +86 -0
  99. package/lib/services/service-boot.d.ts +20 -0
  100. package/lib/services/service-boot.js +28 -0
  101. package/lib/services/sse-ticket-store.d.ts +51 -0
  102. package/lib/services/sse-ticket-store.js +130 -0
  103. package/lib/services/token-revocation.d.ts +52 -0
  104. package/lib/services/token-revocation.js +120 -0
  105. package/lib/testing/tier-mock.d.ts +44 -0
  106. package/lib/testing/tier-mock.js +65 -0
  107. package/lib/types/audit-events.d.ts +69 -0
  108. package/lib/types/audit-events.js +4 -0
  109. package/lib/types/catalog-metadata.d.ts +36 -0
  110. package/lib/types/catalog-metadata.js +21 -0
  111. package/lib/types/common.d.ts +255 -0
  112. package/lib/types/common.js +41 -0
  113. package/lib/types/error-codes.d.ts +54 -0
  114. package/lib/types/error-codes.js +107 -0
  115. package/lib/types/feature-flags.d.ts +36 -0
  116. package/lib/types/feature-flags.js +128 -0
  117. package/lib/types/http.d.ts +27 -0
  118. package/lib/types/http.js +4 -0
  119. package/lib/types/index.d.ts +11 -0
  120. package/lib/types/index.js +14 -0
  121. package/lib/types/permissions.d.ts +65 -0
  122. package/lib/types/permissions.js +131 -0
  123. package/lib/types/pipeline-template.d.ts +30 -0
  124. package/lib/types/pipeline-template.js +13 -0
  125. package/lib/types/pipeline.d.ts +59 -0
  126. package/lib/types/pipeline.js +31 -0
  127. package/lib/types/quota-tiers.d.ts +79 -0
  128. package/lib/types/quota-tiers.js +221 -0
  129. package/lib/types/visibility.d.ts +20 -0
  130. package/lib/types/visibility.js +22 -0
  131. package/lib/utils/alias-resolver.d.ts +37 -0
  132. package/lib/utils/alias-resolver.js +68 -0
  133. package/lib/utils/audit.d.ts +15 -0
  134. package/lib/utils/audit.js +39 -0
  135. package/lib/utils/aws-scrub.d.ts +11 -0
  136. package/lib/utils/aws-scrub.js +67 -0
  137. package/lib/utils/compliance-attributes.d.ts +6 -0
  138. package/lib/utils/compliance-attributes.js +69 -0
  139. package/lib/utils/concurrency.d.ts +9 -0
  140. package/lib/utils/concurrency.js +29 -0
  141. package/lib/utils/crash-handlers.d.ts +18 -0
  142. package/lib/utils/crash-handlers.js +36 -0
  143. package/lib/utils/env.d.ts +28 -0
  144. package/lib/utils/env.js +54 -0
  145. package/lib/utils/headers.d.ts +18 -0
  146. package/lib/utils/headers.js +21 -0
  147. package/lib/utils/identity.d.ts +40 -0
  148. package/lib/utils/identity.js +51 -0
  149. package/lib/utils/index.d.ts +17 -0
  150. package/lib/utils/index.js +20 -0
  151. package/lib/utils/logger.d.ts +38 -0
  152. package/lib/utils/logger.js +174 -0
  153. package/lib/utils/metric-emitter.d.ts +36 -0
  154. package/lib/utils/metric-emitter.js +32 -0
  155. package/lib/utils/object.d.ts +13 -0
  156. package/lib/utils/object.js +18 -0
  157. package/lib/utils/params.d.ts +150 -0
  158. package/lib/utils/params.js +206 -0
  159. package/lib/utils/response.d.ts +117 -0
  160. package/lib/utils/response.js +223 -0
  161. package/lib/utils/safe-require.d.ts +13 -0
  162. package/lib/utils/safe-require.js +19 -0
  163. package/lib/utils/secret-encryption.d.ts +176 -0
  164. package/lib/utils/secret-encryption.js +374 -0
  165. package/lib/utils/ssrf.d.ts +30 -0
  166. package/lib/utils/ssrf.js +106 -0
  167. package/lib/validation/ai-schemas.d.ts +56 -0
  168. package/lib/validation/ai-schemas.js +78 -0
  169. package/lib/validation/common-schemas.d.ts +133 -0
  170. package/lib/validation/common-schemas.js +94 -0
  171. package/lib/validation/index.d.ts +7 -0
  172. package/lib/validation/index.js +10 -0
  173. package/lib/validation/message-schemas.d.ts +160 -0
  174. package/lib/validation/message-schemas.js +156 -0
  175. package/lib/validation/middleware.d.ts +72 -0
  176. package/lib/validation/middleware.js +65 -0
  177. package/lib/validation/pipeline-schemas.d.ts +181 -0
  178. package/lib/validation/pipeline-schemas.js +101 -0
  179. package/lib/validation/pipeline-template-schemas.d.ts +155 -0
  180. package/lib/validation/pipeline-template-schemas.js +66 -0
  181. package/lib/validation/plugin-schemas.d.ts +171 -0
  182. package/lib/validation/plugin-schemas.js +81 -0
  183. package/openapi.yaml +292 -0
  184. package/package.json +167 -0
@@ -0,0 +1,181 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Pipeline filter schema for query parameters
4
+ */
5
+ export declare const PipelineFilterSchema: z.ZodObject<{
6
+ id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodString]>>;
7
+ visibility: z.ZodOptional<z.ZodEnum<{
8
+ org: "org";
9
+ private: "private";
10
+ public: "public";
11
+ }>>;
12
+ isActive: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
13
+ false: "false";
14
+ true: "true";
15
+ }>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
16
+ isDefault: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
17
+ false: "false";
18
+ true: "true";
19
+ }>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
20
+ ownerId: z.ZodOptional<z.ZodString>;
21
+ lifecycle: z.ZodOptional<z.ZodEnum<{
22
+ deprecated: "deprecated";
23
+ experimental: "experimental";
24
+ production: "production";
25
+ }>>;
26
+ project: z.ZodOptional<z.ZodString>;
27
+ organization: z.ZodOptional<z.ZodString>;
28
+ pipelineName: z.ZodOptional<z.ZodString>;
29
+ orgId: z.ZodOptional<z.ZodString>;
30
+ keyword: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strip>;
32
+ /**
33
+ * Pipeline creation schema
34
+ */
35
+ export declare const PipelineCreateSchema: z.ZodObject<{
36
+ ownerId: z.ZodOptional<z.ZodString>;
37
+ ownerType: z.ZodOptional<z.ZodEnum<{
38
+ team: "team";
39
+ user: "user";
40
+ }>>;
41
+ lifecycle: z.ZodOptional<z.ZodEnum<{
42
+ deprecated: "deprecated";
43
+ experimental: "experimental";
44
+ production: "production";
45
+ }>>;
46
+ criticality: z.ZodOptional<z.ZodEnum<{
47
+ critical: "critical";
48
+ high: "high";
49
+ low: "low";
50
+ medium: "medium";
51
+ }>>;
52
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
53
+ links: z.ZodOptional<z.ZodArray<z.ZodObject<{
54
+ title: z.ZodString;
55
+ url: z.ZodString;
56
+ icon: z.ZodOptional<z.ZodString>;
57
+ }, z.core.$strip>>>;
58
+ project: z.ZodString;
59
+ organization: z.ZodString;
60
+ pipelineName: z.ZodOptional<z.ZodString>;
61
+ description: z.ZodOptional<z.ZodString>;
62
+ keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
63
+ visibility: z.ZodOptional<z.ZodEnum<{
64
+ org: "org";
65
+ private: "private";
66
+ public: "public";
67
+ }>>;
68
+ props: z.ZodObject<{
69
+ project: z.ZodString;
70
+ organization: z.ZodString;
71
+ pipelineName: z.ZodOptional<z.ZodString>;
72
+ global: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
73
+ defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
74
+ role: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
75
+ synth: z.ZodObject<{
76
+ source: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
77
+ plugin: z.ZodObject<{
78
+ name: z.ZodString;
79
+ alias: z.ZodOptional<z.ZodString>;
80
+ filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
81
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
82
+ }, z.core.$loose>;
83
+ }, z.core.$loose>;
84
+ stages: z.ZodOptional<z.ZodArray<z.ZodObject<{
85
+ stageName: z.ZodString;
86
+ alias: z.ZodOptional<z.ZodString>;
87
+ steps: z.ZodArray<z.ZodObject<{
88
+ plugin: z.ZodObject<{
89
+ name: z.ZodString;
90
+ alias: z.ZodOptional<z.ZodString>;
91
+ filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
92
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
93
+ }, z.core.$loose>;
94
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
95
+ network: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
96
+ position: z.ZodOptional<z.ZodEnum<{
97
+ post: "post";
98
+ pre: "pre";
99
+ }>>;
100
+ }, z.core.$loose>>;
101
+ }, z.core.$strip>>>;
102
+ }, z.core.$loose>;
103
+ }, z.core.$strip>;
104
+ /**
105
+ * Pipeline update schema
106
+ */
107
+ export declare const PipelineUpdateSchema: z.ZodObject<{
108
+ ownerId: z.ZodOptional<z.ZodString>;
109
+ ownerType: z.ZodOptional<z.ZodEnum<{
110
+ team: "team";
111
+ user: "user";
112
+ }>>;
113
+ lifecycle: z.ZodOptional<z.ZodEnum<{
114
+ deprecated: "deprecated";
115
+ experimental: "experimental";
116
+ production: "production";
117
+ }>>;
118
+ criticality: z.ZodOptional<z.ZodEnum<{
119
+ critical: "critical";
120
+ high: "high";
121
+ low: "low";
122
+ medium: "medium";
123
+ }>>;
124
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
125
+ links: z.ZodOptional<z.ZodArray<z.ZodObject<{
126
+ title: z.ZodString;
127
+ url: z.ZodString;
128
+ icon: z.ZodOptional<z.ZodString>;
129
+ }, z.core.$strip>>>;
130
+ pipelineName: z.ZodOptional<z.ZodString>;
131
+ description: z.ZodOptional<z.ZodString>;
132
+ keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
133
+ props: z.ZodOptional<z.ZodObject<{
134
+ project: z.ZodString;
135
+ organization: z.ZodString;
136
+ pipelineName: z.ZodOptional<z.ZodString>;
137
+ global: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
138
+ defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
139
+ role: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
140
+ synth: z.ZodObject<{
141
+ source: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
142
+ plugin: z.ZodObject<{
143
+ name: z.ZodString;
144
+ alias: z.ZodOptional<z.ZodString>;
145
+ filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
146
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
147
+ }, z.core.$loose>;
148
+ }, z.core.$loose>;
149
+ stages: z.ZodOptional<z.ZodArray<z.ZodObject<{
150
+ stageName: z.ZodString;
151
+ alias: z.ZodOptional<z.ZodString>;
152
+ steps: z.ZodArray<z.ZodObject<{
153
+ plugin: z.ZodObject<{
154
+ name: z.ZodString;
155
+ alias: z.ZodOptional<z.ZodString>;
156
+ filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
157
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
158
+ }, z.core.$loose>;
159
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
160
+ network: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
161
+ position: z.ZodOptional<z.ZodEnum<{
162
+ post: "post";
163
+ pre: "pre";
164
+ }>>;
165
+ }, z.core.$loose>>;
166
+ }, z.core.$strip>>>;
167
+ }, z.core.$loose>>;
168
+ isActive: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
169
+ false: "false";
170
+ true: "true";
171
+ }>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
172
+ isDefault: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
173
+ false: "false";
174
+ true: "true";
175
+ }>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
176
+ visibility: z.ZodOptional<z.ZodEnum<{
177
+ org: "org";
178
+ private: "private";
179
+ public: "public";
180
+ }>>;
181
+ }, z.core.$strip>;
@@ -0,0 +1,101 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { z } from 'zod';
4
+ import { BaseFilterSchema, BooleanQuerySchema, VisibilitySchema, CatalogMetadataShape } from './common-schemas.js';
5
+ /**
6
+ * Pipeline filter schema for query parameters
7
+ */
8
+ export const PipelineFilterSchema = BaseFilterSchema.extend({
9
+ project: z.string().min(1).optional(),
10
+ organization: z.string().min(1).optional(),
11
+ pipelineName: z.string().min(1).optional(),
12
+ orgId: z.string().min(1).optional(),
13
+ keyword: z.string().min(1).optional(),
14
+ });
15
+ /**
16
+ * Plugin options schema (name-based selection)
17
+ */
18
+ const PluginOptionsSchema = z.object({
19
+ name: z.string().min(1),
20
+ alias: z.string().optional(),
21
+ filter: z.record(z.string(), z.unknown()).optional(),
22
+ metadata: z.record(z.string(), z.unknown()).optional(),
23
+ }).passthrough();
24
+ /**
25
+ * Stage step schema
26
+ *
27
+ * `passthrough()` keeps forward-compatible fields, but a few common mistakes are
28
+ * rejected loudly rather than silently ignored at synth — most notably a
29
+ * top-level `commands`, which is NOT a step field (the plugin's own commands run)
30
+ * and would otherwise do nothing.
31
+ */
32
+ const STEP_NON_FIELDS = {
33
+ commands: '`commands` is not a step field — it is ignored at synth (the plugin\'s own commands run). '
34
+ + 'To change what a step runs, use a plugin env knob (e.g. `metadata.GRADLE_TASK`), '
35
+ + '`preCommands`/`postCommands` to add commands around the plugin\'s, or the '
36
+ + '`aws:cdk:pipelines:codebuildstep:commands` metadata key for a full override.',
37
+ };
38
+ const StageStepSchema = z.object({
39
+ plugin: PluginOptionsSchema,
40
+ metadata: z.record(z.string(), z.unknown()).optional(),
41
+ network: z.record(z.string(), z.unknown()).optional(),
42
+ position: z.enum(['pre', 'post']).optional(),
43
+ }).passthrough().superRefine((step, ctx) => {
44
+ for (const [key, message] of Object.entries(STEP_NON_FIELDS)) {
45
+ if (key in step) {
46
+ ctx.addIssue({ code: 'custom', path: [key], message });
47
+ }
48
+ }
49
+ });
50
+ /**
51
+ * Stage schema
52
+ */
53
+ const StageSchema = z.object({
54
+ stageName: z.string().min(1),
55
+ alias: z.string().optional(),
56
+ steps: z.array(StageStepSchema).min(1),
57
+ });
58
+ /**
59
+ * BuilderProps schema — structural validation for pipeline configuration.
60
+ * Uses passthrough() to allow additional fields without rejecting them.
61
+ */
62
+ const BuilderPropsSchema = z.object({
63
+ project: z.string().min(1),
64
+ organization: z.string().min(1),
65
+ pipelineName: z.string().optional(),
66
+ global: z.record(z.string(), z.unknown()).optional(),
67
+ defaults: z.record(z.string(), z.unknown()).optional(),
68
+ role: z.record(z.string(), z.unknown()).optional(),
69
+ synth: z.object({
70
+ source: z.record(z.string(), z.unknown()).optional(),
71
+ plugin: PluginOptionsSchema,
72
+ }).passthrough(),
73
+ stages: z.array(StageSchema).optional(),
74
+ }).passthrough();
75
+ /**
76
+ * Pipeline creation schema
77
+ */
78
+ export const PipelineCreateSchema = z.object({
79
+ ...CatalogMetadataShape,
80
+ project: z.string().min(1, 'Project is required'),
81
+ organization: z.string().min(1, 'Organization is required'),
82
+ pipelineName: z.string().min(1).optional(),
83
+ description: z.string().optional(),
84
+ keywords: z.array(z.string()).optional(),
85
+ visibility: VisibilitySchema.optional(),
86
+ props: BuilderPropsSchema,
87
+ });
88
+ /**
89
+ * Pipeline update schema
90
+ */
91
+ export const PipelineUpdateSchema = z.object({
92
+ ...CatalogMetadataShape,
93
+ pipelineName: z.string().min(1).optional(),
94
+ description: z.string().optional(),
95
+ keywords: z.array(z.string()).optional(),
96
+ props: BuilderPropsSchema.optional(),
97
+ isActive: BooleanQuerySchema.optional(),
98
+ isDefault: BooleanQuerySchema.optional(),
99
+ visibility: VisibilitySchema.optional(),
100
+ });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtc2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL3BpcGVsaW5lLXNjaGVtYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5IOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0lBQzFELE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNyQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDMUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzFDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNuQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDdEMsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMs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QUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN4QyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxFQUFFO0lBQ3BDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7SUFDdkMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLFFBQVEsRUFBRTtJQUN4QyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO0NBQ3hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IEJhc2VGaWx0ZXJTY2hlbWEsIEJvb2xlYW5RdWVyeVNjaGVtYSwgVmlzaWJpbGl0eVNjaGVtYSwgQ2F0YWxvZ01ldGFkYXRhU2hhcGUgfSBmcm9tICcuL2NvbW1vbi1zY2hlbWFzLmpzJztcblxuLyoqXG4gKiBQaXBlbGluZSBmaWx0ZXIgc2NoZW1hIGZvciBxdWVyeSBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBQaXBlbGluZUZpbHRlclNjaGVtYSA9IEJhc2VGaWx0ZXJTY2hlbWEuZXh0ZW5kKHtcbiAgcHJvamVjdDogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgb3JnYW5pemF0aW9uOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICBwaXBlbGluZU5hbWU6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gIG9yZ0lkOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICBrZXl3b3JkOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxufSk7XG5cbi8qKlxuICogUGx1Z2luIG9wdGlvbnMgc2NoZW1hIChuYW1lLWJhc2VkIHNlbGVjdGlvbilcbiAqL1xuY29uc3QgUGx1Z2luT3B0aW9uc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgbmFtZTogei5zdHJpbmcoKS5taW4oMSksXG4gIGFsaWFzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZpbHRlcjogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm9wdGlvbmFsKCksXG4gIG1ldGFkYXRhOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbn0pLnBhc3N0aHJvdWdoKCk7XG5cbi8qKlxuICogU3RhZ2Ugc3RlcCBzY2hlbWFcbiAqXG4gKiBgcGFzc3Rocm91Z2goKWAga2VlcHMgZm9yd2FyZC1jb21wYXRpYmxlIGZpZWxkcywgYnV0IGEgZmV3IGNvbW1vbiBtaXN0YWtlcyBhcmVcbiAqIHJlamVjdGVkIGxvdWRseSByYXRoZXIgdGhhbiBzaWxlbnRseSBpZ25vcmVkIGF0IHN5bnRoIOKAlCBtb3N0IG5vdGFibHkgYVxuICogdG9wLWxldmVsIGBjb21tYW5kc2AsIHdoaWNoIGlzIE5PVCBhIHN0ZXAgZmllbGQgKHRoZSBwbHVnaW4ncyBvd24gY29tbWFuZHMgcnVuKVxuICogYW5kIHdvdWxkIG90aGVyd2lzZSBkbyBub3RoaW5nLlxuICovXG5jb25zdCBTVEVQX05PTl9GSUVMRFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGNvbW1hbmRzOlxuICAgICdgY29tbWFuZHNgIGlzIG5vdCBhIHN0ZXAgZmllbGQg4oCUIGl0IGlzIGlnbm9yZWQgYXQgc3ludGggKHRoZSBwbHVnaW5cXCdzIG93biBjb21tYW5kcyBydW4pLiAnXG4gICAgKyAnVG8gY2hhbmdlIHdoYXQgYSBzdGVwIHJ1bnMsIHVzZSBhIHBsdWdpbiBlbnYga25vYiAoZS5nLiBgbWV0YWRhdGEuR1JBRExFX1RBU0tgKSwgJ1xuICAgICsgJ2BwcmVDb21tYW5kc2AvYHBvc3RDb21tYW5kc2AgdG8gYWRkIGNvbW1hbmRzIGFyb3VuZCB0aGUgcGx1Z2luXFwncywgb3IgdGhlICdcbiAgICArICdgYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpjb21tYW5kc2AgbWV0YWRhdGEga2V5IGZvciBhIGZ1bGwgb3ZlcnJpZGUuJyxcbn07XG5cbmNvbnN0IFN0YWdlU3RlcFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGx1Z2luOiBQbHVnaW5PcHRpb25zU2NoZW1hLFxuICBtZXRhZGF0YTogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm9wdGlvbmFsKCksXG4gIG5ldHdvcms6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICBwb3NpdGlvbjogei5lbnVtKFsncHJlJywgJ3Bvc3QnXSkub3B0aW9uYWwoKSxcbn0pLnBhc3N0aHJvdWdoKCkuc3VwZXJSZWZpbmUoKHN0ZXAsIGN0eCkgPT4ge1xuICBmb3IgKGNvbnN0IFtrZXksIG1lc3NhZ2VdIG9mIE9iamVjdC5lbnRyaWVzKFNURVBfTk9OX0ZJRUxEUykpIHtcbiAgICBpZiAoa2V5IGluIChzdGVwIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgICAgY3R4LmFkZElzc3VlKHsgY29kZTogJ2N1c3RvbScsIHBhdGg6IFtrZXldLCBtZXNzYWdlIH0pO1xuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogU3RhZ2Ugc2NoZW1hXG4gKi9cbmNvbnN0IFN0YWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBzdGFnZU5hbWU6IHouc3RyaW5nKCkubWluKDEpLFxuICBhbGlhczogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzdGVwczogei5hcnJheShTdGFnZVN0ZXBTY2hlbWEpLm1pbigxKSxcbn0pO1xuXG4vKipcbiAqIEJ1aWxkZXJQcm9wcyBzY2hlbWEg4oCUIHN0cnVjdHVyYWwgdmFsaWRhdGlvbiBmb3IgcGlwZWxpbmUgY29uZmlndXJhdGlvbi5cbiAqIFVzZXMgcGFzc3Rocm91Z2goKSB0byBhbGxvdyBhZGRpdGlvbmFsIGZpZWxkcyB3aXRob3V0IHJlamVjdGluZyB0aGVtLlxuICovXG5jb25zdCBCdWlsZGVyUHJvcHNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHByb2plY3Q6IHouc3RyaW5nKCkubWluKDEpLFxuICBvcmdhbml6YXRpb246IHouc3RyaW5nKCkubWluKDEpLFxuICBwaXBlbGluZU5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZ2xvYmFsOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbiAgZGVmYXVsdHM6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICByb2xlOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbiAgc3ludGg6IHoub2JqZWN0KHtcbiAgICBzb3VyY2U6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICAgIHBsdWdpbjogUGx1Z2luT3B0aW9uc1NjaGVtYSxcbiAgfSkucGFzc3Rocm91Z2goKSxcbiAgc3RhZ2VzOiB6LmFycmF5KFN0YWdlU2NoZW1hKS5vcHRpb25hbCgpLFxufSkucGFzc3Rocm91Z2goKTtcblxuLyoqXG4gKiBQaXBlbGluZSBjcmVhdGlvbiBzY2hlbWFcbiAqL1xuZXhwb3J0IGNvbnN0IFBpcGVsaW5lQ3JlYXRlU2NoZW1hID0gei5vYmplY3Qoe1xuICAuLi5DYXRhbG9nTWV0YWRhdGFTaGFwZSxcbiAgcHJvamVjdDogei5zdHJpbmcoKS5taW4oMSwgJ1Byb2plY3QgaXMgcmVxdWlyZWQnKSxcbiAgb3JnYW5pemF0aW9uOiB6LnN0cmluZygpLm1pbigxLCAnT3JnYW5pemF0aW9uIGlzIHJlcXVpcmVkJyksXG4gIHBpcGVsaW5lTmFtZTogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAga2V5d29yZHM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgdmlzaWJpbGl0eTogVmlzaWJpbGl0eVNjaGVtYS5vcHRpb25hbCgpLFxuICBwcm9wczogQnVpbGRlclByb3BzU2NoZW1hLFxufSk7XG5cbi8qKlxuICogUGlwZWxpbmUgdXBkYXRlIHNjaGVtYVxuICovXG5leHBvcnQgY29uc3QgUGlwZWxpbmVVcGRhdGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIC4uLkNhdGFsb2dNZXRhZGF0YVNoYXBlLFxuICBwaXBlbGluZU5hbWU6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGtleXdvcmRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIHByb3BzOiBCdWlsZGVyUHJvcHNTY2hlbWEub3B0aW9uYWwoKSxcbiAgaXNBY3RpdmU6IEJvb2xlYW5RdWVyeVNjaGVtYS5vcHRpb25hbCgpLFxuICBpc0RlZmF1bHQ6IEJvb2xlYW5RdWVyeVNjaGVtYS5vcHRpb25hbCgpLFxuICB2aXNpYmlsaXR5OiBWaXNpYmlsaXR5U2NoZW1hLm9wdGlvbmFsKCksXG59KTtcbiJdfQ==
@@ -0,0 +1,155 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * One declared template input — mirrors the `TemplateInput` type. The `name` is
4
+ * the `vars.<name>` key the template body references.
5
+ */
6
+ export declare const TemplateInputSchema: z.ZodObject<{
7
+ name: z.ZodString;
8
+ label: z.ZodOptional<z.ZodString>;
9
+ description: z.ZodOptional<z.ZodString>;
10
+ type: z.ZodEnum<{
11
+ boolean: "boolean";
12
+ number: "number";
13
+ string: "string";
14
+ }>;
15
+ required: z.ZodOptional<z.ZodBoolean>;
16
+ default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
17
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ }, z.core.$strip>;
19
+ /** Pipeline-template list filter (query params). */
20
+ export declare const PipelineTemplateFilterSchema: z.ZodObject<{
21
+ id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodString]>>;
22
+ isActive: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
23
+ false: "false";
24
+ true: "true";
25
+ }>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
26
+ isDefault: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
27
+ false: "false";
28
+ true: "true";
29
+ }>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
30
+ ownerId: z.ZodOptional<z.ZodString>;
31
+ lifecycle: z.ZodOptional<z.ZodEnum<{
32
+ deprecated: "deprecated";
33
+ experimental: "experimental";
34
+ production: "production";
35
+ }>>;
36
+ name: z.ZodOptional<z.ZodString>;
37
+ category: z.ZodOptional<z.ZodString>;
38
+ keyword: z.ZodOptional<z.ZodString>;
39
+ orgId: z.ZodOptional<z.ZodString>;
40
+ visibility: z.ZodOptional<z.ZodEnum<{
41
+ org: "org";
42
+ private: "private";
43
+ public: "public";
44
+ }>>;
45
+ }, z.core.$strip>;
46
+ /** Create a pipeline template (author a golden path). */
47
+ export declare const PipelineTemplateCreateSchema: z.ZodObject<{
48
+ ownerId: z.ZodOptional<z.ZodString>;
49
+ ownerType: z.ZodOptional<z.ZodEnum<{
50
+ team: "team";
51
+ user: "user";
52
+ }>>;
53
+ lifecycle: z.ZodOptional<z.ZodEnum<{
54
+ deprecated: "deprecated";
55
+ experimental: "experimental";
56
+ production: "production";
57
+ }>>;
58
+ criticality: z.ZodOptional<z.ZodEnum<{
59
+ critical: "critical";
60
+ high: "high";
61
+ low: "low";
62
+ medium: "medium";
63
+ }>>;
64
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
65
+ links: z.ZodOptional<z.ZodArray<z.ZodObject<{
66
+ title: z.ZodString;
67
+ url: z.ZodString;
68
+ icon: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strip>>>;
70
+ name: z.ZodString;
71
+ description: z.ZodOptional<z.ZodString>;
72
+ keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
73
+ category: z.ZodOptional<z.ZodString>;
74
+ visibility: z.ZodOptional<z.ZodEnum<{
75
+ org: "org";
76
+ private: "private";
77
+ public: "public";
78
+ }>>;
79
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
80
+ inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
81
+ name: z.ZodString;
82
+ label: z.ZodOptional<z.ZodString>;
83
+ description: z.ZodOptional<z.ZodString>;
84
+ type: z.ZodEnum<{
85
+ boolean: "boolean";
86
+ number: "number";
87
+ string: "string";
88
+ }>;
89
+ required: z.ZodOptional<z.ZodBoolean>;
90
+ default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
91
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
92
+ }, z.core.$strip>>>;
93
+ }, z.core.$strip>;
94
+ /** Update a pipeline template. */
95
+ export declare const PipelineTemplateUpdateSchema: z.ZodObject<{
96
+ ownerId: z.ZodOptional<z.ZodString>;
97
+ ownerType: z.ZodOptional<z.ZodEnum<{
98
+ team: "team";
99
+ user: "user";
100
+ }>>;
101
+ lifecycle: z.ZodOptional<z.ZodEnum<{
102
+ deprecated: "deprecated";
103
+ experimental: "experimental";
104
+ production: "production";
105
+ }>>;
106
+ criticality: z.ZodOptional<z.ZodEnum<{
107
+ critical: "critical";
108
+ high: "high";
109
+ low: "low";
110
+ medium: "medium";
111
+ }>>;
112
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
113
+ links: z.ZodOptional<z.ZodArray<z.ZodObject<{
114
+ title: z.ZodString;
115
+ url: z.ZodString;
116
+ icon: z.ZodOptional<z.ZodString>;
117
+ }, z.core.$strip>>>;
118
+ name: z.ZodOptional<z.ZodString>;
119
+ description: z.ZodOptional<z.ZodString>;
120
+ keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
121
+ category: z.ZodOptional<z.ZodString>;
122
+ visibility: z.ZodOptional<z.ZodEnum<{
123
+ org: "org";
124
+ private: "private";
125
+ public: "public";
126
+ }>>;
127
+ props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
128
+ inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
129
+ name: z.ZodString;
130
+ label: z.ZodOptional<z.ZodString>;
131
+ description: z.ZodOptional<z.ZodString>;
132
+ type: z.ZodEnum<{
133
+ boolean: "boolean";
134
+ number: "number";
135
+ string: "string";
136
+ }>;
137
+ required: z.ZodOptional<z.ZodBoolean>;
138
+ default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
139
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
140
+ }, z.core.$strip>>>;
141
+ isActive: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
142
+ false: "false";
143
+ true: "true";
144
+ }>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
145
+ }, z.core.$strip>;
146
+ /**
147
+ * Instantiate a template into a concrete pipeline config. `inputs` supplies the
148
+ * declared `vars.*` values; project/organization/pipelineName name the pipeline.
149
+ */
150
+ export declare const InstantiateTemplateSchema: z.ZodObject<{
151
+ project: z.ZodString;
152
+ organization: z.ZodString;
153
+ pipelineName: z.ZodOptional<z.ZodString>;
154
+ inputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
155
+ }, z.core.$strip>;
@@ -0,0 +1,66 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { z } from 'zod';
4
+ import { BaseFilterSchema, BooleanQuerySchema, CatalogMetadataShape, VisibilitySchema } from './common-schemas.js';
5
+ /**
6
+ * One declared template input — mirrors the `TemplateInput` type. The `name` is
7
+ * the `vars.<name>` key the template body references.
8
+ */
9
+ export const TemplateInputSchema = z.object({
10
+ // Identifier only — becomes a `vars.<name>` key. Excludes prototype-pollution
11
+ // keys and anything that isn't a plain identifier.
12
+ name: z.string().min(1).max(64)
13
+ .regex(/^[A-Za-z_][A-Za-z0-9_]*$/, 'input name must be a valid identifier')
14
+ .refine((n) => !['__proto__', 'constructor', 'prototype'].includes(n), 'reserved input name'),
15
+ label: z.string().max(120).optional(),
16
+ description: z.string().max(500).optional(),
17
+ type: z.enum(['string', 'number', 'boolean']),
18
+ required: z.boolean().optional(),
19
+ default: z.union([z.string(), z.number(), z.boolean()]).optional(),
20
+ options: z.array(z.string().max(255)).max(50).optional(),
21
+ });
22
+ /** Pipeline-template list filter (query params). */
23
+ export const PipelineTemplateFilterSchema = BaseFilterSchema.extend({
24
+ name: z.string().min(1).optional(),
25
+ category: z.string().min(1).optional(),
26
+ keyword: z.string().min(1).optional(),
27
+ orgId: z.string().min(1).optional(),
28
+ visibility: VisibilitySchema.optional(),
29
+ });
30
+ /** Create a pipeline template (author a golden path). */
31
+ export const PipelineTemplateCreateSchema = z.object({
32
+ ...CatalogMetadataShape,
33
+ // Bounded to the DB column widths so an over-length value is a clean 400,
34
+ // not a Postgres length error surfaced as a 500.
35
+ name: z.string().min(1, 'Template name is required').max(255),
36
+ description: z.string().max(2000).optional(),
37
+ keywords: z.array(z.string().max(64)).max(50).optional(),
38
+ category: z.string().min(1).max(50).optional(),
39
+ visibility: VisibilitySchema.optional(),
40
+ // Template body: a BuilderProps with `{{ vars.* }}` placeholders.
41
+ props: z.record(z.string(), z.unknown()),
42
+ inputs: z.array(TemplateInputSchema).max(100).optional(),
43
+ });
44
+ /** Update a pipeline template. */
45
+ export const PipelineTemplateUpdateSchema = z.object({
46
+ ...CatalogMetadataShape,
47
+ name: z.string().min(1).max(255).optional(),
48
+ description: z.string().max(2000).optional(),
49
+ keywords: z.array(z.string().max(64)).max(50).optional(),
50
+ category: z.string().min(1).max(50).optional(),
51
+ visibility: VisibilitySchema.optional(),
52
+ props: z.record(z.string(), z.unknown()).optional(),
53
+ inputs: z.array(TemplateInputSchema).max(100).optional(),
54
+ isActive: BooleanQuerySchema.optional(),
55
+ });
56
+ /**
57
+ * Instantiate a template into a concrete pipeline config. `inputs` supplies the
58
+ * declared `vars.*` values; project/organization/pipelineName name the pipeline.
59
+ */
60
+ export const InstantiateTemplateSchema = z.object({
61
+ project: z.string().min(1, 'Project is required'),
62
+ organization: z.string().min(1, 'Organization is required'),
63
+ pipelineName: z.string().min(1).optional(),
64
+ inputs: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),
65
+ });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdGVtcGxhdGUtc2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL3BpcGVsaW5lLXRlbXBsYXRlLXNjaGVtYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5IOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUMsOEVBQThFO0lBQzlFLG1EQUFtRDtJQUNuRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1NBQzVCLEtBQUssQ0FBQywwQkFBMEIsRUFBRSx1Q0FBdUMsQ0FBQztTQUMxRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQztJQUMvRixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDckMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzNDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8s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QUFDLFFBQVEsRUFBRTtDQUN4RixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBCYXNlRmlsdGVyU2NoZW1hLCBCb29sZWFuUXVlcnlTY2hlbWEsIENhdGFsb2dNZXRhZGF0YVNoYXBlLCBWaXNpYmlsaXR5U2NoZW1hIH0gZnJvbSAnLi9jb21tb24tc2NoZW1hcy5qcyc7XG5cbi8qKlxuICogT25lIGRlY2xhcmVkIHRlbXBsYXRlIGlucHV0IOKAlCBtaXJyb3JzIHRoZSBgVGVtcGxhdGVJbnB1dGAgdHlwZS4gVGhlIGBuYW1lYCBpc1xuICogdGhlIGB2YXJzLjxuYW1lPmAga2V5IHRoZSB0ZW1wbGF0ZSBib2R5IHJlZmVyZW5jZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZUlucHV0U2NoZW1hID0gei5vYmplY3Qoe1xuICAvLyBJZGVudGlmaWVyIG9ubHkg4oCUIGJlY29tZXMgYSBgdmFycy48bmFtZT5gIGtleS4gRXhjbHVkZXMgcHJvdG90eXBlLXBvbGx1dGlvblxuICAvLyBrZXlzIGFuZCBhbnl0aGluZyB0aGF0IGlzbid0IGEgcGxhaW4gaWRlbnRpZmllci5cbiAgbmFtZTogei5zdHJpbmcoKS5taW4oMSkubWF4KDY0KVxuICAgIC5yZWdleCgvXltBLVphLXpfXVtBLVphLXowLTlfXSokLywgJ2lucHV0IG5hbWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXInKVxuICAgIC5yZWZpbmUoKG4pID0+ICFbJ19fcHJvdG9fXycsICdjb25zdHJ1Y3RvcicsICdwcm90b3R5cGUnXS5pbmNsdWRlcyhuKSwgJ3Jlc2VydmVkIGlucHV0IG5hbWUnKSxcbiAgbGFiZWw6IHouc3RyaW5nKCkubWF4KDEyMCkub3B0aW9uYWwoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubWF4KDUwMCkub3B0aW9uYWwoKSxcbiAgdHlwZTogei5lbnVtKFsnc3RyaW5nJywgJ251bWJlcicsICdib29sZWFuJ10pLFxuICByZXF1aXJlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZGVmYXVsdDogei51bmlvbihbei5zdHJpbmcoKSwgei5udW1iZXIoKSwgei5ib29sZWFuKCldKS5vcHRpb25hbCgpLFxuICBvcHRpb25zOiB6LmFycmF5KHouc3RyaW5nKCkubWF4KDI1NSkpLm1heCg1MCkub3B0aW9uYWwoKSxcbn0pO1xuXG4vKiogUGlwZWxpbmUtdGVtcGxhdGUgbGlzdCBmaWx0ZXIgKHF1ZXJ5IHBhcmFtcykuICovXG5leHBvcnQgY29uc3QgUGlwZWxpbmVUZW1wbGF0ZUZpbHRlclNjaGVtYSA9IEJhc2VGaWx0ZXJTY2hlbWEuZXh0ZW5kKHtcbiAgbmFtZTogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgY2F0ZWdvcnk6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gIGtleXdvcmQ6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gIG9yZ0lkOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICB2aXNpYmlsaXR5OiBWaXNpYmlsaXR5U2NoZW1hLm9wdGlvbmFsKCksXG59KTtcblxuLyoqIENyZWF0ZSBhIHBpcGVsaW5lIHRlbXBsYXRlIChhdXRob3IgYSBnb2xkZW4gcGF0aCkuICovXG5leHBvcnQgY29uc3QgUGlwZWxpbmVUZW1wbGF0ZUNyZWF0ZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgLi4uQ2F0YWxvZ01ldGFkYXRhU2hhcGUsXG4gIC8vIEJvdW5kZWQgdG8gdGhlIERCIGNvbHVtbiB3aWR0aHMgc28gYW4gb3Zlci1sZW5ndGggdmFsdWUgaXMgYSBjbGVhbiA0MDAsXG4gIC8vIG5vdCBhIFBvc3RncmVzIGxlbmd0aCBlcnJvciBzdXJmYWNlZCBhcyBhIDUwMC5cbiAgbmFtZTogei5zdHJpbmcoKS5taW4oMSwgJ1RlbXBsYXRlIG5hbWUgaXMgcmVxdWlyZWQnKS5tYXgoMjU1KSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubWF4KDIwMDApLm9wdGlvbmFsKCksXG4gIGtleXdvcmRzOiB6LmFycmF5KHouc3RyaW5nKCkubWF4KDY0KSkubWF4KDUwKS5vcHRpb25hbCgpLFxuICBjYXRlZ29yeTogei5zdHJpbmcoKS5taW4oMSkubWF4KDUwKS5vcHRpb25hbCgpLFxuICB2aXNpYmlsaXR5OiBWaXNpYmlsaXR5U2NoZW1hLm9wdGlvbmFsKCksXG4gIC8vIFRlbXBsYXRlIGJvZHk6IGEgQnVpbGRlclByb3BzIHdpdGggYHt7IHZhcnMuKiB9fWAgcGxhY2Vob2xkZXJzLlxuICBwcm9wczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLFxuICBpbnB1dHM6IHouYXJyYXkoVGVtcGxhdGVJbnB1dFNjaGVtYSkubWF4KDEwMCkub3B0aW9uYWwoKSxcbn0pO1xuXG4vKiogVXBkYXRlIGEgcGlwZWxpbmUgdGVtcGxhdGUuICovXG5leHBvcnQgY29uc3QgUGlwZWxpbmVUZW1wbGF0ZVVwZGF0ZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgLi4uQ2F0YWxvZ01ldGFkYXRhU2hhcGUsXG4gIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLm1heCgyNTUpLm9wdGlvbmFsKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm1heCgyMDAwKS5vcHRpb25hbCgpLFxuICBrZXl3b3Jkczogei5hcnJheSh6LnN0cmluZygpLm1heCg2NCkpLm1heCg1MCkub3B0aW9uYWwoKSxcbiAgY2F0ZWdvcnk6IHouc3RyaW5nKCkubWluKDEpLm1heCg1MCkub3B0aW9uYWwoKSxcbiAgdmlzaWJpbGl0eTogVmlzaWJpbGl0eVNjaGVtYS5vcHRpb25hbCgpLFxuICBwcm9wczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm9wdGlvbmFsKCksXG4gIGlucHV0czogei5hcnJheShUZW1wbGF0ZUlucHV0U2NoZW1hKS5tYXgoMTAwKS5vcHRpb25hbCgpLFxuICBpc0FjdGl2ZTogQm9vbGVhblF1ZXJ5U2NoZW1hLm9wdGlvbmFsKCksXG59KTtcblxuLyoqXG4gKiBJbnN0YW50aWF0ZSBhIHRlbXBsYXRlIGludG8gYSBjb25jcmV0ZSBwaXBlbGluZSBjb25maWcuIGBpbnB1dHNgIHN1cHBsaWVzIHRoZVxuICogZGVjbGFyZWQgYHZhcnMuKmAgdmFsdWVzOyBwcm9qZWN0L29yZ2FuaXphdGlvbi9waXBlbGluZU5hbWUgbmFtZSB0aGUgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBJbnN0YW50aWF0ZVRlbXBsYXRlU2NoZW1hID0gei5vYmplY3Qoe1xuICBwcm9qZWN0OiB6LnN0cmluZygpLm1pbigxLCAnUHJvamVjdCBpcyByZXF1aXJlZCcpLFxuICBvcmdhbml6YXRpb246IHouc3RyaW5nKCkubWluKDEsICdPcmdhbml6YXRpb24gaXMgcmVxdWlyZWQnKSxcbiAgcGlwZWxpbmVOYW1lOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICBpbnB1dHM6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5pb24oW3ouc3RyaW5nKCksIHoubnVtYmVyKCksIHouYm9vbGVhbigpXSkpLm9wdGlvbmFsKCksXG59KTtcbiJdfQ==