@scenario-labs/sdk 0.3.0 → 1.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 (232) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +40 -8
  3. package/client.d.mts +36 -16
  4. package/client.d.mts.map +1 -1
  5. package/client.d.ts +36 -16
  6. package/client.d.ts.map +1 -1
  7. package/client.js +10 -0
  8. package/client.js.map +1 -1
  9. package/client.mjs +10 -0
  10. package/client.mjs.map +1 -1
  11. package/core/pagination.d.mts +153 -0
  12. package/core/pagination.d.mts.map +1 -0
  13. package/core/pagination.d.ts +153 -0
  14. package/core/pagination.d.ts.map +1 -0
  15. package/core/pagination.js +276 -0
  16. package/core/pagination.js.map +1 -0
  17. package/core/pagination.mjs +263 -0
  18. package/core/pagination.mjs.map +1 -0
  19. package/index.d.mts +5 -1
  20. package/index.d.mts.map +1 -1
  21. package/index.d.ts +5 -1
  22. package/index.d.ts.map +1 -1
  23. package/index.js +14 -1
  24. package/index.js.map +1 -1
  25. package/index.mjs +5 -1
  26. package/index.mjs.map +1 -1
  27. package/lib/asset.d.mts +55 -0
  28. package/lib/asset.d.mts.map +1 -0
  29. package/lib/asset.d.ts +55 -0
  30. package/lib/asset.d.ts.map +1 -0
  31. package/lib/asset.js +60 -0
  32. package/lib/asset.js.map +1 -0
  33. package/lib/asset.mjs +54 -0
  34. package/lib/asset.mjs.map +1 -0
  35. package/lib/job.d.mts +13 -1
  36. package/lib/job.d.mts.map +1 -1
  37. package/lib/job.d.ts +13 -1
  38. package/lib/job.d.ts.map +1 -1
  39. package/lib/job.js +18 -1
  40. package/lib/job.js.map +1 -1
  41. package/lib/job.mjs +16 -0
  42. package/lib/job.mjs.map +1 -1
  43. package/lib/models.d.mts +34 -2
  44. package/lib/models.d.mts.map +1 -1
  45. package/lib/models.d.ts +34 -2
  46. package/lib/models.d.ts.map +1 -1
  47. package/lib/models.js +39 -2
  48. package/lib/models.js.map +1 -1
  49. package/lib/models.mjs +37 -1
  50. package/lib/models.mjs.map +1 -1
  51. package/lib/scenario.d.mts +14 -0
  52. package/lib/scenario.d.mts.map +1 -1
  53. package/lib/scenario.d.ts +14 -0
  54. package/lib/scenario.d.ts.map +1 -1
  55. package/lib/scenario.js +14 -0
  56. package/lib/scenario.js.map +1 -1
  57. package/lib/scenario.mjs +14 -0
  58. package/lib/scenario.mjs.map +1 -1
  59. package/lib/upload.d.mts +143 -0
  60. package/lib/upload.d.mts.map +1 -0
  61. package/lib/upload.d.ts +143 -0
  62. package/lib/upload.d.ts.map +1 -0
  63. package/lib/upload.js +242 -0
  64. package/lib/upload.js.map +1 -0
  65. package/lib/upload.mjs +203 -0
  66. package/lib/upload.mjs.map +1 -0
  67. package/lib/workflow.d.mts +13 -2
  68. package/lib/workflow.d.mts.map +1 -1
  69. package/lib/workflow.d.ts +13 -2
  70. package/lib/workflow.d.ts.map +1 -1
  71. package/lib/workflow.js +17 -4
  72. package/lib/workflow.js.map +1 -1
  73. package/lib/workflow.mjs +17 -4
  74. package/lib/workflow.mjs.map +1 -1
  75. package/lib/workflow_import_validator.d.mts +40 -0
  76. package/lib/workflow_import_validator.d.mts.map +1 -0
  77. package/lib/workflow_import_validator.d.ts +40 -0
  78. package/lib/workflow_import_validator.d.ts.map +1 -0
  79. package/lib/workflow_import_validator.js +69 -0
  80. package/lib/workflow_import_validator.js.map +1 -0
  81. package/lib/workflow_import_validator.mjs +64 -0
  82. package/lib/workflow_import_validator.mjs.map +1 -0
  83. package/package.json +11 -1
  84. package/pagination.d.mts +2 -0
  85. package/pagination.d.mts.map +1 -0
  86. package/pagination.d.ts +2 -0
  87. package/pagination.d.ts.map +1 -0
  88. package/pagination.js +6 -0
  89. package/pagination.js.map +1 -0
  90. package/pagination.mjs +2 -0
  91. package/pagination.mjs.map +1 -0
  92. package/resources/assets/assets.d.mts +646 -669
  93. package/resources/assets/assets.d.mts.map +1 -1
  94. package/resources/assets/assets.d.ts +646 -669
  95. package/resources/assets/assets.d.ts.map +1 -1
  96. package/resources/assets/assets.js +3 -2
  97. package/resources/assets/assets.js.map +1 -1
  98. package/resources/assets/assets.mjs +3 -2
  99. package/resources/assets/assets.mjs.map +1 -1
  100. package/resources/assets/index.d.mts +1 -1
  101. package/resources/assets/index.d.mts.map +1 -1
  102. package/resources/assets/index.d.ts +1 -1
  103. package/resources/assets/index.d.ts.map +1 -1
  104. package/resources/assets/index.js.map +1 -1
  105. package/resources/assets/index.mjs.map +1 -1
  106. package/resources/assets/public.d.mts +12 -12
  107. package/resources/assets/public.d.mts.map +1 -1
  108. package/resources/assets/public.d.ts +12 -12
  109. package/resources/assets/public.d.ts.map +1 -1
  110. package/resources/collections/collections.d.mts +38 -49
  111. package/resources/collections/collections.d.mts.map +1 -1
  112. package/resources/collections/collections.d.ts +38 -49
  113. package/resources/collections/collections.d.ts.map +1 -1
  114. package/resources/collections/collections.js +5 -1
  115. package/resources/collections/collections.js.map +1 -1
  116. package/resources/collections/collections.mjs +5 -1
  117. package/resources/collections/collections.mjs.map +1 -1
  118. package/resources/collections/index.d.mts +1 -1
  119. package/resources/collections/index.d.mts.map +1 -1
  120. package/resources/collections/index.d.ts +1 -1
  121. package/resources/collections/index.d.ts.map +1 -1
  122. package/resources/collections/index.js.map +1 -1
  123. package/resources/collections/index.mjs.map +1 -1
  124. package/resources/generate.d.mts +1027 -242
  125. package/resources/generate.d.mts.map +1 -1
  126. package/resources/generate.d.ts +1027 -242
  127. package/resources/generate.d.ts.map +1 -1
  128. package/resources/generate.js +7 -0
  129. package/resources/generate.js.map +1 -1
  130. package/resources/generate.mjs +7 -0
  131. package/resources/generate.mjs.map +1 -1
  132. package/resources/index.d.mts +8 -8
  133. package/resources/index.d.mts.map +1 -1
  134. package/resources/index.d.ts +8 -8
  135. package/resources/index.d.ts.map +1 -1
  136. package/resources/index.js.map +1 -1
  137. package/resources/index.mjs.map +1 -1
  138. package/resources/jobs.d.mts +369 -380
  139. package/resources/jobs.d.mts.map +1 -1
  140. package/resources/jobs.d.ts +369 -380
  141. package/resources/jobs.d.ts.map +1 -1
  142. package/resources/jobs.js +2 -1
  143. package/resources/jobs.js.map +1 -1
  144. package/resources/jobs.mjs +2 -1
  145. package/resources/jobs.mjs.map +1 -1
  146. package/resources/models/description.d.mts +2 -2
  147. package/resources/models/description.d.mts.map +1 -1
  148. package/resources/models/description.d.ts +2 -2
  149. package/resources/models/description.d.ts.map +1 -1
  150. package/resources/models/examples.d.mts +4 -4
  151. package/resources/models/examples.d.mts.map +1 -1
  152. package/resources/models/examples.d.ts +4 -4
  153. package/resources/models/examples.d.ts.map +1 -1
  154. package/resources/models/index.d.mts +1 -1
  155. package/resources/models/index.d.mts.map +1 -1
  156. package/resources/models/index.d.ts +1 -1
  157. package/resources/models/index.d.ts.map +1 -1
  158. package/resources/models/index.js.map +1 -1
  159. package/resources/models/index.mjs.map +1 -1
  160. package/resources/models/models.d.mts +845 -856
  161. package/resources/models/models.d.mts.map +1 -1
  162. package/resources/models/models.d.ts +845 -856
  163. package/resources/models/models.d.ts.map +1 -1
  164. package/resources/models/models.js +2 -1
  165. package/resources/models/models.js.map +1 -1
  166. package/resources/models/models.mjs +2 -1
  167. package/resources/models/models.mjs.map +1 -1
  168. package/resources/models/train.d.mts +2 -2
  169. package/resources/models/train.d.mts.map +1 -1
  170. package/resources/models/train.d.ts +2 -2
  171. package/resources/models/train.d.ts.map +1 -1
  172. package/resources/search.d.mts +215 -295
  173. package/resources/search.d.mts.map +1 -1
  174. package/resources/search.d.ts +215 -295
  175. package/resources/search.d.ts.map +1 -1
  176. package/resources/search.js +9 -2
  177. package/resources/search.js.map +1 -1
  178. package/resources/search.mjs +9 -2
  179. package/resources/search.mjs.map +1 -1
  180. package/resources/tags.d.mts +23 -35
  181. package/resources/tags.d.mts.map +1 -1
  182. package/resources/tags.d.ts +23 -35
  183. package/resources/tags.d.ts.map +1 -1
  184. package/resources/tags.js +2 -1
  185. package/resources/tags.js.map +1 -1
  186. package/resources/tags.mjs +2 -1
  187. package/resources/tags.mjs.map +1 -1
  188. package/resources/usages.d.mts +3 -3
  189. package/resources/usages.d.mts.map +1 -1
  190. package/resources/usages.d.ts +3 -3
  191. package/resources/usages.d.ts.map +1 -1
  192. package/resources/workflows.d.mts +688 -704
  193. package/resources/workflows.d.mts.map +1 -1
  194. package/resources/workflows.d.ts +688 -704
  195. package/resources/workflows.d.ts.map +1 -1
  196. package/resources/workflows.js +5 -1
  197. package/resources/workflows.js.map +1 -1
  198. package/resources/workflows.mjs +5 -1
  199. package/resources/workflows.mjs.map +1 -1
  200. package/src/client.ts +107 -2
  201. package/src/core/pagination.ts +497 -0
  202. package/src/index.ts +11 -1
  203. package/src/lib/asset.ts +85 -0
  204. package/src/lib/job.ts +28 -1
  205. package/src/lib/models.ts +62 -2
  206. package/src/lib/scenario.ts +14 -0
  207. package/src/lib/upload.ts +344 -0
  208. package/src/lib/workflow.ts +29 -4
  209. package/src/lib/workflow_import_validator.ts +104 -0
  210. package/src/pagination.ts +2 -0
  211. package/src/resources/assets/assets.ts +930 -909
  212. package/src/resources/assets/index.ts +2 -0
  213. package/src/resources/assets/public.ts +17 -7
  214. package/src/resources/collections/collections.ts +45 -54
  215. package/src/resources/collections/index.ts +1 -0
  216. package/src/resources/generate.ts +1227 -136
  217. package/src/resources/index.ts +11 -1
  218. package/src/resources/jobs.ts +613 -622
  219. package/src/resources/models/description.ts +4 -0
  220. package/src/resources/models/examples.ts +8 -0
  221. package/src/resources/models/index.ts +1 -0
  222. package/src/resources/models/models.ts +1066 -1064
  223. package/src/resources/models/train.ts +4 -0
  224. package/src/resources/search.ts +239 -327
  225. package/src/resources/tags.ts +32 -39
  226. package/src/resources/usages.ts +5 -0
  227. package/src/resources/workflows.ts +850 -864
  228. package/src/version.ts +1 -1
  229. package/version.d.mts +1 -1
  230. package/version.d.ts +1 -1
  231. package/version.js +1 -1
  232. package/version.mjs +1 -1
package/lib/workflow.mjs CHANGED
@@ -3,13 +3,15 @@ import { enhanceJob } from "./job.mjs";
3
3
  import { validateWorkflowFlow } from "./workflow_validator.mjs";
4
4
  /**
5
5
  * Enhanced workflow object with helper methods.
6
- * Has all original workflow fields plus `findNode()`, `getNodesByType()`.
6
+ * Has all original workflow fields plus `findNode()`, `getNodesByType()`,
7
+ * `validate()`, and `run()`.
7
8
  *
8
9
  * @example
9
10
  * ```ts
10
11
  * const response = await client.workflows.retrieve(workflowId);
11
12
  * response.workflow.findNode('final_image');
12
13
  * response.workflow.getNodesByType('custom-model');
14
+ * const gen = await response.workflow.run({ body: { prompt: '...' } });
13
15
  * response.workflow.name; // original fields still work
14
16
  * ```
15
17
  */
@@ -29,9 +31,20 @@ export class WorkflowEntity {
29
31
  validate() {
30
32
  validateWorkflowFlow(this.flow);
31
33
  }
34
+ /**
35
+ * Run this workflow. Shortcut for
36
+ * `client.workflows.run(this.id, params)`.
37
+ *
38
+ * Returns an enhanced response where `response.job` has `.wait()`.
39
+ */
40
+ run(params, options) {
41
+ return this._client.workflows.run(this.id, params, options);
42
+ }
32
43
  /** @internal Create a WorkflowEntity from raw workflow data. */
33
- static from(data) {
34
- return Object.assign(Object.create(WorkflowEntity.prototype), data);
44
+ static from(client, data) {
45
+ const entity = Object.assign(Object.create(WorkflowEntity.prototype), data);
46
+ Object.defineProperty(entity, '_client', { value: client, enumerable: false });
47
+ return entity;
35
48
  }
36
49
  }
37
50
  /**
@@ -47,7 +60,7 @@ export class EnhancedWorkflows extends Workflows {
47
60
  retrieve(workflowID, options) {
48
61
  return super.retrieve(workflowID, options)._thenUnwrap((data) => ({
49
62
  ...data,
50
- workflow: WorkflowEntity.from(data.workflow),
63
+ workflow: WorkflowEntity.from(this._client, data.workflow),
51
64
  }));
52
65
  }
53
66
  /** Run a workflow. Returns an enhanced response where `job` has `.wait()`. */
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.mjs","sourceRoot":"","sources":["../src/lib/workflow.ts"],"names":[],"mappings":"OAEO,EACL,SAAS,GAMV;OACM,EAAgB,UAAU,EAAE;OAC5B,EAAE,oBAAoB,EAAE;AAK/B;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,cAAc;IACzB,oDAAoD;IACpD,QAAQ,CAEN,MAAc;QAEd,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,qEAAqE;IACrE,cAAc,CAA2D,IAAc;QACrF,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,IAAI,CAAC,IAAuC;QACjD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;CACF;AAOD;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC9C;;;OAGG;IACM,QAAQ,CACf,UAAkB,EAClB,OAAwB;QAExB,OAAO,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChE,GAAG,IAAI;YACP,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC7C,CAAC,CAAC,CAAC;IACN,CAAC;IAED,8EAA8E;IACrE,GAAG,CACV,UAAkB,EAClB,MAAyB,EACzB,OAAwB;QAExB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,4FAA4F;IACnF,WAAW,CAClB,UAAkB,EAClB,IAA+B,EAC/B,OAAwB;QAExB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF,CAAC;CACF"}
1
+ {"version":3,"file":"workflow.mjs","sourceRoot":"","sources":["../src/lib/workflow.ts"],"names":[],"mappings":"OAEO,EACL,SAAS,GAMV;OACM,EAAgB,UAAU,EAAE;OAC5B,EAAE,oBAAoB,EAAE;AAO/B;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAAc;IAGzB,oDAAoD;IACpD,QAAQ,CAEN,MAAc;QAEd,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,qEAAqE;IACrE,cAAc,CAA2D,IAAc;QACrF,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAED,MAAyB,EACzB,OAAwB;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,IAAI,CACT,MAAgB,EAChB,IAAuC;QAEvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5E,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAOD;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC9C;;;OAGG;IACM,QAAQ,CACf,UAAkB,EAClB,OAAwB;QAExB,OAAO,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChE,GAAG,IAAI;YACP,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC;SACvE,CAAC,CAAC,CAAC;IACN,CAAC;IAED,8EAA8E;IACrE,GAAG,CACV,UAAkB,EAClB,MAAyB,EACzB,OAAwB;QAExB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,4FAA4F;IACnF,WAAW,CAClB,UAAkB,EAClB,IAA+B,EAC/B,OAAwB;QAExB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF,CAAC;CACF"}
@@ -0,0 +1,40 @@
1
+ export declare class WorkflowImportError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export type WorkflowEditorNodeType = 'text' | 'asset' | 'model' | 'llm' | 'transformText' | 'splitText' | 'ifElse' | 'groupItems' | 'sliceAssets' | 'forEach' | 'forEachEnd' | 'stickyNote';
5
+ export declare const VALID_EDITOR_NODE_TYPES: readonly WorkflowEditorNodeType[];
6
+ export interface WorkflowExportData {
7
+ version: '1.0';
8
+ name: string;
9
+ description: string;
10
+ editorInfo: {
11
+ nodes: Array<{
12
+ type: WorkflowEditorNodeType;
13
+ [key: string]: unknown;
14
+ }>;
15
+ edges: Array<{
16
+ [key: string]: unknown;
17
+ }>;
18
+ inputKeys: string[];
19
+ };
20
+ inputs: unknown[];
21
+ tagSet: string[];
22
+ uiConfig?: object;
23
+ exportedAt: string;
24
+ exportedBy: string;
25
+ }
26
+ /**
27
+ * Validates a workflow export payload (e.g. from a JSON file import).
28
+ *
29
+ * Throws a `WorkflowImportError` with a human-readable message on the first
30
+ * violation found. Returns the validated data cast to `WorkflowExportData`.
31
+ *
32
+ * Checks performed:
33
+ * 1. Data is a non-null object
34
+ * 2. `version` field is present and equals "1.0"
35
+ * 3. `editorInfo` has non-empty `nodes` and `edges` arrays
36
+ * 4. Each node's `type` is a recognized editor node type
37
+ * 5. `inputs` is an array
38
+ */
39
+ export declare function validateEditorInfo(data: unknown): WorkflowExportData;
40
+ //# sourceMappingURL=workflow_import_validator.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow_import_validator.d.mts","sourceRoot":"","sources":["../src/lib/workflow_import_validator.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,OAAO,GACP,OAAO,GACP,KAAK,GACL,eAAe,GACf,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,eAAO,MAAM,uBAAuB,EAAE,SAAS,sBAAsB,EAapE,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,sBAAsB,CAAC;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC,CAAC;QACvE,KAAK,EAAE,KAAK,CAAC;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC,CAAC;QACzC,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CAsCpE"}
@@ -0,0 +1,40 @@
1
+ export declare class WorkflowImportError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export type WorkflowEditorNodeType = 'text' | 'asset' | 'model' | 'llm' | 'transformText' | 'splitText' | 'ifElse' | 'groupItems' | 'sliceAssets' | 'forEach' | 'forEachEnd' | 'stickyNote';
5
+ export declare const VALID_EDITOR_NODE_TYPES: readonly WorkflowEditorNodeType[];
6
+ export interface WorkflowExportData {
7
+ version: '1.0';
8
+ name: string;
9
+ description: string;
10
+ editorInfo: {
11
+ nodes: Array<{
12
+ type: WorkflowEditorNodeType;
13
+ [key: string]: unknown;
14
+ }>;
15
+ edges: Array<{
16
+ [key: string]: unknown;
17
+ }>;
18
+ inputKeys: string[];
19
+ };
20
+ inputs: unknown[];
21
+ tagSet: string[];
22
+ uiConfig?: object;
23
+ exportedAt: string;
24
+ exportedBy: string;
25
+ }
26
+ /**
27
+ * Validates a workflow export payload (e.g. from a JSON file import).
28
+ *
29
+ * Throws a `WorkflowImportError` with a human-readable message on the first
30
+ * violation found. Returns the validated data cast to `WorkflowExportData`.
31
+ *
32
+ * Checks performed:
33
+ * 1. Data is a non-null object
34
+ * 2. `version` field is present and equals "1.0"
35
+ * 3. `editorInfo` has non-empty `nodes` and `edges` arrays
36
+ * 4. Each node's `type` is a recognized editor node type
37
+ * 5. `inputs` is an array
38
+ */
39
+ export declare function validateEditorInfo(data: unknown): WorkflowExportData;
40
+ //# sourceMappingURL=workflow_import_validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow_import_validator.d.ts","sourceRoot":"","sources":["../src/lib/workflow_import_validator.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,OAAO,GACP,OAAO,GACP,KAAK,GACL,eAAe,GACf,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,eAAO,MAAM,uBAAuB,EAAE,SAAS,sBAAsB,EAapE,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,sBAAsB,CAAC;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC,CAAC;QACvE,KAAK,EAAE,KAAK,CAAC;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC,CAAC;QACzC,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CAsCpE"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VALID_EDITOR_NODE_TYPES = exports.WorkflowImportError = void 0;
4
+ exports.validateEditorInfo = validateEditorInfo;
5
+ class WorkflowImportError extends Error {
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = 'WorkflowImportError';
9
+ }
10
+ }
11
+ exports.WorkflowImportError = WorkflowImportError;
12
+ exports.VALID_EDITOR_NODE_TYPES = [
13
+ 'text',
14
+ 'asset',
15
+ 'model',
16
+ 'llm',
17
+ 'transformText',
18
+ 'splitText',
19
+ 'ifElse',
20
+ 'groupItems',
21
+ 'sliceAssets',
22
+ 'forEach',
23
+ 'forEachEnd',
24
+ 'stickyNote',
25
+ ];
26
+ /**
27
+ * Validates a workflow export payload (e.g. from a JSON file import).
28
+ *
29
+ * Throws a `WorkflowImportError` with a human-readable message on the first
30
+ * violation found. Returns the validated data cast to `WorkflowExportData`.
31
+ *
32
+ * Checks performed:
33
+ * 1. Data is a non-null object
34
+ * 2. `version` field is present and equals "1.0"
35
+ * 3. `editorInfo` has non-empty `nodes` and `edges` arrays
36
+ * 4. Each node's `type` is a recognized editor node type
37
+ * 5. `inputs` is an array
38
+ */
39
+ function validateEditorInfo(data) {
40
+ if (typeof data !== 'object' || data === null) {
41
+ throw new WorkflowImportError('Invalid JSON format');
42
+ }
43
+ const workflow = data;
44
+ if (!workflow.version) {
45
+ throw new WorkflowImportError('Missing version field');
46
+ }
47
+ if (workflow.version !== '1.0') {
48
+ throw new WorkflowImportError(`Unsupported version: ${workflow.version}`);
49
+ }
50
+ if (!workflow.editorInfo || !workflow.editorInfo.nodes || !workflow.editorInfo.edges) {
51
+ throw new WorkflowImportError('Missing editorInfo structure');
52
+ }
53
+ if (!Array.isArray(workflow.editorInfo.nodes)) {
54
+ throw new WorkflowImportError('Invalid nodes array');
55
+ }
56
+ if (!Array.isArray(workflow.editorInfo.edges)) {
57
+ throw new WorkflowImportError('Invalid edges array');
58
+ }
59
+ if (!workflow.inputs || !Array.isArray(workflow.inputs)) {
60
+ throw new WorkflowImportError('Invalid inputs array');
61
+ }
62
+ for (const node of workflow.editorInfo.nodes) {
63
+ if (!exports.VALID_EDITOR_NODE_TYPES.includes(node.type)) {
64
+ throw new WorkflowImportError(`Invalid node type: ${node.type}`);
65
+ }
66
+ }
67
+ return workflow;
68
+ }
69
+ //# sourceMappingURL=workflow_import_validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow_import_validator.js","sourceRoot":"","sources":["../src/lib/workflow_import_validator.ts"],"names":[],"mappings":";;;AAiEA,gDAsCC;AAvGD,MAAa,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC;AAgBY,QAAA,uBAAuB,GAAsC;IACxE,MAAM;IACN,OAAO;IACP,OAAO;IACP,KAAK;IACL,eAAe;IACf,WAAW;IACX,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,SAAS;IACT,YAAY;IACZ,YAAY;CACb,CAAC;AAkBF;;;;;;;;;;;;GAYG;AACH,SAAgB,kBAAkB,CAAC,IAAa;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAmC,CAAC;IAErD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,mBAAmB,CAAC,wBAAwB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACrF,MAAM,IAAI,mBAAmB,CAAC,8BAA8B,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC7C,IAAI,CAAE,+BAA6C,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,OAAO,QAA8B,CAAC;AACxC,CAAC"}
@@ -0,0 +1,64 @@
1
+ export class WorkflowImportError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = 'WorkflowImportError';
5
+ }
6
+ }
7
+ export const VALID_EDITOR_NODE_TYPES = [
8
+ 'text',
9
+ 'asset',
10
+ 'model',
11
+ 'llm',
12
+ 'transformText',
13
+ 'splitText',
14
+ 'ifElse',
15
+ 'groupItems',
16
+ 'sliceAssets',
17
+ 'forEach',
18
+ 'forEachEnd',
19
+ 'stickyNote',
20
+ ];
21
+ /**
22
+ * Validates a workflow export payload (e.g. from a JSON file import).
23
+ *
24
+ * Throws a `WorkflowImportError` with a human-readable message on the first
25
+ * violation found. Returns the validated data cast to `WorkflowExportData`.
26
+ *
27
+ * Checks performed:
28
+ * 1. Data is a non-null object
29
+ * 2. `version` field is present and equals "1.0"
30
+ * 3. `editorInfo` has non-empty `nodes` and `edges` arrays
31
+ * 4. Each node's `type` is a recognized editor node type
32
+ * 5. `inputs` is an array
33
+ */
34
+ export function validateEditorInfo(data) {
35
+ if (typeof data !== 'object' || data === null) {
36
+ throw new WorkflowImportError('Invalid JSON format');
37
+ }
38
+ const workflow = data;
39
+ if (!workflow.version) {
40
+ throw new WorkflowImportError('Missing version field');
41
+ }
42
+ if (workflow.version !== '1.0') {
43
+ throw new WorkflowImportError(`Unsupported version: ${workflow.version}`);
44
+ }
45
+ if (!workflow.editorInfo || !workflow.editorInfo.nodes || !workflow.editorInfo.edges) {
46
+ throw new WorkflowImportError('Missing editorInfo structure');
47
+ }
48
+ if (!Array.isArray(workflow.editorInfo.nodes)) {
49
+ throw new WorkflowImportError('Invalid nodes array');
50
+ }
51
+ if (!Array.isArray(workflow.editorInfo.edges)) {
52
+ throw new WorkflowImportError('Invalid edges array');
53
+ }
54
+ if (!workflow.inputs || !Array.isArray(workflow.inputs)) {
55
+ throw new WorkflowImportError('Invalid inputs array');
56
+ }
57
+ for (const node of workflow.editorInfo.nodes) {
58
+ if (!VALID_EDITOR_NODE_TYPES.includes(node.type)) {
59
+ throw new WorkflowImportError(`Invalid node type: ${node.type}`);
60
+ }
61
+ }
62
+ return workflow;
63
+ }
64
+ //# sourceMappingURL=workflow_import_validator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow_import_validator.mjs","sourceRoot":"","sources":["../src/lib/workflow_import_validator.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAgBD,MAAM,CAAC,MAAM,uBAAuB,GAAsC;IACxE,MAAM;IACN,OAAO;IACP,OAAO;IACP,KAAK;IACL,eAAe;IACf,WAAW;IACX,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,SAAS;IACT,YAAY;IACZ,YAAY;CACb,CAAC;AAkBF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAa;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAmC,CAAC;IAErD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,mBAAmB,CAAC,wBAAwB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACrF,MAAM,IAAI,mBAAmB,CAAC,8BAA8B,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC7C,IAAI,CAAE,uBAA6C,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,OAAO,QAA8B,CAAC;AACxC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scenario-labs/sdk",
3
- "version": "0.3.0",
3
+ "version": "1.1.0",
4
4
  "description": "The official TypeScript library for the Scenario API",
5
5
  "author": "Scenario <support@scenario.com>",
6
6
  "types": "./index.d.ts",
@@ -91,6 +91,16 @@
91
91
  "import": "./lib/*.mjs",
92
92
  "require": "./lib/*.js"
93
93
  },
94
+ "./pagination": {
95
+ "import": "./pagination.mjs",
96
+ "require": "./pagination.js"
97
+ },
98
+ "./pagination.js": {
99
+ "default": "./pagination.js"
100
+ },
101
+ "./pagination.mjs": {
102
+ "default": "./pagination.mjs"
103
+ },
94
104
  "./resource": {
95
105
  "import": "./resource.mjs",
96
106
  "require": "./resource.js"
@@ -0,0 +1,2 @@
1
+ export * from "./core/pagination.mjs";
2
+ //# sourceMappingURL=pagination.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.mts","sourceRoot":"","sources":["src/pagination.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from "./core/pagination.js";
2
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["src/pagination.ts"],"names":[],"mappings":""}
package/pagination.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("./internal/tslib.js");
4
+ /** @deprecated Import from ./core/pagination instead */
5
+ tslib_1.__exportStar(require("./core/pagination.js"), exports);
6
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["src/pagination.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AACxD,+DAAkC"}
package/pagination.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./core/pagination.mjs";
2
+ //# sourceMappingURL=pagination.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.mjs","sourceRoot":"","sources":["src/pagination.ts"],"names":[],"mappings":""}