@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,177 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/faber - Codex Adapter
4
+ *
5
+ * Optional integration with @fractary/codex for cross-project storage.
6
+ * Uses runtime detection - no compile-time dependency on Codex.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CodexAdapter = void 0;
10
+ exports.createStorage = createStorage;
11
+ const errors_1 = require("../errors");
12
+ const local_1 = require("./local");
13
+ const config_1 = require("../config");
14
+ /**
15
+ * Adapter for @fractary/codex integration
16
+ */
17
+ class CodexAdapter {
18
+ codex = null;
19
+ constructor() {
20
+ this.codex = this.tryLoadCodex();
21
+ }
22
+ /**
23
+ * Try to load @fractary/codex at runtime
24
+ */
25
+ tryLoadCodex() {
26
+ try {
27
+ // Dynamic require - no compile-time dependency
28
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
29
+ const codexModule = require('@fractary/codex');
30
+ return new codexModule.Codex();
31
+ }
32
+ catch {
33
+ // Codex not installed - this is fine
34
+ return null;
35
+ }
36
+ }
37
+ /**
38
+ * Check if Codex is available
39
+ */
40
+ isAvailable() {
41
+ return this.codex !== null;
42
+ }
43
+ /**
44
+ * Check if Codex is enabled for a specific artifact type
45
+ */
46
+ isEnabledFor(artifactType) {
47
+ if (!this.codex)
48
+ return false;
49
+ try {
50
+ const config = this.codex.getConfig();
51
+ return config.types?.[artifactType]?.enabled === true;
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ /**
58
+ * Store content via Codex
59
+ */
60
+ async store(type, id, content) {
61
+ if (!this.codex) {
62
+ throw new errors_1.FaberError('Codex not available', 'CODEX_NOT_AVAILABLE', {});
63
+ }
64
+ return this.codex.store(type, id, content);
65
+ }
66
+ /**
67
+ * Retrieve content via Codex
68
+ */
69
+ async retrieve(type, id) {
70
+ if (!this.codex) {
71
+ throw new errors_1.FaberError('Codex not available', 'CODEX_NOT_AVAILABLE', {});
72
+ }
73
+ return this.codex.get(type, id);
74
+ }
75
+ /**
76
+ * Check if content exists via Codex
77
+ */
78
+ async exists(type, id) {
79
+ if (!this.codex) {
80
+ throw new errors_1.FaberError('Codex not available', 'CODEX_NOT_AVAILABLE', {});
81
+ }
82
+ return this.codex.exists(type, id);
83
+ }
84
+ /**
85
+ * List content via Codex
86
+ */
87
+ async list(type) {
88
+ if (!this.codex) {
89
+ throw new errors_1.FaberError('Codex not available', 'CODEX_NOT_AVAILABLE', {});
90
+ }
91
+ return this.codex.list(type);
92
+ }
93
+ /**
94
+ * Delete content via Codex
95
+ */
96
+ async delete(type, id) {
97
+ if (!this.codex) {
98
+ throw new errors_1.FaberError('Codex not available', 'CODEX_NOT_AVAILABLE', {});
99
+ }
100
+ return this.codex.delete(type, id);
101
+ }
102
+ /**
103
+ * Get a Codex reference URI
104
+ */
105
+ getReference(type, id) {
106
+ return `codex://${type}/${id}`;
107
+ }
108
+ }
109
+ exports.CodexAdapter = CodexAdapter;
110
+ /**
111
+ * Storage implementation that delegates to Codex
112
+ */
113
+ class CodexStorage {
114
+ codex;
115
+ type;
116
+ constructor(codex, type) {
117
+ this.codex = codex;
118
+ this.type = type;
119
+ }
120
+ async write(id, content) {
121
+ await this.codex.store(this.type, id, content);
122
+ return this.codex.getReference(this.type, id);
123
+ }
124
+ async read(id) {
125
+ return this.codex.retrieve(this.type, id);
126
+ }
127
+ async exists(id) {
128
+ return this.codex.exists(this.type, id);
129
+ }
130
+ async list(prefix) {
131
+ const all = await this.codex.list(this.type);
132
+ if (!prefix)
133
+ return all;
134
+ return all.filter(item => item.startsWith(prefix));
135
+ }
136
+ async delete(id) {
137
+ return this.codex.delete(this.type, id);
138
+ }
139
+ }
140
+ /**
141
+ * Artifact type to storage path mapping
142
+ */
143
+ const DEFAULT_PATHS = {
144
+ specs: '/specs',
145
+ logs: '.fractary/logs',
146
+ state: '.fractary/plugins/faber',
147
+ };
148
+ /**
149
+ * Create storage for an artifact type
150
+ *
151
+ * Uses Codex if:
152
+ * 1. @fractary/codex is installed
153
+ * 2. Codex is configured and enabled for this artifact type
154
+ * 3. FABER config has use_codex: true for this artifact
155
+ *
156
+ * Otherwise falls back to local storage.
157
+ */
158
+ function createStorage(artifactType, config) {
159
+ const codex = new CodexAdapter();
160
+ const projectRoot = (0, config_1.findProjectRoot)();
161
+ // Check if Codex should be used
162
+ const useCodex = config?.artifacts?.[artifactType]?.use_codex === true &&
163
+ codex.isAvailable() &&
164
+ codex.isEnabledFor(artifactType);
165
+ if (useCodex) {
166
+ return new CodexStorage(codex, artifactType);
167
+ }
168
+ // Fall back to local storage
169
+ const localPath = config?.artifacts?.[artifactType]?.local_path ||
170
+ DEFAULT_PATHS[artifactType];
171
+ // Resolve relative to project root
172
+ const fullPath = localPath.startsWith('/')
173
+ ? `${projectRoot}${localPath}`
174
+ : `${projectRoot}/${localPath}`;
175
+ return new local_1.LocalStorage(fullPath);
176
+ }
177
+ //# sourceMappingURL=codex-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-adapter.js","sourceRoot":"","sources":["../../src/storage/codex-adapter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAoLH,sCA4BC;AA7MD,sCAAuC;AACvC,mCAAuC;AACvC,sCAA4C;AAgB5C;;GAEG;AACH,MAAa,YAAY;IACf,KAAK,GAAyB,IAAI,CAAC;IAE3C;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC;YACH,+CAA+C;YAC/C,iEAAiE;YACjE,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAgB,CAAC;YAC9D,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,YAAoB;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAE9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,EAAU,EAAE,OAAe;QACnD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,mBAAU,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,EAAU;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,mBAAU,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,EAAU;QACnC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,mBAAU,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,mBAAU,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,EAAU;QACnC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,mBAAU,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY,EAAE,EAAU;QACnC,OAAO,WAAW,IAAI,IAAI,EAAE,EAAE,CAAC;IACjC,CAAC;CACF;AAnGD,oCAmGC;AAED;;GAEG;AACH,MAAM,YAAY;IACR,KAAK,CAAe;IACpB,IAAI,CAAS;IAErB,YAAY,KAAmB,EAAE,IAAY;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAU,EAAE,OAAe;QACrC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM;YAAE,OAAO,GAAG,CAAC;QACxB,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,aAAa,GAA2B;IAC5C,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,yBAAyB;CACjC,CAAC;AAEF;;;;;;;;;GASG;AACH,SAAgB,aAAa,CAC3B,YAAwC,EACxC,MAAoB;IAEpB,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,IAAA,wBAAe,GAAE,CAAC;IAEtC,gCAAgC;IAChC,MAAM,QAAQ,GACZ,MAAM,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,SAAS,KAAK,IAAI;QACrD,KAAK,CAAC,WAAW,EAAE;QACnB,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAEnC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GACb,MAAM,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,UAAU;QAC7C,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9B,mCAAmC;IACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;QACxC,CAAC,CAAC,GAAG,WAAW,GAAG,SAAS,EAAE;QAC9B,CAAC,CAAC,GAAG,WAAW,IAAI,SAAS,EAAE,CAAC;IAElC,OAAO,IAAI,oBAAY,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @fractary/faber - Storage Module
3
+ *
4
+ * Provides local storage for artifacts (specs, logs, state).
5
+ * When @fractary/codex is installed and enabled, delegates to Codex.
6
+ */
7
+ export { LocalStorage } from './local';
8
+ export { CodexAdapter, createStorage } from './codex-adapter';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/faber - Storage Module
4
+ *
5
+ * Provides local storage for artifacts (specs, logs, state).
6
+ * When @fractary/codex is installed and enabled, delegates to Codex.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.createStorage = exports.CodexAdapter = exports.LocalStorage = void 0;
10
+ var local_1 = require("./local");
11
+ Object.defineProperty(exports, "LocalStorage", { enumerable: true, get: function () { return local_1.LocalStorage; } });
12
+ var codex_adapter_1 = require("./codex-adapter");
13
+ Object.defineProperty(exports, "CodexAdapter", { enumerable: true, get: function () { return codex_adapter_1.CodexAdapter; } });
14
+ Object.defineProperty(exports, "createStorage", { enumerable: true, get: function () { return codex_adapter_1.createStorage; } });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AACrB,iDAA8D;AAArD,6GAAA,YAAY,OAAA;AAAE,8GAAA,aAAa,OAAA"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @fractary/faber - Local Storage Implementation
3
+ *
4
+ * Direct filesystem storage for FABER artifacts.
5
+ */
6
+ import { Storage } from '../types';
7
+ /**
8
+ * Local filesystem storage implementation
9
+ */
10
+ export declare class LocalStorage implements Storage {
11
+ private basePath;
12
+ constructor(basePath: string);
13
+ private ensureDir;
14
+ private getFullPath;
15
+ /**
16
+ * Write content to storage
17
+ * @returns The path where content was written
18
+ */
19
+ write(id: string, content: string): Promise<string>;
20
+ /**
21
+ * Read content from storage
22
+ * @returns Content or null if not found
23
+ */
24
+ read(id: string): Promise<string | null>;
25
+ /**
26
+ * Check if content exists
27
+ */
28
+ exists(id: string): Promise<boolean>;
29
+ /**
30
+ * List all items in storage (optionally with prefix)
31
+ */
32
+ list(prefix?: string): Promise<string[]>;
33
+ /**
34
+ * Delete content from storage
35
+ */
36
+ delete(id: string): Promise<void>;
37
+ /**
38
+ * Get the base path for this storage
39
+ */
40
+ getBasePath(): string;
41
+ }
42
+ //# sourceMappingURL=local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC;;GAEG;AACH,qBAAa,YAAa,YAAW,OAAO;IAC1C,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAK5B,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;IAInB;;;OAGG;IACG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzD;;;OAGG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ9C;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1C;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA+B9C;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvC;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/faber - Local Storage Implementation
4
+ *
5
+ * Direct filesystem storage for FABER artifacts.
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.LocalStorage = void 0;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ /**
45
+ * Local filesystem storage implementation
46
+ */
47
+ class LocalStorage {
48
+ basePath;
49
+ constructor(basePath) {
50
+ this.basePath = basePath;
51
+ this.ensureDir(basePath);
52
+ }
53
+ ensureDir(dirPath) {
54
+ if (!fs.existsSync(dirPath)) {
55
+ fs.mkdirSync(dirPath, { recursive: true });
56
+ }
57
+ }
58
+ getFullPath(id) {
59
+ return path.join(this.basePath, id);
60
+ }
61
+ /**
62
+ * Write content to storage
63
+ * @returns The path where content was written
64
+ */
65
+ async write(id, content) {
66
+ const fullPath = this.getFullPath(id);
67
+ this.ensureDir(path.dirname(fullPath));
68
+ fs.writeFileSync(fullPath, content, 'utf-8');
69
+ return fullPath;
70
+ }
71
+ /**
72
+ * Read content from storage
73
+ * @returns Content or null if not found
74
+ */
75
+ async read(id) {
76
+ const fullPath = this.getFullPath(id);
77
+ if (!fs.existsSync(fullPath)) {
78
+ return null;
79
+ }
80
+ return fs.readFileSync(fullPath, 'utf-8');
81
+ }
82
+ /**
83
+ * Check if content exists
84
+ */
85
+ async exists(id) {
86
+ const fullPath = this.getFullPath(id);
87
+ return fs.existsSync(fullPath);
88
+ }
89
+ /**
90
+ * List all items in storage (optionally with prefix)
91
+ */
92
+ async list(prefix) {
93
+ const searchPath = prefix
94
+ ? path.join(this.basePath, prefix)
95
+ : this.basePath;
96
+ if (!fs.existsSync(searchPath)) {
97
+ return [];
98
+ }
99
+ const results = [];
100
+ const walkDir = (dir, base) => {
101
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
102
+ for (const entry of entries) {
103
+ const relativePath = path.join(base, entry.name);
104
+ if (entry.isDirectory()) {
105
+ walkDir(path.join(dir, entry.name), relativePath);
106
+ }
107
+ else {
108
+ results.push(relativePath);
109
+ }
110
+ }
111
+ };
112
+ if (fs.statSync(searchPath).isDirectory()) {
113
+ walkDir(searchPath, prefix || '');
114
+ }
115
+ else {
116
+ results.push(prefix || '');
117
+ }
118
+ return results;
119
+ }
120
+ /**
121
+ * Delete content from storage
122
+ */
123
+ async delete(id) {
124
+ const fullPath = this.getFullPath(id);
125
+ if (fs.existsSync(fullPath)) {
126
+ fs.unlinkSync(fullPath);
127
+ }
128
+ }
129
+ /**
130
+ * Get the base path for this storage
131
+ */
132
+ getBasePath() {
133
+ return this.basePath;
134
+ }
135
+ }
136
+ exports.LocalStorage = LocalStorage;
137
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"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"}