@pikku/addon-graph 0.12.4 → 0.12.6

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 (173) hide show
  1. package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
  2. package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
  3. package/dist/.pikku/addon/pikku-package.gen.js +1 -1
  4. package/dist/.pikku/agent/pikku-agent-map.gen.d.ts +1 -1
  5. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +3 -2
  6. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts.map +1 -1
  7. package/dist/.pikku/agent/pikku-agent-types.gen.js.map +1 -1
  8. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
  9. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  10. package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
  11. package/dist/.pikku/function/pikku-function-types.gen.d.ts +15 -44
  12. package/dist/.pikku/function/pikku-function-types.gen.d.ts.map +1 -1
  13. package/dist/.pikku/function/pikku-function-types.gen.js +3 -12
  14. package/dist/.pikku/function/pikku-function-types.gen.js.map +1 -1
  15. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  16. package/dist/.pikku/function/pikku-functions-meta.gen.json +350 -33
  17. package/dist/.pikku/function/pikku-functions.gen.js +19 -1
  18. package/dist/.pikku/function/pikku-functions.gen.js.map +1 -1
  19. package/dist/.pikku/http/pikku-http-types.gen.d.ts +2 -24
  20. package/dist/.pikku/http/pikku-http-types.gen.d.ts.map +1 -1
  21. package/dist/.pikku/http/pikku-http-types.gen.js +2 -24
  22. package/dist/.pikku/http/pikku-http-types.gen.js.map +1 -1
  23. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  24. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  25. package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
  26. package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
  27. package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
  28. package/dist/.pikku/pikku-meta-service.gen.js +1 -1
  29. package/dist/.pikku/pikku-services.gen.d.ts +5 -1
  30. package/dist/.pikku/pikku-services.gen.d.ts.map +1 -1
  31. package/dist/.pikku/pikku-services.gen.js +4 -0
  32. package/dist/.pikku/pikku-services.gen.js.map +1 -1
  33. package/dist/.pikku/pikku-types.gen.d.ts +2 -1
  34. package/dist/.pikku/pikku-types.gen.d.ts.map +1 -1
  35. package/dist/.pikku/pikku-types.gen.js +3 -1
  36. package/dist/.pikku/pikku-types.gen.js.map +1 -1
  37. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  38. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  39. package/dist/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +163 -7
  40. package/dist/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +172 -7
  41. package/dist/.pikku/rpc/pikku-rpc-wirings-map.remote.gen.d.ts +652 -0
  42. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  43. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +10 -1
  44. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  45. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  46. package/dist/.pikku/schemas/register.gen.js +93 -57
  47. package/dist/.pikku/schemas/register.gen.js.map +1 -1
  48. package/dist/.pikku/schemas/schemas/AggregateInput.schema.json +1 -1
  49. package/dist/.pikku/schemas/schemas/BranchInput.schema.json +1 -0
  50. package/dist/.pikku/schemas/schemas/BranchOutput.schema.json +1 -0
  51. package/dist/.pikku/schemas/schemas/ConcatInput.schema.json +1 -0
  52. package/dist/.pikku/schemas/schemas/ConcatOutput.schema.json +1 -0
  53. package/dist/.pikku/schemas/schemas/DateTimeInput.schema.json +1 -1
  54. package/dist/.pikku/schemas/schemas/EditFieldsOutput.schema.json +1 -1
  55. package/dist/.pikku/schemas/schemas/FanoutInput.schema.json +1 -0
  56. package/dist/.pikku/schemas/schemas/FanoutOutput.schema.json +1 -0
  57. package/dist/.pikku/schemas/schemas/HttpRequestInput.schema.json +1 -0
  58. package/dist/.pikku/schemas/schemas/HttpRequestOutput.schema.json +1 -0
  59. package/dist/.pikku/schemas/schemas/ReadFileInput.schema.json +1 -0
  60. package/dist/.pikku/schemas/schemas/ReadFileOutput.schema.json +1 -0
  61. package/dist/.pikku/schemas/schemas/SplitTextInput.schema.json +1 -0
  62. package/dist/.pikku/schemas/schemas/SplitTextOutput.schema.json +1 -0
  63. package/dist/.pikku/schemas/schemas/StopAndErrorInput.schema.json +1 -0
  64. package/dist/.pikku/schemas/schemas/StopAndErrorOutput.schema.json +1 -0
  65. package/dist/.pikku/schemas/schemas/WaitInput.schema.json +1 -0
  66. package/dist/.pikku/schemas/schemas/WaitOutput.schema.json +1 -0
  67. package/dist/.pikku/schemas/schemas/WriteFileInput.schema.json +1 -0
  68. package/dist/.pikku/schemas/schemas/WriteFileOutput.schema.json +1 -0
  69. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +6 -0
  70. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts.map +1 -0
  71. package/dist/.pikku/scopes/pikku-scope-types.gen.js +5 -0
  72. package/dist/.pikku/scopes/pikku-scope-types.gen.js.map +1 -0
  73. package/dist/.pikku/scopes/pikku-scopes-meta.gen.json +1 -0
  74. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +36 -0
  75. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts.map +1 -0
  76. package/dist/.pikku/scopes/pikku-scopes.gen.js +28 -0
  77. package/dist/.pikku/scopes/pikku-scopes.gen.js.map +1 -0
  78. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  79. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  80. package/dist/.pikku/secrets/pikku-secrets-meta.gen.json +1 -0
  81. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +11 -1
  82. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts.map +1 -1
  83. package/dist/.pikku/secrets/pikku-secrets.gen.js +11 -1
  84. package/dist/.pikku/secrets/pikku-secrets.gen.js.map +1 -1
  85. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  86. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  87. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  88. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  89. package/dist/.pikku/variables/pikku-variables-meta.gen.json +1 -0
  90. package/dist/.pikku/variables/pikku-variables.gen.d.ts +11 -1
  91. package/dist/.pikku/variables/pikku-variables.gen.d.ts.map +1 -1
  92. package/dist/.pikku/variables/pikku-variables.gen.js +13 -3
  93. package/dist/.pikku/variables/pikku-variables.gen.js.map +1 -1
  94. package/dist/.pikku/workflow/pikku-workflow-map.gen.d.ts +1 -1
  95. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +22 -5
  96. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts.map +1 -1
  97. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +4 -1
  98. package/dist/.pikku/workflow/pikku-workflow-types.gen.js.map +1 -1
  99. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  100. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +1 -1
  101. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  102. package/dist/src/functions/array/aggregate.function.d.ts +33 -4
  103. package/dist/src/functions/array/aggregate.function.d.ts.map +1 -1
  104. package/dist/src/functions/array/aggregate.function.js +47 -14
  105. package/dist/src/functions/array/aggregate.function.js.map +1 -1
  106. package/dist/src/functions/array/aggregate.function.test.d.ts +2 -0
  107. package/dist/src/functions/array/aggregate.function.test.d.ts.map +1 -0
  108. package/dist/src/functions/array/aggregate.function.test.js +42 -0
  109. package/dist/src/functions/array/aggregate.function.test.js.map +1 -0
  110. package/dist/src/functions/array/fanout.function.d.ts +32 -0
  111. package/dist/src/functions/array/fanout.function.d.ts.map +1 -0
  112. package/dist/src/functions/array/fanout.function.js +80 -0
  113. package/dist/src/functions/array/fanout.function.js.map +1 -0
  114. package/dist/src/functions/array/fanout.function.test.d.ts +2 -0
  115. package/dist/src/functions/array/fanout.function.test.d.ts.map +1 -0
  116. package/dist/src/functions/array/fanout.function.test.js +66 -0
  117. package/dist/src/functions/array/fanout.function.test.js.map +1 -0
  118. package/dist/src/functions/array/summarize.function.d.ts +4 -4
  119. package/dist/src/functions/data/date-time.function.d.ts +17 -3
  120. package/dist/src/functions/data/date-time.function.d.ts.map +1 -1
  121. package/dist/src/functions/data/date-time.function.js +46 -0
  122. package/dist/src/functions/data/date-time.function.js.map +1 -1
  123. package/dist/src/functions/data/jwt.function.d.ts +4 -4
  124. package/dist/src/functions/data/read-file.function.d.ts +40 -0
  125. package/dist/src/functions/data/read-file.function.d.ts.map +1 -0
  126. package/dist/src/functions/data/read-file.function.js +39 -0
  127. package/dist/src/functions/data/read-file.function.js.map +1 -0
  128. package/dist/src/functions/data/type-convert.function.d.ts +4 -4
  129. package/dist/src/functions/data/wait.function.d.ts +26 -0
  130. package/dist/src/functions/data/wait.function.d.ts.map +1 -0
  131. package/dist/src/functions/data/wait.function.js +29 -0
  132. package/dist/src/functions/data/wait.function.js.map +1 -0
  133. package/dist/src/functions/data/write-file.function.d.ts +40 -0
  134. package/dist/src/functions/data/write-file.function.d.ts.map +1 -0
  135. package/dist/src/functions/data/write-file.function.js +37 -0
  136. package/dist/src/functions/data/write-file.function.js.map +1 -0
  137. package/dist/src/functions/logic/branch.function.d.ts +71 -0
  138. package/dist/src/functions/logic/branch.function.d.ts.map +1 -0
  139. package/dist/src/functions/logic/branch.function.js +213 -0
  140. package/dist/src/functions/logic/branch.function.js.map +1 -0
  141. package/dist/src/functions/logic/stop-and-error.function.d.ts +13 -0
  142. package/dist/src/functions/logic/stop-and-error.function.d.ts.map +1 -0
  143. package/dist/src/functions/logic/stop-and-error.function.js +18 -0
  144. package/dist/src/functions/logic/stop-and-error.function.js.map +1 -0
  145. package/dist/src/functions/network/http-request.function.d.ts +105 -0
  146. package/dist/src/functions/network/http-request.function.d.ts.map +1 -0
  147. package/dist/src/functions/network/http-request.function.js +142 -0
  148. package/dist/src/functions/network/http-request.function.js.map +1 -0
  149. package/dist/src/functions/network/http-request.function.test.d.ts +2 -0
  150. package/dist/src/functions/network/http-request.function.test.d.ts.map +1 -0
  151. package/dist/src/functions/network/http-request.function.test.js +119 -0
  152. package/dist/src/functions/network/http-request.function.test.js.map +1 -0
  153. package/dist/src/functions/transform/concat.function.d.ts +21 -0
  154. package/dist/src/functions/transform/concat.function.d.ts.map +1 -0
  155. package/dist/src/functions/transform/concat.function.js +22 -0
  156. package/dist/src/functions/transform/concat.function.js.map +1 -0
  157. package/dist/src/functions/transform/concat.function.test.d.ts +2 -0
  158. package/dist/src/functions/transform/concat.function.test.d.ts.map +1 -0
  159. package/dist/src/functions/transform/concat.function.test.js +23 -0
  160. package/dist/src/functions/transform/concat.function.test.js.map +1 -0
  161. package/dist/src/functions/transform/edit-fields.function.d.ts +9 -12
  162. package/dist/src/functions/transform/edit-fields.function.d.ts.map +1 -1
  163. package/dist/src/functions/transform/edit-fields.function.js +9 -4
  164. package/dist/src/functions/transform/edit-fields.function.js.map +1 -1
  165. package/dist/src/functions/transform/split-text.function.d.ts +41 -0
  166. package/dist/src/functions/transform/split-text.function.d.ts.map +1 -0
  167. package/dist/src/functions/transform/split-text.function.js +116 -0
  168. package/dist/src/functions/transform/split-text.function.js.map +1 -0
  169. package/dist/src/functions/transform/split-text.function.test.d.ts +2 -0
  170. package/dist/src/functions/transform/split-text.function.test.d.ts.map +1 -0
  171. package/dist/src/functions/transform/split-text.function.test.js +66 -0
  172. package/dist/src/functions/transform/split-text.function.test.js.map +1 -0
  173. package/package.json +3 -3
@@ -0,0 +1,71 @@
1
+ import { z } from 'zod';
2
+ export declare const BranchInput: z.ZodObject<{
3
+ cases: z.ZodArray<z.ZodObject<{
4
+ key: z.ZodString;
5
+ combinator: z.ZodDefault<z.ZodEnum<{
6
+ and: "and";
7
+ or: "or";
8
+ }>>;
9
+ conditions: z.ZodArray<z.ZodObject<{
10
+ left: z.ZodUnknown;
11
+ right: z.ZodOptional<z.ZodUnknown>;
12
+ type: z.ZodDefault<z.ZodEnum<{
13
+ string: "string";
14
+ number: "number";
15
+ boolean: "boolean";
16
+ object: "object";
17
+ dateTime: "dateTime";
18
+ array: "array";
19
+ }>>;
20
+ operation: z.ZodString;
21
+ }, z.core.$strip>>;
22
+ }, z.core.$strip>>;
23
+ fallback: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$strip>;
25
+ export declare const BranchOutput: z.ZodObject<{
26
+ branch: z.ZodNullable<z.ZodString>;
27
+ }, z.core.$strip>;
28
+ export declare const branch: import("#pikku").PikkuFunctionConfig<{
29
+ cases: {
30
+ key: string;
31
+ combinator: "and" | "or";
32
+ conditions: {
33
+ left: unknown;
34
+ type: "string" | "number" | "boolean" | "object" | "dateTime" | "array";
35
+ operation: string;
36
+ right?: unknown;
37
+ }[];
38
+ }[];
39
+ fallback?: string | undefined;
40
+ }, {
41
+ branch: string | null;
42
+ }, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
43
+ cases: {
44
+ key: string;
45
+ combinator: "and" | "or";
46
+ conditions: {
47
+ left: unknown;
48
+ type: "string" | "number" | "boolean" | "object" | "dateTime" | "array";
49
+ operation: string;
50
+ right?: unknown;
51
+ }[];
52
+ }[];
53
+ fallback?: string | undefined;
54
+ }, {
55
+ branch: string | null;
56
+ }, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
57
+ cases: {
58
+ key: string;
59
+ combinator: "and" | "or";
60
+ conditions: {
61
+ left: unknown;
62
+ type: "string" | "number" | "boolean" | "object" | "dateTime" | "array";
63
+ operation: string;
64
+ right?: unknown;
65
+ }[];
66
+ }[];
67
+ fallback?: string | undefined;
68
+ }, {
69
+ branch: string | null;
70
+ }, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
71
+ //# sourceMappingURL=branch.function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/logic/branch.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA6BvB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;iBAQtB,CAAA;AAEF,eAAO,MAAM,YAAY;;iBAKvB,CAAA;AA+JF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uEAwBjB,CAAA"}
@@ -0,0 +1,213 @@
1
+ import { z } from 'zod';
2
+ import { pikkuSessionlessFunc } from '#pikku';
3
+ const BranchCondition = z.object({
4
+ left: z.unknown().describe('Left-hand operand (resolved before evaluation)'),
5
+ right: z
6
+ .unknown()
7
+ .optional()
8
+ .describe('Right-hand operand — omitted for unary operators like isEmpty'),
9
+ type: z
10
+ .enum(['string', 'number', 'boolean', 'dateTime', 'array', 'object'])
11
+ .default('string')
12
+ .describe('Value type the operands are coerced to before comparison'),
13
+ operation: z
14
+ .string()
15
+ .describe('Comparison operation, e.g. equals, contains, gt, isEmpty'),
16
+ });
17
+ const BranchCase = z.object({
18
+ key: z
19
+ .string()
20
+ .describe('The `next` branch key to take when this case matches'),
21
+ combinator: z
22
+ .enum(['and', 'or'])
23
+ .default('and')
24
+ .describe('How the conditions combine'),
25
+ conditions: z.array(BranchCondition),
26
+ });
27
+ export const BranchInput = z.object({
28
+ cases: z
29
+ .array(BranchCase)
30
+ .describe('Cases evaluated in order; the first match wins'),
31
+ fallback: z
32
+ .string()
33
+ .optional()
34
+ .describe('Branch key taken when no case matches'),
35
+ });
36
+ export const BranchOutput = z.object({
37
+ branch: z
38
+ .string()
39
+ .nullable()
40
+ .describe('The branch key taken, or null when the path dead-ends'),
41
+ });
42
+ const asString = (v) => (v == null ? '' : String(v));
43
+ const asNumber = (v) => Number(v);
44
+ const asBool = (v) => v === true || v === 'true';
45
+ const asTime = (v) => new Date(v).getTime();
46
+ const asArray = (v) => (Array.isArray(v) ? v : []);
47
+ function evaluateCondition({ left, right, type, operation, }) {
48
+ switch (type) {
49
+ case 'string': {
50
+ const l = asString(left);
51
+ const r = asString(right);
52
+ switch (operation) {
53
+ case 'equals':
54
+ return l === r;
55
+ case 'notEquals':
56
+ return l !== r;
57
+ case 'contains':
58
+ return l.includes(r);
59
+ case 'notContains':
60
+ return !l.includes(r);
61
+ case 'startsWith':
62
+ return l.startsWith(r);
63
+ case 'notStartsWith':
64
+ return !l.startsWith(r);
65
+ case 'endsWith':
66
+ return l.endsWith(r);
67
+ case 'notEndsWith':
68
+ return !l.endsWith(r);
69
+ case 'regex':
70
+ return new RegExp(r).test(l);
71
+ case 'notRegex':
72
+ return !new RegExp(r).test(l);
73
+ case 'isEmpty':
74
+ return l === '';
75
+ case 'isNotEmpty':
76
+ return l !== '';
77
+ case 'exists':
78
+ return left != null;
79
+ case 'notExists':
80
+ return left == null;
81
+ }
82
+ break;
83
+ }
84
+ case 'number': {
85
+ const l = asNumber(left);
86
+ const r = asNumber(right);
87
+ switch (operation) {
88
+ case 'equals':
89
+ return l === r;
90
+ case 'notEquals':
91
+ return l !== r;
92
+ case 'gt':
93
+ return l > r;
94
+ case 'gte':
95
+ return l >= r;
96
+ case 'lt':
97
+ return l < r;
98
+ case 'lte':
99
+ return l <= r;
100
+ case 'isEmpty':
101
+ return left == null || Number.isNaN(l);
102
+ case 'isNotEmpty':
103
+ return left != null && !Number.isNaN(l);
104
+ case 'exists':
105
+ return left != null;
106
+ case 'notExists':
107
+ return left == null;
108
+ }
109
+ break;
110
+ }
111
+ case 'boolean': {
112
+ const l = asBool(left);
113
+ switch (operation) {
114
+ case 'true':
115
+ return l === true;
116
+ case 'false':
117
+ return l === false;
118
+ case 'equals':
119
+ return l === asBool(right);
120
+ case 'notEquals':
121
+ return l !== asBool(right);
122
+ case 'exists':
123
+ return left != null;
124
+ case 'notExists':
125
+ return left == null;
126
+ }
127
+ break;
128
+ }
129
+ case 'dateTime': {
130
+ const l = asTime(left);
131
+ const r = asTime(right);
132
+ switch (operation) {
133
+ case 'after':
134
+ return l > r;
135
+ case 'before':
136
+ return l < r;
137
+ case 'afterOrEquals':
138
+ return l >= r;
139
+ case 'beforeOrEquals':
140
+ return l <= r;
141
+ case 'equals':
142
+ return l === r;
143
+ case 'notEquals':
144
+ return l !== r;
145
+ }
146
+ break;
147
+ }
148
+ case 'array': {
149
+ const l = asArray(left);
150
+ switch (operation) {
151
+ case 'contains':
152
+ return l.includes(right);
153
+ case 'notContains':
154
+ return !l.includes(right);
155
+ case 'lengthEquals':
156
+ return l.length === asNumber(right);
157
+ case 'lengthNotEquals':
158
+ return l.length !== asNumber(right);
159
+ case 'lengthGt':
160
+ return l.length > asNumber(right);
161
+ case 'lengthGte':
162
+ return l.length >= asNumber(right);
163
+ case 'lengthLt':
164
+ return l.length < asNumber(right);
165
+ case 'lengthLte':
166
+ return l.length <= asNumber(right);
167
+ case 'isEmpty':
168
+ return l.length === 0;
169
+ case 'isNotEmpty':
170
+ return l.length > 0;
171
+ }
172
+ break;
173
+ }
174
+ case 'object': {
175
+ switch (operation) {
176
+ case 'isEmpty':
177
+ return left == null || Object.keys(left).length === 0;
178
+ case 'isNotEmpty':
179
+ return left != null && Object.keys(left).length > 0;
180
+ case 'exists':
181
+ return left != null;
182
+ case 'notExists':
183
+ return left == null;
184
+ }
185
+ break;
186
+ }
187
+ }
188
+ throw new Error(`graph:branch — unsupported operator "${type}.${operation}"`);
189
+ }
190
+ export const branch = pikkuSessionlessFunc({
191
+ description: 'Route to a branch by evaluating declarative conditions (IF / Switch / Filter)',
192
+ node: { displayName: 'Branch', category: 'Logic', type: 'action' },
193
+ input: BranchInput,
194
+ output: BranchOutput,
195
+ func: async (_services, data, { graph }) => {
196
+ for (const branchCase of data.cases) {
197
+ const results = branchCase.conditions.map(evaluateCondition);
198
+ const matched = branchCase.combinator === 'or'
199
+ ? results.some(Boolean)
200
+ : results.every(Boolean);
201
+ if (matched) {
202
+ graph?.branch(branchCase.key);
203
+ return { branch: branchCase.key };
204
+ }
205
+ }
206
+ if (data.fallback) {
207
+ graph?.branch(data.fallback);
208
+ return { branch: data.fallback };
209
+ }
210
+ return { branch: null };
211
+ },
212
+ });
213
+ //# sourceMappingURL=branch.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch.function.js","sourceRoot":"","sources":["../../../../src/functions/logic/branch.function.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ export declare const StopAndErrorInput: z.ZodObject<{
3
+ message: z.ZodString;
4
+ }, z.core.$strip>;
5
+ export declare const StopAndErrorOutput: z.ZodVoid;
6
+ export declare const stopAndError: import("#pikku").PikkuFunctionConfig<{
7
+ message: string;
8
+ }, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
9
+ message: string;
10
+ }, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
11
+ message: string;
12
+ }, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
13
+ //# sourceMappingURL=stop-and-error.function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop-and-error.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/logic/stop-and-error.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,iBAAiB;;iBAI5B,CAAA;AAEF,eAAO,MAAM,kBAAkB,WAAW,CAAA;AAE1C,eAAO,MAAM,YAAY;;;;;;6EAQvB,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ import { pikkuSessionlessFunc } from '#pikku';
3
+ export const StopAndErrorInput = z.object({
4
+ message: z
5
+ .string()
6
+ .describe('The error message to throw, halting the workflow'),
7
+ });
8
+ export const StopAndErrorOutput = z.void();
9
+ export const stopAndError = pikkuSessionlessFunc({
10
+ description: 'Throw an error to stop the workflow',
11
+ node: { displayName: 'Stop And Error', category: 'Logic', type: 'action' },
12
+ input: StopAndErrorInput,
13
+ output: StopAndErrorOutput,
14
+ func: async (_services, data) => {
15
+ throw new Error(data.message);
16
+ },
17
+ });
18
+ //# sourceMappingURL=stop-and-error.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop-and-error.function.js","sourceRoot":"","sources":["../../../../src/functions/logic/stop-and-error.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAA;AAE7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CAAC,kDAAkD,CAAC;CAChE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAC;IAC/C,WAAW,EAAE,qCAAqC;IAClD,IAAI,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1E,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,kBAAkB;IAC1B,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,105 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * How to authenticate the request. Carries only NAMES and static constants — the
4
+ * secret value is resolved from the SecretService at request time, never passed
5
+ * in as data (so it is never persisted to workflow step state).
6
+ */
7
+ export declare const HttpAuth: z.ZodObject<{
8
+ mode: z.ZodEnum<{
9
+ bearer: "bearer";
10
+ apiKeyHeader: "apiKeyHeader";
11
+ apiKeyQuery: "apiKeyQuery";
12
+ basic: "basic";
13
+ oauth2: "oauth2";
14
+ }>;
15
+ credential: z.ZodString;
16
+ headerName: z.ZodOptional<z.ZodString>;
17
+ queryName: z.ZodOptional<z.ZodString>;
18
+ extraHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
19
+ source: z.ZodOptional<z.ZodEnum<{
20
+ credential: "credential";
21
+ secret: "secret";
22
+ }>>;
23
+ }, z.core.$strip>;
24
+ export declare const HttpRequestInput: z.ZodObject<{
25
+ method: z.ZodDefault<z.ZodEnum<{
26
+ GET: "GET";
27
+ POST: "POST";
28
+ PUT: "PUT";
29
+ PATCH: "PATCH";
30
+ DELETE: "DELETE";
31
+ HEAD: "HEAD";
32
+ OPTIONS: "OPTIONS";
33
+ }>>;
34
+ url: z.ZodString;
35
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
36
+ query: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
37
+ body: z.ZodOptional<z.ZodUnknown>;
38
+ auth: z.ZodOptional<z.ZodObject<{
39
+ mode: z.ZodEnum<{
40
+ bearer: "bearer";
41
+ apiKeyHeader: "apiKeyHeader";
42
+ apiKeyQuery: "apiKeyQuery";
43
+ basic: "basic";
44
+ oauth2: "oauth2";
45
+ }>;
46
+ credential: z.ZodString;
47
+ headerName: z.ZodOptional<z.ZodString>;
48
+ queryName: z.ZodOptional<z.ZodString>;
49
+ extraHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
50
+ source: z.ZodOptional<z.ZodEnum<{
51
+ credential: "credential";
52
+ secret: "secret";
53
+ }>>;
54
+ }, z.core.$strip>>;
55
+ }, z.core.$strip>;
56
+ /**
57
+ * The parsed response body, exposed directly as the output so downstream graph
58
+ * nodes can reference its fields. A non-object response (array, string, number)
59
+ * is wrapped under `data`.
60
+ */
61
+ export declare const HttpRequestOutput: z.ZodRecord<z.ZodString, z.ZodUnknown>;
62
+ export declare const httpRequest: import("#pikku").PikkuFunctionConfig<{
63
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS";
64
+ url: string;
65
+ headers?: Record<string, unknown> | undefined;
66
+ query?: Record<string, unknown> | undefined;
67
+ body?: unknown;
68
+ auth?: {
69
+ mode: "bearer" | "apiKeyHeader" | "apiKeyQuery" | "basic" | "oauth2";
70
+ credential: string;
71
+ headerName?: string | undefined;
72
+ queryName?: string | undefined;
73
+ extraHeaders?: Record<string, string> | undefined;
74
+ source?: "credential" | "secret" | undefined;
75
+ } | undefined;
76
+ }, Record<string, unknown>, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
77
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS";
78
+ url: string;
79
+ headers?: Record<string, unknown> | undefined;
80
+ query?: Record<string, unknown> | undefined;
81
+ body?: unknown;
82
+ auth?: {
83
+ mode: "bearer" | "apiKeyHeader" | "apiKeyQuery" | "basic" | "oauth2";
84
+ credential: string;
85
+ headerName?: string | undefined;
86
+ queryName?: string | undefined;
87
+ extraHeaders?: Record<string, string> | undefined;
88
+ source?: "credential" | "secret" | undefined;
89
+ } | undefined;
90
+ }, Record<string, unknown>, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
91
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS";
92
+ url: string;
93
+ headers?: Record<string, unknown> | undefined;
94
+ query?: Record<string, unknown> | undefined;
95
+ body?: unknown;
96
+ auth?: {
97
+ mode: "bearer" | "apiKeyHeader" | "apiKeyQuery" | "basic" | "oauth2";
98
+ credential: string;
99
+ headerName?: string | undefined;
100
+ queryName?: string | undefined;
101
+ extraHeaders?: Record<string, string> | undefined;
102
+ source?: "credential" | "secret" | undefined;
103
+ } | undefined;
104
+ }, Record<string, unknown>, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
105
+ //# sourceMappingURL=http-request.function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-request.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/network/http-request.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;iBAqBnB,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqB3B,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,wCAEU,CAAA;AAqBxC,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gGA4EtB,CAAA"}
@@ -0,0 +1,142 @@
1
+ import { z } from 'zod';
2
+ import { pikkuSessionlessFunc } from '#pikku';
3
+ /**
4
+ * How to authenticate the request. Carries only NAMES and static constants — the
5
+ * secret value is resolved from the SecretService at request time, never passed
6
+ * in as data (so it is never persisted to workflow step state).
7
+ */
8
+ export const HttpAuth = z.object({
9
+ mode: z
10
+ .enum(['bearer', 'apiKeyHeader', 'apiKeyQuery', 'basic', 'oauth2'])
11
+ .describe('How the credential is applied to the request'),
12
+ credential: z.string().describe('Secret key the value is provisioned under'),
13
+ headerName: z
14
+ .string()
15
+ .optional()
16
+ .describe('apiKeyHeader — header name (defaults to Authorization)'),
17
+ queryName: z
18
+ .string()
19
+ .optional()
20
+ .describe('apiKeyQuery — query-param name (defaults to api_key)'),
21
+ extraHeaders: z
22
+ .record(z.string(), z.string())
23
+ .optional()
24
+ .describe('Static, non-secret headers always sent (e.g. Notion-Version)'),
25
+ source: z
26
+ .enum(['secret', 'credential'])
27
+ .optional()
28
+ .describe('Where the value comes from — secret (default) or credential'),
29
+ });
30
+ export const HttpRequestInput = z.object({
31
+ method: z
32
+ .enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'])
33
+ .default('GET')
34
+ .describe('HTTP method'),
35
+ url: z.string().describe('The request URL'),
36
+ headers: z
37
+ .record(z.string(), z.unknown())
38
+ .optional()
39
+ .describe('Request headers'),
40
+ query: z
41
+ .record(z.string(), z.unknown())
42
+ .optional()
43
+ .describe('Query string parameters appended to the URL'),
44
+ body: z
45
+ .unknown()
46
+ .optional()
47
+ .describe('Request body — JSON-encoded unless it is already a string'),
48
+ auth: HttpAuth.optional().describe('Optional authentication resolved from a secret at request time'),
49
+ });
50
+ /**
51
+ * The parsed response body, exposed directly as the output so downstream graph
52
+ * nodes can reference its fields. A non-object response (array, string, number)
53
+ * is wrapped under `data`.
54
+ */
55
+ export const HttpRequestOutput = z
56
+ .record(z.string(), z.unknown())
57
+ .describe('Parsed JSON response body');
58
+ /**
59
+ * Resolve a secret value, wrapping a missing-secret failure with a message that
60
+ * names the credential — turning "empty value" into an actionable "provision
61
+ * secret X" for an imported workflow.
62
+ */
63
+ async function resolveSecret(secrets, credential) {
64
+ try {
65
+ return await secrets.getSecret(credential);
66
+ }
67
+ catch (cause) {
68
+ const reason = cause instanceof Error ? cause.message : String(cause);
69
+ throw new Error(`httpRequest auth: could not resolve secret "${credential}" — provision it before running this workflow (${reason})`);
70
+ }
71
+ }
72
+ export const httpRequest = pikkuSessionlessFunc({
73
+ description: 'Perform an HTTP request and return the response body',
74
+ node: { displayName: 'HTTP Request', category: 'Data', type: 'action' },
75
+ input: HttpRequestInput,
76
+ output: HttpRequestOutput,
77
+ func: async ({ secrets }, data) => {
78
+ const url = new URL(data.url);
79
+ for (const [key, value] of Object.entries(data.query ?? {})) {
80
+ url.searchParams.set(key, String(value));
81
+ }
82
+ const sendsBody = data.body !== undefined && data.method !== 'GET' && data.method !== 'HEAD';
83
+ const bodyIsString = typeof data.body === 'string';
84
+ const headers = {};
85
+ for (const [key, value] of Object.entries(data.headers ?? {})) {
86
+ headers[key] = String(value);
87
+ }
88
+ if (sendsBody && !bodyIsString && !('content-type' in headers)) {
89
+ headers['content-type'] = 'application/json';
90
+ }
91
+ const auth = data.auth;
92
+ if (auth) {
93
+ if (auth.mode === 'oauth2') {
94
+ throw new Error('httpRequest auth: OAuth2 is not yet supported (needs provider config + token flow)');
95
+ }
96
+ // Static, non-secret headers first — an explicit request header wins.
97
+ for (const [key, value] of Object.entries(auth.extraHeaders ?? {})) {
98
+ if (!(key in headers))
99
+ headers[key] = value;
100
+ }
101
+ const secret = await resolveSecret(secrets, auth.credential);
102
+ switch (auth.mode) {
103
+ case 'bearer':
104
+ headers['Authorization'] = `Bearer ${secret}`;
105
+ break;
106
+ case 'apiKeyHeader':
107
+ headers[auth.headerName ?? 'Authorization'] = secret;
108
+ break;
109
+ case 'apiKeyQuery':
110
+ url.searchParams.set(auth.queryName ?? 'api_key', secret);
111
+ break;
112
+ case 'basic':
113
+ headers['Authorization'] =
114
+ `Basic ${Buffer.from(secret).toString('base64')}`;
115
+ break;
116
+ }
117
+ }
118
+ const response = await fetch(url, {
119
+ method: data.method,
120
+ headers,
121
+ body: sendsBody
122
+ ? bodyIsString
123
+ ? data.body
124
+ : JSON.stringify(data.body)
125
+ : undefined,
126
+ });
127
+ const text = await response.text();
128
+ let parsed = text;
129
+ try {
130
+ parsed = JSON.parse(text);
131
+ }
132
+ catch {
133
+ // not JSON — keep the raw text
134
+ }
135
+ return parsed !== null &&
136
+ typeof parsed === 'object' &&
137
+ !Array.isArray(parsed)
138
+ ? parsed
139
+ : { data: parsed };
140
+ },
141
+ });
142
+ //# sourceMappingURL=http-request.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-request.function.js","sourceRoot":"","sources":["../../../../src/functions/network/http-request.function.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=http-request.function.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-request.function.test.d.ts","sourceRoot":"","sources":["../../../../src/functions/network/http-request.function.test.ts"],"names":[],"mappings":""}