@relayflows/core 0.0.1 → 1.0.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 (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 +76 -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,184 @@
1
+ function emptyUsage() {
2
+ return { input: 0, output: 0, cacheRead: 0, total: 0 };
3
+ }
4
+ function toUsage(value) {
5
+ if (typeof value === 'number') {
6
+ const input = Number.isFinite(value) ? Math.max(0, Math.round(value)) : 0;
7
+ return { input, output: 0, cacheRead: 0, total: input };
8
+ }
9
+ const input = Number.isFinite(value.input) ? Math.max(0, Math.round(value.input ?? 0)) : 0;
10
+ const output = Number.isFinite(value.output) ? Math.max(0, Math.round(value.output ?? 0)) : 0;
11
+ const cacheRead = Number.isFinite(value.cacheRead) ? Math.max(0, Math.round(value.cacheRead ?? 0)) : 0;
12
+ return {
13
+ input,
14
+ output,
15
+ cacheRead,
16
+ total: input + output,
17
+ };
18
+ }
19
+ function addUsage(left, right) {
20
+ const input = left.input + right.input;
21
+ const output = left.output + right.output;
22
+ const cacheRead = left.cacheRead + right.cacheRead;
23
+ return {
24
+ input,
25
+ output,
26
+ cacheRead,
27
+ total: input + output,
28
+ };
29
+ }
30
+ export class BudgetExceededError extends Error {
31
+ stepName;
32
+ budgetType;
33
+ limit;
34
+ actual;
35
+ used;
36
+ constructor(stepName, budgetType, limit, actual) {
37
+ const qualifier = budgetType === 'workflow' ? 'workflow budget exhausted' : 'agent budget exceeded';
38
+ super(`Step "${stepName}" cannot continue: ${qualifier} (${actual}/${limit})`);
39
+ this.name = 'BudgetExceededError';
40
+ this.stepName = stepName;
41
+ this.budgetType = budgetType;
42
+ this.limit = limit;
43
+ this.actual = actual;
44
+ this.used = actual;
45
+ }
46
+ }
47
+ export class BudgetTracker {
48
+ defaultAgentBudget;
49
+ workflowBudget;
50
+ stepLimits = new Map();
51
+ stepUsage = new Map();
52
+ totalUsage = emptyUsage();
53
+ workflowBudgetExhausted = false;
54
+ constructor(options) {
55
+ this.defaultAgentBudget = options.perAgent;
56
+ this.workflowBudget = options.workflowBudget ?? options.perWorkflow;
57
+ for (const step of options.steps ?? []) {
58
+ this.stepLimits.set(step.stepName, step.maxTokens);
59
+ }
60
+ }
61
+ recordUsage(stepName, usage) {
62
+ const normalized = toUsage(usage);
63
+ const current = this.stepUsage.get(stepName) ?? emptyUsage();
64
+ const next = addUsage(current, normalized);
65
+ this.stepUsage.set(stepName, next);
66
+ this.totalUsage = addUsage(this.totalUsage, normalized);
67
+ if (this.workflowBudget !== undefined && this.totalUsage.total >= this.workflowBudget) {
68
+ this.workflowBudgetExhausted = true;
69
+ }
70
+ }
71
+ getStepUsage(stepName) {
72
+ return this.stepUsage.get(stepName) ?? emptyUsage();
73
+ }
74
+ getTotalUsage() {
75
+ return this.totalUsage;
76
+ }
77
+ getRemainingBudget() {
78
+ return {
79
+ agent: this.defaultAgentBudget !== undefined
80
+ ? Math.max(0, this.defaultAgentBudget - this.totalUsage.total)
81
+ : undefined,
82
+ workflow: this.workflowBudget !== undefined
83
+ ? Math.max(0, this.workflowBudget - this.totalUsage.total)
84
+ : undefined,
85
+ };
86
+ }
87
+ checkCanSpawn(stepName) {
88
+ if (this.workflowBudget !== undefined && this.totalUsage.total >= this.workflowBudget) {
89
+ return {
90
+ allowed: false,
91
+ reason: `Cannot spawn ${stepName}: workflow budget exceeded (${this.totalUsage.total}/${this.workflowBudget})`,
92
+ };
93
+ }
94
+ if (this.workflowBudget !== undefined) {
95
+ const remainingWorkflowBudget = this.workflowBudget - this.totalUsage.total;
96
+ const stepLimit = this.getStepLimit(stepName);
97
+ const minimumHeadroom = stepLimit !== undefined
98
+ ? Math.min(stepLimit, this.workflowBudget)
99
+ : this.defaultAgentBudget !== undefined
100
+ ? Math.ceil(this.defaultAgentBudget * 0.1)
101
+ : Math.ceil(this.workflowBudget * 0.1);
102
+ if (remainingWorkflowBudget <= minimumHeadroom) {
103
+ return {
104
+ allowed: false,
105
+ reason: stepLimit !== undefined
106
+ ? `Cannot spawn ${stepName}: remaining workflow budget ${remainingWorkflowBudget} is below step budget ${stepLimit}`
107
+ : this.defaultAgentBudget !== undefined
108
+ ? `Cannot spawn ${stepName}: remaining workflow budget ${remainingWorkflowBudget} ` +
109
+ `is below 10% of per-agent budget ${this.defaultAgentBudget}`
110
+ : `Cannot spawn ${stepName}: remaining workflow budget ${remainingWorkflowBudget} ` +
111
+ `is below 10% headroom threshold for workflow budget ${this.workflowBudget}`,
112
+ };
113
+ }
114
+ }
115
+ return { allowed: true };
116
+ }
117
+ isOverBudget(stepName) {
118
+ const stepUsage = this.getStepUsage(stepName);
119
+ const stepLimit = this.getStepLimit(stepName);
120
+ if (stepLimit !== undefined && stepUsage.total > stepLimit) {
121
+ return {
122
+ over: true,
123
+ reason: `Step "${stepName}" exceeded per-agent budget (${stepUsage.total}/${stepLimit})`,
124
+ };
125
+ }
126
+ if (this.workflowBudget !== undefined && this.totalUsage.total > this.workflowBudget) {
127
+ return {
128
+ over: true,
129
+ reason: `Workflow exceeded total budget (${this.totalUsage.total}/${this.workflowBudget})`,
130
+ };
131
+ }
132
+ return { over: false };
133
+ }
134
+ getBudgetStatus(stepName) {
135
+ const stepUsage = this.getStepUsage(stepName);
136
+ const stepLimit = this.getStepLimit(stepName);
137
+ return {
138
+ agentLimitExceeded: stepLimit !== undefined && stepUsage.total > stepLimit,
139
+ workflowBudgetExceeded: this.workflowBudget !== undefined && this.totalUsage.total > this.workflowBudget,
140
+ workflowBudgetExhausted: this.workflowBudget !== undefined &&
141
+ (this.workflowBudgetExhausted || this.totalUsage.total >= this.workflowBudget),
142
+ };
143
+ }
144
+ getStepBudgetStatus(stepName) {
145
+ const usage = this.stepUsage.get(stepName);
146
+ const hasExplicitLimit = this.stepLimits.has(stepName);
147
+ const limit = this.getStepLimit(stepName);
148
+ if (!usage && !hasExplicitLimit && limit === undefined) {
149
+ return undefined;
150
+ }
151
+ return {
152
+ used: usage?.total,
153
+ limit,
154
+ over: limit !== undefined && (usage?.total ?? 0) > limit,
155
+ };
156
+ }
157
+ getRunSummaryBudgetData() {
158
+ const steps = new Map();
159
+ const stepNames = new Set([...this.stepLimits.keys(), ...this.stepUsage.keys()]);
160
+ for (const stepName of stepNames) {
161
+ const status = this.getStepBudgetStatus(stepName);
162
+ if (status) {
163
+ steps.set(stepName, status);
164
+ }
165
+ }
166
+ const workflow = this.workflowBudget !== undefined || this.totalUsage.total > 0
167
+ ? {
168
+ used: this.totalUsage.total,
169
+ limit: this.workflowBudget,
170
+ exhausted: this.workflowBudget !== undefined &&
171
+ (this.workflowBudgetExhausted || this.totalUsage.total >= this.workflowBudget),
172
+ }
173
+ : undefined;
174
+ if (steps.size === 0 && !workflow) {
175
+ return undefined;
176
+ }
177
+ return { steps, workflow };
178
+ }
179
+ getStepLimit(stepName) {
180
+ const limit = this.stepLimits.get(stepName);
181
+ return limit ?? this.defaultAgentBudget;
182
+ }
183
+ }
184
+ //# sourceMappingURL=budget-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget-tracker.js","sourceRoot":"","sources":["../src/budget-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,229 @@
1
+ import type { RuntimeSpawnOptions } from '@agent-relay/harness-driver';
2
+ import type { AgentCli, AgentPreset, CoordinationConfig, DryRunReport, IdleNudgeConfig, PathDefinition, RelayYamlConfig, StateConfig, SwarmPattern, TrajectoryConfig, VerificationCheck, WorkflowRunRow } from './types.js';
3
+ import { type WorkflowEventListener } from './runner.js';
4
+ import type { RunnerStepExecutor } from './types.js';
5
+ import { type LogLevel } from './default-logger.js';
6
+ import type { VariableContext } from './template-resolver.js';
7
+ export interface AgentOptions {
8
+ cli: AgentCli;
9
+ role?: string;
10
+ task?: string;
11
+ channels?: string[];
12
+ model?: string;
13
+ maxTokens?: number;
14
+ timeoutMs?: number;
15
+ retries?: number;
16
+ /**
17
+ * Seconds of silence on the agent's PTY before the runtime marks it idle and
18
+ * tears it down. Default: 30s. Set to `0` to disable idle detection entirely.
19
+ *
20
+ * When to override (per-agent):
21
+ * - You expect long quiet stretches by design — a long-running reviewer
22
+ * waiting for downstream verdicts, a grader watching a file that updates
23
+ * every few minutes, or a `@-mention` recipient whose triggering event
24
+ * may arrive >30s after spawn. Setting `0` (or a generous N) prevents
25
+ * the runtime from killing the agent before the awaited event arrives.
26
+ *
27
+ * When NOT to override:
28
+ * - One-shot worker steps. The default is right; idle-as-complete is what
29
+ * makes `OWNER_DECISION: COMPLETE` + clean exit fast.
30
+ *
31
+ * See the `writing-agent-relay-workflows` skill ("Idle detection beats
32
+ * 'wait for X' prompts") for the trade-offs around long-running interactive
33
+ * agents and the Per-turn interactive spawn alternative.
34
+ */
35
+ idleThresholdSecs?: number;
36
+ /** When false, the agent runs as a non-interactive subprocess (no PTY, no relay messaging).
37
+ * Default: true. */
38
+ interactive?: boolean;
39
+ /** Agent preset: 'lead' (interactive PTY), 'worker' | 'reviewer' | 'analyst' (non-interactive subprocess). */
40
+ preset?: AgentPreset;
41
+ /** Skills to make available to the agent (for API-mode agents). */
42
+ skills?: string;
43
+ }
44
+ /** Options for agent steps (default). */
45
+ export interface AgentStepOptions {
46
+ agent: string;
47
+ task: string;
48
+ cwd?: string;
49
+ dependsOn?: string[];
50
+ verification?: VerificationCheck;
51
+ timeoutMs?: number;
52
+ retries?: number;
53
+ }
54
+ /** Options for deterministic (shell command) steps. */
55
+ export interface DeterministicStepOptions {
56
+ type: 'deterministic';
57
+ command: string;
58
+ cwd?: string;
59
+ /** Capture stdout as step output for downstream steps. Default: true. */
60
+ captureOutput?: boolean;
61
+ /** Fail if command exit code is non-zero. Default: true. */
62
+ failOnError?: boolean;
63
+ dependsOn?: string[];
64
+ verification?: VerificationCheck;
65
+ timeoutMs?: number;
66
+ }
67
+ /** Options for worktree steps (create/checkout git worktrees). */
68
+ export interface WorktreeStepOptions {
69
+ type: 'worktree';
70
+ branch: string;
71
+ baseBranch?: string;
72
+ path?: string;
73
+ createBranch?: boolean;
74
+ dependsOn?: string[];
75
+ timeoutMs?: number;
76
+ }
77
+ export type StepOptions = AgentStepOptions | DeterministicStepOptions | WorktreeStepOptions;
78
+ export interface ErrorOptions {
79
+ maxRetries?: number;
80
+ retryDelayMs?: number;
81
+ notifyChannel?: string;
82
+ repairAgent?: string;
83
+ repairRetries?: number;
84
+ }
85
+ export type ReliabilityOptions = ErrorOptions;
86
+ export interface WorkflowRunOptions {
87
+ /** Run a specific workflow by name (default: first). */
88
+ workflow?: string;
89
+ /** Template variable substitutions. */
90
+ vars?: VariableContext;
91
+ /** Working directory (default: process.cwd()). */
92
+ cwd?: string;
93
+ /** AgentRelay options (all optional). */
94
+ relay?: RuntimeSpawnOptions;
95
+ /** Progress callback. */
96
+ onEvent?: WorkflowEventListener;
97
+ /** Validate and print execution plan without spawning agents. */
98
+ dryRun?: boolean;
99
+ /** External step executor (e.g. Daytona sandbox backend). */
100
+ executor?: RunnerStepExecutor;
101
+ /** Start from a specific step, skipping all predecessors. */
102
+ startFrom?: string;
103
+ /** Previous run ID whose cached outputs are used with startFrom. */
104
+ previousRunId?: string;
105
+ /** Console log verbosity: "verbose" | "normal" (default) | "quiet" | false (silent). */
106
+ logLevel?: LogLevel;
107
+ /** Renderer: "listr" for listr2 UI, "default" for console logger, false to disable. */
108
+ renderer?: 'listr' | 'default' | false;
109
+ /** Run the workflow in the cloud instead of locally. */
110
+ cloud?: boolean;
111
+ /** Cloud API base URL (or set CLOUD_API_URL env var). */
112
+ cloudApiUrl?: string;
113
+ /** Cloud API authentication token (or set CLOUD_API_TOKEN env var). */
114
+ cloudApiToken?: string;
115
+ /** Environment secrets to forward to cloud agents. */
116
+ envSecrets?: Record<string, string>;
117
+ /** Polling interval in ms for cloud run status checks. */
118
+ cloudPollIntervalMs?: number;
119
+ /** Callback invoked when the cloud run status changes. */
120
+ onCloudStatusChange?: (status: string, runId: string) => void;
121
+ }
122
+ /**
123
+ * Fluent builder for constructing workflow configurations programmatically.
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * import { workflow } from "@relayflows/core";
128
+ *
129
+ * const result = await workflow("my-workflow")
130
+ * .pattern("dag")
131
+ * .agent("worker", { cli: "claude", role: "Backend engineer" })
132
+ * .step("build", { agent: "worker", task: "Build the project" })
133
+ * .step("test", { agent: "worker", task: "Run tests", dependsOn: ["build"] })
134
+ * .run();
135
+ * ```
136
+ */
137
+ export declare class WorkflowBuilder {
138
+ private _name;
139
+ private _description?;
140
+ private _pattern;
141
+ private _maxConcurrency?;
142
+ private _timeoutMs?;
143
+ private _channel?;
144
+ private _idleNudge?;
145
+ private _paths?;
146
+ private _agents;
147
+ private _steps;
148
+ private _errorHandling?;
149
+ private _coordination?;
150
+ private _state?;
151
+ private _trajectories?;
152
+ private _startFrom?;
153
+ private _previousRunId?;
154
+ constructor(name: string);
155
+ /** Set workflow description. */
156
+ description(desc: string): this;
157
+ /** Set swarm pattern (default: "dag"). */
158
+ pattern(p: SwarmPattern): this;
159
+ /** Set maximum concurrent agents. */
160
+ maxConcurrency(n: number): this;
161
+ /** Set global timeout in milliseconds. */
162
+ timeout(ms: number): this;
163
+ /** Set the relay channel for agent communication. */
164
+ channel(ch: string): this;
165
+ /** Configure idle agent detection and nudging for interactive agents. */
166
+ idleNudge(config: IdleNudgeConfig): this;
167
+ /** Set workflow coordination settings (barriers, voting threshold, consensus strategy). */
168
+ coordination(config: CoordinationConfig): this;
169
+ /** Configure shared workflow state backend settings. */
170
+ state(config: StateConfig): this;
171
+ /** Configure trajectory recording, or pass `false` to disable it. */
172
+ trajectories(config: TrajectoryConfig | false): this;
173
+ /** Start execution from a specific step, skipping all predecessor steps. */
174
+ startFrom(stepName: string): this;
175
+ /** Set the previous run ID whose cached step outputs should be used with startFrom. */
176
+ previousRunId(id: string): this;
177
+ /**
178
+ * Declare named paths to additional directories the workflow needs.
179
+ *
180
+ * For multi-repo cloud workflows (relay#774, cloud#302), each entry is
181
+ * tarballed by the CLI at submit time and mounted at
182
+ * `/home/daytona/workspace/{name}/` in the sandbox. Locally, the runner
183
+ * resolves `path` relative to the workflow file's parent directory and
184
+ * agents reference each entry by its declared `name`.
185
+ *
186
+ * Calling this is a no-op for the runtime — the runner doesn't need
187
+ * `paths` to execute steps. The CLI and the cloud bootstrap consume
188
+ * it. Declaring via the builder keeps single-source-of-truth for tools
189
+ * that walk the built config (e.g. dashboards, dry-run reports).
190
+ */
191
+ paths(paths: PathDefinition[]): this;
192
+ /** Add an agent definition. */
193
+ agent(name: string, options: AgentOptions): this;
194
+ /** Add a workflow step (agent or deterministic). */
195
+ step(name: string, options: StepOptions): this;
196
+ /** Set error handling strategy. */
197
+ onError(strategy: 'fail-fast' | 'continue' | 'retry', options?: ErrorOptions): this;
198
+ /**
199
+ * Opt into the product reliability contract: repairable workflow failures get
200
+ * routed through an agent and retried before the workflow is allowed to fail.
201
+ */
202
+ repairable(options?: ReliabilityOptions): this;
203
+ /** Alias for `.repairable()` for workflow authors who think in product terms. */
204
+ reliable(options?: ReliabilityOptions): this;
205
+ private validateBuilderState;
206
+ /** Build and return the RelayYamlConfig object. */
207
+ toConfig(): RelayYamlConfig;
208
+ /** Serialize the config to a YAML string. */
209
+ toYaml(): string;
210
+ /** Build the config and execute it with the WorkflowRunner. */
211
+ run(options: WorkflowRunOptions & {
212
+ dryRun: true;
213
+ }): Promise<DryRunReport>;
214
+ run(options?: WorkflowRunOptions): Promise<WorkflowRunRow>;
215
+ }
216
+ /**
217
+ * Create a new workflow builder.
218
+ *
219
+ * @example
220
+ * ```typescript
221
+ * const result = await workflow("my-task")
222
+ * .pattern("fan-out")
223
+ * .agent("worker", { cli: "claude" })
224
+ * .step("do-work", { agent: "worker", task: "Build the feature" })
225
+ * .run();
226
+ * ```
227
+ */
228
+ export declare function workflow(name: string): WorkflowBuilder;
229
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}