@shipfox/workflow-document 2.1.2 → 3.0.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.
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { checkoutTargetValidationIssues } from './checkout-target-validation.js';
2
3
  import { agentThinkingSchema, harnessSchema } from './step-enums.js';
3
4
  const stringOrStringArraySchema = z.union([
4
5
  z.string().min(1),
@@ -7,6 +8,32 @@ const stringOrStringArraySchema = z.union([
7
8
  const nonEmptyRecordSchema = (valueSchema)=>z.record(z.string().min(1), valueSchema).refine((value)=>Object.keys(value).length > 0, {
8
9
  message: 'Expected at least one entry'
9
10
  });
11
+ export const WORKFLOW_LITERAL_NAME_PATTERN = /^(?:[^$]|\$\$\{\{|\$(?!\{\{))*$/;
12
+ // The inverse of a literal name: a literal prefix followed by an unescaped
13
+ // `${{`. An enum field that also accepts a template matches one or the other.
14
+ export const WORKFLOW_INTERPOLATED_VALUE_PATTERN = /^(?:[^$]|\$\$\{\{|\$(?!\{\{))*\$\{\{/;
15
+ // Reasoning effort is an enum so editors can complete it, and a template so a
16
+ // workflow can choose the effort from run context. The resolved value is
17
+ // checked against the harness levels when the step is dispatched.
18
+ export const agentThinkingFieldSchema = z.union([
19
+ agentThinkingSchema,
20
+ z.string().regex(WORKFLOW_INTERPOLATED_VALUE_PATTERN, {
21
+ message: 'Agent thinking must be a supported level or a $' + '{{ }} interpolation that resolves to one.'
22
+ })
23
+ ]).meta({
24
+ description: 'Reasoning effort for an agent step. Supported values depend on the resolved harness. Accepts a $' + '{{ }} interpolation. When omitted, Shipfox uses the provider default, or `xhigh` when none is configured.'
25
+ });
26
+ const workflowNameSchema = literalNameSchema('Workflow name must be literal. Move runtime interpolation to run_name.').meta({
27
+ description: 'Static literal human-readable workflow name.'
28
+ });
29
+ const jobNameSchema = literalNameSchema('Job name must be literal. Move runtime interpolation to execution_name.').meta({
30
+ description: 'Static literal human-readable job name.'
31
+ });
32
+ function literalNameSchema(message) {
33
+ return z.string().min(1).regex(WORKFLOW_LITERAL_NAME_PATTERN, {
34
+ message
35
+ });
36
+ }
10
37
  // Runner shell steps execute on Unix shells, so workflow env names follow the
11
38
  // portable POSIX-style variable shape.
12
39
  const envNameSchema = z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/);
@@ -131,10 +158,10 @@ const workflowDocumentTriggerBaseSchema = {
131
158
  description: 'Integration connection slug or built-in trigger source. See [Trigger sources](/reference/trigger-sources).'
132
159
  }),
133
160
  with: z.record(z.string(), z.unknown()).optional().meta({
134
- description: 'Provider-specific values used to match or configure the trigger. See [expressions](/reference/expressions#context-available).'
161
+ description: 'Provider-specific values used to match or configure the trigger. See [Trigger sources](/reference/trigger-sources).'
135
162
  }),
136
163
  filter: z.string().min(1).optional().meta({
137
- description: 'CEL condition that filters matching events. It is not supported for `manual` or `cron` triggers. See [trigger filters](/reference/expressions#trigger-filters).'
164
+ description: 'CEL condition that filters matching events. It is not supported for `manual` or `cron` triggers. See [Expressions](/reference/expressions) and [Contexts](/reference/contexts#context-availability).'
138
165
  }),
139
166
  config: z.record(z.string(), z.unknown()).optional().meta({
140
167
  description: 'Source-specific configuration. It is supported only for top-level triggers with a known built-in source. See [cron triggers](/reference/trigger-sources#cron).'
@@ -252,20 +279,63 @@ const workflowDocumentStepGateSchema = z.strictObject({
252
279
  }).refine((value)=>value.success !== undefined || value.on_failure !== undefined, {
253
280
  message: 'Expected success or on_failure'
254
281
  });
282
+ const workflowDocumentCheckoutPermissionsSchema = z.strictObject({
283
+ contents: z.enum([
284
+ 'read',
285
+ 'write'
286
+ ]).optional().meta({
287
+ description: 'Repository contents permission granted to checkout.'
288
+ })
289
+ }).optional().meta({
290
+ description: 'Repository permissions used during checkout.'
291
+ });
292
+ const workflowDocumentPersistCredentialsSchema = z.boolean().optional().meta({
293
+ description: 'Whether checkout credentials remain available to later run steps.'
294
+ });
255
295
  export const workflowDocumentCheckoutSchema = z.strictObject({
256
- permissions: z.strictObject({
257
- contents: z.enum([
258
- 'read',
259
- 'write'
260
- ]).optional().meta({
261
- description: 'Repository contents permission granted to checkout.'
262
- })
263
- }).optional().meta({
264
- description: 'Repository permissions used during checkout.'
296
+ project: z.string().min(1).optional().meta({
297
+ description: 'Shipfox project id to check out. Exclusive with connection and repository.'
265
298
  }),
266
- 'persist-credentials': z.boolean().optional().meta({
267
- description: 'Whether checkout credentials remain available to later run steps.'
299
+ connection: z.string().min(1).optional().meta({
300
+ description: 'Integration connection slug to use for checkout.'
301
+ }),
302
+ repository: z.string().min(1).optional().meta({
303
+ description: 'Repository to check out, as owner/name or a bare name.'
304
+ }),
305
+ ref: z.string().min(1).optional().meta({
306
+ description: 'Repository ref to check out.'
307
+ }),
308
+ 'fetch-depth': z.number().int().min(0).optional().meta({
309
+ description: 'Number of commits to fetch. Use 0 for full history.'
310
+ }),
311
+ path: z.string().min(1).optional().meta({
312
+ description: 'Relative path under the job workspace where this repository is checked out.'
313
+ }),
314
+ permissions: workflowDocumentCheckoutPermissionsSchema,
315
+ 'persist-credentials': workflowDocumentPersistCredentialsSchema,
316
+ force: z.boolean().optional().meta({
317
+ description: 'Whether checkout may replace an occupied destination.'
268
318
  })
319
+ }).superRefine((checkout, ctx)=>{
320
+ for (const validationIssue of checkoutTargetValidationIssues(checkout)){
321
+ const message = validationIssue.kind === 'project-with-connection' ? '"connection" cannot be combined with "project".' : validationIssue.kind === 'project-with-repository' ? '"repository" cannot be combined with "project".' : '"connection" requires "repository".';
322
+ ctx.addIssue({
323
+ code: 'custom',
324
+ path: [
325
+ validationIssue.path
326
+ ],
327
+ message
328
+ });
329
+ }
330
+ });
331
+ const workflowDocumentJobCheckoutSchema = z.union([
332
+ z.strictObject({
333
+ permissions: workflowDocumentCheckoutPermissionsSchema,
334
+ 'persist-credentials': workflowDocumentPersistCredentialsSchema
335
+ }),
336
+ z.literal(false)
337
+ ]).meta({
338
+ description: 'Checkout settings for repository content and credentials, or false to skip checkout.'
269
339
  });
270
340
  export const workflowDocumentStepIntegrationSelectionSchema = z.array(z.string().min(1)).min(1);
271
341
  export const workflowDocumentStepIntegrationSchema = z.strictObject({
@@ -291,25 +361,32 @@ export const workflowDocumentAgentStepFields = [
291
361
  'tools',
292
362
  'integrations'
293
363
  ];
294
- // A step is a run step (`run`) or an inline agent step (`prompt`), never
295
- // both. They share one strict object so an unknown key is still rejected; the
296
- // `superRefine` discriminates by which payload keys are present and emits one
297
- // targeted issue per failure mode (a plain union would surface every branch's
298
- // errors at once). The `agent` keyword is declared only so the reserved-keyword
299
- // case produces a clear message instead of a generic "unrecognized key".
364
+ // A step is a run step (`run`), an inline agent step (`prompt`), or a checkout
365
+ // step (`checkout`), never two kinds at once. They share one strict object so
366
+ // an unknown key is still rejected; the `superRefine` discriminates by which
367
+ // payload keys are present and emits one targeted issue per failure mode (a
368
+ // plain union would surface every branch's errors at once). The `agent`
369
+ // keyword is declared only so the reserved-keyword case produces a clear
370
+ // message instead of a generic "unrecognized key".
300
371
  export const workflowDocumentStepSchema = z.strictObject({
301
372
  key: z.string().min(1).optional().meta({
302
373
  description: 'Stable step key for dependencies and outputs.'
303
374
  }),
304
375
  if: z.string().min(1).optional().meta({
305
- description: 'CEL condition wrapped in exactly one $' + '{{ }} interpolation. See [conditionals](/reference/expressions#conditionals-if).'
376
+ description: 'CEL condition wrapped in exactly one $' + '{{ }} interpolation. See [conditionals](/reference/expressions#syntax).'
306
377
  }),
307
378
  name: z.string().min(1).optional().meta({
308
379
  description: 'Human-readable step name.'
309
380
  }),
381
+ working_directory: z.string().min(1).optional().meta({
382
+ description: 'Working directory for the step, relative to the job workspace.'
383
+ }),
310
384
  run: z.string().min(1).optional().meta({
311
385
  description: 'Shell command for a run step. Do not combine it with agent-only fields.'
312
386
  }),
387
+ checkout: workflowDocumentCheckoutSchema.optional().meta({
388
+ description: 'Repository checkout settings for this step.'
389
+ }),
313
390
  model: z.string().min(1).optional().meta({
314
391
  description: 'Model ID for an agent step. It requires `prompt` and is not valid on a run step.'
315
392
  }),
@@ -319,9 +396,7 @@ export const workflowDocumentStepSchema = z.strictObject({
319
396
  harness: harnessSchema.optional().meta({
320
397
  description: 'Agent harness. When omitted, Shipfox uses the workspace default harness, or `pi` when none is configured.'
321
398
  }),
322
- thinking: agentThinkingSchema.optional().meta({
323
- description: 'Reasoning effort for an agent step. Supported values depend on the resolved harness. When omitted, Shipfox uses the provider default, or `xhigh` when none is configured.'
324
- }),
399
+ thinking: agentThinkingFieldSchema.optional(),
325
400
  provider: z.string().min(1).optional().meta({
326
401
  description: 'Model provider ID for an agent step. It requires `prompt` and is not valid on a run step.'
327
402
  }),
@@ -354,6 +429,38 @@ export const workflowDocumentStepSchema = z.strictObject({
354
429
  });
355
430
  return;
356
431
  }
432
+ if (step.checkout !== undefined) {
433
+ if (step.run !== undefined) {
434
+ ctx.addIssue({
435
+ code: 'custom',
436
+ path: [
437
+ 'run'
438
+ ],
439
+ message: '"run" is not valid on a checkout step.'
440
+ });
441
+ }
442
+ for (const key of workflowDocumentAgentStepFields){
443
+ if (step[key] !== undefined) {
444
+ ctx.addIssue({
445
+ code: 'custom',
446
+ path: [
447
+ key
448
+ ],
449
+ message: `"${key}" is not valid on a checkout step.`
450
+ });
451
+ }
452
+ }
453
+ if (step.env !== undefined) {
454
+ ctx.addIssue({
455
+ code: 'custom',
456
+ path: [
457
+ 'env'
458
+ ],
459
+ message: '"env" is not valid on a checkout step.'
460
+ });
461
+ }
462
+ return;
463
+ }
357
464
  if (step.run !== undefined) {
358
465
  for (const key of workflowDocumentAgentStepFields){
359
466
  if (step[key] !== undefined) {
@@ -372,7 +479,7 @@ export const workflowDocumentStepSchema = z.strictObject({
372
479
  if (!isAgent) {
373
480
  ctx.addIssue({
374
481
  code: 'custom',
375
- message: 'A step must define either "run" or an agent "prompt".'
482
+ message: 'A step must define either "run", an agent "prompt", or "checkout".'
376
483
  });
377
484
  return;
378
485
  }
@@ -400,13 +507,13 @@ export const workflowDocumentJobSchema = z.strictObject({
400
507
  description: 'Job key or keys that must complete before this job starts.'
401
508
  }),
402
509
  if: z.string().min(1).optional().meta({
403
- description: 'CEL condition wrapped in exactly one $' + '{{ }} interpolation. See [conditionals](/reference/expressions#conditionals-if).'
510
+ description: 'CEL condition wrapped in exactly one $' + '{{ }} interpolation. See [conditionals](/reference/expressions#syntax).'
404
511
  }),
405
512
  runner: stringOrStringArraySchema.optional().meta({
406
513
  description: 'Runner label or ordered fallback labels for this job. See [runners and execution environments](/understand/runners-and-execution-environments).'
407
514
  }),
408
515
  success: z.string().min(1).optional().meta({
409
- description: 'CEL expression that determines whether the job succeeds. See [job success](/reference/expressions#job-success-success).'
516
+ description: 'CEL expression that determines whether the job succeeds. See [Expressions](/reference/expressions#functions-and-macros) and [Contexts](/reference/contexts#context-availability).'
410
517
  }),
411
518
  outputs: nonEmptyRecordSchema(z.string().min(1)).optional().meta({
412
519
  description: 'Named job outputs mapped from step values.'
@@ -414,14 +521,13 @@ export const workflowDocumentJobSchema = z.strictObject({
414
521
  execution_timeout: z.string().min(1).optional().meta({
415
522
  description: 'Maximum duration for one job execution.'
416
523
  }),
417
- checkout: workflowDocumentCheckoutSchema.optional().meta({
418
- description: 'Checkout settings for repository content and credentials.'
419
- }),
524
+ checkout: workflowDocumentJobCheckoutSchema.optional(),
420
525
  listening: workflowDocumentListeningSchema.optional().meta({
421
526
  description: 'Event-listening configuration for this job. See [listening jobs](/understand/listening-jobs).'
422
527
  }),
423
- name: z.string().min(1).optional().meta({
424
- description: 'Human-readable job name.'
528
+ name: jobNameSchema.optional(),
529
+ execution_name: z.string().min(1).optional().meta({
530
+ description: 'Dynamic name for each job execution. Supports workflow expressions.'
425
531
  }),
426
532
  env: workflowDocumentEnvSchema.optional().meta({
427
533
  description: 'Environment variables for run steps in this job. They do not apply to agent steps. See [secrets and variables](/reference/secrets-variables).'
@@ -431,8 +537,9 @@ export const workflowDocumentJobSchema = z.strictObject({
431
537
  })
432
538
  });
433
539
  export const workflowDocumentSchema = z.strictObject({
434
- name: z.string().min(1).meta({
435
- description: 'Human-readable workflow name.'
540
+ name: workflowNameSchema,
541
+ run_name: z.string().min(1).optional().meta({
542
+ description: 'Dynamic name for each workflow run. Supports workflow expressions.'
436
543
  }),
437
544
  runner: stringOrStringArraySchema.optional().meta({
438
545
  description: 'Default runner label or ordered fallback labels for run jobs. See [runners and execution environments](/understand/runners-and-execution-environments).'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/document/workflow-document.ts"],"sourcesContent":["import {z} from 'zod';\nimport {agentThinkingSchema, harnessSchema} from './step-enums.js';\n\nconst stringOrStringArraySchema = z.union([z.string().min(1), z.array(z.string().min(1)).min(1)]);\nconst nonEmptyRecordSchema = <ValueSchema extends z.ZodType>(valueSchema: ValueSchema) =>\n z\n .record(z.string().min(1), valueSchema)\n .refine((value) => Object.keys(value).length > 0, {message: 'Expected at least one entry'});\n\n// Runner shell steps execute on Unix shells, so workflow env names follow the\n// portable POSIX-style variable shape.\nconst envNameSchema = z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/);\nconst envStringValueSchema = z.string().refine((value) => !value.includes('\\u0000'), {\n message: 'Env string values cannot contain null bytes',\n});\nexport const WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES = 128;\nexport const WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES = 32 * 1024;\nexport const workflowDocumentStepOutputTypes = ['string', 'number', 'boolean', 'json'] as const;\nexport const WORKFLOW_DOCUMENT_STEP_OUTPUTS_MAX_ENTRIES = WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES;\nexport const WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_SERIALIZED_BYTES =\n WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES;\nexport const WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH = 64;\n\nconst utf8Encoder = new TextEncoder();\n\nexport const workflowDocumentEnvSchema = z\n .record(envNameSchema, z.union([envStringValueSchema, z.number(), z.boolean()]))\n .superRefine((env, ctx) => {\n const entries = Object.keys(env).length;\n if (entries > WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES) {\n ctx.addIssue({\n code: 'custom',\n message: `Env cannot define more than ${WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES} entries.`,\n });\n }\n\n const serializedBytes = utf8Encoder.encode(JSON.stringify(env)).byteLength;\n if (serializedBytes > WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES) {\n ctx.addIssue({\n code: 'custom',\n message: `Env cannot serialize to more than ${WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES} bytes.`,\n });\n }\n })\n .meta({\n description: `Environment variables as string, number, or boolean values. Each map allows up to ${WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES} entries and ${WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES} serialized bytes.`,\n });\n\nconst workflowDocumentStepOutputKeyPattern = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nconst workflowDocumentStepOutputTypeSchema = z.enum(workflowDocumentStepOutputTypes).meta({\n description: 'Declared output type. Use `json` when the output has a JSON Schema.',\n});\n\nconst workflowDocumentStepOutputDeclarationSchema = z\n .union([\n workflowDocumentStepOutputTypeSchema.transform((type) => ({type})),\n z.strictObject({\n type: workflowDocumentStepOutputTypeSchema,\n schema: z\n .unknown()\n .optional()\n .meta({\n description:\n 'JSON Schema for a `json` output. It allows up to ' +\n WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_SERIALIZED_BYTES +\n ' serialized bytes and ' +\n WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH +\n ' nesting levels.',\n }),\n }),\n ])\n .superRefine((declaration, ctx) => {\n const schema = 'schema' in declaration ? declaration.schema : undefined;\n if (declaration.type !== 'json' && schema !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['schema'],\n message: '`schema` is only supported for json outputs.',\n });\n return;\n }\n\n if (schema === undefined) return;\n\n if (!isJsonSchemaDocument(schema)) {\n ctx.addIssue({\n code: 'custom',\n path: ['schema'],\n message: 'Schema must be a valid JSON Schema document.',\n });\n return;\n }\n\n const serializedBytes = utf8Encoder.encode(JSON.stringify(schema)).byteLength;\n if (serializedBytes > WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_SERIALIZED_BYTES) {\n ctx.addIssue({\n code: 'custom',\n path: ['schema'],\n message: `Output JSON Schema cannot serialize to more than ${WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_SERIALIZED_BYTES} bytes.`,\n });\n }\n\n const depth = maxJsonDepth(schema);\n if (depth > WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH) {\n ctx.addIssue({\n code: 'custom',\n path: ['schema'],\n message: `Output JSON Schema cannot be nested deeper than ${WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH} levels.`,\n });\n }\n });\n\nexport const workflowDocumentStepOutputsSchema = z\n .record(z.string(), workflowDocumentStepOutputDeclarationSchema)\n .superRefine((outputs, ctx) => {\n const entries = Object.keys(outputs).length;\n if (entries > WORKFLOW_DOCUMENT_STEP_OUTPUTS_MAX_ENTRIES) {\n ctx.addIssue({\n code: 'custom',\n message: `Step outputs cannot define more than ${WORKFLOW_DOCUMENT_STEP_OUTPUTS_MAX_ENTRIES} entries.`,\n });\n }\n\n for (const key of Object.keys(outputs)) {\n if (workflowDocumentStepOutputKeyPattern.test(key)) continue;\n ctx.addIssue({\n code: 'custom',\n path: [key],\n message: 'Output keys must be CEL identifiers.',\n });\n }\n })\n .meta({\n description: `Named step outputs. Keys must be CEL identifiers and each step allows up to ${WORKFLOW_DOCUMENT_STEP_OUTPUTS_MAX_ENTRIES} declarations.`,\n });\n\nconst workflowDocumentTriggerBaseSchema = {\n source: z.string().min(1).meta({\n description:\n 'Integration connection slug or built-in trigger source. See [Trigger sources](/reference/trigger-sources).',\n }),\n with: z.record(z.string(), z.unknown()).optional().meta({\n description:\n 'Provider-specific values used to match or configure the trigger. See [expressions](/reference/expressions#context-available).',\n }),\n filter: z.string().min(1).optional().meta({\n description:\n 'CEL condition that filters matching events. It is not supported for `manual` or `cron` triggers. See [trigger filters](/reference/expressions#trigger-filters).',\n }),\n config: z.record(z.string(), z.unknown()).optional().meta({\n description:\n 'Source-specific configuration. It is supported only for top-level triggers with a known built-in source. See [cron triggers](/reference/trigger-sources#cron).',\n }),\n} satisfies z.ZodRawShape;\n\nexport const triggerSourceConfigSchemas = {\n cron: z.strictObject({\n schedule: z.string().min(1).optional().meta({\n description: 'Cron expression that schedules the workflow.',\n }),\n timezone: z.string().min(1).optional().meta({\n description: 'IANA time zone used to evaluate `schedule`.',\n }),\n }),\n} satisfies Record<string, z.ZodType>;\nconst triggerSourceConfigSchemaRegistry: Readonly<Record<string, z.ZodType>> =\n triggerSourceConfigSchemas;\n\nexport const workflowDocumentTriggerSchema = z\n .strictObject({\n ...workflowDocumentTriggerBaseSchema,\n event: z.string().min(1).meta({\n description: 'Provider event name that starts the workflow.',\n }),\n })\n .superRefine((trigger, ctx) => {\n if (trigger.config === undefined) return;\n\n const configSchema = triggerSourceConfigSchemaRegistry[trigger.source];\n if (configSchema === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['config'],\n message: `\\`config\\` is not supported for source \\`${trigger.source}\\`.`,\n });\n return;\n }\n\n const configResult = configSchema.safeParse(trigger.config);\n if (configResult.success) return;\n\n for (const configIssue of configResult.error.issues) {\n ctx.addIssue({\n ...configIssue,\n path: ['config', ...configIssue.path],\n });\n }\n });\n\nconst workflowDocumentListeningSchema = z\n .strictObject({\n on: z.array(workflowDocumentTriggerSchema).min(1).meta({\n description: 'Events that start listening. Listening triggers cannot use `config`.',\n }),\n until: z.array(workflowDocumentTriggerSchema).min(1).optional().meta({\n description:\n 'Events that resolve listening. Listening jobs need this, `timeout`, or `max_executions`; these triggers cannot use `config`.',\n }),\n timeout: z.string().min(1).optional().meta({\n description:\n 'Maximum duration to listen before resolving. A listening job needs this, `until`, or `max_executions`.',\n }),\n max_executions: z.number().int().positive().optional().meta({\n description:\n 'Maximum number of matching events before resolving. A listening job needs this, `until`, or `timeout`.',\n }),\n batch: z\n .strictObject({\n debounce: z.string().min(1).optional().meta({\n description: 'Quiet period to wait for more matching events before processing a batch.',\n }),\n max_size: z.number().int().positive().optional().meta({\n description: 'Maximum number of matching events in one batch.',\n }),\n max_wait: z.string().min(1).optional().meta({\n description: 'Maximum time to wait before processing a partial batch.',\n }),\n })\n .refine(\n (value) =>\n value.debounce !== undefined ||\n value.max_size !== undefined ||\n value.max_wait !== undefined,\n {message: 'Expected debounce, max_size, or max_wait'},\n )\n .optional()\n .meta({\n description:\n 'Optional batching policy. Set at least one of `debounce`, `max_size`, or `max_wait`.',\n }),\n on_resolve: z.enum(['finish', 'cancel']).optional().meta({\n description: 'How the job resolves when its listening condition is met.',\n }),\n })\n .superRefine((listening, ctx) => {\n for (const field of ['on', 'until'] as const) {\n for (const [index, trigger] of (listening[field] ?? []).entries()) {\n if (trigger.config !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: [field, index, 'config'],\n message: '`config` is only supported on top-level triggers.',\n });\n }\n }\n }\n });\n\nconst workflowDocumentStepGateSchema = z\n .strictObject({\n success: z.string().min(1).optional().meta({\n description:\n 'CEL expression that must evaluate to true for the step to succeed. See [gate outcomes](/understand/feedback-loops#gate-outcomes).',\n }),\n on_failure: z\n .strictObject({\n restart_from: z.string().min(1).meta({\n description:\n 'Key of an earlier step in the same job to restart from after a failed gate.',\n }),\n feedback: z.string().min(1).optional().meta({\n description: 'Feedback supplied when the gate fails before restarting.',\n }),\n })\n .optional()\n .meta({\n description:\n 'Restart behavior when the success gate fails. See [feedback loops](/understand/feedback-loops).',\n }),\n })\n .refine((value) => value.success !== undefined || value.on_failure !== undefined, {\n message: 'Expected success or on_failure',\n });\n\nexport const workflowDocumentCheckoutSchema = z.strictObject({\n permissions: z\n .strictObject({\n contents: z.enum(['read', 'write']).optional().meta({\n description: 'Repository contents permission granted to checkout.',\n }),\n })\n .optional()\n .meta({\n description: 'Repository permissions used during checkout.',\n }),\n 'persist-credentials': z.boolean().optional().meta({\n description: 'Whether checkout credentials remain available to later run steps.',\n }),\n});\n\nexport const workflowDocumentStepIntegrationSelectionSchema = z.array(z.string().min(1)).min(1);\n\nexport const workflowDocumentStepIntegrationSchema = z.strictObject({\n connection: z.string().min(1).optional().meta({\n description: 'Integration connection slug to use for these tools.',\n }),\n include: workflowDocumentStepIntegrationSelectionSchema.meta({\n description: 'Tool selectors to make available to the agent.',\n }),\n exclude: workflowDocumentStepIntegrationSelectionSchema.optional().meta({\n description: 'Tool selectors to remove from the included tools.',\n }),\n allow_write: z.boolean().optional().meta({\n description: 'Allows write-capable integration tools. Omit or set false for read-only access.',\n }),\n});\n\nexport const workflowDocumentAgentStepFields = [\n 'model',\n 'prompt',\n 'harness',\n 'thinking',\n 'provider',\n 'tools',\n 'integrations',\n] as const;\n\n// A step is a run step (`run`) or an inline agent step (`prompt`), never\n// both. They share one strict object so an unknown key is still rejected; the\n// `superRefine` discriminates by which payload keys are present and emits one\n// targeted issue per failure mode (a plain union would surface every branch's\n// errors at once). The `agent` keyword is declared only so the reserved-keyword\n// case produces a clear message instead of a generic \"unrecognized key\".\nexport const workflowDocumentStepSchema = z\n .strictObject({\n key: z\n .string()\n .min(1)\n .optional()\n .meta({description: 'Stable step key for dependencies and outputs.'}),\n if: z\n .string()\n .min(1)\n .optional()\n .meta({\n description:\n 'CEL condition wrapped in exactly one $' +\n '{{ }} interpolation. See [conditionals](/reference/expressions#conditionals-if).',\n }),\n name: z.string().min(1).optional().meta({description: 'Human-readable step name.'}),\n run: z.string().min(1).optional().meta({\n description: 'Shell command for a run step. Do not combine it with agent-only fields.',\n }),\n model: z.string().min(1).optional().meta({\n description:\n 'Model ID for an agent step. It requires `prompt` and is not valid on a run step.',\n }),\n prompt: z.string().min(1).optional().meta({\n description: 'Prompt for an agent step. It is required when any agent-only field is set.',\n }),\n harness: harnessSchema.optional().meta({\n description:\n 'Agent harness. When omitted, Shipfox uses the workspace default harness, or `pi` when none is configured.',\n }),\n thinking: agentThinkingSchema.optional().meta({\n description:\n 'Reasoning effort for an agent step. Supported values depend on the resolved harness. When omitted, Shipfox uses the provider default, or `xhigh` when none is configured.',\n }),\n provider: z.string().min(1).optional().meta({\n description:\n 'Model provider ID for an agent step. It requires `prompt` and is not valid on a run step.',\n }),\n tools: z.array(z.string().min(1)).min(1).optional().meta({\n description:\n 'Built-in tool IDs for an agent step. It requires `prompt` and is not valid on a run step.',\n }),\n integrations: z.array(workflowDocumentStepIntegrationSchema).min(1).optional().meta({\n description:\n 'Integration tools available to an agent step. It requires `prompt` and is not valid on a run step. See [integration tools](/how-to/author-workflows/use-integration-tools).',\n }),\n agent: z.unknown().optional().meta({\n description: 'Reserved keyword. It is rejected; use `prompt` to define an agent step.',\n }),\n gate: workflowDocumentStepGateSchema.optional().meta({\n description: 'Success gate and optional restart behavior after the step runs.',\n }),\n env: workflowDocumentEnvSchema.optional().meta({\n description: 'Environment variables for a run step. They are not valid on an agent step.',\n }),\n outputs: workflowDocumentStepOutputsSchema.optional().meta({\n description: 'Named output declarations produced by this step.',\n }),\n })\n .superRefine((step, ctx) => {\n if (step.agent !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['agent'],\n message: 'The \"agent\" keyword is reserved for a future step kind and is not supported yet.',\n });\n return;\n }\n\n if (step.run !== undefined) {\n for (const key of workflowDocumentAgentStepFields) {\n if (step[key] !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: [key],\n message: `\"${key}\" is not valid on a run step.`,\n });\n }\n }\n return;\n }\n\n const isAgent = workflowDocumentAgentStepFields.some((field) => step[field] !== undefined);\n\n if (!isAgent) {\n ctx.addIssue({\n code: 'custom',\n message: 'A step must define either \"run\" or an agent \"prompt\".',\n });\n return;\n }\n\n if (step.env !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['env'],\n message: '\"env\" is supported only on run steps.',\n });\n }\n if (step.prompt === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['prompt'],\n message: 'An agent step requires \"prompt\".',\n });\n }\n });\n\nexport const workflowDocumentJobSchema = z.strictObject({\n needs: stringOrStringArraySchema.optional().meta({\n description: 'Job key or keys that must complete before this job starts.',\n }),\n if: z\n .string()\n .min(1)\n .optional()\n .meta({\n description:\n 'CEL condition wrapped in exactly one $' +\n '{{ }} interpolation. See [conditionals](/reference/expressions#conditionals-if).',\n }),\n runner: stringOrStringArraySchema.optional().meta({\n description:\n 'Runner label or ordered fallback labels for this job. See [runners and execution environments](/understand/runners-and-execution-environments).',\n }),\n success: z.string().min(1).optional().meta({\n description:\n 'CEL expression that determines whether the job succeeds. See [job success](/reference/expressions#job-success-success).',\n }),\n outputs: nonEmptyRecordSchema(z.string().min(1)).optional().meta({\n description: 'Named job outputs mapped from step values.',\n }),\n execution_timeout: z.string().min(1).optional().meta({\n description: 'Maximum duration for one job execution.',\n }),\n checkout: workflowDocumentCheckoutSchema.optional().meta({\n description: 'Checkout settings for repository content and credentials.',\n }),\n listening: workflowDocumentListeningSchema.optional().meta({\n description:\n 'Event-listening configuration for this job. See [listening jobs](/understand/listening-jobs).',\n }),\n name: z.string().min(1).optional().meta({description: 'Human-readable job name.'}),\n env: workflowDocumentEnvSchema.optional().meta({\n description:\n 'Environment variables for run steps in this job. They do not apply to agent steps. See [secrets and variables](/reference/secrets-variables).',\n }),\n steps: z.array(workflowDocumentStepSchema).min(1).meta({\n description: 'Ordered run or agent steps. Each job needs at least one step.',\n }),\n});\n\nexport const workflowDocumentSchema = z.strictObject({\n name: z.string().min(1).meta({description: 'Human-readable workflow name.'}),\n runner: stringOrStringArraySchema.optional().meta({\n description:\n 'Default runner label or ordered fallback labels for run jobs. See [runners and execution environments](/understand/runners-and-execution-environments).',\n }),\n env: workflowDocumentEnvSchema.optional().meta({\n description:\n 'Workflow-level environment variables for run steps. They do not apply to agent steps. See [secrets and variables](/reference/secrets-variables).',\n }),\n triggers: nonEmptyRecordSchema(workflowDocumentTriggerSchema).optional().meta({\n description:\n 'Named events that start workflow runs. A workflow can have at most one `manual` trigger.',\n }),\n jobs: nonEmptyRecordSchema(workflowDocumentJobSchema).meta({\n description: 'Named jobs that make up the workflow. At least one job is required.',\n }),\n});\n\nexport type WorkflowDocument = z.infer<typeof workflowDocumentSchema>;\nexport type WorkflowDocumentJobCheckout = z.infer<typeof workflowDocumentCheckoutSchema>;\nexport type WorkflowDocumentEnv = z.infer<typeof workflowDocumentEnvSchema>;\nexport type WorkflowDocumentJob = z.infer<typeof workflowDocumentJobSchema>;\nexport type WorkflowDocumentJobListening = z.infer<typeof workflowDocumentListeningSchema>;\nexport type WorkflowDocumentRunStepGate = z.infer<typeof workflowDocumentStepGateSchema>;\nexport type WorkflowDocumentStepIntegration = z.infer<typeof workflowDocumentStepIntegrationSchema>;\nexport type WorkflowDocumentStepOutputType = (typeof workflowDocumentStepOutputTypes)[number];\nexport type WorkflowDocumentStepOutputs = z.infer<typeof workflowDocumentStepOutputsSchema>;\nexport type WorkflowDocumentStep = z.infer<typeof workflowDocumentStepSchema>;\nexport type WorkflowDocumentTrigger = z.infer<typeof workflowDocumentTriggerSchema>;\n\nfunction maxJsonDepth(value: unknown): number {\n if (value === null || typeof value !== 'object') return 0;\n if (Array.isArray(value)) {\n if (value.length === 0) return 1;\n return 1 + Math.max(...value.map(maxJsonDepth));\n }\n\n const entries = Object.values(value);\n if (entries.length === 0) return 1;\n return 1 + Math.max(...entries.map(maxJsonDepth));\n}\n\nfunction isJsonSchemaDocument(value: unknown): boolean {\n return (\n typeof value === 'boolean' ||\n (typeof value === 'object' && value !== null && !Array.isArray(value))\n );\n}\n"],"names":["z","agentThinkingSchema","harnessSchema","stringOrStringArraySchema","union","string","min","array","nonEmptyRecordSchema","valueSchema","record","refine","value","Object","keys","length","message","envNameSchema","regex","envStringValueSchema","includes","WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES","WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES","workflowDocumentStepOutputTypes","WORKFLOW_DOCUMENT_STEP_OUTPUTS_MAX_ENTRIES","WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_SERIALIZED_BYTES","WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH","utf8Encoder","TextEncoder","workflowDocumentEnvSchema","number","boolean","superRefine","env","ctx","entries","addIssue","code","serializedBytes","encode","JSON","stringify","byteLength","meta","description","workflowDocumentStepOutputKeyPattern","workflowDocumentStepOutputTypeSchema","enum","workflowDocumentStepOutputDeclarationSchema","transform","type","strictObject","schema","unknown","optional","declaration","undefined","path","isJsonSchemaDocument","depth","maxJsonDepth","workflowDocumentStepOutputsSchema","outputs","key","test","workflowDocumentTriggerBaseSchema","source","with","filter","config","triggerSourceConfigSchemas","cron","schedule","timezone","triggerSourceConfigSchemaRegistry","workflowDocumentTriggerSchema","event","trigger","configSchema","configResult","safeParse","success","configIssue","error","issues","workflowDocumentListeningSchema","on","until","timeout","max_executions","int","positive","batch","debounce","max_size","max_wait","on_resolve","listening","field","index","workflowDocumentStepGateSchema","on_failure","restart_from","feedback","workflowDocumentCheckoutSchema","permissions","contents","workflowDocumentStepIntegrationSelectionSchema","workflowDocumentStepIntegrationSchema","connection","include","exclude","allow_write","workflowDocumentAgentStepFields","workflowDocumentStepSchema","if","name","run","model","prompt","harness","thinking","provider","tools","integrations","agent","gate","step","isAgent","some","workflowDocumentJobSchema","needs","runner","execution_timeout","checkout","steps","workflowDocumentSchema","triggers","jobs","Array","isArray","Math","max","map","values"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/document/workflow-document.ts"],"sourcesContent":["import {z} from 'zod';\nimport {checkoutTargetValidationIssues} from './checkout-target-validation.js';\nimport {agentThinkingSchema, harnessSchema} from './step-enums.js';\n\nconst stringOrStringArraySchema = z.union([z.string().min(1), z.array(z.string().min(1)).min(1)]);\nconst nonEmptyRecordSchema = <ValueSchema extends z.ZodType>(valueSchema: ValueSchema) =>\n z\n .record(z.string().min(1), valueSchema)\n .refine((value) => Object.keys(value).length > 0, {message: 'Expected at least one entry'});\n\nexport const WORKFLOW_LITERAL_NAME_PATTERN = /^(?:[^$]|\\$\\$\\{\\{|\\$(?!\\{\\{))*$/;\n// The inverse of a literal name: a literal prefix followed by an unescaped\n// `${{`. An enum field that also accepts a template matches one or the other.\nexport const WORKFLOW_INTERPOLATED_VALUE_PATTERN = /^(?:[^$]|\\$\\$\\{\\{|\\$(?!\\{\\{))*\\$\\{\\{/;\n\n// Reasoning effort is an enum so editors can complete it, and a template so a\n// workflow can choose the effort from run context. The resolved value is\n// checked against the harness levels when the step is dispatched.\nexport const agentThinkingFieldSchema = z\n .union([\n agentThinkingSchema,\n z.string().regex(WORKFLOW_INTERPOLATED_VALUE_PATTERN, {\n message:\n 'Agent thinking must be a supported level or a $' +\n '{{ }} interpolation that resolves to one.',\n }),\n ])\n .meta({\n description:\n 'Reasoning effort for an agent step. Supported values depend on the resolved harness. Accepts a $' +\n '{{ }} interpolation. When omitted, Shipfox uses the provider default, or `xhigh` when none is configured.',\n });\n\nconst workflowNameSchema = literalNameSchema(\n 'Workflow name must be literal. Move runtime interpolation to run_name.',\n).meta({description: 'Static literal human-readable workflow name.'});\nconst jobNameSchema = literalNameSchema(\n 'Job name must be literal. Move runtime interpolation to execution_name.',\n).meta({description: 'Static literal human-readable job name.'});\n\nfunction literalNameSchema(message: string) {\n return z.string().min(1).regex(WORKFLOW_LITERAL_NAME_PATTERN, {message});\n}\n\n// Runner shell steps execute on Unix shells, so workflow env names follow the\n// portable POSIX-style variable shape.\nconst envNameSchema = z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/);\nconst envStringValueSchema = z.string().refine((value) => !value.includes('\\u0000'), {\n message: 'Env string values cannot contain null bytes',\n});\nexport const WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES = 128;\nexport const WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES = 32 * 1024;\nexport const workflowDocumentStepOutputTypes = ['string', 'number', 'boolean', 'json'] as const;\nexport const WORKFLOW_DOCUMENT_STEP_OUTPUTS_MAX_ENTRIES = WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES;\nexport const WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_SERIALIZED_BYTES =\n WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES;\nexport const WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH = 64;\n\nconst utf8Encoder = new TextEncoder();\n\nexport const workflowDocumentEnvSchema = z\n .record(envNameSchema, z.union([envStringValueSchema, z.number(), z.boolean()]))\n .superRefine((env, ctx) => {\n const entries = Object.keys(env).length;\n if (entries > WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES) {\n ctx.addIssue({\n code: 'custom',\n message: `Env cannot define more than ${WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES} entries.`,\n });\n }\n\n const serializedBytes = utf8Encoder.encode(JSON.stringify(env)).byteLength;\n if (serializedBytes > WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES) {\n ctx.addIssue({\n code: 'custom',\n message: `Env cannot serialize to more than ${WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES} bytes.`,\n });\n }\n })\n .meta({\n description: `Environment variables as string, number, or boolean values. Each map allows up to ${WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES} entries and ${WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES} serialized bytes.`,\n });\n\nconst workflowDocumentStepOutputKeyPattern = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nconst workflowDocumentStepOutputTypeSchema = z.enum(workflowDocumentStepOutputTypes).meta({\n description: 'Declared output type. Use `json` when the output has a JSON Schema.',\n});\n\nconst workflowDocumentStepOutputDeclarationSchema = z\n .union([\n workflowDocumentStepOutputTypeSchema.transform((type) => ({type})),\n z.strictObject({\n type: workflowDocumentStepOutputTypeSchema,\n schema: z\n .unknown()\n .optional()\n .meta({\n description:\n 'JSON Schema for a `json` output. It allows up to ' +\n WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_SERIALIZED_BYTES +\n ' serialized bytes and ' +\n WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH +\n ' nesting levels.',\n }),\n }),\n ])\n .superRefine((declaration, ctx) => {\n const schema = 'schema' in declaration ? declaration.schema : undefined;\n if (declaration.type !== 'json' && schema !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['schema'],\n message: '`schema` is only supported for json outputs.',\n });\n return;\n }\n\n if (schema === undefined) return;\n\n if (!isJsonSchemaDocument(schema)) {\n ctx.addIssue({\n code: 'custom',\n path: ['schema'],\n message: 'Schema must be a valid JSON Schema document.',\n });\n return;\n }\n\n const serializedBytes = utf8Encoder.encode(JSON.stringify(schema)).byteLength;\n if (serializedBytes > WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_SERIALIZED_BYTES) {\n ctx.addIssue({\n code: 'custom',\n path: ['schema'],\n message: `Output JSON Schema cannot serialize to more than ${WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_SERIALIZED_BYTES} bytes.`,\n });\n }\n\n const depth = maxJsonDepth(schema);\n if (depth > WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH) {\n ctx.addIssue({\n code: 'custom',\n path: ['schema'],\n message: `Output JSON Schema cannot be nested deeper than ${WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH} levels.`,\n });\n }\n });\n\nexport const workflowDocumentStepOutputsSchema = z\n .record(z.string(), workflowDocumentStepOutputDeclarationSchema)\n .superRefine((outputs, ctx) => {\n const entries = Object.keys(outputs).length;\n if (entries > WORKFLOW_DOCUMENT_STEP_OUTPUTS_MAX_ENTRIES) {\n ctx.addIssue({\n code: 'custom',\n message: `Step outputs cannot define more than ${WORKFLOW_DOCUMENT_STEP_OUTPUTS_MAX_ENTRIES} entries.`,\n });\n }\n\n for (const key of Object.keys(outputs)) {\n if (workflowDocumentStepOutputKeyPattern.test(key)) continue;\n ctx.addIssue({\n code: 'custom',\n path: [key],\n message: 'Output keys must be CEL identifiers.',\n });\n }\n })\n .meta({\n description: `Named step outputs. Keys must be CEL identifiers and each step allows up to ${WORKFLOW_DOCUMENT_STEP_OUTPUTS_MAX_ENTRIES} declarations.`,\n });\n\nconst workflowDocumentTriggerBaseSchema = {\n source: z.string().min(1).meta({\n description:\n 'Integration connection slug or built-in trigger source. See [Trigger sources](/reference/trigger-sources).',\n }),\n with: z.record(z.string(), z.unknown()).optional().meta({\n description:\n 'Provider-specific values used to match or configure the trigger. See [Trigger sources](/reference/trigger-sources).',\n }),\n filter: z.string().min(1).optional().meta({\n description:\n 'CEL condition that filters matching events. It is not supported for `manual` or `cron` triggers. See [Expressions](/reference/expressions) and [Contexts](/reference/contexts#context-availability).',\n }),\n config: z.record(z.string(), z.unknown()).optional().meta({\n description:\n 'Source-specific configuration. It is supported only for top-level triggers with a known built-in source. See [cron triggers](/reference/trigger-sources#cron).',\n }),\n} satisfies z.ZodRawShape;\n\nexport const triggerSourceConfigSchemas = {\n cron: z.strictObject({\n schedule: z.string().min(1).optional().meta({\n description: 'Cron expression that schedules the workflow.',\n }),\n timezone: z.string().min(1).optional().meta({\n description: 'IANA time zone used to evaluate `schedule`.',\n }),\n }),\n} satisfies Record<string, z.ZodType>;\nconst triggerSourceConfigSchemaRegistry: Readonly<Record<string, z.ZodType>> =\n triggerSourceConfigSchemas;\n\nexport const workflowDocumentTriggerSchema = z\n .strictObject({\n ...workflowDocumentTriggerBaseSchema,\n event: z.string().min(1).meta({\n description: 'Provider event name that starts the workflow.',\n }),\n })\n .superRefine((trigger, ctx) => {\n if (trigger.config === undefined) return;\n\n const configSchema = triggerSourceConfigSchemaRegistry[trigger.source];\n if (configSchema === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['config'],\n message: `\\`config\\` is not supported for source \\`${trigger.source}\\`.`,\n });\n return;\n }\n\n const configResult = configSchema.safeParse(trigger.config);\n if (configResult.success) return;\n\n for (const configIssue of configResult.error.issues) {\n ctx.addIssue({\n ...configIssue,\n path: ['config', ...configIssue.path],\n });\n }\n });\n\nconst workflowDocumentListeningSchema = z\n .strictObject({\n on: z.array(workflowDocumentTriggerSchema).min(1).meta({\n description: 'Events that start listening. Listening triggers cannot use `config`.',\n }),\n until: z.array(workflowDocumentTriggerSchema).min(1).optional().meta({\n description:\n 'Events that resolve listening. Listening jobs need this, `timeout`, or `max_executions`; these triggers cannot use `config`.',\n }),\n timeout: z.string().min(1).optional().meta({\n description:\n 'Maximum duration to listen before resolving. A listening job needs this, `until`, or `max_executions`.',\n }),\n max_executions: z.number().int().positive().optional().meta({\n description:\n 'Maximum number of matching events before resolving. A listening job needs this, `until`, or `timeout`.',\n }),\n batch: z\n .strictObject({\n debounce: z.string().min(1).optional().meta({\n description: 'Quiet period to wait for more matching events before processing a batch.',\n }),\n max_size: z.number().int().positive().optional().meta({\n description: 'Maximum number of matching events in one batch.',\n }),\n max_wait: z.string().min(1).optional().meta({\n description: 'Maximum time to wait before processing a partial batch.',\n }),\n })\n .refine(\n (value) =>\n value.debounce !== undefined ||\n value.max_size !== undefined ||\n value.max_wait !== undefined,\n {message: 'Expected debounce, max_size, or max_wait'},\n )\n .optional()\n .meta({\n description:\n 'Optional batching policy. Set at least one of `debounce`, `max_size`, or `max_wait`.',\n }),\n on_resolve: z.enum(['finish', 'cancel']).optional().meta({\n description: 'How the job resolves when its listening condition is met.',\n }),\n })\n .superRefine((listening, ctx) => {\n for (const field of ['on', 'until'] as const) {\n for (const [index, trigger] of (listening[field] ?? []).entries()) {\n if (trigger.config !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: [field, index, 'config'],\n message: '`config` is only supported on top-level triggers.',\n });\n }\n }\n }\n });\n\nconst workflowDocumentStepGateSchema = z\n .strictObject({\n success: z.string().min(1).optional().meta({\n description:\n 'CEL expression that must evaluate to true for the step to succeed. See [gate outcomes](/understand/feedback-loops#gate-outcomes).',\n }),\n on_failure: z\n .strictObject({\n restart_from: z.string().min(1).meta({\n description:\n 'Key of an earlier step in the same job to restart from after a failed gate.',\n }),\n feedback: z.string().min(1).optional().meta({\n description: 'Feedback supplied when the gate fails before restarting.',\n }),\n })\n .optional()\n .meta({\n description:\n 'Restart behavior when the success gate fails. See [feedback loops](/understand/feedback-loops).',\n }),\n })\n .refine((value) => value.success !== undefined || value.on_failure !== undefined, {\n message: 'Expected success or on_failure',\n });\n\nconst workflowDocumentCheckoutPermissionsSchema = z\n .strictObject({\n contents: z.enum(['read', 'write']).optional().meta({\n description: 'Repository contents permission granted to checkout.',\n }),\n })\n .optional()\n .meta({\n description: 'Repository permissions used during checkout.',\n });\n\nconst workflowDocumentPersistCredentialsSchema = z.boolean().optional().meta({\n description: 'Whether checkout credentials remain available to later run steps.',\n});\n\nexport const workflowDocumentCheckoutSchema = z\n .strictObject({\n project: z.string().min(1).optional().meta({\n description: 'Shipfox project id to check out. Exclusive with connection and repository.',\n }),\n connection: z.string().min(1).optional().meta({\n description: 'Integration connection slug to use for checkout.',\n }),\n repository: z.string().min(1).optional().meta({\n description: 'Repository to check out, as owner/name or a bare name.',\n }),\n ref: z.string().min(1).optional().meta({\n description: 'Repository ref to check out.',\n }),\n 'fetch-depth': z.number().int().min(0).optional().meta({\n description: 'Number of commits to fetch. Use 0 for full history.',\n }),\n path: z.string().min(1).optional().meta({\n description: 'Relative path under the job workspace where this repository is checked out.',\n }),\n permissions: workflowDocumentCheckoutPermissionsSchema,\n 'persist-credentials': workflowDocumentPersistCredentialsSchema,\n force: z.boolean().optional().meta({\n description: 'Whether checkout may replace an occupied destination.',\n }),\n })\n .superRefine((checkout, ctx) => {\n for (const validationIssue of checkoutTargetValidationIssues(checkout)) {\n const message =\n validationIssue.kind === 'project-with-connection'\n ? '\"connection\" cannot be combined with \"project\".'\n : validationIssue.kind === 'project-with-repository'\n ? '\"repository\" cannot be combined with \"project\".'\n : '\"connection\" requires \"repository\".';\n ctx.addIssue({\n code: 'custom',\n path: [validationIssue.path],\n message,\n });\n }\n });\n\nconst workflowDocumentJobCheckoutSchema = z\n .union([\n z.strictObject({\n permissions: workflowDocumentCheckoutPermissionsSchema,\n 'persist-credentials': workflowDocumentPersistCredentialsSchema,\n }),\n z.literal(false),\n ])\n .meta({\n description:\n 'Checkout settings for repository content and credentials, or false to skip checkout.',\n });\n\nexport const workflowDocumentStepIntegrationSelectionSchema = z.array(z.string().min(1)).min(1);\n\nexport const workflowDocumentStepIntegrationSchema = z.strictObject({\n connection: z.string().min(1).optional().meta({\n description: 'Integration connection slug to use for these tools.',\n }),\n include: workflowDocumentStepIntegrationSelectionSchema.meta({\n description: 'Tool selectors to make available to the agent.',\n }),\n exclude: workflowDocumentStepIntegrationSelectionSchema.optional().meta({\n description: 'Tool selectors to remove from the included tools.',\n }),\n allow_write: z.boolean().optional().meta({\n description: 'Allows write-capable integration tools. Omit or set false for read-only access.',\n }),\n});\n\nexport const workflowDocumentAgentStepFields = [\n 'model',\n 'prompt',\n 'harness',\n 'thinking',\n 'provider',\n 'tools',\n 'integrations',\n] as const;\n\n// A step is a run step (`run`), an inline agent step (`prompt`), or a checkout\n// step (`checkout`), never two kinds at once. They share one strict object so\n// an unknown key is still rejected; the `superRefine` discriminates by which\n// payload keys are present and emits one targeted issue per failure mode (a\n// plain union would surface every branch's errors at once). The `agent`\n// keyword is declared only so the reserved-keyword case produces a clear\n// message instead of a generic \"unrecognized key\".\nexport const workflowDocumentStepSchema = z\n .strictObject({\n key: z\n .string()\n .min(1)\n .optional()\n .meta({description: 'Stable step key for dependencies and outputs.'}),\n if: z\n .string()\n .min(1)\n .optional()\n .meta({\n description:\n 'CEL condition wrapped in exactly one $' +\n '{{ }} interpolation. See [conditionals](/reference/expressions#syntax).',\n }),\n name: z.string().min(1).optional().meta({description: 'Human-readable step name.'}),\n working_directory: z.string().min(1).optional().meta({\n description: 'Working directory for the step, relative to the job workspace.',\n }),\n run: z.string().min(1).optional().meta({\n description: 'Shell command for a run step. Do not combine it with agent-only fields.',\n }),\n checkout: workflowDocumentCheckoutSchema.optional().meta({\n description: 'Repository checkout settings for this step.',\n }),\n model: z.string().min(1).optional().meta({\n description:\n 'Model ID for an agent step. It requires `prompt` and is not valid on a run step.',\n }),\n prompt: z.string().min(1).optional().meta({\n description: 'Prompt for an agent step. It is required when any agent-only field is set.',\n }),\n harness: harnessSchema.optional().meta({\n description:\n 'Agent harness. When omitted, Shipfox uses the workspace default harness, or `pi` when none is configured.',\n }),\n thinking: agentThinkingFieldSchema.optional(),\n provider: z.string().min(1).optional().meta({\n description:\n 'Model provider ID for an agent step. It requires `prompt` and is not valid on a run step.',\n }),\n tools: z.array(z.string().min(1)).min(1).optional().meta({\n description:\n 'Built-in tool IDs for an agent step. It requires `prompt` and is not valid on a run step.',\n }),\n integrations: z.array(workflowDocumentStepIntegrationSchema).min(1).optional().meta({\n description:\n 'Integration tools available to an agent step. It requires `prompt` and is not valid on a run step. See [integration tools](/how-to/author-workflows/use-integration-tools).',\n }),\n agent: z.unknown().optional().meta({\n description: 'Reserved keyword. It is rejected; use `prompt` to define an agent step.',\n }),\n gate: workflowDocumentStepGateSchema.optional().meta({\n description: 'Success gate and optional restart behavior after the step runs.',\n }),\n env: workflowDocumentEnvSchema.optional().meta({\n description: 'Environment variables for a run step. They are not valid on an agent step.',\n }),\n outputs: workflowDocumentStepOutputsSchema.optional().meta({\n description: 'Named output declarations produced by this step.',\n }),\n })\n .superRefine((step, ctx) => {\n if (step.agent !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['agent'],\n message: 'The \"agent\" keyword is reserved for a future step kind and is not supported yet.',\n });\n return;\n }\n\n if (step.checkout !== undefined) {\n if (step.run !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['run'],\n message: '\"run\" is not valid on a checkout step.',\n });\n }\n for (const key of workflowDocumentAgentStepFields) {\n if (step[key] !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: [key],\n message: `\"${key}\" is not valid on a checkout step.`,\n });\n }\n }\n if (step.env !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['env'],\n message: '\"env\" is not valid on a checkout step.',\n });\n }\n return;\n }\n\n if (step.run !== undefined) {\n for (const key of workflowDocumentAgentStepFields) {\n if (step[key] !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: [key],\n message: `\"${key}\" is not valid on a run step.`,\n });\n }\n }\n return;\n }\n\n const isAgent = workflowDocumentAgentStepFields.some((field) => step[field] !== undefined);\n\n if (!isAgent) {\n ctx.addIssue({\n code: 'custom',\n message: 'A step must define either \"run\", an agent \"prompt\", or \"checkout\".',\n });\n return;\n }\n\n if (step.env !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['env'],\n message: '\"env\" is supported only on run steps.',\n });\n }\n if (step.prompt === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['prompt'],\n message: 'An agent step requires \"prompt\".',\n });\n }\n });\n\nexport const workflowDocumentJobSchema = z.strictObject({\n needs: stringOrStringArraySchema.optional().meta({\n description: 'Job key or keys that must complete before this job starts.',\n }),\n if: z\n .string()\n .min(1)\n .optional()\n .meta({\n description:\n 'CEL condition wrapped in exactly one $' +\n '{{ }} interpolation. See [conditionals](/reference/expressions#syntax).',\n }),\n runner: stringOrStringArraySchema.optional().meta({\n description:\n 'Runner label or ordered fallback labels for this job. See [runners and execution environments](/understand/runners-and-execution-environments).',\n }),\n success: z.string().min(1).optional().meta({\n description:\n 'CEL expression that determines whether the job succeeds. See [Expressions](/reference/expressions#functions-and-macros) and [Contexts](/reference/contexts#context-availability).',\n }),\n outputs: nonEmptyRecordSchema(z.string().min(1)).optional().meta({\n description: 'Named job outputs mapped from step values.',\n }),\n execution_timeout: z.string().min(1).optional().meta({\n description: 'Maximum duration for one job execution.',\n }),\n checkout: workflowDocumentJobCheckoutSchema.optional(),\n listening: workflowDocumentListeningSchema.optional().meta({\n description:\n 'Event-listening configuration for this job. See [listening jobs](/understand/listening-jobs).',\n }),\n name: jobNameSchema.optional(),\n execution_name: z.string().min(1).optional().meta({\n description: 'Dynamic name for each job execution. Supports workflow expressions.',\n }),\n env: workflowDocumentEnvSchema.optional().meta({\n description:\n 'Environment variables for run steps in this job. They do not apply to agent steps. See [secrets and variables](/reference/secrets-variables).',\n }),\n steps: z.array(workflowDocumentStepSchema).min(1).meta({\n description: 'Ordered run or agent steps. Each job needs at least one step.',\n }),\n});\n\nexport const workflowDocumentSchema = z.strictObject({\n name: workflowNameSchema,\n run_name: z.string().min(1).optional().meta({\n description: 'Dynamic name for each workflow run. Supports workflow expressions.',\n }),\n runner: stringOrStringArraySchema.optional().meta({\n description:\n 'Default runner label or ordered fallback labels for run jobs. See [runners and execution environments](/understand/runners-and-execution-environments).',\n }),\n env: workflowDocumentEnvSchema.optional().meta({\n description:\n 'Workflow-level environment variables for run steps. They do not apply to agent steps. See [secrets and variables](/reference/secrets-variables).',\n }),\n triggers: nonEmptyRecordSchema(workflowDocumentTriggerSchema).optional().meta({\n description:\n 'Named events that start workflow runs. A workflow can have at most one `manual` trigger.',\n }),\n jobs: nonEmptyRecordSchema(workflowDocumentJobSchema).meta({\n description: 'Named jobs that make up the workflow. At least one job is required.',\n }),\n});\n\nexport type WorkflowDocument = z.infer<typeof workflowDocumentSchema>;\nexport type WorkflowDocumentCheckout = z.infer<typeof workflowDocumentCheckoutSchema>;\nexport type WorkflowDocumentJobCheckout = z.infer<typeof workflowDocumentJobCheckoutSchema>;\nexport type WorkflowDocumentEnv = z.infer<typeof workflowDocumentEnvSchema>;\nexport type WorkflowDocumentJob = z.infer<typeof workflowDocumentJobSchema>;\nexport type WorkflowDocumentJobListening = z.infer<typeof workflowDocumentListeningSchema>;\nexport type WorkflowDocumentRunStepGate = z.infer<typeof workflowDocumentStepGateSchema>;\nexport type WorkflowDocumentStepIntegration = z.infer<typeof workflowDocumentStepIntegrationSchema>;\nexport type WorkflowDocumentStepOutputType = (typeof workflowDocumentStepOutputTypes)[number];\nexport type WorkflowDocumentStepOutputs = z.infer<typeof workflowDocumentStepOutputsSchema>;\nexport type WorkflowDocumentStep = z.infer<typeof workflowDocumentStepSchema>;\nexport type WorkflowDocumentTrigger = z.infer<typeof workflowDocumentTriggerSchema>;\n\nfunction maxJsonDepth(value: unknown): number {\n if (value === null || typeof value !== 'object') return 0;\n if (Array.isArray(value)) {\n if (value.length === 0) return 1;\n return 1 + Math.max(...value.map(maxJsonDepth));\n }\n\n const entries = Object.values(value);\n if (entries.length === 0) return 1;\n return 1 + Math.max(...entries.map(maxJsonDepth));\n}\n\nfunction isJsonSchemaDocument(value: unknown): boolean {\n return (\n typeof value === 'boolean' ||\n (typeof value === 'object' && value !== null && !Array.isArray(value))\n );\n}\n"],"names":["z","checkoutTargetValidationIssues","agentThinkingSchema","harnessSchema","stringOrStringArraySchema","union","string","min","array","nonEmptyRecordSchema","valueSchema","record","refine","value","Object","keys","length","message","WORKFLOW_LITERAL_NAME_PATTERN","WORKFLOW_INTERPOLATED_VALUE_PATTERN","agentThinkingFieldSchema","regex","meta","description","workflowNameSchema","literalNameSchema","jobNameSchema","envNameSchema","envStringValueSchema","includes","WORKFLOW_DOCUMENT_ENV_MAX_ENTRIES","WORKFLOW_DOCUMENT_ENV_MAX_SERIALIZED_BYTES","workflowDocumentStepOutputTypes","WORKFLOW_DOCUMENT_STEP_OUTPUTS_MAX_ENTRIES","WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_SERIALIZED_BYTES","WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH","utf8Encoder","TextEncoder","workflowDocumentEnvSchema","number","boolean","superRefine","env","ctx","entries","addIssue","code","serializedBytes","encode","JSON","stringify","byteLength","workflowDocumentStepOutputKeyPattern","workflowDocumentStepOutputTypeSchema","enum","workflowDocumentStepOutputDeclarationSchema","transform","type","strictObject","schema","unknown","optional","declaration","undefined","path","isJsonSchemaDocument","depth","maxJsonDepth","workflowDocumentStepOutputsSchema","outputs","key","test","workflowDocumentTriggerBaseSchema","source","with","filter","config","triggerSourceConfigSchemas","cron","schedule","timezone","triggerSourceConfigSchemaRegistry","workflowDocumentTriggerSchema","event","trigger","configSchema","configResult","safeParse","success","configIssue","error","issues","workflowDocumentListeningSchema","on","until","timeout","max_executions","int","positive","batch","debounce","max_size","max_wait","on_resolve","listening","field","index","workflowDocumentStepGateSchema","on_failure","restart_from","feedback","workflowDocumentCheckoutPermissionsSchema","contents","workflowDocumentPersistCredentialsSchema","workflowDocumentCheckoutSchema","project","connection","repository","ref","permissions","force","checkout","validationIssue","kind","workflowDocumentJobCheckoutSchema","literal","workflowDocumentStepIntegrationSelectionSchema","workflowDocumentStepIntegrationSchema","include","exclude","allow_write","workflowDocumentAgentStepFields","workflowDocumentStepSchema","if","name","working_directory","run","model","prompt","harness","thinking","provider","tools","integrations","agent","gate","step","isAgent","some","workflowDocumentJobSchema","needs","runner","execution_timeout","execution_name","steps","workflowDocumentSchema","run_name","triggers","jobs","Array","isArray","Math","max","map","values"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-json-schema.d.ts","sourceRoot":"","sources":["../../src/document/workflow-json-schema.ts"],"names":[],"mappings":"AAIA,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,MAAM,WAAW,8BAA8B;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,uBAAuB,CAAC,EACtC,EAAuD,GACxD,GAAE,8BAAmC,GAAG,UAAU,CAwClD"}
1
+ {"version":3,"file":"workflow-json-schema.d.ts","sourceRoot":"","sources":["../../src/document/workflow-json-schema.ts"],"names":[],"mappings":"AAQA,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,MAAM,WAAW,8BAA8B;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,uBAAuB,CAAC,EACtC,EAAuD,GACxD,GAAE,8BAAmC,GAAG,UAAU,CAkDlD"}