@agent-relay/sdk 2.3.14 → 2.3.15

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/README.md +68 -838
  2. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  3. package/bin/agent-relay-broker-darwin-x64 +0 -0
  4. package/bin/agent-relay-broker-linux-arm64 +0 -0
  5. package/bin/agent-relay-broker-linux-x64 +0 -0
  6. package/dist/__tests__/contract-fixtures.test.d.ts +2 -0
  7. package/dist/__tests__/contract-fixtures.test.d.ts.map +1 -0
  8. package/dist/__tests__/contract-fixtures.test.js +85 -0
  9. package/dist/__tests__/contract-fixtures.test.js.map +1 -0
  10. package/dist/__tests__/facade.test.d.ts +2 -0
  11. package/dist/__tests__/facade.test.d.ts.map +1 -0
  12. package/dist/__tests__/facade.test.js +305 -0
  13. package/dist/__tests__/facade.test.js.map +1 -0
  14. package/dist/__tests__/integration.test.d.ts +2 -0
  15. package/dist/__tests__/integration.test.d.ts.map +1 -0
  16. package/dist/__tests__/integration.test.js +169 -0
  17. package/dist/__tests__/integration.test.js.map +1 -0
  18. package/dist/__tests__/pty.test.d.ts +2 -0
  19. package/dist/__tests__/pty.test.d.ts.map +1 -0
  20. package/dist/__tests__/pty.test.js +20 -0
  21. package/dist/__tests__/pty.test.js.map +1 -0
  22. package/dist/__tests__/quickstart.test.d.ts +2 -0
  23. package/dist/__tests__/quickstart.test.d.ts.map +1 -0
  24. package/dist/__tests__/quickstart.test.js +176 -0
  25. package/dist/__tests__/quickstart.test.js.map +1 -0
  26. package/dist/__tests__/spawn-from-env.test.d.ts +2 -0
  27. package/dist/__tests__/spawn-from-env.test.d.ts.map +1 -0
  28. package/dist/__tests__/spawn-from-env.test.js +206 -0
  29. package/dist/__tests__/spawn-from-env.test.js.map +1 -0
  30. package/dist/__tests__/unit.test.d.ts +2 -0
  31. package/dist/__tests__/unit.test.d.ts.map +1 -0
  32. package/dist/__tests__/unit.test.js +347 -0
  33. package/dist/__tests__/unit.test.js.map +1 -0
  34. package/dist/browser.d.ts +16 -0
  35. package/dist/browser.d.ts.map +1 -0
  36. package/dist/browser.js +19 -0
  37. package/dist/browser.js.map +1 -0
  38. package/dist/client.d.ts +140 -526
  39. package/dist/client.d.ts.map +1 -1
  40. package/dist/client.js +430 -1509
  41. package/dist/client.js.map +1 -1
  42. package/dist/consensus-helpers.d.ts +103 -0
  43. package/dist/consensus-helpers.d.ts.map +1 -0
  44. package/dist/consensus-helpers.js +147 -0
  45. package/dist/consensus-helpers.js.map +1 -0
  46. package/dist/consensus.d.ts +72 -0
  47. package/dist/consensus.d.ts.map +1 -0
  48. package/dist/consensus.js +378 -0
  49. package/dist/consensus.js.map +1 -0
  50. package/dist/examples/demo.d.ts +2 -0
  51. package/dist/examples/demo.d.ts.map +1 -0
  52. package/dist/examples/demo.js +63 -0
  53. package/dist/examples/demo.js.map +1 -0
  54. package/dist/examples/example.d.ts +2 -0
  55. package/dist/examples/example.d.ts.map +1 -0
  56. package/dist/examples/example.js +80 -0
  57. package/dist/examples/example.js.map +1 -0
  58. package/dist/examples/quickstart.d.ts +2 -0
  59. package/dist/examples/quickstart.d.ts.map +1 -0
  60. package/dist/examples/quickstart.js +56 -0
  61. package/dist/examples/quickstart.js.map +1 -0
  62. package/dist/examples/ralph-loop.d.ts +2 -0
  63. package/dist/examples/ralph-loop.d.ts.map +1 -0
  64. package/dist/examples/ralph-loop.js +281 -0
  65. package/dist/examples/ralph-loop.js.map +1 -0
  66. package/dist/examples/workflow-superiority.d.ts +32 -0
  67. package/dist/examples/workflow-superiority.d.ts.map +1 -0
  68. package/dist/examples/workflow-superiority.js +1421 -0
  69. package/dist/examples/workflow-superiority.js.map +1 -0
  70. package/dist/index.d.ts +13 -20
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +12 -26
  73. package/dist/index.js.map +1 -1
  74. package/dist/logs.d.ts +70 -25
  75. package/dist/logs.d.ts.map +1 -1
  76. package/dist/logs.js +238 -42
  77. package/dist/logs.js.map +1 -1
  78. package/dist/models.d.ts +9 -0
  79. package/dist/models.d.ts.map +1 -0
  80. package/dist/models.js +17 -0
  81. package/dist/models.js.map +1 -0
  82. package/dist/protocol.d.ts +366 -0
  83. package/dist/protocol.d.ts.map +1 -0
  84. package/dist/protocol.js +2 -0
  85. package/dist/protocol.js.map +1 -0
  86. package/dist/pty.d.ts +8 -0
  87. package/dist/pty.d.ts.map +1 -0
  88. package/dist/pty.js +26 -0
  89. package/dist/pty.js.map +1 -0
  90. package/dist/relay-adapter.d.ts +139 -0
  91. package/dist/relay-adapter.d.ts.map +1 -0
  92. package/dist/relay-adapter.js +210 -0
  93. package/dist/relay-adapter.js.map +1 -0
  94. package/dist/relay.d.ts +304 -0
  95. package/dist/relay.d.ts.map +1 -0
  96. package/dist/relay.js +910 -0
  97. package/dist/relay.js.map +1 -0
  98. package/dist/shadow.d.ts +101 -0
  99. package/dist/shadow.d.ts.map +1 -0
  100. package/dist/shadow.js +174 -0
  101. package/dist/shadow.js.map +1 -0
  102. package/dist/spawn-from-env.d.ts +77 -0
  103. package/dist/spawn-from-env.d.ts.map +1 -0
  104. package/dist/spawn-from-env.js +172 -0
  105. package/dist/spawn-from-env.js.map +1 -0
  106. package/dist/workflows/barrier.d.ts +72 -0
  107. package/dist/workflows/barrier.d.ts.map +1 -0
  108. package/dist/workflows/barrier.js +162 -0
  109. package/dist/workflows/barrier.js.map +1 -0
  110. package/dist/workflows/builder.d.ts +114 -0
  111. package/dist/workflows/builder.d.ts.map +1 -0
  112. package/dist/workflows/builder.js +201 -0
  113. package/dist/workflows/builder.js.map +1 -0
  114. package/dist/workflows/cli.d.ts +11 -0
  115. package/dist/workflows/cli.d.ts.map +1 -0
  116. package/dist/workflows/cli.js +144 -0
  117. package/dist/workflows/cli.js.map +1 -0
  118. package/dist/workflows/coordinator.d.ts +73 -0
  119. package/dist/workflows/coordinator.d.ts.map +1 -0
  120. package/dist/workflows/coordinator.js +647 -0
  121. package/dist/workflows/coordinator.js.map +1 -0
  122. package/dist/workflows/custom-steps.d.ts +73 -0
  123. package/dist/workflows/custom-steps.d.ts.map +1 -0
  124. package/dist/workflows/custom-steps.js +321 -0
  125. package/dist/workflows/custom-steps.js.map +1 -0
  126. package/dist/workflows/dry-run-format.d.ts +6 -0
  127. package/dist/workflows/dry-run-format.d.ts.map +1 -0
  128. package/dist/workflows/dry-run-format.js +68 -0
  129. package/dist/workflows/dry-run-format.js.map +1 -0
  130. package/dist/workflows/file-db.d.ts +33 -0
  131. package/dist/workflows/file-db.d.ts.map +1 -0
  132. package/dist/workflows/file-db.js +108 -0
  133. package/dist/workflows/file-db.js.map +1 -0
  134. package/dist/workflows/index.d.ts +15 -0
  135. package/dist/workflows/index.d.ts.map +1 -0
  136. package/dist/workflows/index.js +15 -0
  137. package/dist/workflows/index.js.map +1 -0
  138. package/dist/workflows/memory-db.d.ts +17 -0
  139. package/dist/workflows/memory-db.d.ts.map +1 -0
  140. package/dist/workflows/memory-db.js +33 -0
  141. package/dist/workflows/memory-db.js.map +1 -0
  142. package/dist/workflows/run.d.ts +38 -0
  143. package/dist/workflows/run.d.ts.map +1 -0
  144. package/dist/workflows/run.js +25 -0
  145. package/dist/workflows/run.js.map +1 -0
  146. package/dist/workflows/runner.d.ts +320 -0
  147. package/dist/workflows/runner.d.ts.map +1 -0
  148. package/dist/workflows/runner.js +2821 -0
  149. package/dist/workflows/runner.js.map +1 -0
  150. package/dist/workflows/state.d.ts +77 -0
  151. package/dist/workflows/state.d.ts.map +1 -0
  152. package/dist/workflows/state.js +140 -0
  153. package/dist/workflows/state.js.map +1 -0
  154. package/dist/workflows/templates.d.ts +47 -0
  155. package/dist/workflows/templates.d.ts.map +1 -0
  156. package/dist/workflows/templates.js +405 -0
  157. package/dist/workflows/templates.js.map +1 -0
  158. package/dist/workflows/trajectory.d.ts +87 -0
  159. package/dist/workflows/trajectory.d.ts.map +1 -0
  160. package/dist/workflows/trajectory.js +441 -0
  161. package/dist/workflows/trajectory.js.map +1 -0
  162. package/dist/workflows/types.d.ts +306 -0
  163. package/dist/workflows/types.d.ts.map +1 -0
  164. package/dist/workflows/types.js +23 -0
  165. package/dist/workflows/types.js.map +1 -0
  166. package/dist/workflows/validator.d.ts +11 -0
  167. package/dist/workflows/validator.d.ts.map +1 -0
  168. package/dist/workflows/validator.js +128 -0
  169. package/dist/workflows/validator.js.map +1 -0
  170. package/package.json +59 -53
  171. package/dist/discovery.d.ts +0 -10
  172. package/dist/discovery.d.ts.map +0 -1
  173. package/dist/discovery.js +0 -22
  174. package/dist/discovery.js.map +0 -1
  175. package/dist/errors.d.ts +0 -9
  176. package/dist/errors.d.ts.map +0 -1
  177. package/dist/errors.js +0 -9
  178. package/dist/errors.js.map +0 -1
  179. package/dist/protocol/index.d.ts +0 -8
  180. package/dist/protocol/index.d.ts.map +0 -1
  181. package/dist/protocol/index.js +0 -8
  182. package/dist/protocol/index.js.map +0 -1
@@ -0,0 +1,405 @@
1
+ import { existsSync, promises as fs } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
5
+ const YAML_EXTENSIONS = ['.yaml', '.yml'];
6
+ export const BUILT_IN_TEMPLATE_NAMES = [
7
+ 'feature-dev',
8
+ 'bug-fix',
9
+ 'code-review',
10
+ 'security-audit',
11
+ 'refactor',
12
+ 'documentation',
13
+ 'review-loop',
14
+ ];
15
+ function isRecord(value) {
16
+ return typeof value === 'object' && value !== null;
17
+ }
18
+ function hasYamlExtension(fileName) {
19
+ return YAML_EXTENSIONS.some((ext) => fileName.endsWith(ext));
20
+ }
21
+ export class TemplateRegistry {
22
+ builtInTemplatesDir;
23
+ customTemplatesDir;
24
+ fetcher;
25
+ constructor(options = {}) {
26
+ this.builtInTemplatesDir = this.resolveBuiltInTemplatesDir(options.builtInTemplatesDir);
27
+ this.customTemplatesDir = options.customTemplatesDir
28
+ ? path.resolve(options.customTemplatesDir)
29
+ : path.resolve(options.workspaceDir ?? process.cwd(), '.relay/workflows');
30
+ this.fetcher = options.fetcher ?? fetch;
31
+ }
32
+ listBuiltInTemplates() {
33
+ return [...BUILT_IN_TEMPLATE_NAMES];
34
+ }
35
+ async listCustomTemplates() {
36
+ const files = await this.safeReadDir(this.customTemplatesDir);
37
+ return files
38
+ .filter((fileName) => hasYamlExtension(fileName))
39
+ .map((fileName) => this.normalizeTemplateName(fileName))
40
+ .sort();
41
+ }
42
+ async listTemplates() {
43
+ const custom = await this.listCustomTemplates();
44
+ const merged = new Set([...BUILT_IN_TEMPLATE_NAMES, ...custom]);
45
+ return Array.from(merged).sort();
46
+ }
47
+ async hasTemplate(name) {
48
+ try {
49
+ await this.resolveTemplatePath(name);
50
+ return true;
51
+ }
52
+ catch {
53
+ return false;
54
+ }
55
+ }
56
+ async loadTemplate(name, options = {}) {
57
+ const templatePath = await this.resolveTemplatePath(name);
58
+ const template = await this.readTemplateFile(templatePath);
59
+ if (options.overrides && Object.keys(options.overrides).length > 0) {
60
+ return this.applyOverrides(template, options.overrides);
61
+ }
62
+ return template;
63
+ }
64
+ async resolveTemplateReference(input, options = {}) {
65
+ if (typeof input === 'string') {
66
+ return this.loadTemplate(input, options);
67
+ }
68
+ if (this.isTemplateShorthand(input)) {
69
+ const { swarm, overrides = {}, ...rest } = input;
70
+ const mergedOverrides = {
71
+ ...overrides,
72
+ ...(options.overrides ?? {}),
73
+ };
74
+ const baseTemplate = await this.loadTemplate(swarm, {
75
+ overrides: mergedOverrides,
76
+ });
77
+ return this.mergeRelayConfig(baseTemplate, rest);
78
+ }
79
+ const config = this.cloneValue(input);
80
+ if (options.overrides && Object.keys(options.overrides).length > 0) {
81
+ return this.applyOverrides(config, options.overrides);
82
+ }
83
+ return config;
84
+ }
85
+ applyOverrides(config, overrides) {
86
+ const nextConfig = this.cloneValue(config);
87
+ for (const [overridePath, value] of Object.entries(overrides)) {
88
+ this.setOverride(nextConfig, overridePath, value);
89
+ }
90
+ return nextConfig;
91
+ }
92
+ async installExternalTemplate(url, name) {
93
+ const response = await this.fetcher(url);
94
+ if (!response.ok) {
95
+ throw new Error(`Failed to fetch template from ${url}: ${response.status} ${response.statusText}`);
96
+ }
97
+ const raw = await response.text();
98
+ const parsed = parseYaml(raw);
99
+ if (!isRecord(parsed)) {
100
+ throw new Error(`Template from ${url} is not a YAML object`);
101
+ }
102
+ const inferredName = typeof parsed.name === 'string' ? parsed.name : '';
103
+ const templateName = this.normalizeTemplateName(name ?? inferredName);
104
+ if (!templateName) {
105
+ throw new Error('Template name is required. Provide name explicitly or include a string "name" field.');
106
+ }
107
+ if (templateName.includes('/') || templateName.includes('\\') || templateName.includes('..') || path.isAbsolute(templateName)) {
108
+ throw new Error(`Invalid template name: "${templateName}" contains path separators or traversal sequences`);
109
+ }
110
+ this.validateRelayConfig(parsed, url);
111
+ await fs.mkdir(this.customTemplatesDir, { recursive: true });
112
+ const targetPath = path.join(this.customTemplatesDir, `${templateName}.yaml`);
113
+ await fs.writeFile(targetPath, stringifyYaml(parsed), 'utf-8');
114
+ return targetPath;
115
+ }
116
+ isTemplateShorthand(input) {
117
+ return isRecord(input) && typeof input.swarm === 'string';
118
+ }
119
+ mergeRelayConfig(base, patch) {
120
+ const merged = this.cloneValue(base);
121
+ for (const [key, value] of Object.entries(patch)) {
122
+ if (value === undefined) {
123
+ continue;
124
+ }
125
+ merged[key] = this.cloneValue(value);
126
+ }
127
+ return merged;
128
+ }
129
+ normalizeTemplateName(name) {
130
+ return name.replace(/\.ya?ml$/i, '').trim();
131
+ }
132
+ resolveBuiltInTemplatesDir(explicitDir) {
133
+ if (explicitDir) {
134
+ return path.resolve(explicitDir);
135
+ }
136
+ const currentDir = path.dirname(fileURLToPath(import.meta.url));
137
+ const candidates = [
138
+ path.resolve(currentDir, 'builtin-templates'),
139
+ path.resolve(currentDir, '../workflows/builtin-templates'),
140
+ ];
141
+ for (const candidate of candidates) {
142
+ if (existsSync(candidate)) {
143
+ return candidate;
144
+ }
145
+ }
146
+ return candidates[0];
147
+ }
148
+ async resolveTemplatePath(name) {
149
+ const normalizedName = this.normalizeTemplateName(name);
150
+ const customPath = await this.findTemplatePath(this.customTemplatesDir, normalizedName);
151
+ if (customPath) {
152
+ return customPath;
153
+ }
154
+ const builtInPath = await this.findTemplatePath(this.builtInTemplatesDir, normalizedName);
155
+ if (builtInPath) {
156
+ return builtInPath;
157
+ }
158
+ throw new Error(`Template not found: ${name}`);
159
+ }
160
+ async findTemplatePath(directory, templateName) {
161
+ for (const ext of YAML_EXTENSIONS) {
162
+ const candidate = path.join(directory, `${templateName}${ext}`);
163
+ try {
164
+ const stat = await fs.stat(candidate);
165
+ if (stat.isFile()) {
166
+ return candidate;
167
+ }
168
+ }
169
+ catch {
170
+ // Continue checking other extensions.
171
+ }
172
+ }
173
+ return undefined;
174
+ }
175
+ async readTemplateFile(templatePath) {
176
+ const raw = await fs.readFile(templatePath, 'utf-8');
177
+ const parsed = parseYaml(raw);
178
+ if (!isRecord(parsed)) {
179
+ throw new Error(`Template at ${templatePath} is not a YAML object`);
180
+ }
181
+ const normalized = this.normalizeLegacyTemplate(parsed);
182
+ this.validateRelayConfig(normalized, templatePath);
183
+ return normalized;
184
+ }
185
+ normalizeLegacyTemplate(rawTemplate) {
186
+ const normalized = this.cloneValue(rawTemplate);
187
+ if (!isRecord(normalized.swarm) && typeof normalized.pattern === 'string') {
188
+ normalized.swarm = { pattern: normalized.pattern };
189
+ delete normalized.pattern;
190
+ }
191
+ if (Array.isArray(normalized.agents)) {
192
+ normalized.agents = normalized.agents.map((agent) => {
193
+ if (!isRecord(agent)) {
194
+ return agent;
195
+ }
196
+ if (typeof agent.name !== 'string' && typeof agent.id === 'string') {
197
+ return { ...agent, name: agent.id };
198
+ }
199
+ return agent;
200
+ });
201
+ }
202
+ if (!Array.isArray(normalized.workflows) && isRecord(normalized.workflow)) {
203
+ const workflowName = typeof normalized.name === 'string'
204
+ ? `${normalized.name}-workflow`
205
+ : 'default-workflow';
206
+ const workflow = normalized.workflow;
207
+ const steps = Array.isArray(workflow.steps)
208
+ ? workflow.steps.map((step) => this.normalizeLegacyStep(step)).filter((step) => step !== null)
209
+ : [];
210
+ normalized.workflows = [
211
+ {
212
+ name: workflowName,
213
+ description: typeof workflow.description === 'string' ? workflow.description : undefined,
214
+ onError: typeof workflow.onError === 'string' ? workflow.onError : undefined,
215
+ steps,
216
+ },
217
+ ];
218
+ delete normalized.workflow;
219
+ }
220
+ return normalized;
221
+ }
222
+ normalizeLegacyStep(step) {
223
+ if (!isRecord(step)) {
224
+ return null;
225
+ }
226
+ const name = typeof step.name === 'string'
227
+ ? step.name
228
+ : typeof step.id === 'string'
229
+ ? step.id
230
+ : undefined;
231
+ const task = typeof step.task === 'string'
232
+ ? step.task
233
+ : typeof step.prompt === 'string'
234
+ ? step.prompt
235
+ : undefined;
236
+ if (!name || typeof step.agent !== 'string' || !task) {
237
+ return null;
238
+ }
239
+ const normalized = {
240
+ name,
241
+ agent: step.agent,
242
+ task,
243
+ };
244
+ if (Array.isArray(step.dependsOn)) {
245
+ normalized.dependsOn = step.dependsOn;
246
+ }
247
+ if (typeof step.timeoutMs === 'number') {
248
+ normalized.timeoutMs = step.timeoutMs;
249
+ }
250
+ if (typeof step.retries === 'number') {
251
+ normalized.retries = step.retries;
252
+ }
253
+ else if (typeof step.maxRetries === 'number') {
254
+ normalized.retries = step.maxRetries;
255
+ }
256
+ if (isRecord(step.verification)) {
257
+ normalized.verification = step.verification;
258
+ }
259
+ else if (typeof step.expects === 'string') {
260
+ normalized.verification = {
261
+ type: 'output_contains',
262
+ value: step.expects,
263
+ };
264
+ }
265
+ return normalized;
266
+ }
267
+ validateRelayConfig(rawConfig, source) {
268
+ if (!isRecord(rawConfig)) {
269
+ throw new Error(`Template at ${source} is not an object`);
270
+ }
271
+ if (typeof rawConfig.version !== 'string') {
272
+ throw new Error(`Template at ${source} is missing required string field: version`);
273
+ }
274
+ if (typeof rawConfig.name !== 'string') {
275
+ throw new Error(`Template at ${source} is missing required string field: name`);
276
+ }
277
+ if (!isRecord(rawConfig.swarm) || typeof rawConfig.swarm.pattern !== 'string') {
278
+ throw new Error(`Template at ${source} is missing required field: swarm.pattern`);
279
+ }
280
+ if (!Array.isArray(rawConfig.agents) || rawConfig.agents.length === 0) {
281
+ throw new Error(`Template at ${source} must include a non-empty agents array`);
282
+ }
283
+ for (const agent of rawConfig.agents) {
284
+ if (!isRecord(agent) || typeof agent.name !== 'string' || typeof agent.cli !== 'string') {
285
+ throw new Error(`Template at ${source} contains an invalid agent definition`);
286
+ }
287
+ }
288
+ if (rawConfig.workflows !== undefined) {
289
+ if (!Array.isArray(rawConfig.workflows)) {
290
+ throw new Error(`Template at ${source} has invalid workflows; expected an array`);
291
+ }
292
+ for (const workflow of rawConfig.workflows) {
293
+ if (!isRecord(workflow) || typeof workflow.name !== 'string' || !Array.isArray(workflow.steps)) {
294
+ throw new Error(`Template at ${source} contains an invalid workflow definition`);
295
+ }
296
+ for (const step of workflow.steps) {
297
+ if (!isRecord(step) || typeof step.name !== 'string') {
298
+ throw new Error(`Template at ${source} contains an invalid workflow step`);
299
+ }
300
+ // Deterministic steps require type and command
301
+ if (step.type === 'deterministic') {
302
+ if (typeof step.command !== 'string') {
303
+ throw new Error(`Template at ${source} has deterministic step "${step.name}" without a command`);
304
+ }
305
+ }
306
+ else {
307
+ // Agent steps (type is undefined or 'agent') require agent and task
308
+ if (typeof step.agent !== 'string' || typeof step.task !== 'string') {
309
+ throw new Error(`Template at ${source} has agent step "${step.name}" without agent or task`);
310
+ }
311
+ }
312
+ }
313
+ }
314
+ }
315
+ }
316
+ setOverride(config, overridePath, value) {
317
+ const pathParts = overridePath
318
+ .replace(/\[(\d+)\]/g, '.$1')
319
+ .split('.')
320
+ .map((part) => part.trim())
321
+ .filter(Boolean);
322
+ if (pathParts.length === 0) {
323
+ return;
324
+ }
325
+ if (pathParts[0] === 'steps') {
326
+ const workflow = config.workflows?.[0];
327
+ if (!workflow) {
328
+ throw new Error(`Cannot apply override "${overridePath}": workflows[0] is missing`);
329
+ }
330
+ this.setOnValue(workflow.steps, pathParts.slice(1), value, overridePath);
331
+ return;
332
+ }
333
+ if (pathParts[0] === 'workflow' && pathParts[1] === 'steps') {
334
+ const workflow = config.workflows?.[0];
335
+ if (!workflow) {
336
+ throw new Error(`Cannot apply override "${overridePath}": workflows[0] is missing`);
337
+ }
338
+ this.setOnValue(workflow.steps, pathParts.slice(2), value, overridePath);
339
+ return;
340
+ }
341
+ this.setOnValue(config, pathParts, value, overridePath);
342
+ }
343
+ setOnValue(target, pathParts, value, fullPath) {
344
+ if (pathParts.length === 0) {
345
+ throw new Error(`Invalid override path: ${fullPath}`);
346
+ }
347
+ let current = target;
348
+ for (let i = 0; i < pathParts.length - 1; i += 1) {
349
+ const part = pathParts[i];
350
+ const nextPart = pathParts[i + 1];
351
+ if (Array.isArray(current)) {
352
+ const index = this.resolveArrayItemIndex(current, part);
353
+ if (index < 0) {
354
+ throw new Error(`Cannot apply override "${fullPath}": array item "${part}" was not found`);
355
+ }
356
+ current = current[index];
357
+ continue;
358
+ }
359
+ if (!isRecord(current)) {
360
+ throw new Error(`Cannot apply override "${fullPath}": segment "${part}" is not an object`);
361
+ }
362
+ if (!(part in current) || current[part] === undefined || current[part] === null) {
363
+ current[part] = /^\d+$/.test(nextPart) ? [] : {};
364
+ }
365
+ current = current[part];
366
+ }
367
+ const finalPart = pathParts[pathParts.length - 1];
368
+ if (Array.isArray(current)) {
369
+ const index = this.resolveArrayItemIndex(current, finalPart);
370
+ if (index < 0) {
371
+ throw new Error(`Cannot apply override "${fullPath}": array item "${finalPart}" was not found`);
372
+ }
373
+ current[index] = value;
374
+ return;
375
+ }
376
+ if (!isRecord(current)) {
377
+ throw new Error(`Cannot apply override "${fullPath}": parent object is invalid`);
378
+ }
379
+ current[finalPart] = value;
380
+ }
381
+ resolveArrayItemIndex(items, segment) {
382
+ if (/^\d+$/.test(segment)) {
383
+ const index = Number.parseInt(segment, 10);
384
+ return index >= 0 && index < items.length ? index : -1;
385
+ }
386
+ return items.findIndex((item) => isRecord(item) &&
387
+ ((typeof item.name === 'string' && item.name === segment) ||
388
+ (typeof item.id === 'string' && item.id === segment)));
389
+ }
390
+ async safeReadDir(directory) {
391
+ try {
392
+ return await fs.readdir(directory);
393
+ }
394
+ catch {
395
+ return [];
396
+ }
397
+ }
398
+ cloneValue(value) {
399
+ if (typeof structuredClone === 'function') {
400
+ return structuredClone(value);
401
+ }
402
+ return JSON.parse(JSON.stringify(value));
403
+ }
404
+ }
405
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/workflows/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * WorkflowTrajectory — records a structured trajectory for each workflow run.
3
+ *
4
+ * Writes trajectory JSON files directly to `.trajectories/active/` in a format
5
+ * compatible with `trail show`. No external CLI or package dependency required.
6
+ *
7
+ * Design principles:
8
+ * 1. One trajectory per workflow run
9
+ * 2. Chapters map to workflow phases, not individual steps
10
+ * 3. Non-blocking — trajectory recording never fails the workflow
11
+ * 4. Opt-in but default-on
12
+ */
13
+ import type { TrajectoryConfig, WorkflowStep } from './types.js';
14
+ export interface StepOutcome {
15
+ name: string;
16
+ agent: string;
17
+ status: 'completed' | 'failed' | 'skipped';
18
+ attempts: number;
19
+ output?: string;
20
+ error?: string;
21
+ verificationPassed?: boolean;
22
+ /** Sentinel value the step was verifying for, if any. */
23
+ verificationValue?: string;
24
+ /** Whether this was a non-interactive (subprocess) step. */
25
+ nonInteractive?: boolean;
26
+ /** Duration in ms. */
27
+ durationMs?: number;
28
+ }
29
+ export declare class WorkflowTrajectory {
30
+ private trajectory;
31
+ private currentChapterId;
32
+ private readonly enabled;
33
+ private readonly reflectOnBarriers;
34
+ private readonly reflectOnConverge;
35
+ private readonly autoDecisions;
36
+ private readonly dataDir;
37
+ private readonly runId;
38
+ private startTime;
39
+ private swarmPattern;
40
+ constructor(config: TrajectoryConfig | false | undefined, runId: string, cwd: string);
41
+ /** Start the trajectory (called at run:started). */
42
+ start(workflowName: string, stepCount: number, trackInfo?: string, description?: string, pattern?: string): Promise<void>;
43
+ /** Begin a new parallel track chapter. */
44
+ beginTrack(trackName: string): Promise<void>;
45
+ /** Begin a convergence chapter (after barrier/parallel completion). */
46
+ beginConvergence(label: string): Promise<void>;
47
+ /** Begin the retrospective chapter. */
48
+ private openRetrospective;
49
+ /** Record step started — captures intent, not just assignment. */
50
+ stepStarted(step: WorkflowStep, agent: string): Promise<void>;
51
+ /** Record step completed — captures what was accomplished. */
52
+ stepCompleted(step: WorkflowStep, output: string, attempt: number): Promise<void>;
53
+ /** Record step failed — categorizes root cause for actionable diagnosis. */
54
+ stepFailed(step: WorkflowStep, error: string, attempt: number, maxRetries: number, outcome?: Partial<StepOutcome>): Promise<void>;
55
+ /** Record step skipped — note the cascade impact. */
56
+ stepSkipped(step: WorkflowStep, reason: string): Promise<void>;
57
+ /** Record step retrying. */
58
+ stepRetrying(step: WorkflowStep, attempt: number, maxRetries: number): Promise<void>;
59
+ /** Record a reflection at a convergence point. */
60
+ reflect(synthesis: string, confidence: number, focalPoints?: string[]): Promise<void>;
61
+ /** Synthesize and reflect after a set of steps complete (barrier or parallel convergence). */
62
+ synthesizeAndReflect(label: string, outcomes: StepOutcome[], unblocks?: string[]): Promise<void>;
63
+ /** Record an orchestrator decision. */
64
+ decide(question: string, chosen: string, reasoning: string): Promise<void>;
65
+ /** Complete the trajectory with a summary. */
66
+ complete(summary: string, confidence: number, meta?: {
67
+ learnings?: string[];
68
+ challenges?: string[];
69
+ }): Promise<void>;
70
+ /** Abandon the trajectory. */
71
+ abandon(reason: string): Promise<void>;
72
+ isEnabled(): boolean;
73
+ shouldReflectOnConverge(): boolean;
74
+ shouldReflectOnBarriers(): boolean;
75
+ getTrajectoryId(): string | null;
76
+ buildSynthesis(label: string, outcomes: StepOutcome[], unblocks?: string[]): string;
77
+ computeConfidence(outcomes: StepOutcome[]): number;
78
+ buildRunSummary(outcomes: StepOutcome[]): string;
79
+ extractLearnings(outcomes: StepOutcome[]): string[];
80
+ extractChallenges(outcomes: StepOutcome[]): string[];
81
+ private openChapter;
82
+ private closeCurrentChapter;
83
+ private addEvent;
84
+ private flush;
85
+ private moveToCompleted;
86
+ }
87
+ //# sourceMappingURL=trajectory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trajectory.d.ts","sourceRoot":"","sources":["../../src/workflows/trajectory.ts"],"names":[],"mappings":"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"}