@xyne/workflow-sdk 2.8.0 → 3.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.
Files changed (63) hide show
  1. package/dist/agents/agent-step.d.ts +6 -6
  2. package/dist/client/workflow-client.d.ts.map +1 -1
  3. package/dist/client/workflow-client.js +2 -6
  4. package/dist/client/workflow-client.js.map +1 -1
  5. package/dist/common/attachment.d.ts +25 -0
  6. package/dist/common/attachment.d.ts.map +1 -1
  7. package/dist/common/attachment.js +50 -0
  8. package/dist/common/attachment.js.map +1 -1
  9. package/dist/common/index.d.ts +3 -1
  10. package/dist/common/index.d.ts.map +1 -1
  11. package/dist/common/index.js +2 -1
  12. package/dist/common/index.js.map +1 -1
  13. package/dist/common/validate-payload.d.ts +25 -0
  14. package/dist/common/validate-payload.d.ts.map +1 -0
  15. package/dist/common/validate-payload.js +74 -0
  16. package/dist/common/validate-payload.js.map +1 -0
  17. package/dist/engine/available-context.d.ts +1 -1
  18. package/dist/engine/available-context.d.ts.map +1 -1
  19. package/dist/engine/available-context.js +36 -3
  20. package/dist/engine/available-context.js.map +1 -1
  21. package/dist/engine/config-validator.js +1 -1
  22. package/dist/engine/config-validator.js.map +1 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/router/workflow-router.d.ts.map +1 -1
  27. package/dist/router/workflow-router.js +2 -20
  28. package/dist/router/workflow-router.js.map +1 -1
  29. package/dist/runtime/workflow-runtime.d.ts +7 -5
  30. package/dist/runtime/workflow-runtime.d.ts.map +1 -1
  31. package/dist/runtime/workflow-runtime.js +12 -47
  32. package/dist/runtime/workflow-runtime.js.map +1 -1
  33. package/dist/steps/base-step.d.ts +10 -0
  34. package/dist/steps/base-step.d.ts.map +1 -1
  35. package/dist/steps/base-step.js +16 -0
  36. package/dist/steps/base-step.js.map +1 -1
  37. package/dist/steps/builtin/conditional.step.d.ts +38 -0
  38. package/dist/steps/builtin/conditional.step.d.ts.map +1 -1
  39. package/dist/steps/builtin/conditional.step.js +17 -6
  40. package/dist/steps/builtin/conditional.step.js.map +1 -1
  41. package/dist/steps/builtin/http-request.step.d.ts +2 -2
  42. package/dist/steps/builtin/parallel.step.d.ts +88 -34
  43. package/dist/steps/builtin/parallel.step.d.ts.map +1 -1
  44. package/dist/steps/builtin/parallel.step.js +23 -28
  45. package/dist/steps/builtin/parallel.step.js.map +1 -1
  46. package/dist/steps/builtin/switch.step.d.ts +37 -0
  47. package/dist/steps/builtin/switch.step.d.ts.map +1 -1
  48. package/dist/steps/builtin/switch.step.js +15 -6
  49. package/dist/steps/builtin/switch.step.js.map +1 -1
  50. package/dist/steps/builtin/wait.step.d.ts +152 -12
  51. package/dist/steps/builtin/wait.step.d.ts.map +1 -1
  52. package/dist/steps/builtin/wait.step.js +12 -0
  53. package/dist/steps/builtin/wait.step.js.map +1 -1
  54. package/dist/triggers/builtin/default-manual-trigger.d.ts +12 -86
  55. package/dist/triggers/builtin/default-manual-trigger.d.ts.map +1 -1
  56. package/dist/triggers/builtin/default-manual-trigger.js +14 -40
  57. package/dist/triggers/builtin/default-manual-trigger.js.map +1 -1
  58. package/dist/types/pause-state.d.ts +10 -0
  59. package/dist/types/pause-state.d.ts.map +1 -1
  60. package/dist/util/pause-form-schema.d.ts.map +1 -1
  61. package/dist/util/pause-form-schema.js +15 -1
  62. package/dist/util/pause-form-schema.js.map +1 -1
  63. package/package.json +1 -1
@@ -2,33 +2,19 @@ import { z } from 'zod';
2
2
  import { ManualTrigger } from '../manual-trigger.js';
3
3
  import { BuiltinTriggerType } from '../../types/known-types.js';
4
4
  import { TriggerCategory } from '../../types/categories.js';
5
- import { ATTACHMENT_ARRAY_JSON_SCHEMA } from '../../common/attachment.js';
6
5
  /**
7
- * Attachments slot — declares that the manual trigger accepts file uploads
8
- * alongside the JSON-schema-typed fields. When present, the UI renders an
9
- * upload zone above the schema form; the files land in
10
- * `context.trigger.attachments` as {@link Attachment} references.
6
+ * Default manual trigger fires via `runtime.triggerManual()`.
7
+ *
8
+ * The author-supplied `inputSchema` fully describes the payload, including any
9
+ * file inputs: a document is just a typed field carrying `format: 'attachment'`
10
+ * (single) or an array of those (multiple). There is no separate attachments
11
+ * slot — uploaded files become ordinary named fields, so they're referenced by
12
+ * name (`{{trigger.pan}}`) and validated by the schema like any other input.
11
13
  */
12
- export const ManualTriggerAttachmentsSchema = z.object({
13
- accept: z.array(z.string()).optional()
14
- .describe('Allowed MIME types or wildcards, e.g. ["application/pdf", "image/*"]'),
15
- maxSize: z.number().int().positive().optional()
16
- .describe('Max bytes per file'),
17
- maxCount: z.number().int().positive().optional()
18
- .describe('Max number of files'),
19
- required: z.boolean().default(false)
20
- .describe('Whether at least one attachment is required to trigger the workflow'),
21
- });
22
14
  export const DefaultManualTriggerConfigSchema = z.object({
23
15
  inputSchema: z.record(z.unknown()).optional()
24
- .describe('JSON Schema describing the expected manual input. The UI renders a form from this when triggering'),
25
- attachments: ManualTriggerAttachmentsSchema.optional()
26
- .describe('When set, the trigger UI shows a file upload area; uploaded files land in context.trigger.attachments'),
16
+ .describe('JSON Schema describing the expected manual input (incl. attachment fields). The UI renders a form from this when triggering'),
27
17
  });
28
- /**
29
- * Default manual trigger — fires via `runtime.triggerManual()`.
30
- * Accepts any JSON payload as input plus optional file attachments.
31
- */
32
18
  export class DefaultManualTrigger extends ManualTrigger {
33
19
  type = BuiltinTriggerType.MANUAL;
34
20
  name = 'Manual Trigger';
@@ -45,11 +31,11 @@ export class DefaultManualTrigger extends ManualTrigger {
45
31
  return jsonSchema;
46
32
  }
47
33
  /**
48
- * The author-supplied `inputSchema` describes the manual trigger payload
49
- * exactly. Whatever they send via `triggerManual(workflowId, payload)`
50
- * is merged into `context.trigger`, so the variable picker should see
51
- * those typed fields directly. Falls back to a permissive object when
52
- * the author hasn't declared a schema.
34
+ * The `inputSchema` *is* the shape of `context.trigger` — whatever the author
35
+ * declared (typed fields and attachment fields alike) is what the variable
36
+ * picker sees. Attachment fields already carry `format: 'attachment'`, so the
37
+ * picker types them as `attachment` / `attachment[]` with no special-casing
38
+ * here. Falls back to a permissive object when no schema was declared.
53
39
  */
54
40
  resolveOutputJsonSchema(config) {
55
41
  const inputSchema = config['inputSchema'];
@@ -57,21 +43,9 @@ export class DefaultManualTrigger extends ManualTrigger {
57
43
  typeof inputSchema === 'object' &&
58
44
  !Array.isArray(inputSchema) &&
59
45
  Object.keys(inputSchema).length > 0;
60
- const base = hasInputSchema
46
+ return hasInputSchema
61
47
  ? { ...inputSchema }
62
48
  : { type: 'object', additionalProperties: true };
63
- // When the trigger declares an attachments slot, uploaded files land in
64
- // `context.trigger.attachments` at runtime — so expose them in the output
65
- // schema as an attachment[] (typed so the variable picker offers
66
- // `{{trigger.attachments}}` to attachment-typed inputs).
67
- if (config['attachments']) {
68
- const props = {
69
- ...(base['properties'] ?? {}),
70
- attachments: ATTACHMENT_ARRAY_JSON_SCHEMA,
71
- };
72
- return { ...base, type: 'object', properties: props };
73
- }
74
- return base;
75
49
  }
76
50
  }
77
51
  //# sourceMappingURL=default-manual-trigger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-manual-trigger.js","sourceRoot":"","sources":["../../../src/triggers/builtin/default-manual-trigger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default-manual-trigger.js","sourceRoot":"","sources":["../../../src/triggers/builtin/default-manual-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;SAC1C,QAAQ,CAAC,6HAA6H,CAAC;CAC3I,CAAC,CAAC;AAEH,MAAM,OAAO,oBAAqB,SAAQ,aAAsD;IAC5E,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACjC,IAAI,GAAG,gBAAgB,CAAC;IACxB,WAAW,GAAG,mDAAmD,CAAC;IAClE,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC;IAClC,IAAI,GAAG,QAAQ,CAAC;IAChB,YAAY,GAAG,gCAAgC,CAAC;IAChD,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAE9C,oBAAoB,CAAC,UAAmC;QAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAwD,CAAC;QAC9F,IAAI,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QAC5E,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACM,uBAAuB,CAAC,MAA+B;QAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,cAAc,GAClB,WAAW;YACX,OAAO,WAAW,KAAK,QAAQ;YAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,WAAsC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEjE,OAAO,cAAc;YACnB,CAAC,CAAC,EAAE,GAAI,WAAuC,EAAE;YACjD,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;IACrD,CAAC;CACF"}
@@ -63,6 +63,16 @@ export type PauseFormField = {
63
63
  required?: boolean;
64
64
  description?: string;
65
65
  defaultValue?: boolean;
66
+ } | {
67
+ type: 'attachment';
68
+ name: string;
69
+ label: string;
70
+ required?: boolean;
71
+ description?: string;
72
+ multiple?: boolean;
73
+ accept?: string[];
74
+ maxSize?: number;
75
+ maxItems?: number;
66
76
  };
67
77
  export interface PauseForm {
68
78
  fields: PauseFormField[];
@@ -1 +1 @@
1
- {"version":3,"file":"pause-state.d.ts","sourceRoot":"","sources":["../../src/types/pause-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAID,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEN,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,mGAAmG;IACnG,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACnC;AAID;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,gBAAgB,GAChB,QAAQ,CAAC;AAEb,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,QAAQ,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACrC,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC5C,uCAAuC;IACvC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;CACrC"}
1
+ {"version":3,"file":"pause-state.d.ts","sourceRoot":"","sources":["../../src/types/pause-state.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pause-form-schema.d.ts","sourceRoot":"","sources":["../../src/util/pause-form-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzE,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAUzE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM9E"}
1
+ {"version":3,"file":"pause-form-schema.d.ts","sourceRoot":"","sources":["../../src/util/pause-form-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzE,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAUzE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkB9E"}
@@ -1,3 +1,4 @@
1
+ import { attachmentProperty } from '../common/attachment.js';
1
2
  /** Map a pause-form field type to the JSON Schema scalar kind of its value. */
2
3
  export function jsonTypeForFormField(type) {
3
4
  switch (type) {
@@ -18,7 +19,20 @@ export function jsonTypeForFormField(type) {
18
19
  export function pauseFormToJsonSchema(form) {
19
20
  const properties = {};
20
21
  for (const field of form.fields) {
21
- properties[field.name] = { type: jsonTypeForFormField(field.type), title: field.name };
22
+ if (field.type === 'attachment') {
23
+ // Attachments aren't scalars — emit the canonical attachment schema (carries
24
+ // `format:'attachment'`) so the submitted value (an Attachment ref / refs) is
25
+ // typed and referenceable downstream like any other attachment.
26
+ properties[field.name] = attachmentProperty({
27
+ ...(field.multiple !== undefined ? { multiple: field.multiple } : {}),
28
+ ...(field.accept !== undefined ? { accept: field.accept } : {}),
29
+ ...(field.maxSize !== undefined ? { maxSize: field.maxSize } : {}),
30
+ ...(field.maxItems !== undefined ? { maxItems: field.maxItems } : {}),
31
+ });
32
+ }
33
+ else {
34
+ properties[field.name] = { type: jsonTypeForFormField(field.type), title: field.name };
35
+ }
22
36
  }
23
37
  return { type: 'object', properties, additionalProperties: true };
24
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pause-form-schema.js","sourceRoot":"","sources":["../../src/util/pause-form-schema.ts"],"names":[],"mappings":"AAYA,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB,CAAC,IAA4B;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,oDAAoD;QACpD;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAe;IACnD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACzF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"pause-form-schema.js","sourceRoot":"","sources":["../../src/util/pause-form-schema.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB,CAAC,IAA4B;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,oDAAoD;QACpD;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAe;IACnD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,6EAA6E;YAC7E,8EAA8E;YAC9E,gEAAgE;YAChE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC;gBAC1C,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtE,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACzF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;AACpE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyne/workflow-sdk",
3
- "version": "2.8.0",
3
+ "version": "3.1.0",
4
4
  "description": "Workflow engine SDK — steps, triggers, executor, agents, and a framework-agnostic HTTP router.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {