@fractary/faber 0.1.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 (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,517 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/faber - State Manager
4
+ *
5
+ * Workflow state persistence and recovery.
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.StateManager = void 0;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const config_1 = require("../config");
45
+ const errors_1 = require("../errors");
46
+ /**
47
+ * Generate a unique workflow ID
48
+ */
49
+ function generateWorkflowId() {
50
+ const timestamp = Date.now().toString(36);
51
+ const random = Math.random().toString(36).substring(2, 6);
52
+ return `WF-${timestamp}-${random}`.toUpperCase();
53
+ }
54
+ /**
55
+ * Generate a unique manifest ID
56
+ */
57
+ function generateManifestId() {
58
+ const timestamp = Date.now().toString(36);
59
+ const random = Math.random().toString(36).substring(2, 6);
60
+ return `MAN-${timestamp}-${random}`.toUpperCase();
61
+ }
62
+ /**
63
+ * Generate a unique checkpoint ID
64
+ */
65
+ function generateCheckpointId() {
66
+ const timestamp = Date.now().toString(36);
67
+ const random = Math.random().toString(36).substring(2, 4);
68
+ return `CP-${timestamp}-${random}`.toUpperCase();
69
+ }
70
+ /**
71
+ * Default phase state
72
+ */
73
+ function defaultPhaseState() {
74
+ return {
75
+ status: 'pending',
76
+ attempts: 0,
77
+ };
78
+ }
79
+ /**
80
+ * State Manager
81
+ *
82
+ * Handles workflow state persistence, checkpoints, and recovery.
83
+ */
84
+ class StateManager {
85
+ config;
86
+ stateDir;
87
+ constructor(config) {
88
+ this.config = config || (0, config_1.loadStateConfig)();
89
+ const projectRoot = (0, config_1.findProjectRoot)();
90
+ this.stateDir = this.config.localPath || path.join(projectRoot, '.faber', 'state');
91
+ }
92
+ /**
93
+ * Ensure state directory exists
94
+ */
95
+ ensureStateDir(subDir) {
96
+ const dir = subDir ? path.join(this.stateDir, subDir) : this.stateDir;
97
+ if (!fs.existsSync(dir)) {
98
+ fs.mkdirSync(dir, { recursive: true });
99
+ }
100
+ return dir;
101
+ }
102
+ /**
103
+ * Get path for a state file
104
+ */
105
+ getStatePath(type, id) {
106
+ return path.join(this.ensureStateDir(type), `${id}.json`);
107
+ }
108
+ // =========================================================================
109
+ // Workflow State Operations
110
+ // =========================================================================
111
+ /**
112
+ * Create a new workflow state
113
+ */
114
+ createWorkflow(workId) {
115
+ const workflowId = generateWorkflowId();
116
+ const now = new Date().toISOString();
117
+ const state = {
118
+ workflow_id: workflowId,
119
+ work_id: workId,
120
+ current_phase: 'frame',
121
+ phase_states: {
122
+ frame: defaultPhaseState(),
123
+ architect: defaultPhaseState(),
124
+ build: defaultPhaseState(),
125
+ evaluate: defaultPhaseState(),
126
+ release: defaultPhaseState(),
127
+ },
128
+ started_at: now,
129
+ updated_at: now,
130
+ status: 'running',
131
+ };
132
+ this.saveWorkflow(state);
133
+ return state;
134
+ }
135
+ /**
136
+ * Save workflow state
137
+ */
138
+ saveWorkflow(state) {
139
+ const filePath = this.getStatePath('workflows', state.workflow_id);
140
+ state.updated_at = new Date().toISOString();
141
+ fs.writeFileSync(filePath, JSON.stringify(state, null, 2), 'utf-8');
142
+ // Also save as active workflow for the work item
143
+ const activeFile = this.getStatePath('active', state.work_id);
144
+ fs.writeFileSync(activeFile, JSON.stringify({ workflow_id: state.workflow_id }, null, 2), 'utf-8');
145
+ }
146
+ /**
147
+ * Get workflow state by ID
148
+ */
149
+ getWorkflow(workflowId) {
150
+ const filePath = this.getStatePath('workflows', workflowId);
151
+ if (!fs.existsSync(filePath)) {
152
+ return null;
153
+ }
154
+ return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
155
+ }
156
+ /**
157
+ * Get active workflow for a work item
158
+ */
159
+ getActiveWorkflow(workId) {
160
+ const activeFile = this.getStatePath('active', workId);
161
+ if (!fs.existsSync(activeFile)) {
162
+ return null;
163
+ }
164
+ const active = JSON.parse(fs.readFileSync(activeFile, 'utf-8'));
165
+ return this.getWorkflow(active.workflow_id);
166
+ }
167
+ /**
168
+ * List all workflows
169
+ */
170
+ listWorkflows(options) {
171
+ const workflowsDir = this.ensureStateDir('workflows');
172
+ const files = fs.readdirSync(workflowsDir).filter(f => f.endsWith('.json'));
173
+ const workflows = [];
174
+ for (const file of files) {
175
+ const state = JSON.parse(fs.readFileSync(path.join(workflowsDir, file), 'utf-8'));
176
+ // Apply filters
177
+ if (options?.workId && state.work_id !== options.workId)
178
+ continue;
179
+ if (options?.status && state.status !== options.status)
180
+ continue;
181
+ if (options?.since && new Date(state.started_at) < new Date(options.since))
182
+ continue;
183
+ workflows.push(state);
184
+ }
185
+ // Sort by updated_at descending
186
+ workflows.sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime());
187
+ // Apply limit
188
+ if (options?.limit) {
189
+ return workflows.slice(0, options.limit);
190
+ }
191
+ return workflows;
192
+ }
193
+ /**
194
+ * Update workflow phase
195
+ */
196
+ updatePhase(workflowId, phase, updates, options) {
197
+ const state = this.getWorkflow(workflowId);
198
+ if (!state) {
199
+ throw new errors_1.StateError(`Workflow not found: ${workflowId}`);
200
+ }
201
+ // Create checkpoint if requested
202
+ if (options?.createCheckpoint) {
203
+ this.createCheckpoint(workflowId, phase, 'phase_update', { updates });
204
+ }
205
+ // Update phase state
206
+ const currentPhaseState = state.phase_states[phase];
207
+ state.phase_states[phase] = {
208
+ ...currentPhaseState,
209
+ ...updates,
210
+ };
211
+ // Update current phase if progressing
212
+ if (updates.status === 'completed') {
213
+ const phases = ['frame', 'architect', 'build', 'evaluate', 'release'];
214
+ const currentIndex = phases.indexOf(phase);
215
+ if (currentIndex < phases.length - 1) {
216
+ state.current_phase = phases[currentIndex + 1];
217
+ }
218
+ }
219
+ // Update workflow status based on phase states
220
+ if (updates.status === 'failed') {
221
+ state.status = 'failed';
222
+ }
223
+ else if (phase === 'release' && updates.status === 'completed') {
224
+ state.status = 'completed';
225
+ }
226
+ this.saveWorkflow(state);
227
+ return state;
228
+ }
229
+ /**
230
+ * Start a phase
231
+ */
232
+ startPhase(workflowId, phase) {
233
+ return this.updatePhase(workflowId, phase, {
234
+ status: 'in_progress',
235
+ started_at: new Date().toISOString(),
236
+ attempts: (this.getWorkflow(workflowId)?.phase_states[phase].attempts || 0) + 1,
237
+ });
238
+ }
239
+ /**
240
+ * Complete a phase
241
+ */
242
+ completePhase(workflowId, phase, outputs) {
243
+ return this.updatePhase(workflowId, phase, {
244
+ status: 'completed',
245
+ completed_at: new Date().toISOString(),
246
+ outputs,
247
+ });
248
+ }
249
+ /**
250
+ * Fail a phase
251
+ */
252
+ failPhase(workflowId, phase, error) {
253
+ return this.updatePhase(workflowId, phase, {
254
+ status: 'failed',
255
+ error,
256
+ });
257
+ }
258
+ /**
259
+ * Skip a phase
260
+ */
261
+ skipPhase(workflowId, phase, reason) {
262
+ return this.updatePhase(workflowId, phase, {
263
+ status: 'skipped',
264
+ error: reason,
265
+ });
266
+ }
267
+ /**
268
+ * Pause workflow
269
+ */
270
+ pauseWorkflow(workflowId) {
271
+ const state = this.getWorkflow(workflowId);
272
+ if (!state) {
273
+ throw new errors_1.StateError(`Workflow not found: ${workflowId}`);
274
+ }
275
+ state.status = 'paused';
276
+ this.saveWorkflow(state);
277
+ // Create checkpoint for recovery
278
+ this.createCheckpoint(workflowId, state.current_phase, 'pause', {});
279
+ return state;
280
+ }
281
+ /**
282
+ * Resume workflow
283
+ */
284
+ resumeWorkflow(workflowId) {
285
+ const state = this.getWorkflow(workflowId);
286
+ if (!state) {
287
+ throw new errors_1.StateError(`Workflow not found: ${workflowId}`);
288
+ }
289
+ if (state.status !== 'paused') {
290
+ throw new errors_1.StateError(`Workflow is not paused: ${workflowId}`);
291
+ }
292
+ state.status = 'running';
293
+ this.saveWorkflow(state);
294
+ return state;
295
+ }
296
+ // =========================================================================
297
+ // Checkpoint Operations
298
+ // =========================================================================
299
+ /**
300
+ * Create a checkpoint
301
+ */
302
+ createCheckpoint(workflowId, phase, step, data) {
303
+ const checkpoint = {
304
+ id: generateCheckpointId(),
305
+ workflow_id: workflowId,
306
+ phase,
307
+ step,
308
+ timestamp: new Date().toISOString(),
309
+ data,
310
+ };
311
+ const filePath = this.getStatePath('checkpoints', checkpoint.id);
312
+ fs.writeFileSync(filePath, JSON.stringify(checkpoint, null, 2), 'utf-8');
313
+ return checkpoint;
314
+ }
315
+ /**
316
+ * Get checkpoint by ID
317
+ */
318
+ getCheckpoint(checkpointId) {
319
+ const filePath = this.getStatePath('checkpoints', checkpointId);
320
+ if (!fs.existsSync(filePath)) {
321
+ return null;
322
+ }
323
+ return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
324
+ }
325
+ /**
326
+ * List checkpoints for a workflow
327
+ */
328
+ listCheckpoints(workflowId) {
329
+ const checkpointsDir = this.ensureStateDir('checkpoints');
330
+ const files = fs.readdirSync(checkpointsDir).filter(f => f.endsWith('.json'));
331
+ const checkpoints = [];
332
+ for (const file of files) {
333
+ const checkpoint = JSON.parse(fs.readFileSync(path.join(checkpointsDir, file), 'utf-8'));
334
+ if (checkpoint.workflow_id === workflowId) {
335
+ checkpoints.push(checkpoint);
336
+ }
337
+ }
338
+ // Sort by timestamp
339
+ checkpoints.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
340
+ return checkpoints;
341
+ }
342
+ /**
343
+ * Get latest checkpoint for a workflow
344
+ */
345
+ getLatestCheckpoint(workflowId) {
346
+ const checkpoints = this.listCheckpoints(workflowId);
347
+ return checkpoints.length > 0 ? checkpoints[checkpoints.length - 1] : null;
348
+ }
349
+ // =========================================================================
350
+ // Run Manifest Operations
351
+ // =========================================================================
352
+ /**
353
+ * Create a run manifest
354
+ */
355
+ createManifest(workflowId, workId) {
356
+ const manifest = {
357
+ manifest_id: generateManifestId(),
358
+ workflow_id: workflowId,
359
+ work_id: workId,
360
+ created_at: new Date().toISOString(),
361
+ status: 'running',
362
+ phases: [],
363
+ artifacts: [],
364
+ };
365
+ this.saveManifest(manifest);
366
+ return manifest;
367
+ }
368
+ /**
369
+ * Save run manifest
370
+ */
371
+ saveManifest(manifest) {
372
+ const filePath = this.getStatePath('manifests', manifest.manifest_id);
373
+ fs.writeFileSync(filePath, JSON.stringify(manifest, null, 2), 'utf-8');
374
+ }
375
+ /**
376
+ * Get run manifest
377
+ */
378
+ getManifest(manifestId) {
379
+ const filePath = this.getStatePath('manifests', manifestId);
380
+ if (!fs.existsSync(filePath)) {
381
+ return null;
382
+ }
383
+ return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
384
+ }
385
+ /**
386
+ * Add phase to manifest
387
+ */
388
+ addPhaseToManifest(manifestId, phaseManifest) {
389
+ const manifest = this.getManifest(manifestId);
390
+ if (!manifest) {
391
+ throw new errors_1.StateError(`Manifest not found: ${manifestId}`);
392
+ }
393
+ manifest.phases.push(phaseManifest);
394
+ this.saveManifest(manifest);
395
+ }
396
+ /**
397
+ * Add artifact to manifest
398
+ */
399
+ addArtifactToManifest(manifestId, artifact) {
400
+ const manifest = this.getManifest(manifestId);
401
+ if (!manifest) {
402
+ throw new errors_1.StateError(`Manifest not found: ${manifestId}`);
403
+ }
404
+ manifest.artifacts.push(artifact);
405
+ this.saveManifest(manifest);
406
+ }
407
+ /**
408
+ * Complete manifest
409
+ */
410
+ completeManifest(manifestId, status) {
411
+ const manifest = this.getManifest(manifestId);
412
+ if (!manifest) {
413
+ throw new errors_1.StateError(`Manifest not found: ${manifestId}`);
414
+ }
415
+ manifest.completed_at = new Date().toISOString();
416
+ manifest.status = status;
417
+ this.saveManifest(manifest);
418
+ return manifest;
419
+ }
420
+ // =========================================================================
421
+ // Recovery Operations
422
+ // =========================================================================
423
+ /**
424
+ * Recover a workflow from a checkpoint or phase
425
+ */
426
+ recoverWorkflow(workflowId, options) {
427
+ const state = this.getWorkflow(workflowId);
428
+ if (!state) {
429
+ throw new errors_1.StateError(`Workflow not found: ${workflowId}`);
430
+ }
431
+ // If recovering from a specific checkpoint
432
+ if (options?.checkpointId) {
433
+ const checkpoint = this.getCheckpoint(options.checkpointId);
434
+ if (!checkpoint) {
435
+ throw new errors_1.StateError(`Checkpoint not found: ${options.checkpointId}`);
436
+ }
437
+ state.current_phase = checkpoint.phase;
438
+ }
439
+ // If recovering from a specific phase
440
+ if (options?.fromPhase) {
441
+ const phases = ['frame', 'architect', 'build', 'evaluate', 'release'];
442
+ const fromIndex = phases.indexOf(options.fromPhase);
443
+ if (fromIndex === -1) {
444
+ throw new errors_1.StateError(`Invalid phase: ${options.fromPhase}`);
445
+ }
446
+ state.current_phase = options.fromPhase;
447
+ // Reset phases from the recovery point
448
+ for (let i = fromIndex; i < phases.length; i++) {
449
+ if (!options.skipPhases?.includes(phases[i])) {
450
+ state.phase_states[phases[i]] = defaultPhaseState();
451
+ }
452
+ }
453
+ }
454
+ // Skip specified phases
455
+ if (options?.skipPhases) {
456
+ for (const phase of options.skipPhases) {
457
+ state.phase_states[phase].status = 'skipped';
458
+ }
459
+ }
460
+ state.status = 'running';
461
+ this.saveWorkflow(state);
462
+ return state;
463
+ }
464
+ // =========================================================================
465
+ // Cleanup Operations
466
+ // =========================================================================
467
+ /**
468
+ * Delete workflow state
469
+ */
470
+ deleteWorkflow(workflowId) {
471
+ const workflowPath = this.getStatePath('workflows', workflowId);
472
+ if (!fs.existsSync(workflowPath)) {
473
+ return false;
474
+ }
475
+ // Get the work_id to clean up active state
476
+ const state = this.getWorkflow(workflowId);
477
+ if (state) {
478
+ const activePath = this.getStatePath('active', state.work_id);
479
+ if (fs.existsSync(activePath)) {
480
+ fs.unlinkSync(activePath);
481
+ }
482
+ }
483
+ fs.unlinkSync(workflowPath);
484
+ return true;
485
+ }
486
+ /**
487
+ * Clean up old workflows and checkpoints
488
+ */
489
+ cleanup(maxAgeDays = 30) {
490
+ const result = { deleted: 0, errors: [] };
491
+ const cutoffDate = new Date();
492
+ cutoffDate.setDate(cutoffDate.getDate() - maxAgeDays);
493
+ // Clean up completed/failed workflows
494
+ const workflows = this.listWorkflows();
495
+ for (const workflow of workflows) {
496
+ if ((workflow.status === 'completed' || workflow.status === 'failed') &&
497
+ new Date(workflow.updated_at) < cutoffDate) {
498
+ try {
499
+ this.deleteWorkflow(workflow.workflow_id);
500
+ result.deleted++;
501
+ }
502
+ catch (error) {
503
+ result.errors.push(`Failed to delete workflow ${workflow.workflow_id}: ${error}`);
504
+ }
505
+ }
506
+ }
507
+ return result;
508
+ }
509
+ /**
510
+ * Get state directory path
511
+ */
512
+ getStateDir() {
513
+ return this.stateDir;
514
+ }
515
+ }
516
+ exports.StateManager = StateManager;
517
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/state/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @fractary/faber - State Module Types
3
+ *
4
+ * Re-exports from main types + state-specific interfaces.
5
+ */
6
+ export { StateConfig, FaberPhase, WorkflowState, PhaseState, RunManifest, PhaseManifest, StepManifest, ArtifactManifest, } from '../types';
7
+ /**
8
+ * State store key
9
+ */
10
+ export type StateKey = 'workflow' | 'session' | 'manifest' | 'checkpoint';
11
+ /**
12
+ * Checkpoint for recovery
13
+ */
14
+ export interface Checkpoint {
15
+ id: string;
16
+ workflow_id: string;
17
+ phase: string;
18
+ step: string;
19
+ timestamp: string;
20
+ data: Record<string, unknown>;
21
+ }
22
+ /**
23
+ * State update options
24
+ */
25
+ export interface StateUpdateOptions {
26
+ merge?: boolean;
27
+ createCheckpoint?: boolean;
28
+ }
29
+ /**
30
+ * State query options
31
+ */
32
+ export interface StateQueryOptions {
33
+ workId?: string;
34
+ status?: string;
35
+ since?: string;
36
+ limit?: number;
37
+ }
38
+ /**
39
+ * Recovery options
40
+ */
41
+ export interface RecoveryOptions {
42
+ checkpointId?: string;
43
+ fromPhase?: string;
44
+ skipPhases?: string[];
45
+ }
46
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,WAAW,EACX,UAAU,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/faber - State Module Types
4
+ *
5
+ * Re-exports from main types + state-specific interfaces.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @fractary/faber - Codex Adapter
3
+ *
4
+ * Optional integration with @fractary/codex for cross-project storage.
5
+ * Uses runtime detection - no compile-time dependency on Codex.
6
+ */
7
+ import { Storage, FaberConfig } from '../types';
8
+ /**
9
+ * Adapter for @fractary/codex integration
10
+ */
11
+ export declare class CodexAdapter {
12
+ private codex;
13
+ constructor();
14
+ /**
15
+ * Try to load @fractary/codex at runtime
16
+ */
17
+ private tryLoadCodex;
18
+ /**
19
+ * Check if Codex is available
20
+ */
21
+ isAvailable(): boolean;
22
+ /**
23
+ * Check if Codex is enabled for a specific artifact type
24
+ */
25
+ isEnabledFor(artifactType: string): boolean;
26
+ /**
27
+ * Store content via Codex
28
+ */
29
+ store(type: string, id: string, content: string): Promise<string>;
30
+ /**
31
+ * Retrieve content via Codex
32
+ */
33
+ retrieve(type: string, id: string): Promise<string | null>;
34
+ /**
35
+ * Check if content exists via Codex
36
+ */
37
+ exists(type: string, id: string): Promise<boolean>;
38
+ /**
39
+ * List content via Codex
40
+ */
41
+ list(type: string): Promise<string[]>;
42
+ /**
43
+ * Delete content via Codex
44
+ */
45
+ delete(type: string, id: string): Promise<void>;
46
+ /**
47
+ * Get a Codex reference URI
48
+ */
49
+ getReference(type: string, id: string): string;
50
+ }
51
+ /**
52
+ * Create storage for an artifact type
53
+ *
54
+ * Uses Codex if:
55
+ * 1. @fractary/codex is installed
56
+ * 2. Codex is configured and enabled for this artifact type
57
+ * 3. FABER config has use_codex: true for this artifact
58
+ *
59
+ * Otherwise falls back to local storage.
60
+ */
61
+ export declare function createStorage(artifactType: 'specs' | 'logs' | 'state', config?: FaberConfig): Storage;
62
+ //# sourceMappingURL=codex-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/codex-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAmBhD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAA8B;;IAM3C;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAW3C;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvE;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOhE;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOxD;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO3C;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;CAG/C;AA+CD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,YAAY,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,EACxC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAyBT"}