@dev-ecosystem/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -0
- package/dist/capabilities/devforge.capabilities.json +0 -0
- package/dist/capabilities/mediaproc.capabilities.json +0 -0
- package/dist/capabilities/orbyt.capabilities.json +0 -0
- package/dist/capabilities/vaulta.capabilities.json +0 -0
- package/dist/contracts/adapter.contract.d.ts +1 -0
- package/dist/contracts/adapter.contract.d.ts.map +1 -0
- package/dist/contracts/adapter.contract.js +2 -0
- package/dist/contracts/adapter.contract.js.map +1 -0
- package/dist/contracts/cli.contract.d.ts +1 -0
- package/dist/contracts/cli.contract.d.ts.map +1 -0
- package/dist/contracts/cli.contract.js +2 -0
- package/dist/contracts/cli.contract.js.map +1 -0
- package/dist/contracts/engine.contract.d.ts +1 -0
- package/dist/contracts/engine.contract.d.ts.map +1 -0
- package/dist/contracts/engine.contract.js +2 -0
- package/dist/contracts/engine.contract.js.map +1 -0
- package/dist/contracts/plugin.contract.d.ts +1 -0
- package/dist/contracts/plugin.contract.d.ts.map +1 -0
- package/dist/contracts/plugin.contract.js +2 -0
- package/dist/contracts/plugin.contract.js.map +1 -0
- package/dist/contracts/vault.contract.d.ts +1 -0
- package/dist/contracts/vault.contract.d.ts.map +1 -0
- package/dist/contracts/vault.contract.js +2 -0
- package/dist/contracts/vault.contract.js.map +1 -0
- package/dist/contracts/workflow.contract.d.ts +1 -0
- package/dist/contracts/workflow.contract.d.ts.map +1 -0
- package/dist/contracts/workflow.contract.js +2 -0
- package/dist/contracts/workflow.contract.js.map +1 -0
- package/dist/errors/BaseError.d.ts +108 -0
- package/dist/errors/BaseError.d.ts.map +1 -0
- package/dist/errors/BaseError.js +163 -0
- package/dist/errors/BaseError.js.map +1 -0
- package/dist/errors/ErrorCodes.d.ts +111 -0
- package/dist/errors/ErrorCodes.d.ts.map +1 -0
- package/dist/errors/ErrorCodes.js +130 -0
- package/dist/errors/ErrorCodes.js.map +1 -0
- package/dist/errors/ErrorTypes.d.ts +144 -0
- package/dist/errors/ErrorTypes.d.ts.map +1 -0
- package/dist/errors/ErrorTypes.js +172 -0
- package/dist/errors/ErrorTypes.js.map +1 -0
- package/dist/errors/devforge.codes.d.ts +71 -0
- package/dist/errors/devforge.codes.d.ts.map +1 -0
- package/dist/errors/devforge.codes.js +84 -0
- package/dist/errors/devforge.codes.js.map +1 -0
- package/dist/errors/devforge.errors.d.ts +126 -0
- package/dist/errors/devforge.errors.d.ts.map +1 -0
- package/dist/errors/devforge.errors.js +139 -0
- package/dist/errors/devforge.errors.js.map +1 -0
- package/dist/errors/index.d.ts +22 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +37 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/mediaproc.codes.d.ts +92 -0
- package/dist/errors/mediaproc.codes.d.ts.map +1 -0
- package/dist/errors/mediaproc.codes.js +108 -0
- package/dist/errors/mediaproc.codes.js.map +1 -0
- package/dist/errors/mediaproc.errors.d.ts +120 -0
- package/dist/errors/mediaproc.errors.d.ts.map +1 -0
- package/dist/errors/mediaproc.errors.js +133 -0
- package/dist/errors/mediaproc.errors.js.map +1 -0
- package/dist/errors/orbyt.errors.d.ts +168 -0
- package/dist/errors/orbyt.errors.d.ts.map +1 -0
- package/dist/errors/orbyt.errors.js +187 -0
- package/dist/errors/orbyt.errors.js.map +1 -0
- package/dist/errors/vaulta.codes.d.ts +81 -0
- package/dist/errors/vaulta.codes.d.ts.map +1 -0
- package/dist/errors/vaulta.codes.js +94 -0
- package/dist/errors/vaulta.codes.js.map +1 -0
- package/dist/errors/vaulta.errors.d.ts +135 -0
- package/dist/errors/vaulta.errors.d.ts.map +1 -0
- package/dist/errors/vaulta.errors.js +154 -0
- package/dist/errors/vaulta.errors.js.map +1 -0
- package/dist/exit-codes/ExitCodes.d.ts +136 -0
- package/dist/exit-codes/ExitCodes.d.ts.map +1 -0
- package/dist/exit-codes/ExitCodes.js +229 -0
- package/dist/exit-codes/ExitCodes.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/LogFormat.d.ts +1 -0
- package/dist/logging/LogFormat.d.ts.map +1 -0
- package/dist/logging/LogFormat.js +2 -0
- package/dist/logging/LogFormat.js.map +1 -0
- package/dist/manifests/adapter.manifest.json +0 -0
- package/dist/manifests/plugin.manifest.json +0 -0
- package/dist/manifests/workflow.manifest.json +0 -0
- package/dist/schemas/adapter.schema.json +0 -0
- package/dist/schemas/capability.schem.json +0 -0
- package/dist/schemas/index.d.ts +401 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +107 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/manifest.schame.json +0 -0
- package/dist/schemas/plugin.schema.json +0 -0
- package/dist/schemas/workflow.schema.json +485 -0
- package/dist/schemas/workflow.schema.zod.d.ts +450 -0
- package/dist/schemas/workflow.schema.zod.d.ts.map +1 -0
- package/dist/schemas/workflow.schema.zod.js +234 -0
- package/dist/schemas/workflow.schema.zod.js.map +1 -0
- package/dist/types/adapter.types.d.ts +1 -0
- package/dist/types/adapter.types.d.ts.map +1 -0
- package/dist/types/adapter.types.js +2 -0
- package/dist/types/adapter.types.js.map +1 -0
- package/dist/types/global.types.d.ts +1 -0
- package/dist/types/global.types.d.ts.map +1 -0
- package/dist/types/global.types.js +2 -0
- package/dist/types/global.types.js.map +1 -0
- package/dist/types/plugin.types.d.ts +1 -0
- package/dist/types/plugin.types.d.ts.map +1 -0
- package/dist/types/plugin.types.js +2 -0
- package/dist/types/plugin.types.js.map +1 -0
- package/dist/types/workflow.types.d.ts +503 -0
- package/dist/types/workflow.types.d.ts.map +1 -0
- package/dist/types/workflow.types.js +90 -0
- package/dist/types/workflow.types.js.map +1 -0
- package/dist/utils/assert.d.ts +1 -0
- package/dist/utils/assert.d.ts.map +1 -0
- package/dist/utils/assert.js +2 -0
- package/dist/utils/assert.js.map +1 -0
- package/package.json +30 -0
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://orbyt.dev/schemas/workflow.v1.json",
|
|
4
|
+
"title": "Orbyt Workflow Schema",
|
|
5
|
+
"description": "Schema for defining declarative workflows in the Orbyt execution engine. This schema is domain-agnostic and can represent workflows for media processing, CI/CD, automation, data pipelines, and more.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["version", "kind", "workflow"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"version": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Schema version following semantic versioning. Used for backward compatibility and migration.",
|
|
12
|
+
"pattern": "^[0-9]+\\.[0-9]+(\\.[0-9]+)?$",
|
|
13
|
+
"examples": ["1.0", "1.0.0"]
|
|
14
|
+
},
|
|
15
|
+
"kind": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "Type of executable. Defines how the workflow is interpreted and executed.",
|
|
18
|
+
"enum": ["workflow", "pipeline", "job", "playbook", "automation"],
|
|
19
|
+
"default": "workflow"
|
|
20
|
+
},
|
|
21
|
+
"metadata": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"description": "Human-readable metadata for identification, discovery, and organization. Not used for execution logic.",
|
|
24
|
+
"properties": {
|
|
25
|
+
"name": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"description": "Human-readable name for the workflow",
|
|
28
|
+
"examples": ["image-processing-pipeline", "deploy-to-production"]
|
|
29
|
+
},
|
|
30
|
+
"description": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"description": "Detailed explanation of what the workflow does"
|
|
33
|
+
},
|
|
34
|
+
"tags": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"description": "Tags for categorization and search",
|
|
37
|
+
"items": {
|
|
38
|
+
"type": "string"
|
|
39
|
+
},
|
|
40
|
+
"examples": [["media", "image", "automation"]]
|
|
41
|
+
},
|
|
42
|
+
"owner": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"description": "Team or individual responsible for this workflow",
|
|
45
|
+
"examples": ["team-media", "sharique"]
|
|
46
|
+
},
|
|
47
|
+
"version": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"description": "Version of this specific workflow (not schema version)"
|
|
50
|
+
},
|
|
51
|
+
"createdAt": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"format": "date-time",
|
|
54
|
+
"description": "ISO 8601 timestamp of workflow creation"
|
|
55
|
+
},
|
|
56
|
+
"updatedAt": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"format": "date-time",
|
|
59
|
+
"description": "ISO 8601 timestamp of last update"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"additionalProperties": true
|
|
63
|
+
},
|
|
64
|
+
"annotations": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"description": "Zero-runtime-impact hints for AI, UI, and tooling. Never affects execution.",
|
|
67
|
+
"properties": {
|
|
68
|
+
"ai.intent": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"description": "Hint for AI about workflow purpose",
|
|
71
|
+
"examples": ["media-processing", "deployment", "data-pipeline"]
|
|
72
|
+
},
|
|
73
|
+
"ui.group": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"description": "UI grouping category",
|
|
76
|
+
"examples": ["Media", "DevOps", "Data"]
|
|
77
|
+
},
|
|
78
|
+
"ui.icon": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"description": "Icon identifier for visual representation"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"additionalProperties": true
|
|
84
|
+
},
|
|
85
|
+
"triggers": {
|
|
86
|
+
"type": "array",
|
|
87
|
+
"description": "Defines how and when workflow execution starts. Same workflow can have multiple triggers.",
|
|
88
|
+
"items": {
|
|
89
|
+
"type": "object",
|
|
90
|
+
"required": ["type"],
|
|
91
|
+
"properties": {
|
|
92
|
+
"type": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"description": "Type of trigger",
|
|
95
|
+
"enum": ["manual", "cron", "event", "webhook"]
|
|
96
|
+
},
|
|
97
|
+
"schedule": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"description": "Cron expression for scheduled execution (required for cron type)",
|
|
100
|
+
"examples": ["0 2 * * *", "*/15 * * * *"]
|
|
101
|
+
},
|
|
102
|
+
"source": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"description": "Event source identifier (required for event type)",
|
|
105
|
+
"examples": ["github.push", "vaulta.secret.updated"]
|
|
106
|
+
},
|
|
107
|
+
"endpoint": {
|
|
108
|
+
"type": "string",
|
|
109
|
+
"description": "Webhook endpoint path (required for webhook type)",
|
|
110
|
+
"examples": ["/webhooks/deploy"]
|
|
111
|
+
},
|
|
112
|
+
"filters": {
|
|
113
|
+
"type": "object",
|
|
114
|
+
"description": "Event filtering conditions",
|
|
115
|
+
"additionalProperties": true
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"secrets": {
|
|
121
|
+
"type": "object",
|
|
122
|
+
"description": "References to external secrets. Values are NEVER stored inline - only references to secret providers.",
|
|
123
|
+
"properties": {
|
|
124
|
+
"vault": {
|
|
125
|
+
"type": "string",
|
|
126
|
+
"description": "Default secret vault provider",
|
|
127
|
+
"default": "vaulta",
|
|
128
|
+
"examples": ["vaulta", "aws-secrets", "vault"]
|
|
129
|
+
},
|
|
130
|
+
"keys": {
|
|
131
|
+
"type": "object",
|
|
132
|
+
"description": "Map of logical secret names to provider-specific paths. Format: 'provider:path'",
|
|
133
|
+
"additionalProperties": {
|
|
134
|
+
"type": "string",
|
|
135
|
+
"pattern": "^[a-zA-Z0-9_-]+:.+$"
|
|
136
|
+
},
|
|
137
|
+
"examples": [{
|
|
138
|
+
"IMAGE_API_KEY": "vaulta:mediaproc/image/api_key",
|
|
139
|
+
"UPLOAD_TOKEN": "vaulta:orbyt/keys/upload-token"
|
|
140
|
+
}]
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"inputs": {
|
|
145
|
+
"type": "object",
|
|
146
|
+
"description": "External parameters passed at runtime. Makes workflows reusable with different data.",
|
|
147
|
+
"additionalProperties": {
|
|
148
|
+
"type": "object",
|
|
149
|
+
"properties": {
|
|
150
|
+
"type": {
|
|
151
|
+
"type": "string",
|
|
152
|
+
"description": "Data type of input",
|
|
153
|
+
"enum": ["string", "number", "boolean", "array", "object"]
|
|
154
|
+
},
|
|
155
|
+
"required": {
|
|
156
|
+
"type": "boolean",
|
|
157
|
+
"description": "Whether input must be provided",
|
|
158
|
+
"default": false
|
|
159
|
+
},
|
|
160
|
+
"default": {
|
|
161
|
+
"description": "Default value if not provided"
|
|
162
|
+
},
|
|
163
|
+
"description": {
|
|
164
|
+
"type": "string",
|
|
165
|
+
"description": "Human-readable description of input purpose"
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
"examples": [{
|
|
170
|
+
"image_path": {
|
|
171
|
+
"type": "string",
|
|
172
|
+
"required": true,
|
|
173
|
+
"description": "Path to input image file"
|
|
174
|
+
},
|
|
175
|
+
"width": {
|
|
176
|
+
"type": "number",
|
|
177
|
+
"default": 1024,
|
|
178
|
+
"description": "Target width for resize"
|
|
179
|
+
}
|
|
180
|
+
}]
|
|
181
|
+
},
|
|
182
|
+
"context": {
|
|
183
|
+
"type": "object",
|
|
184
|
+
"description": "Runtime environment information. Read-only for steps.",
|
|
185
|
+
"properties": {
|
|
186
|
+
"env": {
|
|
187
|
+
"type": "string",
|
|
188
|
+
"description": "Environment name",
|
|
189
|
+
"enum": ["local", "dev", "staging", "prod"],
|
|
190
|
+
"examples": ["local", "prod"]
|
|
191
|
+
},
|
|
192
|
+
"platform": {
|
|
193
|
+
"type": "string",
|
|
194
|
+
"description": "Execution platform",
|
|
195
|
+
"examples": ["local", "cloud", "docker"]
|
|
196
|
+
},
|
|
197
|
+
"workspace": {
|
|
198
|
+
"type": "string",
|
|
199
|
+
"description": "Working directory path",
|
|
200
|
+
"examples": ["./workdir", "/tmp/orbyt"]
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"additionalProperties": true
|
|
204
|
+
},
|
|
205
|
+
"defaults": {
|
|
206
|
+
"type": "object",
|
|
207
|
+
"description": "Default values applied to all steps unless overridden.",
|
|
208
|
+
"properties": {
|
|
209
|
+
"retry": {
|
|
210
|
+
"type": "object",
|
|
211
|
+
"properties": {
|
|
212
|
+
"max": {
|
|
213
|
+
"type": "integer",
|
|
214
|
+
"minimum": 0,
|
|
215
|
+
"description": "Maximum retry attempts"
|
|
216
|
+
},
|
|
217
|
+
"backoff": {
|
|
218
|
+
"type": "string",
|
|
219
|
+
"enum": ["linear", "exponential"],
|
|
220
|
+
"description": "Retry backoff strategy"
|
|
221
|
+
},
|
|
222
|
+
"delay": {
|
|
223
|
+
"type": "integer",
|
|
224
|
+
"minimum": 0,
|
|
225
|
+
"description": "Initial delay in milliseconds"
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
"timeout": {
|
|
230
|
+
"type": "string",
|
|
231
|
+
"description": "Default step timeout (e.g., '30s', '5m', '1h')",
|
|
232
|
+
"pattern": "^[0-9]+(ms|s|m|h|d)$",
|
|
233
|
+
"examples": ["30s", "5m"]
|
|
234
|
+
},
|
|
235
|
+
"adapter": {
|
|
236
|
+
"type": "string",
|
|
237
|
+
"description": "Default adapter if not specified in uses",
|
|
238
|
+
"examples": ["cli", "http", "shell"]
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
"additionalProperties": true
|
|
242
|
+
},
|
|
243
|
+
"policies": {
|
|
244
|
+
"type": "object",
|
|
245
|
+
"description": "Execution policies and rules.",
|
|
246
|
+
"properties": {
|
|
247
|
+
"failure": {
|
|
248
|
+
"type": "string",
|
|
249
|
+
"enum": ["stop", "continue", "isolate"],
|
|
250
|
+
"description": "What to do when a step fails",
|
|
251
|
+
"default": "stop"
|
|
252
|
+
},
|
|
253
|
+
"concurrency": {
|
|
254
|
+
"type": "integer",
|
|
255
|
+
"minimum": 1,
|
|
256
|
+
"description": "Maximum parallel step execution",
|
|
257
|
+
"default": 1
|
|
258
|
+
},
|
|
259
|
+
"sandbox": {
|
|
260
|
+
"type": "string",
|
|
261
|
+
"enum": ["none", "basic", "strict"],
|
|
262
|
+
"description": "Sandbox enforcement level",
|
|
263
|
+
"default": "basic"
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
"additionalProperties": true
|
|
267
|
+
},
|
|
268
|
+
"permissions": {
|
|
269
|
+
"type": "object",
|
|
270
|
+
"description": "Fine-grained permissions for security and sandboxing. Critical for untrusted workflows.",
|
|
271
|
+
"properties": {
|
|
272
|
+
"fs": {
|
|
273
|
+
"type": "object",
|
|
274
|
+
"properties": {
|
|
275
|
+
"read": {
|
|
276
|
+
"type": "array",
|
|
277
|
+
"items": { "type": "string" },
|
|
278
|
+
"description": "Allowed read paths"
|
|
279
|
+
},
|
|
280
|
+
"write": {
|
|
281
|
+
"type": "array",
|
|
282
|
+
"items": { "type": "string" },
|
|
283
|
+
"description": "Allowed write paths"
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
"network": {
|
|
288
|
+
"type": "object",
|
|
289
|
+
"properties": {
|
|
290
|
+
"allow": {
|
|
291
|
+
"type": "array",
|
|
292
|
+
"items": { "type": "string" },
|
|
293
|
+
"description": "Allowed network hosts/domains"
|
|
294
|
+
},
|
|
295
|
+
"deny": {
|
|
296
|
+
"type": "array",
|
|
297
|
+
"items": { "type": "string" },
|
|
298
|
+
"description": "Blocked network hosts/domains"
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
"additionalProperties": true
|
|
304
|
+
},
|
|
305
|
+
"resources": {
|
|
306
|
+
"type": "object",
|
|
307
|
+
"description": "Resource constraints for cloud/distributed execution. Reserved for future use.",
|
|
308
|
+
"properties": {
|
|
309
|
+
"cpu": {
|
|
310
|
+
"type": ["number", "string"],
|
|
311
|
+
"description": "CPU allocation",
|
|
312
|
+
"examples": [1, "1", "0.5"]
|
|
313
|
+
},
|
|
314
|
+
"memory": {
|
|
315
|
+
"type": "string",
|
|
316
|
+
"description": "Memory allocation",
|
|
317
|
+
"examples": ["512MB", "2GB"]
|
|
318
|
+
},
|
|
319
|
+
"disk": {
|
|
320
|
+
"type": "string",
|
|
321
|
+
"description": "Disk allocation",
|
|
322
|
+
"examples": ["1GB", "10GB"]
|
|
323
|
+
},
|
|
324
|
+
"timeout": {
|
|
325
|
+
"type": "string",
|
|
326
|
+
"description": "Overall workflow timeout"
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
"additionalProperties": true
|
|
330
|
+
},
|
|
331
|
+
"workflow": {
|
|
332
|
+
"type": "object",
|
|
333
|
+
"required": ["steps"],
|
|
334
|
+
"description": "The core executable definition. Contains the actual work to be performed.",
|
|
335
|
+
"properties": {
|
|
336
|
+
"steps": {
|
|
337
|
+
"type": "array",
|
|
338
|
+
"description": "Ordered list of execution steps. Engine builds dependency graph from outputs and variables.",
|
|
339
|
+
"minItems": 1,
|
|
340
|
+
"items": {
|
|
341
|
+
"type": "object",
|
|
342
|
+
"required": ["id", "uses"],
|
|
343
|
+
"properties": {
|
|
344
|
+
"id": {
|
|
345
|
+
"type": "string",
|
|
346
|
+
"description": "Unique identifier for this step. Used for output referencing and dependencies.",
|
|
347
|
+
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$",
|
|
348
|
+
"examples": ["resize", "watermark", "upload_to_s3"]
|
|
349
|
+
},
|
|
350
|
+
"name": {
|
|
351
|
+
"type": "string",
|
|
352
|
+
"description": "Human-readable step name"
|
|
353
|
+
},
|
|
354
|
+
"uses": {
|
|
355
|
+
"type": "string",
|
|
356
|
+
"description": "Action to execute. Format: 'namespace.action' or 'namespace.domain.action'. This is THE universal abstraction - same syntax for plugins, CLI, HTTP, shell, database, etc.",
|
|
357
|
+
"pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$",
|
|
358
|
+
"examples": [
|
|
359
|
+
"mediaproc.image.resize",
|
|
360
|
+
"cli.exec",
|
|
361
|
+
"http.request",
|
|
362
|
+
"shell.run",
|
|
363
|
+
"db.query",
|
|
364
|
+
"vaulta.get"
|
|
365
|
+
]
|
|
366
|
+
},
|
|
367
|
+
"with": {
|
|
368
|
+
"type": "object",
|
|
369
|
+
"description": "Input parameters passed to the action. Structure is adapter-specific and validated by the adapter, not by this schema. Supports variable interpolation using ${namespace.path} syntax.",
|
|
370
|
+
"additionalProperties": true,
|
|
371
|
+
"examples": [{
|
|
372
|
+
"input": "${steps.resize.outputs.path}",
|
|
373
|
+
"width": 800,
|
|
374
|
+
"format": "webp"
|
|
375
|
+
}]
|
|
376
|
+
},
|
|
377
|
+
"when": {
|
|
378
|
+
"type": "string",
|
|
379
|
+
"description": "Conditional execution expression. Step only runs if expression evaluates to true. Supports: ${inputs.*}, ${secrets.*}, ${steps.*.outputs.*}, ${context.*}",
|
|
380
|
+
"examples": [
|
|
381
|
+
"${inputs.env} == 'prod'",
|
|
382
|
+
"${steps.validate.outputs.success} == true"
|
|
383
|
+
]
|
|
384
|
+
},
|
|
385
|
+
"needs": {
|
|
386
|
+
"type": "array",
|
|
387
|
+
"description": "Explicit step dependencies. Step waits for these steps to complete. Can also be inferred from output references.",
|
|
388
|
+
"items": {
|
|
389
|
+
"type": "string"
|
|
390
|
+
},
|
|
391
|
+
"examples": [["resize", "validate"]]
|
|
392
|
+
},
|
|
393
|
+
"retry": {
|
|
394
|
+
"type": "object",
|
|
395
|
+
"description": "Step-specific retry configuration. Overrides workflow defaults.",
|
|
396
|
+
"properties": {
|
|
397
|
+
"max": {
|
|
398
|
+
"type": "integer",
|
|
399
|
+
"minimum": 0
|
|
400
|
+
},
|
|
401
|
+
"backoff": {
|
|
402
|
+
"type": "string",
|
|
403
|
+
"enum": ["linear", "exponential"]
|
|
404
|
+
},
|
|
405
|
+
"delay": {
|
|
406
|
+
"type": "integer",
|
|
407
|
+
"minimum": 0
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
},
|
|
411
|
+
"timeout": {
|
|
412
|
+
"type": "string",
|
|
413
|
+
"description": "Maximum execution time for this step. Overrides workflow defaults.",
|
|
414
|
+
"pattern": "^[0-9]+(ms|s|m|h)$",
|
|
415
|
+
"examples": ["30s", "2m", "1h"]
|
|
416
|
+
},
|
|
417
|
+
"continueOnError": {
|
|
418
|
+
"type": "boolean",
|
|
419
|
+
"description": "If true, workflow continues even if this step fails. Critical for cleanup and best-effort steps.",
|
|
420
|
+
"default": false
|
|
421
|
+
},
|
|
422
|
+
"outputs": {
|
|
423
|
+
"type": "object",
|
|
424
|
+
"description": "Maps step output values to named outputs for use in other steps. Enables data flow between steps.",
|
|
425
|
+
"additionalProperties": {
|
|
426
|
+
"type": "string"
|
|
427
|
+
},
|
|
428
|
+
"examples": [{
|
|
429
|
+
"image_path": "${result.path}",
|
|
430
|
+
"width": "${result.dimensions.width}"
|
|
431
|
+
}]
|
|
432
|
+
},
|
|
433
|
+
"env": {
|
|
434
|
+
"type": "object",
|
|
435
|
+
"description": "Environment variables for this step",
|
|
436
|
+
"additionalProperties": {
|
|
437
|
+
"type": "string"
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
},
|
|
445
|
+
"outputs": {
|
|
446
|
+
"type": "object",
|
|
447
|
+
"description": "Final workflow outputs returned to caller. Pure mapping from step outputs to workflow-level outputs.",
|
|
448
|
+
"additionalProperties": {
|
|
449
|
+
"type": "string"
|
|
450
|
+
},
|
|
451
|
+
"examples": [{
|
|
452
|
+
"final_image": "${steps.upload.outputs.url}",
|
|
453
|
+
"processing_time": "${steps.resize.outputs.duration}"
|
|
454
|
+
}]
|
|
455
|
+
},
|
|
456
|
+
"on": {
|
|
457
|
+
"type": "object",
|
|
458
|
+
"description": "Lifecycle hooks. Reserved for future use.",
|
|
459
|
+
"properties": {
|
|
460
|
+
"success": {
|
|
461
|
+
"type": "array",
|
|
462
|
+
"description": "Steps to run on successful completion",
|
|
463
|
+
"items": {
|
|
464
|
+
"type": "object"
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
"failure": {
|
|
468
|
+
"type": "array",
|
|
469
|
+
"description": "Steps to run on failure",
|
|
470
|
+
"items": {
|
|
471
|
+
"type": "object"
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
"always": {
|
|
475
|
+
"type": "array",
|
|
476
|
+
"description": "Steps to always run (cleanup)",
|
|
477
|
+
"items": {
|
|
478
|
+
"type": "object"
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
},
|
|
484
|
+
"additionalProperties": false
|
|
485
|
+
}
|