ugcinc 4.5.90 → 4.5.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -87,7 +87,6 @@ For the full endpoint reference, all method signatures, data structures, and wor
87
87
 
88
88
  - Docs: https://docs.ugc.inc
89
89
  - Website: https://ugc.inc
90
- - npm package: https://www.npmjs.com/package/ugcinc
91
90
 
92
91
  ## License
93
92
 
@@ -846,10 +846,52 @@ function validateWorkflow({ nodes, }) {
846
846
  }
847
847
  }
848
848
  }
849
- // 7. Check for circular dependencies
849
+ // 7. Check for duplicate port names across input nodes
850
+ const inputPortSeen = new Map(); // portName -> first nodeId
851
+ for (const node of nodes) {
852
+ if (node.type !== 'input')
853
+ continue;
854
+ const outputs = node.config.outputs ?? [];
855
+ for (const output of outputs) {
856
+ const existing = inputPortSeen.get(output.id);
857
+ if (existing) {
858
+ errors.push({
859
+ type: 'duplicate_port_name',
860
+ nodeId: node.id,
861
+ portId: output.id,
862
+ message: `Duplicate input port name '${output.id}' — each input port must have a unique name across all input nodes`,
863
+ });
864
+ }
865
+ else {
866
+ inputPortSeen.set(output.id, node.id);
867
+ }
868
+ }
869
+ }
870
+ // 8. Check for duplicate port names across output (passthrough) nodes
871
+ const outputPortSeen = new Map(); // portName -> first nodeId
872
+ for (const node of nodes) {
873
+ if (node.type !== 'passthrough')
874
+ continue;
875
+ const inputs = node.config.inputs ?? [];
876
+ for (const input of inputs) {
877
+ const existing = outputPortSeen.get(input.id);
878
+ if (existing) {
879
+ errors.push({
880
+ type: 'duplicate_port_name',
881
+ nodeId: node.id,
882
+ portId: input.id,
883
+ message: `Duplicate output port name '${input.id}' — each output port must have a unique name across all output nodes`,
884
+ });
885
+ }
886
+ else {
887
+ outputPortSeen.set(input.id, node.id);
888
+ }
889
+ }
890
+ }
891
+ // 9. Check for circular dependencies
850
892
  const circularErrors = detectCircularDependencies(nodes);
851
893
  errors.push(...circularErrors);
852
- // 8. Check for for-each context boundary violations
894
+ // 10. Check for for-each context boundary violations
853
895
  const boundaryErrors = validateForEachContextBoundaries(nodes);
854
896
  errors.push(...boundaryErrors);
855
897
  return errors;
@@ -538,7 +538,7 @@ export declare function isAsyncExecutor(executor: AnyNodeExecutor | AnyAsyncNode
538
538
  /**
539
539
  * Validation error types for automation workflows
540
540
  */
541
- export type ValidationErrorType = 'missing_trigger' | 'missing_terminal' | 'missing_required_input' | 'type_mismatch' | 'empty_media_pool' | 'empty_account_pool' | 'circular_dependency' | 'for_each_boundary_violation' | 'invalid_node_config';
541
+ export type ValidationErrorType = 'missing_trigger' | 'missing_terminal' | 'missing_required_input' | 'type_mismatch' | 'empty_media_pool' | 'empty_account_pool' | 'circular_dependency' | 'for_each_boundary_violation' | 'invalid_node_config' | 'duplicate_port_name';
542
542
  /**
543
543
  * Structured validation error with location info for UI highlighting
544
544
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugcinc",
3
- "version": "4.5.90",
3
+ "version": "4.5.92",
4
4
  "description": "TypeScript/JavaScript client for the UGC Inc API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -31,9 +31,14 @@
31
31
  "ugcinc",
32
32
  "api",
33
33
  "client",
34
+ "ugc",
34
35
  "tiktok",
36
+ "instagram",
37
+ "clawbot",
35
38
  "automation",
39
+ "social-automation",
36
40
  "social-media",
41
+ "social-publishing",
37
42
  "content-management",
38
43
  "video-rendering"
39
44
  ],