@relayflows/core 0.0.1 → 1.0.1

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 (182) hide show
  1. package/dist/agent-handle.d.ts +27 -0
  2. package/dist/agent-handle.d.ts.map +1 -0
  3. package/dist/agent-handle.js +32 -0
  4. package/dist/agent-handle.js.map +1 -0
  5. package/dist/api-executor.d.ts +16 -0
  6. package/dist/api-executor.d.ts.map +1 -0
  7. package/dist/api-executor.js +94 -0
  8. package/dist/api-executor.js.map +1 -0
  9. package/dist/barrier.d.ts +72 -0
  10. package/dist/barrier.d.ts.map +1 -0
  11. package/dist/barrier.js +162 -0
  12. package/dist/barrier.js.map +1 -0
  13. package/dist/budget-tracker.d.ts +75 -0
  14. package/dist/budget-tracker.d.ts.map +1 -0
  15. package/dist/budget-tracker.js +184 -0
  16. package/dist/budget-tracker.js.map +1 -0
  17. package/dist/builder.d.ts +229 -0
  18. package/dist/builder.d.ts.map +1 -0
  19. package/dist/builder.js +430 -0
  20. package/dist/builder.js.map +1 -0
  21. package/dist/builtin-templates/bug-fix.yaml +139 -0
  22. package/dist/builtin-templates/code-review.yaml +137 -0
  23. package/dist/builtin-templates/competitive.yaml +107 -0
  24. package/dist/builtin-templates/documentation.yaml +128 -0
  25. package/dist/builtin-templates/feature-dev.yaml +146 -0
  26. package/dist/builtin-templates/refactor.yaml +145 -0
  27. package/dist/builtin-templates/review-loop.yaml +227 -0
  28. package/dist/builtin-templates/security-audit.yaml +139 -0
  29. package/dist/channel-messenger.d.ts +28 -0
  30. package/dist/channel-messenger.d.ts.map +1 -0
  31. package/dist/channel-messenger.js +275 -0
  32. package/dist/channel-messenger.js.map +1 -0
  33. package/dist/cli-registry.d.ts +77 -0
  34. package/dist/cli-registry.d.ts.map +1 -0
  35. package/dist/cli-registry.js +268 -0
  36. package/dist/cli-registry.js.map +1 -0
  37. package/dist/cli-session-collector.d.ts +39 -0
  38. package/dist/cli-session-collector.d.ts.map +1 -0
  39. package/dist/cli-session-collector.js +23 -0
  40. package/dist/cli-session-collector.js.map +1 -0
  41. package/dist/cli.d.ts +11 -0
  42. package/dist/cli.d.ts.map +1 -0
  43. package/dist/cli.js +395 -0
  44. package/dist/cli.js.map +1 -0
  45. package/dist/cloud-runner.d.ts +15 -0
  46. package/dist/cloud-runner.d.ts.map +1 -0
  47. package/dist/cloud-runner.js +41 -0
  48. package/dist/cloud-runner.js.map +1 -0
  49. package/dist/cloud-schedules.d.ts +3 -0
  50. package/dist/cloud-schedules.d.ts.map +1 -0
  51. package/dist/cloud-schedules.js +2 -0
  52. package/dist/cloud-schedules.js.map +1 -0
  53. package/dist/collectors/claude.d.ts +6 -0
  54. package/dist/collectors/claude.d.ts.map +1 -0
  55. package/dist/collectors/claude.js +330 -0
  56. package/dist/collectors/claude.js.map +1 -0
  57. package/dist/collectors/codex.d.ts +18 -0
  58. package/dist/collectors/codex.d.ts.map +1 -0
  59. package/dist/collectors/codex.js +265 -0
  60. package/dist/collectors/codex.js.map +1 -0
  61. package/dist/collectors/opencode.d.ts +6 -0
  62. package/dist/collectors/opencode.d.ts.map +1 -0
  63. package/dist/collectors/opencode.js +204 -0
  64. package/dist/collectors/opencode.js.map +1 -0
  65. package/dist/coordinator.d.ts +73 -0
  66. package/dist/coordinator.d.ts.map +1 -0
  67. package/dist/coordinator.js +647 -0
  68. package/dist/coordinator.js.map +1 -0
  69. package/dist/custom-steps.d.ts +73 -0
  70. package/dist/custom-steps.d.ts.map +1 -0
  71. package/dist/custom-steps.js +321 -0
  72. package/dist/custom-steps.js.map +1 -0
  73. package/dist/default-logger.d.ts +9 -0
  74. package/dist/default-logger.d.ts.map +1 -0
  75. package/dist/default-logger.js +104 -0
  76. package/dist/default-logger.js.map +1 -0
  77. package/dist/dry-run-format.d.ts +6 -0
  78. package/dist/dry-run-format.d.ts.map +1 -0
  79. package/dist/dry-run-format.js +79 -0
  80. package/dist/dry-run-format.js.map +1 -0
  81. package/dist/file-db.d.ts +85 -0
  82. package/dist/file-db.d.ts.map +1 -0
  83. package/dist/file-db.js +215 -0
  84. package/dist/file-db.js.map +1 -0
  85. package/dist/index.d.ts +37 -1
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +34 -3
  88. package/dist/index.js.map +1 -0
  89. package/dist/integrations/browser.d.ts +99 -0
  90. package/dist/integrations/browser.d.ts.map +1 -0
  91. package/dist/integrations/browser.js +419 -0
  92. package/dist/integrations/browser.js.map +1 -0
  93. package/dist/integrations/github.d.ts +79 -0
  94. package/dist/integrations/github.d.ts.map +1 -0
  95. package/dist/integrations/github.js +459 -0
  96. package/dist/integrations/github.js.map +1 -0
  97. package/dist/integrations/slack.d.ts +80 -0
  98. package/dist/integrations/slack.d.ts.map +1 -0
  99. package/dist/integrations/slack.js +355 -0
  100. package/dist/integrations/slack.js.map +1 -0
  101. package/dist/listr-renderer.d.ts +26 -0
  102. package/dist/listr-renderer.d.ts.map +1 -0
  103. package/dist/listr-renderer.js +230 -0
  104. package/dist/listr-renderer.js.map +1 -0
  105. package/dist/memory-db.d.ts +17 -0
  106. package/dist/memory-db.d.ts.map +1 -0
  107. package/dist/memory-db.js +33 -0
  108. package/dist/memory-db.js.map +1 -0
  109. package/dist/process-backend-executor.d.ts +18 -0
  110. package/dist/process-backend-executor.d.ts.map +1 -0
  111. package/dist/process-backend-executor.js +74 -0
  112. package/dist/process-backend-executor.js.map +1 -0
  113. package/dist/process-spawner.d.ts +35 -0
  114. package/dist/process-spawner.d.ts.map +1 -0
  115. package/dist/process-spawner.js +173 -0
  116. package/dist/process-spawner.js.map +1 -0
  117. package/dist/provisioner.d.ts +64 -0
  118. package/dist/provisioner.d.ts.map +1 -0
  119. package/dist/provisioner.js +269 -0
  120. package/dist/provisioner.js.map +1 -0
  121. package/dist/proxy-env.d.ts +52 -0
  122. package/dist/proxy-env.d.ts.map +1 -0
  123. package/dist/proxy-env.js +92 -0
  124. package/dist/proxy-env.js.map +1 -0
  125. package/dist/run-script.d.ts +82 -0
  126. package/dist/run-script.d.ts.map +1 -0
  127. package/dist/run-script.js +527 -0
  128. package/dist/run-script.js.map +1 -0
  129. package/dist/run-summary-table.d.ts +5 -0
  130. package/dist/run-summary-table.d.ts.map +1 -0
  131. package/dist/run-summary-table.js +132 -0
  132. package/dist/run-summary-table.js.map +1 -0
  133. package/dist/run.d.ts +45 -0
  134. package/dist/run.d.ts.map +1 -0
  135. package/dist/run.js +37 -0
  136. package/dist/run.js.map +1 -0
  137. package/dist/runner.d.ts +528 -0
  138. package/dist/runner.d.ts.map +1 -0
  139. package/dist/runner.js +6269 -0
  140. package/dist/runner.js.map +1 -0
  141. package/dist/schema.d.ts +275 -0
  142. package/dist/schema.d.ts.map +1 -0
  143. package/dist/schema.js +27 -0
  144. package/dist/schema.js.map +1 -0
  145. package/dist/schema.json +940 -0
  146. package/dist/sibling-links.d.ts +100 -0
  147. package/dist/sibling-links.d.ts.map +1 -0
  148. package/dist/sibling-links.js +205 -0
  149. package/dist/sibling-links.js.map +1 -0
  150. package/dist/state.d.ts +77 -0
  151. package/dist/state.d.ts.map +1 -0
  152. package/dist/state.js +140 -0
  153. package/dist/state.js.map +1 -0
  154. package/dist/step-executor.d.ts +95 -0
  155. package/dist/step-executor.d.ts.map +1 -0
  156. package/dist/step-executor.js +393 -0
  157. package/dist/step-executor.js.map +1 -0
  158. package/dist/template-resolver.d.ts +33 -0
  159. package/dist/template-resolver.d.ts.map +1 -0
  160. package/dist/template-resolver.js +144 -0
  161. package/dist/template-resolver.js.map +1 -0
  162. package/dist/templates.d.ts +47 -0
  163. package/dist/templates.d.ts.map +1 -0
  164. package/dist/templates.js +405 -0
  165. package/dist/templates.js.map +1 -0
  166. package/dist/trajectory.d.ts +87 -0
  167. package/dist/trajectory.d.ts.map +1 -0
  168. package/dist/trajectory.js +412 -0
  169. package/dist/trajectory.js.map +1 -0
  170. package/dist/types.d.ts +471 -0
  171. package/dist/types.d.ts.map +1 -0
  172. package/dist/types.js +37 -0
  173. package/dist/types.js.map +1 -0
  174. package/dist/validator.d.ts +11 -0
  175. package/dist/validator.d.ts.map +1 -0
  176. package/dist/validator.js +186 -0
  177. package/dist/validator.js.map +1 -0
  178. package/dist/verification.d.ts +53 -0
  179. package/dist/verification.d.ts.map +1 -0
  180. package/dist/verification.js +238 -0
  181. package/dist/verification.js.map +1 -0
  182. package/package.json +12 -8
@@ -0,0 +1,459 @@
1
+ import { GitHubClient } from '@relayflows/github-primitive';
2
+ import { GITHUB_ACTIONS } from '@relayflows/github-primitive';
3
+ const GITHUB_INTEGRATION = 'github';
4
+ const RESERVED_PARAM_KEYS = new Set([
5
+ 'action',
6
+ 'config',
7
+ 'githubConfig',
8
+ 'output',
9
+ 'params',
10
+ 'actionParams',
11
+ 'repository',
12
+ 'runtime',
13
+ 'ghPath',
14
+ 'timeout',
15
+ 'retryOnRateLimit',
16
+ 'maxRetries',
17
+ ]);
18
+ /**
19
+ * Create a Relay integration step that can be used in TypeScript workflows or
20
+ * emitted into .relay YAML. Complex params/config objects are serialized so the
21
+ * workflow template resolver can interpolate values before execution.
22
+ */
23
+ export function createGitHubStep(config) {
24
+ validateGitHubStepConfig(config);
25
+ const params = {};
26
+ if (config.repo !== undefined) {
27
+ params.repo = repoToString(config.repo);
28
+ }
29
+ if (config.params !== undefined) {
30
+ params.params = JSON.stringify(config.params);
31
+ }
32
+ if (config.config !== undefined) {
33
+ params.config = JSON.stringify(config.config);
34
+ }
35
+ if (config.output !== undefined) {
36
+ params.output = JSON.stringify(config.output);
37
+ }
38
+ const step = {
39
+ name: config.name,
40
+ type: 'integration',
41
+ integration: GITHUB_INTEGRATION,
42
+ action: config.action,
43
+ params,
44
+ };
45
+ if (config.dependsOn !== undefined)
46
+ step.dependsOn = config.dependsOn;
47
+ if (config.timeoutMs !== undefined)
48
+ step.timeoutMs = config.timeoutMs;
49
+ if (config.retries !== undefined)
50
+ step.retries = config.retries;
51
+ return step;
52
+ }
53
+ export class GitHubStepExecutor {
54
+ options;
55
+ constructor(options = {}) {
56
+ this.options = options;
57
+ }
58
+ async executeAgentStep() {
59
+ throw new Error('GitHubStepExecutor only executes GitHub integration steps.');
60
+ }
61
+ async execute(config, context = {}) {
62
+ validateGitHubStepConfig(config);
63
+ const runtimeConfig = mergeRuntimeConfig(this.options, context.config, config.config);
64
+ if (context.workspaceId && !runtimeConfig.relayCloud?.workspaceId) {
65
+ runtimeConfig.relayCloud = {
66
+ ...runtimeConfig.relayCloud,
67
+ workspaceId: context.workspaceId,
68
+ };
69
+ }
70
+ const client = context.client ?? new GitHubClient(runtimeConfig);
71
+ const actionParams = buildActionParams(config);
72
+ const result = await client.executeAction(config.action, actionParams);
73
+ const runtime = result.metadata?.runtime ?? (await safeGetRuntime(client));
74
+ const output = formatStepOutput(config, result, runtime);
75
+ return {
76
+ success: result.success,
77
+ output,
78
+ result,
79
+ runtime,
80
+ error: result.error,
81
+ };
82
+ }
83
+ async executeIntegrationStep(step, resolvedParams, context = {}) {
84
+ if (step.integration !== GITHUB_INTEGRATION) {
85
+ return {
86
+ success: false,
87
+ output: `GitHubStepExecutor only handles "${GITHUB_INTEGRATION}" integration steps`,
88
+ };
89
+ }
90
+ try {
91
+ const config = githubStepConfigFromWorkflowStep(step, resolvedParams);
92
+ const result = await this.execute(config, context);
93
+ return {
94
+ success: result.success,
95
+ output: result.success ? result.output : result.output || result.error || 'GitHub step failed',
96
+ };
97
+ }
98
+ catch (error) {
99
+ return {
100
+ success: false,
101
+ output: error instanceof Error ? error.message : String(error),
102
+ };
103
+ }
104
+ }
105
+ }
106
+ export function githubStepConfigFromWorkflowStep(step, resolvedParams) {
107
+ const params = normalizeResolvedParams(resolvedParams);
108
+ const action = step.action;
109
+ if (!action) {
110
+ throw new Error(`GitHub step "${step.name}" requires an action`);
111
+ }
112
+ const config = readJsonParam(params.config ?? params.githubConfig, 'config') ??
113
+ runtimeConfigFromParams(params);
114
+ const output = readJsonParam(params.output, 'output') ?? undefined;
115
+ const repo = readRepositoryParam(params);
116
+ const actionParams = readActionParams(params);
117
+ return {
118
+ name: step.name,
119
+ dependsOn: step.dependsOn,
120
+ action,
121
+ repo,
122
+ params: actionParams,
123
+ config,
124
+ output,
125
+ timeoutMs: step.timeoutMs,
126
+ retries: step.retries,
127
+ };
128
+ }
129
+ function validateGitHubStepConfig(config) {
130
+ if (!config.name) {
131
+ throw new Error('GitHub step requires a non-empty name');
132
+ }
133
+ if (!config.action || typeof config.action !== 'string') {
134
+ throw new Error(`GitHub step "${config.name}" requires an action name`);
135
+ }
136
+ if (!GITHUB_ACTIONS.includes(config.action)) {
137
+ throw new Error(`GitHub step "${config.name}" uses unsupported action "${config.action}"`);
138
+ }
139
+ if (config.repo !== undefined) {
140
+ parseRepositoryRef(config.repo);
141
+ }
142
+ if (config.params !== undefined && !isRecord(config.params)) {
143
+ throw new Error(`GitHub step "${config.name}" params must be an object`);
144
+ }
145
+ }
146
+ function buildActionParams(config) {
147
+ const repo = config.repo === undefined ? undefined : parseRepositoryRef(config.repo);
148
+ const params = config.params ? { ...config.params } : {};
149
+ const merged = repo ? { ...repo, ...params } : params;
150
+ return Object.keys(merged).length === 0 ? undefined : merged;
151
+ }
152
+ function readActionParams(params) {
153
+ const serializedParams = params.params ?? params.actionParams;
154
+ if (serializedParams !== undefined) {
155
+ const parsed = readJsonParam(serializedParams, 'params');
156
+ if (parsed === undefined)
157
+ return {};
158
+ if (!isRecord(parsed)) {
159
+ throw new Error('GitHub step params.params must be a JSON object');
160
+ }
161
+ return parsed;
162
+ }
163
+ const actionParams = {};
164
+ const repoValue = params.repo;
165
+ const repoIsRepositoryRef = params.owner === undefined && typeof repoValue === 'string' && repoValue.includes('/');
166
+ for (const [key, value] of Object.entries(params)) {
167
+ if (RESERVED_PARAM_KEYS.has(key))
168
+ continue;
169
+ if (key === 'repo' && repoIsRepositoryRef)
170
+ continue;
171
+ actionParams[key] = value;
172
+ }
173
+ return actionParams;
174
+ }
175
+ function readRepositoryParam(params) {
176
+ const value = params.repository ?? (params.owner === undefined ? params.repo : undefined);
177
+ if (value === undefined)
178
+ return undefined;
179
+ if (typeof value === 'string' || isRecord(value)) {
180
+ return parseRepositoryRef(value);
181
+ }
182
+ throw new Error('GitHub step repo must be in owner/repo format');
183
+ }
184
+ function runtimeConfigFromParams(params) {
185
+ const config = {};
186
+ if (typeof params.runtime === 'string') {
187
+ config.runtime = params.runtime;
188
+ }
189
+ if (typeof params.ghPath === 'string') {
190
+ config.ghPath = params.ghPath;
191
+ }
192
+ if (typeof params.timeout === 'number') {
193
+ config.timeout = params.timeout;
194
+ }
195
+ if (typeof params.retryOnRateLimit === 'boolean') {
196
+ config.retryOnRateLimit = params.retryOnRateLimit;
197
+ }
198
+ if (typeof params.maxRetries === 'number') {
199
+ config.maxRetries = params.maxRetries;
200
+ }
201
+ return Object.keys(config).length === 0 ? undefined : config;
202
+ }
203
+ function mergeRuntimeConfig(...configs) {
204
+ const merged = {};
205
+ for (const config of configs) {
206
+ if (!config)
207
+ continue;
208
+ const { nango, relayCloud, env, ...flatConfig } = config;
209
+ Object.assign(merged, flatConfig);
210
+ if (nango) {
211
+ merged.nango = {
212
+ ...merged.nango,
213
+ ...nango,
214
+ };
215
+ }
216
+ if (relayCloud) {
217
+ merged.relayCloud = {
218
+ ...merged.relayCloud,
219
+ ...relayCloud,
220
+ };
221
+ }
222
+ if (env) {
223
+ merged.env = {
224
+ ...merged.env,
225
+ ...env,
226
+ };
227
+ }
228
+ }
229
+ return merged;
230
+ }
231
+ function formatStepOutput(config, result, runtime) {
232
+ const outputConfig = config.output ?? {};
233
+ const mode = outputConfig.mode ?? 'data';
234
+ const format = outputConfig.format ?? 'json';
235
+ if (mode === 'none') {
236
+ return '';
237
+ }
238
+ let projection = buildOutputProjection(mode, result, runtime, outputConfig);
239
+ if (outputConfig.path) {
240
+ projection = resolvePath(projection, outputConfig.path);
241
+ }
242
+ if (format === 'text') {
243
+ return projectionToText(projection);
244
+ }
245
+ return JSON.stringify(projection, undefined, outputConfig.pretty ? 2 : undefined);
246
+ }
247
+ function buildOutputProjection(mode, result, runtime, outputConfig) {
248
+ if (mode === 'raw') {
249
+ return result.output;
250
+ }
251
+ if (mode === 'summary') {
252
+ return withOptionalMetadata(summarizeResult(result, runtime), result, runtime, outputConfig);
253
+ }
254
+ if (mode === 'result') {
255
+ const projected = {
256
+ success: result.success,
257
+ output: result.output,
258
+ };
259
+ if (result.data !== undefined)
260
+ projected.data = result.data;
261
+ if (result.error !== undefined)
262
+ projected.error = result.error;
263
+ return withOptionalMetadata(projected, result, runtime, outputConfig);
264
+ }
265
+ const data = result.data ?? (result.output ? result.output : null);
266
+ return withOptionalMetadata(data, result, runtime, outputConfig);
267
+ }
268
+ function summarizeResult(result, runtime) {
269
+ if (!result.success) {
270
+ return {
271
+ success: false,
272
+ error: result.error ?? 'GitHub action failed',
273
+ runtime,
274
+ };
275
+ }
276
+ const data = result.data;
277
+ if (Array.isArray(data)) {
278
+ return {
279
+ success: true,
280
+ count: data.length,
281
+ items: data.slice(0, 10).map(summarizeValue),
282
+ runtime,
283
+ };
284
+ }
285
+ return {
286
+ success: true,
287
+ value: summarizeValue(data ?? result.output),
288
+ runtime,
289
+ };
290
+ }
291
+ function summarizeValue(value) {
292
+ if (!isRecord(value)) {
293
+ return value;
294
+ }
295
+ const summary = {};
296
+ for (const key of [
297
+ 'fullName',
298
+ 'name',
299
+ 'number',
300
+ 'title',
301
+ 'state',
302
+ 'path',
303
+ 'sha',
304
+ 'type',
305
+ 'defaultBranch',
306
+ 'visibility',
307
+ 'private',
308
+ 'createdAt',
309
+ 'updatedAt',
310
+ 'htmlUrl',
311
+ 'url',
312
+ ]) {
313
+ if (value[key] !== undefined) {
314
+ summary[key] = value[key];
315
+ }
316
+ }
317
+ return Object.keys(summary).length > 0 ? summary : value;
318
+ }
319
+ function withOptionalMetadata(value, result, runtime, outputConfig) {
320
+ if (!outputConfig.includeMetadata && !outputConfig.includeRuntime) {
321
+ return value;
322
+ }
323
+ const metadata = {};
324
+ if (outputConfig.includeRuntime && runtime !== undefined)
325
+ metadata.runtime = runtime;
326
+ if (outputConfig.includeMetadata && result.metadata !== undefined) {
327
+ Object.assign(metadata, result.metadata);
328
+ }
329
+ return { value, metadata };
330
+ }
331
+ function projectionToText(value) {
332
+ if (typeof value === 'string')
333
+ return value;
334
+ if (value === null || value === undefined)
335
+ return '';
336
+ if (Array.isArray(value)) {
337
+ return value.map((entry) => projectionToText(entry)).join('\n');
338
+ }
339
+ if (isRecord(value)) {
340
+ if ('output' in value)
341
+ return projectionToText(value.output);
342
+ if ('value' in value)
343
+ return projectionToText(value.value);
344
+ if ('data' in value)
345
+ return projectionToText(value.data);
346
+ if ('content' in value)
347
+ return projectionToText(value.content);
348
+ if ('body' in value)
349
+ return projectionToText(value.body);
350
+ if ('title' in value)
351
+ return projectionToText(value.title);
352
+ if ('fullName' in value)
353
+ return projectionToText(value.fullName);
354
+ if ('path' in value)
355
+ return projectionToText(value.path);
356
+ if ('url' in value)
357
+ return projectionToText(value.url);
358
+ }
359
+ return JSON.stringify(value);
360
+ }
361
+ function resolvePath(value, path) {
362
+ if (!path)
363
+ return value;
364
+ let current = value;
365
+ for (const segment of path.split('.')) {
366
+ if (Array.isArray(current) && /^\d+$/.test(segment)) {
367
+ current = current[Number(segment)];
368
+ continue;
369
+ }
370
+ if (isRecord(current)) {
371
+ current = current[segment];
372
+ continue;
373
+ }
374
+ return undefined;
375
+ }
376
+ return current;
377
+ }
378
+ function parseRepositoryRef(repo) {
379
+ if (typeof repo === 'string') {
380
+ const [owner, name, ...rest] = repo.split('/');
381
+ if (!owner || !name || rest.length > 0) {
382
+ throw new Error(`GitHub repo must be in owner/repo format: ${repo}`);
383
+ }
384
+ return {
385
+ owner,
386
+ repo: name,
387
+ fullName: `${owner}/${name}`,
388
+ };
389
+ }
390
+ const owner = typeof repo.owner === 'string' ? repo.owner : undefined;
391
+ const name = typeof repo.repo === 'string' ? repo.repo : undefined;
392
+ if (!owner || !name) {
393
+ throw new Error('GitHub repo object requires owner and repo');
394
+ }
395
+ return {
396
+ owner,
397
+ repo: name,
398
+ fullName: typeof repo.fullName === 'string' ? repo.fullName : `${owner}/${name}`,
399
+ };
400
+ }
401
+ function repoToString(repo) {
402
+ return typeof repo === 'string' ? repo : `${repo.owner}/${repo.repo}`;
403
+ }
404
+ async function safeGetRuntime(client) {
405
+ try {
406
+ return await client.getRuntime();
407
+ }
408
+ catch {
409
+ return undefined;
410
+ }
411
+ }
412
+ function normalizeResolvedParams(params) {
413
+ const normalized = {};
414
+ for (const [key, value] of Object.entries(params)) {
415
+ normalized[key] = coerceScalar(value);
416
+ }
417
+ return normalized;
418
+ }
419
+ function coerceScalar(value) {
420
+ if (typeof value !== 'string') {
421
+ return value;
422
+ }
423
+ const trimmed = value.trim();
424
+ if (trimmed === 'true')
425
+ return true;
426
+ if (trimmed === 'false')
427
+ return false;
428
+ if (trimmed === 'null')
429
+ return null;
430
+ if (/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/.test(trimmed))
431
+ return Number(trimmed);
432
+ if ((trimmed.startsWith('{') && trimmed.endsWith('}')) ||
433
+ (trimmed.startsWith('[') && trimmed.endsWith(']')) ||
434
+ (trimmed.startsWith('"') && trimmed.endsWith('"'))) {
435
+ try {
436
+ return JSON.parse(trimmed);
437
+ }
438
+ catch {
439
+ return value;
440
+ }
441
+ }
442
+ return value;
443
+ }
444
+ function readJsonParam(value, name) {
445
+ if (value === undefined)
446
+ return undefined;
447
+ if (typeof value !== 'string')
448
+ return value;
449
+ try {
450
+ return JSON.parse(value);
451
+ }
452
+ catch (error) {
453
+ throw new Error(`GitHub step params.${name} must be valid JSON: ${error instanceof Error ? error.message : String(error)}`);
454
+ }
455
+ }
456
+ function isRecord(value) {
457
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
458
+ }
459
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/integrations/github.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import type { RunnerStepExecutor, WorkflowStep } from '../types.js';
2
+ import { SlackClient } from '@relayflows/slack-primitive';
3
+ import { type SlackActionResult, type SlackRuntimeConfig } from '@relayflows/slack-primitive';
4
+ export type SlackStepOutputMode = 'data' | 'result' | 'summary' | 'raw' | 'none';
5
+ export type SlackStepOutputFormat = 'json' | 'text';
6
+ export interface SlackStepOutputConfig {
7
+ /** Which action result becomes the workflow step output. Defaults to "data". */
8
+ mode?: SlackStepOutputMode;
9
+ /** Emit JSON for structured chaining or text for simple downstream interpolation. Defaults to "json". */
10
+ format?: SlackStepOutputFormat;
11
+ /** Select a nested field from the projected output, e.g. "ts" or "data.channel". */
12
+ path?: string;
13
+ /** Include adapter metadata such as runtime and timing in JSON output. Defaults false. */
14
+ includeMetadata?: boolean;
15
+ /** Pretty-print JSON output. Defaults false. */
16
+ pretty?: boolean;
17
+ }
18
+ export interface SlackStepConfig {
19
+ /** Unique step name within the workflow. */
20
+ name: string;
21
+ /** Dependencies in the Relay workflow DAG. */
22
+ dependsOn?: string[];
23
+ /** Slack action to execute. Phase A supports postMessage. */
24
+ action: 'postMessage';
25
+ /** Slack channel id or #channel-name reference. Falls back to SLACK_DEFAULT_CHANNEL when omitted. */
26
+ channel?: string;
27
+ /** Message text. Values may include workflow templates such as {{steps.plan.output.title}}. */
28
+ text: string;
29
+ /** Optional parent message timestamp for threaded delivery. */
30
+ threadTs?: string;
31
+ /** User mentions to prefix when resolved. Unresolved mentions are soft warnings in output. */
32
+ mentions?: string[];
33
+ /** Slack unfurl setting for links and media. */
34
+ unfurl?: boolean;
35
+ /** Runtime settings for the local Slack Web API runtime. */
36
+ config?: SlackRuntimeConfig;
37
+ /** Controls the string captured as {{steps.<name>.output}}. */
38
+ output?: SlackStepOutputConfig;
39
+ /** Workflow step timeout in milliseconds. */
40
+ timeoutMs?: number;
41
+ /** Number of retry attempts when the workflow runner retries this integration step. */
42
+ retries?: number;
43
+ }
44
+ export interface SlackStepExecutionContext {
45
+ workspaceId?: string;
46
+ client?: SlackClient;
47
+ config?: SlackRuntimeConfig;
48
+ }
49
+ export interface SlackStepExecutionResult<TOutput = unknown> {
50
+ success: boolean;
51
+ output: string;
52
+ result: SlackActionResult<TOutput>;
53
+ error?: string;
54
+ }
55
+ export interface SlackIntegrationStepResult {
56
+ output: string;
57
+ success: boolean;
58
+ }
59
+ /**
60
+ * Create a Relay integration step for posting a Slack message.
61
+ * @param config - Slack step configuration.
62
+ * @returns Workflow integration step.
63
+ */
64
+ export declare function createSlackStep(config: SlackStepConfig): WorkflowStep;
65
+ export declare class SlackStepExecutor implements RunnerStepExecutor {
66
+ private readonly options;
67
+ constructor(options?: SlackRuntimeConfig);
68
+ executeAgentStep(): Promise<string>;
69
+ execute<TOutput = unknown>(config: SlackStepConfig, context?: SlackStepExecutionContext): Promise<SlackStepExecutionResult<TOutput>>;
70
+ executeIntegrationStep(step: WorkflowStep, resolvedParams: Record<string, string>): Promise<SlackIntegrationStepResult>;
71
+ }
72
+ /**
73
+ * Rebuild a Slack step config from resolved workflow params.
74
+ * @param step - Workflow step.
75
+ * @param resolvedParams - Params after workflow templating.
76
+ * @returns Slack step configuration.
77
+ */
78
+ export declare function slackStepConfigFromWorkflowStep(step: WorkflowStep, resolvedParams: Record<string, string>): SlackStepConfig;
79
+ export declare function renderSlackTemplates(value: string, data: Record<string, unknown>): string;
80
+ //# sourceMappingURL=slack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../src/integrations/slack.ts"],"names":[],"mappings":"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"}