@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,47 @@
1
+ import type { RelayYamlConfig } from './types.js';
2
+ export declare const BUILT_IN_TEMPLATE_NAMES: readonly ["feature-dev", "bug-fix", "code-review", "security-audit", "refactor", "documentation", "review-loop"];
3
+ export type BuiltInTemplateName = (typeof BUILT_IN_TEMPLATE_NAMES)[number];
4
+ export interface TemplateRegistryOptions {
5
+ builtInTemplatesDir?: string;
6
+ customTemplatesDir?: string;
7
+ workspaceDir?: string;
8
+ fetcher?: typeof fetch;
9
+ }
10
+ export interface LoadTemplateOptions {
11
+ overrides?: Record<string, unknown>;
12
+ }
13
+ export interface TemplateShorthandConfig {
14
+ swarm: string;
15
+ overrides?: Record<string, unknown>;
16
+ }
17
+ export type TemplateReferenceInput = string | RelayYamlConfig | (Partial<Omit<RelayYamlConfig, 'swarm'>> & TemplateShorthandConfig);
18
+ export declare class TemplateRegistry {
19
+ private readonly builtInTemplatesDir;
20
+ private readonly customTemplatesDir;
21
+ private readonly fetcher;
22
+ constructor(options?: TemplateRegistryOptions);
23
+ listBuiltInTemplates(): string[];
24
+ listCustomTemplates(): Promise<string[]>;
25
+ listTemplates(): Promise<string[]>;
26
+ hasTemplate(name: string): Promise<boolean>;
27
+ loadTemplate(name: string, options?: LoadTemplateOptions): Promise<RelayYamlConfig>;
28
+ resolveTemplateReference(input: TemplateReferenceInput, options?: LoadTemplateOptions): Promise<RelayYamlConfig>;
29
+ applyOverrides(config: RelayYamlConfig, overrides: Record<string, unknown>): RelayYamlConfig;
30
+ installExternalTemplate(url: string, name?: string): Promise<string>;
31
+ private isTemplateShorthand;
32
+ private mergeRelayConfig;
33
+ private normalizeTemplateName;
34
+ private resolveBuiltInTemplatesDir;
35
+ private resolveTemplatePath;
36
+ private findTemplatePath;
37
+ private readTemplateFile;
38
+ private normalizeLegacyTemplate;
39
+ private normalizeLegacyStep;
40
+ private validateRelayConfig;
41
+ private setOverride;
42
+ private setOnValue;
43
+ private resolveArrayItemIndex;
44
+ private safeReadDir;
45
+ private cloneValue;
46
+ }
47
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,eAAO,MAAM,uBAAuB,kHAQ1B,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E,MAAM,WAAW,uBAAuB;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,eAAe,GACf,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC;AAUxE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,OAAO,GAAE,uBAA4B;IASjD,oBAAoB,IAAI,MAAM,EAAE;IAI1B,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQxC,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMlC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3C,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,eAAe,CAAC;IAWrB,wBAAwB,CAC5B,KAAK,EAAE,sBAAsB,EAC7B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,eAAe,CAAC;IA0B3B,cAAc,CACZ,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,eAAe;IAUZ,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkC1E,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,0BAA0B;YAoBpB,mBAAmB;YAgBnB,gBAAgB;YAmBhB,gBAAgB;IAa9B,OAAO,CAAC,uBAAuB;IA+C/B,OAAO,CAAC,mBAAmB;IAqD3B,OAAO,CAAC,mBAAmB;IA0D3B,OAAO,CAAC,WAAW;IAoCnB,OAAO,CAAC,UAAU;IAsDlB,OAAO,CAAC,qBAAqB;YAcf,WAAW;IAQzB,OAAO,CAAC,UAAU;CAOnB"}
@@ -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/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import type { StepCompletionDecision, TrajectoryConfig, WorkflowStep } from './types.js';
2
+ interface StepParticipants {
3
+ role?: string;
4
+ owner?: string;
5
+ specialist?: string;
6
+ reviewer?: string;
7
+ }
8
+ export interface StepOutcome {
9
+ name: string;
10
+ agent: string;
11
+ status: 'completed' | 'failed' | 'skipped';
12
+ attempts: number;
13
+ output?: string;
14
+ error?: string;
15
+ verificationPassed?: boolean;
16
+ verificationValue?: string;
17
+ nonInteractive?: boolean;
18
+ durationMs?: number;
19
+ completionMode?: StepCompletionDecision['mode'];
20
+ }
21
+ export declare class WorkflowTrajectory {
22
+ private trajectory;
23
+ private storage?;
24
+ private storageInit?;
25
+ private readonly enabled;
26
+ private readonly reflectOnBarriers;
27
+ private readonly reflectOnConverge;
28
+ private readonly autoDecisions;
29
+ private readonly storageBaseDir;
30
+ private readonly runId;
31
+ private startTime;
32
+ private swarmPattern;
33
+ constructor(config: TrajectoryConfig | false | undefined, runId: string, cwd: string);
34
+ start(workflowName: string, stepCount: number, trackInfo?: string, description?: string, pattern?: string): Promise<void>;
35
+ beginTrack(trackName: string): Promise<void>;
36
+ beginConvergence(label: string): Promise<void>;
37
+ stepStarted(step: WorkflowStep, agent: string, participants?: StepParticipants): Promise<void>;
38
+ registerAgent(name: string, role: string): Promise<void>;
39
+ stepSupervisionAssigned(step: WorkflowStep, supervised: {
40
+ owner: {
41
+ name: string;
42
+ };
43
+ specialist: {
44
+ name: string;
45
+ };
46
+ reviewer?: {
47
+ name: string;
48
+ };
49
+ }): Promise<void>;
50
+ ownerMonitoringEvent(stepName: string, owner: string, detail: string, raw?: Record<string, unknown>): Promise<void>;
51
+ reviewCompleted(stepName: string, reviewerName: string, decision: 'approved' | 'rejected', reason?: string): Promise<void>;
52
+ stepCompletionDecision(stepName: string, decision: StepCompletionDecision): Promise<void>;
53
+ stepCompleted(step: WorkflowStep, output: string, attempt: number, decision?: StepCompletionDecision): Promise<void>;
54
+ stepFailed(step: WorkflowStep, error: string, attempt: number, maxRetries: number, outcome?: Partial<StepOutcome>): Promise<void>;
55
+ stepSkipped(step: WorkflowStep, reason: string): Promise<void>;
56
+ stepRetrying(step: WorkflowStep, attempt: number, maxRetries: number): Promise<void>;
57
+ reflect(synthesis: string, confidence: number, focalPoints?: string[]): Promise<void>;
58
+ synthesizeAndReflect(label: string, outcomes: StepOutcome[], unblocks?: string[]): Promise<void>;
59
+ decide(question: string, chosen: string, reasoning: string): Promise<void>;
60
+ complete(summary: string, confidence: number, meta?: {
61
+ learnings?: string[];
62
+ challenges?: string[];
63
+ }): Promise<void>;
64
+ abandon(reason: string, meta?: {
65
+ summary?: string;
66
+ confidence?: number;
67
+ learnings?: string[];
68
+ challenges?: string[];
69
+ }): Promise<void>;
70
+ isEnabled(): boolean;
71
+ shouldReflectOnConverge(): boolean;
72
+ shouldReflectOnBarriers(): boolean;
73
+ getTrajectoryId(): string | null;
74
+ buildSynthesis(label: string, outcomes: StepOutcome[], unblocks?: string[]): string;
75
+ computeConfidence(outcomes: StepOutcome[]): number;
76
+ buildRunSummary(outcomes: StepOutcome[]): string;
77
+ extractLearnings(outcomes: StepOutcome[]): string[];
78
+ extractChallenges(outcomes: StepOutcome[]): string[];
79
+ private openChapter;
80
+ private addEvent;
81
+ private buildApproach;
82
+ private formatCompletionEvidenceSummary;
83
+ private ensureStorage;
84
+ private flush;
85
+ }
86
+ export {};
87
+ //# sourceMappingURL=trajectory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trajectory.d.ts","sourceRoot":"","sources":["../src/trajectory.ts"],"names":[],"mappings":"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"}