@fractary/faber 0.1.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 (261) hide show
  1. package/README.md +366 -76
  2. package/dist/cli/commands/logs.d.ts +6 -0
  3. package/dist/cli/commands/logs.d.ts.map +1 -0
  4. package/dist/cli/commands/logs.js +215 -0
  5. package/dist/cli/commands/logs.js.map +1 -0
  6. package/dist/cli/commands/repo.d.ts +6 -0
  7. package/dist/cli/commands/repo.d.ts.map +1 -0
  8. package/dist/cli/commands/repo.js +260 -0
  9. package/dist/cli/commands/repo.js.map +1 -0
  10. package/dist/cli/commands/spec.d.ts +6 -0
  11. package/dist/cli/commands/spec.d.ts.map +1 -0
  12. package/dist/cli/commands/spec.js +184 -0
  13. package/dist/cli/commands/spec.js.map +1 -0
  14. package/dist/cli/commands/work.d.ts +6 -0
  15. package/dist/cli/commands/work.d.ts.map +1 -0
  16. package/dist/cli/commands/work.js +113 -0
  17. package/dist/cli/commands/work.js.map +1 -0
  18. package/dist/cli/commands/workflow.d.ts +6 -0
  19. package/dist/cli/commands/workflow.d.ts.map +1 -0
  20. package/dist/cli/commands/workflow.js +214 -0
  21. package/dist/cli/commands/workflow.js.map +1 -0
  22. package/dist/cli/index.d.ts +8 -0
  23. package/dist/cli/index.d.ts.map +1 -0
  24. package/dist/cli/index.js +27 -0
  25. package/dist/cli/index.js.map +1 -0
  26. package/dist/config.d.ts +814 -0
  27. package/dist/config.d.ts.map +1 -0
  28. package/dist/config.js +438 -0
  29. package/dist/config.js.map +1 -0
  30. package/dist/errors.d.ts +264 -0
  31. package/dist/errors.d.ts.map +1 -0
  32. package/dist/errors.js +491 -0
  33. package/dist/errors.js.map +1 -0
  34. package/dist/index.d.ts +21 -16
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +23 -36
  37. package/dist/index.js.map +1 -1
  38. package/dist/logs/index.d.ts +8 -0
  39. package/dist/logs/index.d.ts.map +1 -0
  40. package/dist/{types → logs}/index.js +7 -11
  41. package/dist/logs/index.js.map +1 -0
  42. package/dist/logs/manager.d.ts +97 -0
  43. package/dist/logs/manager.d.ts.map +1 -0
  44. package/dist/logs/manager.js +581 -0
  45. package/dist/logs/manager.js.map +1 -0
  46. package/dist/logs/types.d.ts +45 -0
  47. package/dist/logs/types.d.ts.map +1 -0
  48. package/dist/logs/types.js +8 -0
  49. package/dist/logs/types.js.map +1 -0
  50. package/dist/repo/git.d.ts +182 -0
  51. package/dist/repo/git.d.ts.map +1 -0
  52. package/dist/repo/git.js +496 -0
  53. package/dist/repo/git.js.map +1 -0
  54. package/dist/repo/index.d.ts +10 -0
  55. package/dist/repo/index.d.ts.map +1 -0
  56. package/dist/repo/index.js +29 -0
  57. package/dist/repo/index.js.map +1 -0
  58. package/dist/repo/manager.d.ts +179 -0
  59. package/dist/repo/manager.d.ts.map +1 -0
  60. package/dist/repo/manager.js +433 -0
  61. package/dist/repo/manager.js.map +1 -0
  62. package/dist/repo/providers/bitbucket.d.ts +38 -0
  63. package/dist/repo/providers/bitbucket.d.ts.map +1 -0
  64. package/dist/repo/providers/bitbucket.js +76 -0
  65. package/dist/repo/providers/bitbucket.js.map +1 -0
  66. package/dist/repo/providers/github.d.ts +30 -0
  67. package/dist/repo/providers/github.d.ts.map +1 -0
  68. package/dist/repo/providers/github.js +311 -0
  69. package/dist/repo/providers/github.js.map +1 -0
  70. package/dist/repo/providers/gitlab.d.ts +37 -0
  71. package/dist/repo/providers/gitlab.d.ts.map +1 -0
  72. package/dist/repo/providers/gitlab.js +74 -0
  73. package/dist/repo/providers/gitlab.js.map +1 -0
  74. package/dist/repo/providers/index.d.ts +9 -0
  75. package/dist/repo/providers/index.d.ts.map +1 -0
  76. package/dist/repo/providers/index.js +15 -0
  77. package/dist/repo/providers/index.js.map +1 -0
  78. package/dist/repo/types.d.ts +47 -0
  79. package/dist/repo/types.d.ts.map +1 -0
  80. package/dist/repo/types.js +8 -0
  81. package/dist/repo/types.js.map +1 -0
  82. package/dist/spec/index.d.ts +9 -0
  83. package/dist/spec/index.d.ts.map +1 -0
  84. package/dist/spec/index.js +30 -0
  85. package/dist/spec/index.js.map +1 -0
  86. package/dist/spec/manager.d.ts +98 -0
  87. package/dist/spec/manager.d.ts.map +1 -0
  88. package/dist/spec/manager.js +650 -0
  89. package/dist/spec/manager.js.map +1 -0
  90. package/dist/spec/templates.d.ts +28 -0
  91. package/dist/spec/templates.d.ts.map +1 -0
  92. package/dist/spec/templates.js +357 -0
  93. package/dist/spec/templates.js.map +1 -0
  94. package/dist/spec/types.d.ts +53 -0
  95. package/dist/spec/types.d.ts.map +1 -0
  96. package/dist/spec/types.js +8 -0
  97. package/dist/spec/types.js.map +1 -0
  98. package/dist/state/index.d.ts +8 -0
  99. package/dist/state/index.d.ts.map +1 -0
  100. package/dist/state/index.js +26 -0
  101. package/dist/state/index.js.map +1 -0
  102. package/dist/state/manager.d.ts +132 -0
  103. package/dist/state/manager.d.ts.map +1 -0
  104. package/dist/state/manager.js +517 -0
  105. package/dist/state/manager.js.map +1 -0
  106. package/dist/state/types.d.ts +46 -0
  107. package/dist/state/types.d.ts.map +1 -0
  108. package/dist/state/types.js +8 -0
  109. package/dist/state/types.js.map +1 -0
  110. package/dist/storage/codex-adapter.d.ts +62 -0
  111. package/dist/storage/codex-adapter.d.ts.map +1 -0
  112. package/dist/storage/codex-adapter.js +177 -0
  113. package/dist/storage/codex-adapter.js.map +1 -0
  114. package/dist/storage/index.d.ts +9 -0
  115. package/dist/storage/index.d.ts.map +1 -0
  116. package/dist/storage/index.js +15 -0
  117. package/dist/storage/index.js.map +1 -0
  118. package/dist/storage/local.d.ts +42 -0
  119. package/dist/storage/local.d.ts.map +1 -0
  120. package/dist/storage/local.js +137 -0
  121. package/dist/storage/local.js.map +1 -0
  122. package/dist/types.d.ts +603 -0
  123. package/dist/types.d.ts.map +1 -0
  124. package/dist/types.js +8 -0
  125. package/dist/types.js.map +1 -0
  126. package/dist/work/index.d.ts +8 -0
  127. package/dist/work/index.d.ts.map +1 -0
  128. package/dist/work/index.js +26 -0
  129. package/dist/work/index.js.map +1 -0
  130. package/dist/work/manager.d.ts +112 -0
  131. package/dist/work/manager.d.ts.map +1 -0
  132. package/dist/work/manager.js +227 -0
  133. package/dist/work/manager.js.map +1 -0
  134. package/dist/work/providers/github.d.ts +40 -0
  135. package/dist/work/providers/github.d.ts.map +1 -0
  136. package/dist/work/providers/github.js +299 -0
  137. package/dist/work/providers/github.js.map +1 -0
  138. package/dist/work/providers/jira.d.ts +50 -0
  139. package/dist/work/providers/jira.d.ts.map +1 -0
  140. package/dist/work/providers/jira.js +99 -0
  141. package/dist/work/providers/jira.js.map +1 -0
  142. package/dist/work/providers/linear.d.ts +47 -0
  143. package/dist/work/providers/linear.d.ts.map +1 -0
  144. package/dist/work/providers/linear.js +93 -0
  145. package/dist/work/providers/linear.js.map +1 -0
  146. package/dist/work/types.d.ts +41 -0
  147. package/dist/work/types.d.ts.map +1 -0
  148. package/dist/work/types.js +8 -0
  149. package/dist/work/types.js.map +1 -0
  150. package/dist/workflow/faber.d.ts +107 -0
  151. package/dist/workflow/faber.d.ts.map +1 -0
  152. package/dist/workflow/faber.js +606 -0
  153. package/dist/workflow/faber.js.map +1 -0
  154. package/dist/workflow/index.d.ts +8 -0
  155. package/dist/workflow/index.d.ts.map +1 -0
  156. package/dist/workflow/index.js +26 -0
  157. package/dist/workflow/index.js.map +1 -0
  158. package/dist/workflow/types.d.ts +54 -0
  159. package/dist/workflow/types.d.ts.map +1 -0
  160. package/dist/workflow/types.js +8 -0
  161. package/dist/workflow/types.js.map +1 -0
  162. package/package.json +42 -28
  163. package/dist/api.d.ts +0 -81
  164. package/dist/api.d.ts.map +0 -1
  165. package/dist/api.js +0 -261
  166. package/dist/api.js.map +0 -1
  167. package/dist/bindings/claude-code/transformer.d.ts +0 -55
  168. package/dist/bindings/claude-code/transformer.d.ts.map +0 -1
  169. package/dist/bindings/claude-code/transformer.js +0 -271
  170. package/dist/bindings/claude-code/transformer.js.map +0 -1
  171. package/dist/bindings/index.d.ts +0 -21
  172. package/dist/bindings/index.d.ts.map +0 -1
  173. package/dist/bindings/index.js +0 -43
  174. package/dist/bindings/index.js.map +0 -1
  175. package/dist/core/concepts/base.d.ts +0 -89
  176. package/dist/core/concepts/base.d.ts.map +0 -1
  177. package/dist/core/concepts/base.js +0 -230
  178. package/dist/core/concepts/base.js.map +0 -1
  179. package/dist/core/concepts/eval.d.ts +0 -90
  180. package/dist/core/concepts/eval.d.ts.map +0 -1
  181. package/dist/core/concepts/eval.js +0 -118
  182. package/dist/core/concepts/eval.js.map +0 -1
  183. package/dist/core/concepts/index.d.ts +0 -9
  184. package/dist/core/concepts/index.d.ts.map +0 -1
  185. package/dist/core/concepts/index.js +0 -36
  186. package/dist/core/concepts/index.js.map +0 -1
  187. package/dist/core/concepts/role.d.ts +0 -19
  188. package/dist/core/concepts/role.d.ts.map +0 -1
  189. package/dist/core/concepts/role.js +0 -227
  190. package/dist/core/concepts/role.js.map +0 -1
  191. package/dist/core/concepts/team.d.ts +0 -57
  192. package/dist/core/concepts/team.d.ts.map +0 -1
  193. package/dist/core/concepts/team.js +0 -106
  194. package/dist/core/concepts/team.js.map +0 -1
  195. package/dist/core/concepts/tool.d.ts +0 -43
  196. package/dist/core/concepts/tool.d.ts.map +0 -1
  197. package/dist/core/concepts/tool.js +0 -104
  198. package/dist/core/concepts/tool.js.map +0 -1
  199. package/dist/core/concepts/workflow.d.ts +0 -87
  200. package/dist/core/concepts/workflow.d.ts.map +0 -1
  201. package/dist/core/concepts/workflow.js +0 -114
  202. package/dist/core/concepts/workflow.js.map +0 -1
  203. package/dist/core/config/index.d.ts +0 -34
  204. package/dist/core/config/index.d.ts.map +0 -1
  205. package/dist/core/config/index.js +0 -80
  206. package/dist/core/config/index.js.map +0 -1
  207. package/dist/core/config/loader.d.ts +0 -53
  208. package/dist/core/config/loader.d.ts.map +0 -1
  209. package/dist/core/config/loader.js +0 -234
  210. package/dist/core/config/loader.js.map +0 -1
  211. package/dist/core/contexts/index.d.ts +0 -36
  212. package/dist/core/contexts/index.d.ts.map +0 -1
  213. package/dist/core/contexts/index.js +0 -75
  214. package/dist/core/contexts/index.js.map +0 -1
  215. package/dist/core/contexts/loader.d.ts +0 -66
  216. package/dist/core/contexts/loader.d.ts.map +0 -1
  217. package/dist/core/contexts/loader.js +0 -261
  218. package/dist/core/contexts/loader.js.map +0 -1
  219. package/dist/core/overlays/index.d.ts +0 -31
  220. package/dist/core/overlays/index.d.ts.map +0 -1
  221. package/dist/core/overlays/index.js +0 -82
  222. package/dist/core/overlays/index.js.map +0 -1
  223. package/dist/core/overlays/resolver.d.ts +0 -65
  224. package/dist/core/overlays/resolver.d.ts.map +0 -1
  225. package/dist/core/overlays/resolver.js +0 -249
  226. package/dist/core/overlays/resolver.js.map +0 -1
  227. package/dist/types/bindings.d.ts +0 -59
  228. package/dist/types/bindings.d.ts.map +0 -1
  229. package/dist/types/bindings.js +0 -6
  230. package/dist/types/bindings.js.map +0 -1
  231. package/dist/types/concepts.d.ts +0 -131
  232. package/dist/types/concepts.d.ts.map +0 -1
  233. package/dist/types/concepts.js +0 -29
  234. package/dist/types/concepts.js.map +0 -1
  235. package/dist/types/config.d.ts +0 -42
  236. package/dist/types/config.d.ts.map +0 -1
  237. package/dist/types/config.js +0 -6
  238. package/dist/types/config.js.map +0 -1
  239. package/dist/types/contexts.d.ts +0 -59
  240. package/dist/types/contexts.d.ts.map +0 -1
  241. package/dist/types/contexts.js +0 -17
  242. package/dist/types/contexts.js.map +0 -1
  243. package/dist/types/index.d.ts +0 -17
  244. package/dist/types/index.d.ts.map +0 -1
  245. package/dist/types/index.js.map +0 -1
  246. package/dist/types/overlays.d.ts +0 -28
  247. package/dist/types/overlays.d.ts.map +0 -1
  248. package/dist/types/overlays.js +0 -15
  249. package/dist/types/overlays.js.map +0 -1
  250. package/dist/utils/file-system.d.ts +0 -40
  251. package/dist/utils/file-system.d.ts.map +0 -1
  252. package/dist/utils/file-system.js +0 -105
  253. package/dist/utils/file-system.js.map +0 -1
  254. package/dist/utils/template.d.ts +0 -28
  255. package/dist/utils/template.d.ts.map +0 -1
  256. package/dist/utils/template.js +0 -107
  257. package/dist/utils/template.js.map +0 -1
  258. package/dist/utils/validation.d.ts +0 -42
  259. package/dist/utils/validation.d.ts.map +0 -1
  260. package/dist/utils/validation.js +0 -94
  261. package/dist/utils/validation.js.map +0 -1
@@ -0,0 +1,606 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/faber - FABER Workflow Engine
4
+ *
5
+ * Orchestrates the Frame → Architect → Build → Evaluate → Release workflow.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.FaberWorkflow = void 0;
9
+ const child_process_1 = require("child_process");
10
+ const work_1 = require("../work");
11
+ const repo_1 = require("../repo");
12
+ const spec_1 = require("../spec");
13
+ const logs_1 = require("../logs");
14
+ const state_1 = require("../state");
15
+ const errors_1 = require("../errors");
16
+ /**
17
+ * Default workflow configuration
18
+ */
19
+ const defaultConfig = {
20
+ autonomy: 'assisted',
21
+ phases: {
22
+ frame: { enabled: true },
23
+ architect: { enabled: true, refineSpec: true },
24
+ build: { enabled: true },
25
+ evaluate: { enabled: true, maxRetries: 3 },
26
+ release: { enabled: true, requestReviews: true, reviewers: [] },
27
+ },
28
+ };
29
+ /**
30
+ * FABER Workflow Engine
31
+ *
32
+ * Coordinates the development workflow phases:
33
+ * - Frame: Gather requirements from issue + conversation
34
+ * - Architect: Create/refine specification
35
+ * - Build: Implement the solution
36
+ * - Evaluate: Validate against requirements
37
+ * - Release: Create PR and request reviews
38
+ */
39
+ class FaberWorkflow {
40
+ workManager;
41
+ repoManager;
42
+ specManager;
43
+ logManager;
44
+ stateManager;
45
+ config;
46
+ userInput = null;
47
+ listeners = [];
48
+ artifacts = [];
49
+ constructor(options) {
50
+ this.workManager = new work_1.WorkManager();
51
+ this.repoManager = new repo_1.RepoManager();
52
+ this.specManager = new spec_1.SpecManager();
53
+ this.logManager = new logs_1.LogManager();
54
+ this.stateManager = new state_1.StateManager();
55
+ this.config = { ...defaultConfig, ...options?.config };
56
+ if (options?.config?.phases) {
57
+ this.config.phases = { ...defaultConfig.phases, ...options.config.phases };
58
+ }
59
+ }
60
+ /**
61
+ * Set user input callback for interactive mode
62
+ */
63
+ setUserInputCallback(callback) {
64
+ this.userInput = callback;
65
+ }
66
+ /**
67
+ * Add event listener
68
+ */
69
+ addEventListener(listener) {
70
+ this.listeners.push(listener);
71
+ }
72
+ /**
73
+ * Remove event listener
74
+ */
75
+ removeEventListener(listener) {
76
+ const index = this.listeners.indexOf(listener);
77
+ if (index !== -1) {
78
+ this.listeners.splice(index, 1);
79
+ }
80
+ }
81
+ /**
82
+ * Emit event to listeners
83
+ */
84
+ emit(event, data) {
85
+ for (const listener of this.listeners) {
86
+ try {
87
+ listener(event, data);
88
+ }
89
+ catch {
90
+ // Ignore listener errors
91
+ }
92
+ }
93
+ }
94
+ /**
95
+ * Record an artifact
96
+ */
97
+ recordArtifact(type, path) {
98
+ const artifact = {
99
+ type,
100
+ path,
101
+ created_at: new Date().toISOString(),
102
+ };
103
+ this.artifacts.push(artifact);
104
+ this.emit('artifact:create', artifact);
105
+ }
106
+ /**
107
+ * Run the complete FABER workflow
108
+ */
109
+ async run(options) {
110
+ const startTime = Date.now();
111
+ const workId = String(options.workId);
112
+ const autonomy = options.autonomy || this.config.autonomy;
113
+ // Merge config overrides
114
+ if (options.config) {
115
+ this.config = { ...this.config, ...options.config };
116
+ }
117
+ // Reset artifacts for this run
118
+ this.artifacts = [];
119
+ // Create or resume workflow state
120
+ let state = this.stateManager.getActiveWorkflow(workId);
121
+ if (!state) {
122
+ state = this.stateManager.createWorkflow(workId);
123
+ }
124
+ const workflowId = state.workflow_id;
125
+ this.emit('workflow:start', { workflowId, workId, autonomy });
126
+ // Create run manifest
127
+ const manifest = this.stateManager.createManifest(workflowId, workId);
128
+ // Build phase context
129
+ let context = {
130
+ workflowId,
131
+ workId,
132
+ phase: '',
133
+ autonomy,
134
+ issue: null,
135
+ spec: null,
136
+ branch: null,
137
+ previousOutputs: {},
138
+ };
139
+ const phaseResults = [];
140
+ const phases = ['frame', 'architect', 'build', 'evaluate', 'release'];
141
+ try {
142
+ // Fetch issue for context
143
+ try {
144
+ context.issue = await this.workManager.fetchIssue(workId);
145
+ }
146
+ catch {
147
+ // Issue fetch failed, will need to proceed with conversation context only
148
+ }
149
+ // Run each phase
150
+ for (const phase of phases) {
151
+ // Skip if phase is disabled
152
+ if (!this.config.phases[phase]?.enabled) {
153
+ phaseResults.push({
154
+ phase,
155
+ status: 'skipped',
156
+ duration_ms: 0,
157
+ });
158
+ this.stateManager.skipPhase(workflowId, phase, 'disabled');
159
+ continue;
160
+ }
161
+ // Skip if already completed
162
+ if (state.phase_states[phase].status === 'completed') {
163
+ phaseResults.push({
164
+ phase,
165
+ status: 'completed',
166
+ duration_ms: 0,
167
+ outputs: state.phase_states[phase].outputs,
168
+ });
169
+ continue;
170
+ }
171
+ // Run phase
172
+ context.phase = phase;
173
+ const phaseStartTime = Date.now();
174
+ this.emit('phase:start', { workflowId, phase });
175
+ this.stateManager.startPhase(workflowId, phase);
176
+ // Execute pre-hook if defined
177
+ await this.runHook(`pre_${phase}`);
178
+ // Run phase handler
179
+ const result = await this.runPhase(phase, context);
180
+ // Execute post-hook if defined
181
+ await this.runHook(`post_${phase}`);
182
+ const phaseDuration = Date.now() - phaseStartTime;
183
+ if (result.status === 'completed') {
184
+ this.stateManager.completePhase(workflowId, phase, result.outputs);
185
+ context.previousOutputs[phase] = result.outputs || {};
186
+ this.emit('phase:complete', { workflowId, phase, outputs: result.outputs });
187
+ }
188
+ else if (result.status === 'failed') {
189
+ this.stateManager.failPhase(workflowId, phase, result.error || 'Unknown error');
190
+ this.emit('phase:fail', { workflowId, phase, error: result.error });
191
+ }
192
+ else if (result.status === 'skipped') {
193
+ this.stateManager.skipPhase(workflowId, phase);
194
+ this.emit('phase:skip', { workflowId, phase });
195
+ }
196
+ phaseResults.push({
197
+ phase,
198
+ status: result.status,
199
+ duration_ms: phaseDuration,
200
+ outputs: result.outputs,
201
+ error: result.error,
202
+ });
203
+ // Add phase to manifest
204
+ this.stateManager.addPhaseToManifest(manifest.manifest_id, {
205
+ phase,
206
+ status: result.status,
207
+ duration_ms: phaseDuration,
208
+ steps: [],
209
+ });
210
+ // Stop on failure unless in autonomous mode with retries
211
+ if (result.status === 'failed' && autonomy !== 'autonomous') {
212
+ break;
213
+ }
214
+ // Handle needs_input status
215
+ if (result.status === 'needs_input') {
216
+ // Pause workflow for user input
217
+ this.stateManager.pauseWorkflow(workflowId);
218
+ this.emit('workflow:pause', { workflowId, phase, message: result.message });
219
+ break;
220
+ }
221
+ // Update state for next iteration
222
+ state = this.stateManager.getWorkflow(workflowId);
223
+ }
224
+ // Determine final status
225
+ const failedPhases = phaseResults.filter(p => p.status === 'failed');
226
+ const finalStatus = failedPhases.length > 0 ? 'failed' :
227
+ phaseResults.every(p => p.status === 'completed' || p.status === 'skipped') ? 'completed' : 'paused';
228
+ // Complete manifest
229
+ this.stateManager.completeManifest(manifest.manifest_id, finalStatus === 'failed' ? 'failed' : 'completed');
230
+ // Add artifacts to manifest
231
+ for (const artifact of this.artifacts) {
232
+ this.stateManager.addArtifactToManifest(manifest.manifest_id, artifact);
233
+ }
234
+ const duration = Date.now() - startTime;
235
+ const result = {
236
+ workflow_id: workflowId,
237
+ work_id: workId,
238
+ status: finalStatus,
239
+ phases: phaseResults,
240
+ duration_ms: duration,
241
+ artifacts: this.artifacts,
242
+ };
243
+ if (finalStatus === 'completed') {
244
+ this.emit('workflow:complete', result);
245
+ }
246
+ else if (finalStatus === 'failed') {
247
+ this.emit('workflow:fail', result);
248
+ }
249
+ return result;
250
+ }
251
+ catch (error) {
252
+ const duration = Date.now() - startTime;
253
+ this.emit('workflow:fail', { workflowId, error });
254
+ this.stateManager.completeManifest(manifest.manifest_id, 'failed');
255
+ return {
256
+ workflow_id: workflowId,
257
+ work_id: workId,
258
+ status: 'failed',
259
+ phases: phaseResults,
260
+ duration_ms: duration,
261
+ artifacts: this.artifacts,
262
+ };
263
+ }
264
+ }
265
+ /**
266
+ * Run a specific phase
267
+ */
268
+ async runPhase(phase, context) {
269
+ switch (phase) {
270
+ case 'frame':
271
+ return this.runFramePhase(context);
272
+ case 'architect':
273
+ return this.runArchitectPhase(context);
274
+ case 'build':
275
+ return this.runBuildPhase(context);
276
+ case 'evaluate':
277
+ return this.runEvaluatePhase(context);
278
+ case 'release':
279
+ return this.runReleasePhase(context);
280
+ default:
281
+ return { status: 'skipped' };
282
+ }
283
+ }
284
+ /**
285
+ * Frame Phase: Gather requirements from issue + conversation
286
+ */
287
+ async runFramePhase(context) {
288
+ const outputs = {};
289
+ // Gather requirements from issue
290
+ if (context.issue) {
291
+ outputs.issue = {
292
+ number: context.issue.number,
293
+ title: context.issue.title,
294
+ body: context.issue.body,
295
+ labels: context.issue.labels,
296
+ state: context.issue.state,
297
+ };
298
+ // Classify work type
299
+ const workType = await this.workManager.classifyWorkType(context.issue);
300
+ outputs.workType = workType;
301
+ }
302
+ // Check if we have enough context
303
+ if (!context.issue) {
304
+ // In assisted mode, prompt for context
305
+ if (context.autonomy === 'assisted' || context.autonomy === 'guarded') {
306
+ return {
307
+ status: 'needs_input',
308
+ message: 'No issue found. Please provide work context or issue number.',
309
+ };
310
+ }
311
+ // In dry-run mode, just record what would happen
312
+ if (context.autonomy === 'dry-run') {
313
+ return {
314
+ status: 'completed',
315
+ outputs: { dryRun: true, message: 'Would gather requirements from issue' },
316
+ };
317
+ }
318
+ }
319
+ return { status: 'completed', outputs };
320
+ }
321
+ /**
322
+ * Architect Phase: Create/refine specification
323
+ */
324
+ async runArchitectPhase(context) {
325
+ const outputs = {};
326
+ // Check for existing spec
327
+ let spec = context.spec;
328
+ const existingSpecs = this.specManager.listSpecs({ workId: context.workId });
329
+ if (existingSpecs.length > 0) {
330
+ spec = existingSpecs[0];
331
+ }
332
+ // Create spec if none exists
333
+ if (!spec && context.issue) {
334
+ const workType = context.previousOutputs.frame?.workType || 'feature';
335
+ const template = workType === 'bug' ? 'bug' : workType === 'chore' ? 'basic' : 'feature';
336
+ spec = this.specManager.createSpec(context.issue.title, {
337
+ workId: context.workId,
338
+ template,
339
+ context: context.issue.body,
340
+ });
341
+ this.recordArtifact('spec', spec.path);
342
+ outputs.specCreated = true;
343
+ }
344
+ if (spec) {
345
+ outputs.specId = spec.id;
346
+ outputs.specPath = spec.path;
347
+ // Refine spec if enabled
348
+ if (this.config.phases.architect.refineSpec) {
349
+ const questions = this.specManager.generateRefinementQuestions(spec.id);
350
+ if (questions.length > 0 && context.autonomy !== 'autonomous') {
351
+ outputs.refinementQuestions = questions;
352
+ // In assisted mode, pause for refinement
353
+ if (context.autonomy === 'assisted') {
354
+ return {
355
+ status: 'needs_input',
356
+ message: 'Specification needs refinement. Review generated questions.',
357
+ outputs,
358
+ };
359
+ }
360
+ }
361
+ }
362
+ // Validate spec
363
+ const validation = this.specManager.validateSpec(spec.id);
364
+ outputs.validation = validation;
365
+ }
366
+ return { status: 'completed', outputs };
367
+ }
368
+ /**
369
+ * Build Phase: Implement the solution
370
+ */
371
+ async runBuildPhase(context) {
372
+ const outputs = {};
373
+ // Create branch
374
+ const workType = context.previousOutputs.frame?.workType || 'feature';
375
+ const issueTitle = context.issue?.title || `work-${context.workId}`;
376
+ const branchName = this.repoManager.generateBranchName({
377
+ type: workType === 'bug' ? 'fix' : 'feature',
378
+ description: issueTitle,
379
+ workId: context.workId,
380
+ });
381
+ // Check if branch exists
382
+ const existingBranch = await this.repoManager.getBranch(branchName);
383
+ if (!existingBranch) {
384
+ // In dry-run mode, just report
385
+ if (context.autonomy === 'dry-run') {
386
+ return {
387
+ status: 'completed',
388
+ outputs: { dryRun: true, branchName, message: 'Would create branch' },
389
+ };
390
+ }
391
+ // Confirm in assisted/guarded mode
392
+ if (context.autonomy === 'assisted' || context.autonomy === 'guarded') {
393
+ const confirmed = await this.confirmAction({
394
+ phase: 'build',
395
+ action: 'create_branch',
396
+ message: `Create branch: ${branchName}?`,
397
+ });
398
+ if (!confirmed) {
399
+ return { status: 'skipped', outputs: { reason: 'User declined branch creation' } };
400
+ }
401
+ }
402
+ await this.repoManager.createBranch(branchName);
403
+ this.recordArtifact('branch', branchName);
404
+ }
405
+ outputs.branch = branchName;
406
+ // Start session capture for build
407
+ this.logManager.startCapture({
408
+ issueNumber: Number(context.workId),
409
+ });
410
+ outputs.sessionStarted = true;
411
+ return { status: 'completed', outputs };
412
+ }
413
+ /**
414
+ * Evaluate Phase: Validate against requirements
415
+ */
416
+ async runEvaluatePhase(context) {
417
+ const outputs = {};
418
+ // Get the spec to validate against
419
+ const specId = context.previousOutputs.architect?.specId;
420
+ if (!specId) {
421
+ return { status: 'skipped', outputs: { reason: 'No spec to validate against' } };
422
+ }
423
+ // Validate spec
424
+ const validation = this.specManager.validateSpec(specId);
425
+ outputs.validation = validation;
426
+ // Check if validation passed
427
+ if (validation.status === 'fail') {
428
+ const attempts = context.previousOutputs.evaluate?.attempts || 0;
429
+ const maxRetries = this.config.phases.evaluate.maxRetries;
430
+ if (attempts < maxRetries) {
431
+ outputs.attempts = attempts + 1;
432
+ return {
433
+ status: 'needs_input',
434
+ message: `Validation failed, retry ${attempts + 1}/${maxRetries}`,
435
+ outputs,
436
+ error: `Validation failed: ${validation.suggestions?.join(', ')}`,
437
+ };
438
+ }
439
+ return {
440
+ status: 'failed',
441
+ outputs,
442
+ error: `Validation failed after ${maxRetries} attempts`,
443
+ };
444
+ }
445
+ // Stop session capture
446
+ this.logManager.stopCapture();
447
+ return { status: 'completed', outputs };
448
+ }
449
+ /**
450
+ * Release Phase: Create PR and request reviews
451
+ */
452
+ async runReleasePhase(context) {
453
+ const outputs = {};
454
+ const branch = context.previousOutputs.build?.branch;
455
+ if (!branch) {
456
+ return { status: 'skipped', outputs: { reason: 'No branch to release' } };
457
+ }
458
+ // Push branch
459
+ if (context.autonomy !== 'dry-run') {
460
+ this.repoManager.push({ branch, setUpstream: true });
461
+ outputs.pushed = true;
462
+ }
463
+ // Create PR
464
+ const prTitle = context.issue?.title || `Work ${context.workId}`;
465
+ const prBody = this.generatePRBody(context);
466
+ if (context.autonomy === 'dry-run') {
467
+ return {
468
+ status: 'completed',
469
+ outputs: {
470
+ dryRun: true,
471
+ prTitle,
472
+ branch,
473
+ message: 'Would create PR',
474
+ },
475
+ };
476
+ }
477
+ // Confirm in assisted/guarded mode
478
+ if (context.autonomy === 'assisted' || context.autonomy === 'guarded') {
479
+ const confirmed = await this.confirmAction({
480
+ phase: 'release',
481
+ action: 'create_pr',
482
+ message: `Create PR: "${prTitle}"?`,
483
+ });
484
+ if (!confirmed) {
485
+ return { status: 'skipped', outputs: { reason: 'User declined PR creation' } };
486
+ }
487
+ }
488
+ const pr = await this.repoManager.createPR({
489
+ title: prTitle,
490
+ body: prBody,
491
+ head: branch,
492
+ workId: context.workId,
493
+ });
494
+ outputs.pr = {
495
+ number: pr.number,
496
+ url: pr.url,
497
+ };
498
+ this.recordArtifact('pr', pr.url);
499
+ // Request reviews if enabled
500
+ if (this.config.phases.release.requestReviews && this.config.phases.release.reviewers.length > 0) {
501
+ await this.repoManager.requestReview(pr.number, this.config.phases.release.reviewers);
502
+ outputs.reviewsRequested = this.config.phases.release.reviewers;
503
+ }
504
+ // Update issue with PR link
505
+ if (context.issue) {
506
+ await this.workManager.createComment(context.issue.number, `Created PR: ${pr.url}`);
507
+ }
508
+ return { status: 'completed', outputs };
509
+ }
510
+ /**
511
+ * Generate PR body from context
512
+ */
513
+ generatePRBody(context) {
514
+ const lines = [];
515
+ lines.push('## Summary');
516
+ lines.push('');
517
+ if (context.issue) {
518
+ lines.push(`Closes #${context.issue.number}`);
519
+ lines.push('');
520
+ if (context.issue.body) {
521
+ lines.push('### Issue Description');
522
+ lines.push(context.issue.body.slice(0, 500));
523
+ lines.push('');
524
+ }
525
+ }
526
+ const specPath = context.previousOutputs.architect?.specPath;
527
+ if (specPath) {
528
+ lines.push(`### Specification`);
529
+ lines.push(`See [spec](${specPath})`);
530
+ lines.push('');
531
+ }
532
+ lines.push('## Test Plan');
533
+ lines.push('- [ ] Manual testing');
534
+ lines.push('- [ ] Unit tests pass');
535
+ lines.push('');
536
+ lines.push('---');
537
+ lines.push('*Generated by FABER workflow*');
538
+ return lines.join('\n');
539
+ }
540
+ /**
541
+ * Confirm an action with the user
542
+ */
543
+ async confirmAction(request) {
544
+ if (!this.userInput) {
545
+ // No user input callback, default to true
546
+ return true;
547
+ }
548
+ const result = await this.userInput(request);
549
+ return typeof result === 'boolean' ? result : result === 'yes' || result === 'y';
550
+ }
551
+ /**
552
+ * Run a workflow hook
553
+ */
554
+ async runHook(hookName) {
555
+ const hookCommand = this.config.hooks?.[hookName];
556
+ if (!hookCommand)
557
+ return;
558
+ try {
559
+ (0, child_process_1.execSync)(hookCommand, {
560
+ encoding: 'utf-8',
561
+ stdio: 'inherit',
562
+ });
563
+ }
564
+ catch (error) {
565
+ throw new errors_1.WorkflowError(`Hook ${hookName} failed: ${error}`);
566
+ }
567
+ }
568
+ /**
569
+ * Resume a paused workflow
570
+ */
571
+ async resume(workflowId) {
572
+ const state = this.stateManager.getWorkflow(workflowId);
573
+ if (!state) {
574
+ throw new errors_1.WorkflowError(`Workflow not found: ${workflowId}`);
575
+ }
576
+ this.stateManager.resumeWorkflow(workflowId);
577
+ return this.run({
578
+ workId: state.work_id,
579
+ autonomy: this.config.autonomy,
580
+ });
581
+ }
582
+ /**
583
+ * Pause the current workflow
584
+ */
585
+ pause(workflowId) {
586
+ this.stateManager.pauseWorkflow(workflowId);
587
+ }
588
+ /**
589
+ * Get workflow status
590
+ */
591
+ getStatus(workflowId) {
592
+ const state = this.stateManager.getWorkflow(workflowId);
593
+ if (!state) {
594
+ return { state: null, currentPhase: '', progress: 0 };
595
+ }
596
+ const phases = ['frame', 'architect', 'build', 'evaluate', 'release'];
597
+ const completedCount = phases.filter(p => state.phase_states[p].status === 'completed' || state.phase_states[p].status === 'skipped').length;
598
+ return {
599
+ state: state,
600
+ currentPhase: state.current_phase,
601
+ progress: Math.round((completedCount / phases.length) * 100),
602
+ };
603
+ }
604
+ }
605
+ exports.FaberWorkflow = FaberWorkflow;
606
+ //# sourceMappingURL=faber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faber.js","sourceRoot":"","sources":["../../src/workflow/faber.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iDAAyC;AAczC,kCAAsC;AACtC,kCAAsC;AACtC,kCAAsC;AACtC,kCAAqC;AACrC,oCAAwC;AACxC,sCAA0C;AAE1C;;GAEG;AACH,MAAM,aAAa,GAAmB;IACpC,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE;QACN,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACxB,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;QAC9C,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACxB,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;QAC1C,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;KAChE;CACF,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAa,aAAa;IAChB,WAAW,CAAc;IACzB,WAAW,CAAc;IACzB,WAAW,CAAc;IACzB,UAAU,CAAa;IACvB,YAAY,CAAe;IAE3B,MAAM,CAAiB;IACvB,SAAS,GAA6B,IAAI,CAAC;IAC3C,SAAS,GAAoB,EAAE,CAAC;IAChC,SAAS,GAAuB,EAAE,CAAC;IAE3C,YAAY,OAA8C;QACxD,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAW,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAW,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAW,EAAE,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAU,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAY,EAAE,CAAC;QAEvC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;QACvD,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,QAA2B;QAC9C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAuB;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,QAAuB;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,IAAI,CAAC,KAAoB,EAAE,IAAa;QAC9C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,QAAQ,CAAC,KAAK,EAAE,IAA+B,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAA8B,EAAE,IAAY;QACjE,MAAM,QAAQ,GAAqB;YACjC,IAAI;YACJ,IAAI;YACJ,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAwB;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAE1D,yBAAyB;QACzB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACtD,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,kCAAkC;QAClC,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC;QAErC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE9D,sBAAsB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAEtE,sBAAsB;QACtB,IAAI,OAAO,GAAiB;YAC1B,UAAU;YACV,MAAM;YACN,KAAK,EAAE,EAAE;YACT,QAAQ;YACR,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,EAAE;SACpB,CAAC;QAEF,MAAM,YAAY,GAAkB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAEpF,IAAI,CAAC;YACH,0BAA0B;YAC1B,IAAI,CAAC;gBACH,OAAO,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC;YAAC,MAAM,CAAC;gBACP,0EAA0E;YAC5E,CAAC;YAED,iBAAiB;YACjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,4BAA4B;gBAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;oBACxC,YAAY,CAAC,IAAI,CAAC;wBAChB,KAAK;wBACL,MAAM,EAAE,SAAS;wBACjB,WAAW,EAAE,CAAC;qBACf,CAAC,CAAC;oBACH,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;oBAC3D,SAAS;gBACX,CAAC;gBAED,4BAA4B;gBAC5B,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;oBACrD,YAAY,CAAC,IAAI,CAAC;wBAChB,KAAK;wBACL,MAAM,EAAE,WAAW;wBACnB,WAAW,EAAE,CAAC;wBACd,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO;qBAC3C,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBAED,YAAY;gBACZ,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;gBACtB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAElC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAEhD,8BAA8B;gBAC9B,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,EAAoC,CAAC,CAAC;gBAErE,oBAAoB;gBACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAEnD,+BAA+B;gBAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,EAAoC,CAAC,CAAC;gBAEtE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;gBAElD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;oBAClC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACnE,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;oBACtD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9E,CAAC;qBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACtC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;oBAChF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACtE,CAAC;qBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACvC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;oBAC/C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjD,CAAC;gBAED,YAAY,CAAC,IAAI,CAAC;oBAChB,KAAK;oBACL,MAAM,EAAE,MAAM,CAAC,MAA+B;oBAC9C,WAAW,EAAE,aAAa;oBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;iBACpB,CAAC,CAAC;gBAEH,wBAAwB;gBACxB,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,WAAW,EAAE;oBACzD,KAAK;oBACL,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,WAAW,EAAE,aAAa;oBAC1B,KAAK,EAAE,EAAE;iBACV,CAAC,CAAC;gBAEH,yDAAyD;gBACzD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;oBAC5D,MAAM;gBACR,CAAC;gBAED,4BAA4B;gBAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;oBACpC,gCAAgC;oBAChC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBAC5C,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC5E,MAAM;gBACR,CAAC;gBAED,kCAAkC;gBAClC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAE,CAAC;YACrD,CAAC;YAED,yBAAyB;YACzB,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACpC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;YAEzH,oBAAoB;YACpB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAE5G,4BAA4B;YAC5B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACtC,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAExC,MAAM,MAAM,GAAmB;gBAC7B,WAAW,EAAE,UAAU;gBACvB,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,YAAY;gBACpB,WAAW,EAAE,QAAQ;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;YAEF,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YACrC,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAExC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAEnE,OAAO;gBACL,WAAW,EAAE,UAAU;gBACvB,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,YAAY;gBACpB,WAAW,EAAE,QAAQ;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ,CAAC,KAAiB,EAAE,OAAqB;QAC7D,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACrC,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACzC,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACrC,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACxC,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACvC;gBACE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,OAAqB;QAC/C,MAAM,OAAO,GAA4B,EAAE,CAAC;QAE5C,iCAAiC;QACjC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,GAAG;gBACd,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;gBAC5B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;gBAC1B,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;gBACxB,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;gBAC5B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;aAC3B,CAAC;YAEF,qBAAqB;YACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACxE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,uCAAuC;YACvC,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACtE,OAAO;oBACL,MAAM,EAAE,aAAa;oBACrB,OAAO,EAAE,8DAA8D;iBACxE,CAAC;YACJ,CAAC;YAED,iDAAiD;YACjD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO;oBACL,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,sCAAsC,EAAE;iBAC3E,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,OAAqB;QACnD,MAAM,OAAO,GAA4B,EAAE,CAAC;QAE5C,0BAA0B;QAC1B,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACxB,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAE7E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,QAAkB,IAAI,SAAS,CAAC;YAChF,MAAM,QAAQ,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAEzF,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE;gBACtD,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ;gBACR,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;aAC5B,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAE7B,yBAAyB;YACzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAExE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;oBAC9D,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;oBAExC,yCAAyC;oBACzC,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;wBACpC,OAAO;4BACL,MAAM,EAAE,aAAa;4BACrB,OAAO,EAAE,6DAA6D;4BACtE,OAAO;yBACR,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,gBAAgB;YAChB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;QAClC,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,OAAqB;QAC/C,MAAM,OAAO,GAA4B,EAAE,CAAC;QAE5C,gBAAgB;QAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,QAAkB,IAAI,SAAS,CAAC;QAChF,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QAEpE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;YACrD,IAAI,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC5C,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,yBAAyB;QACzB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,+BAA+B;YAC/B,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO;oBACL,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,EAAE;iBACtE,CAAC;YACJ,CAAC;YAED,mCAAmC;YACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACtE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC;oBACzC,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,eAAe;oBACvB,OAAO,EAAE,kBAAkB,UAAU,GAAG;iBACzC,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,+BAA+B,EAAE,EAAE,CAAC;gBACrF,CAAC;YACH,CAAC;YAED,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;QAE5B,kCAAkC;QAClC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YAC3B,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QAEH,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;QAE9B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,OAAqB;QAClD,MAAM,OAAO,GAA4B,EAAE,CAAC;QAE5C,mCAAmC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,MAAgB,CAAC;QACnE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE,EAAE,CAAC;QACnF,CAAC;QAED,gBAAgB;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;QAEhC,6BAA6B;QAC7B,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAkB,IAAI,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAE1D,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;gBAC1B,OAAO,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;gBAChC,OAAO;oBACL,MAAM,EAAE,aAAa;oBACrB,OAAO,EAAE,4BAA4B,QAAQ,GAAG,CAAC,IAAI,UAAU,EAAE;oBACjE,OAAO;oBACP,KAAK,EAAE,sBAAsB,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;iBAClE,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,OAAO;gBACP,KAAK,EAAE,2BAA2B,UAAU,WAAW;aACxD,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAE9B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,OAAqB;QACjD,MAAM,OAAO,GAA4B,EAAE,CAAC;QAE5C,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,MAAgB,CAAC;QAC/D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAE,CAAC;QAC5E,CAAC;QAED,cAAc;QACd,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,YAAY;QACZ,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO;gBACL,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE;oBACP,MAAM,EAAE,IAAI;oBACZ,OAAO;oBACP,MAAM;oBACN,OAAO,EAAE,iBAAiB;iBAC3B;aACF,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC;gBACzC,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,eAAe,OAAO,IAAI;aACpC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,2BAA2B,EAAE,EAAE,CAAC;YACjF,CAAC;QACH,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACzC,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,GAAG;YACX,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,EAAE,EAAE,CAAC,GAAG;SACZ,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAElC,6BAA6B;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACtF,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;QAClE,CAAC;QAED,4BAA4B;QAC5B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAClC,OAAO,CAAC,KAAK,CAAC,MAAM,EACpB,eAAe,EAAE,CAAC,GAAG,EAAE,CACxB,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAqB;QAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC7D,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAE5C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,OAI3B;QACC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,0CAA0C;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,GAAG,CAAC;IACnF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAC,QAAuC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,WAAW,EAAE;gBACpB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,sBAAa,CAAC,QAAQ,QAAQ,YAAY,KAAK,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,UAAkB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,sBAAa,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAE7C,OAAO,IAAI,CAAC,GAAG,CAAC;YACd,MAAM,EAAE,KAAK,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;SAC/B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAkB;QACtB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,UAAkB;QAK1B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACxD,CAAC;QAED,MAAM,MAAM,GAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACpF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAChG,CAAC,MAAM,CAAC;QAET,OAAO;YACL,KAAK,EAAE,KAA2C;YAClD,YAAY,EAAE,KAAK,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;SAC7D,CAAC;IACJ,CAAC;CACF;AAvqBD,sCAuqBC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @fractary/faber - Workflow Module
3
+ *
4
+ * FABER workflow orchestration.
5
+ */
6
+ export { FaberWorkflow } from './faber';
7
+ export * from './types';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/faber - Workflow Module
4
+ *
5
+ * FABER workflow orchestration.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.FaberWorkflow = void 0;
23
+ var faber_1 = require("./faber");
24
+ Object.defineProperty(exports, "FaberWorkflow", { enumerable: true, get: function () { return faber_1.FaberWorkflow; } });
25
+ __exportStar(require("./types"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AACtB,0CAAwB"}