@fractary/core 0.6.1 → 0.7.4

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 (37) hide show
  1. package/dist/common/yaml-config.d.ts +36 -5
  2. package/dist/common/yaml-config.d.ts.map +1 -1
  3. package/dist/common/yaml-config.js +80 -4
  4. package/dist/common/yaml-config.js.map +1 -1
  5. package/dist/config/__tests__/loader.test.js +211 -21
  6. package/dist/config/__tests__/loader.test.js.map +1 -1
  7. package/dist/config/defaults.d.ts +61 -0
  8. package/dist/config/defaults.d.ts.map +1 -0
  9. package/dist/config/defaults.js +363 -0
  10. package/dist/config/defaults.js.map +1 -0
  11. package/dist/config/defaults.test.d.ts +7 -0
  12. package/dist/config/defaults.test.d.ts.map +1 -0
  13. package/dist/config/defaults.test.js +348 -0
  14. package/dist/config/defaults.test.js.map +1 -0
  15. package/dist/config/index.d.ts +4 -2
  16. package/dist/config/index.d.ts.map +1 -1
  17. package/dist/config/index.js +23 -1
  18. package/dist/config/index.js.map +1 -1
  19. package/dist/config/loader.d.ts +121 -5
  20. package/dist/config/loader.d.ts.map +1 -1
  21. package/dist/config/loader.js +228 -23
  22. package/dist/config/loader.js.map +1 -1
  23. package/dist/config/schema.d.ts +1368 -0
  24. package/dist/config/schema.d.ts.map +1 -0
  25. package/dist/config/schema.js +238 -0
  26. package/dist/config/schema.js.map +1 -0
  27. package/dist/config/schema.test.d.ts +7 -0
  28. package/dist/config/schema.test.d.ts.map +1 -0
  29. package/dist/config/schema.test.js +477 -0
  30. package/dist/config/schema.test.js.map +1 -0
  31. package/dist/logs/type-registry.d.ts +0 -2
  32. package/dist/logs/type-registry.d.ts.map +1 -1
  33. package/dist/logs/type-registry.js +0 -2
  34. package/dist/logs/type-registry.js.map +1 -1
  35. package/dist/logs/type-registry.test.js +0 -2
  36. package/dist/logs/type-registry.test.js.map +1 -1
  37. package/package.json +186 -186
@@ -0,0 +1,348 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for config/defaults.ts
4
+ *
5
+ * Tests default configuration generation for all platforms and storage types.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ const defaults_1 = require("./defaults");
9
+ describe('getDefaultConfig', () => {
10
+ describe('basic structure', () => {
11
+ it('returns a valid config object with version 2.0', () => {
12
+ const config = (0, defaults_1.getDefaultConfig)();
13
+ expect(config.version).toBe('2.0');
14
+ });
15
+ it('includes all plugin sections by default', () => {
16
+ const config = (0, defaults_1.getDefaultConfig)();
17
+ expect(config.work).toBeDefined();
18
+ expect(config.repo).toBeDefined();
19
+ expect(config.logs).toBeDefined();
20
+ expect(config.file).toBeDefined();
21
+ expect(config.spec).toBeDefined();
22
+ expect(config.docs).toBeDefined();
23
+ });
24
+ it('does not include codex section by default', () => {
25
+ const config = (0, defaults_1.getDefaultConfig)();
26
+ expect(config.codex).toBeUndefined();
27
+ });
28
+ });
29
+ describe('work platform: github (default)', () => {
30
+ it('sets github as default work platform', () => {
31
+ const config = (0, defaults_1.getDefaultConfig)();
32
+ expect(config.work?.active_handler).toBe('github');
33
+ });
34
+ it('configures github handler with required fields', () => {
35
+ const config = (0, defaults_1.getDefaultConfig)({ owner: 'myorg', repo: 'myrepo' });
36
+ const github = config.work?.handlers?.github;
37
+ expect(github).toBeDefined();
38
+ expect(github.owner).toBe('myorg');
39
+ expect(github.repo).toBe('myrepo');
40
+ expect(github.token).toBe('${GITHUB_TOKEN}');
41
+ expect(github.api_url).toBe('https://api.github.com');
42
+ });
43
+ it('includes classification mappings', () => {
44
+ const config = (0, defaults_1.getDefaultConfig)();
45
+ const github = config.work?.handlers?.github;
46
+ expect(github.classification).toBeDefined();
47
+ expect(github.classification.feature).toContain('feature');
48
+ expect(github.classification.bug).toContain('bug');
49
+ expect(github.classification.chore).toContain('chore');
50
+ expect(github.classification.patch).toContain('hotfix');
51
+ });
52
+ it('includes state mappings', () => {
53
+ const config = (0, defaults_1.getDefaultConfig)();
54
+ const github = config.work?.handlers?.github;
55
+ expect(github.states).toBeDefined();
56
+ expect(github.states.open).toBe('OPEN');
57
+ expect(github.states.done).toBe('CLOSED');
58
+ });
59
+ it('includes label configuration', () => {
60
+ const config = (0, defaults_1.getDefaultConfig)();
61
+ const github = config.work?.handlers?.github;
62
+ expect(github.labels).toBeDefined();
63
+ expect(github.labels.prefix).toBe('faber-');
64
+ });
65
+ it('includes work defaults', () => {
66
+ const config = (0, defaults_1.getDefaultConfig)();
67
+ expect(config.work?.defaults).toBeDefined();
68
+ expect(config.work?.defaults?.auto_label).toBe(true);
69
+ expect(config.work?.defaults?.close_on_merge).toBe(true);
70
+ });
71
+ });
72
+ describe('work platform: jira', () => {
73
+ it('configures jira handler when specified', () => {
74
+ const config = (0, defaults_1.getDefaultConfig)({ workPlatform: 'jira' });
75
+ expect(config.work?.active_handler).toBe('jira');
76
+ expect(config.work?.handlers?.jira).toBeDefined();
77
+ expect(config.work?.handlers?.github).toBeUndefined();
78
+ });
79
+ it('includes jira-specific fields', () => {
80
+ const config = (0, defaults_1.getDefaultConfig)({ workPlatform: 'jira' });
81
+ const jira = config.work?.handlers?.jira;
82
+ expect(jira.base_url).toBe('${JIRA_BASE_URL}');
83
+ expect(jira.email).toBe('${JIRA_EMAIL}');
84
+ expect(jira.api_token).toBe('${JIRA_API_TOKEN}');
85
+ expect(jira.project_key).toBe('PROJ');
86
+ });
87
+ it('includes jira classification mappings', () => {
88
+ const config = (0, defaults_1.getDefaultConfig)({ workPlatform: 'jira' });
89
+ const jira = config.work?.handlers?.jira;
90
+ expect(jira.classification.feature).toContain('Story');
91
+ expect(jira.classification.bug).toContain('Bug');
92
+ });
93
+ it('includes jira state mappings', () => {
94
+ const config = (0, defaults_1.getDefaultConfig)({ workPlatform: 'jira' });
95
+ const jira = config.work?.handlers?.jira;
96
+ expect(jira.states.open).toBe('To Do');
97
+ expect(jira.states.in_progress).toBe('In Progress');
98
+ expect(jira.states.done).toBe('Done');
99
+ });
100
+ });
101
+ describe('work platform: linear', () => {
102
+ it('configures linear handler when specified', () => {
103
+ const config = (0, defaults_1.getDefaultConfig)({ workPlatform: 'linear' });
104
+ expect(config.work?.active_handler).toBe('linear');
105
+ expect(config.work?.handlers?.linear).toBeDefined();
106
+ });
107
+ it('includes linear-specific fields', () => {
108
+ const config = (0, defaults_1.getDefaultConfig)({ workPlatform: 'linear' });
109
+ const linear = config.work?.handlers?.linear;
110
+ expect(linear.api_key).toBe('${LINEAR_API_KEY}');
111
+ expect(linear.team_key).toBe('TEAM');
112
+ });
113
+ it('includes linear state mappings', () => {
114
+ const config = (0, defaults_1.getDefaultConfig)({ workPlatform: 'linear' });
115
+ const linear = config.work?.handlers?.linear;
116
+ expect(linear.states.open).toBe('Backlog');
117
+ expect(linear.states.in_progress).toBe('In Progress');
118
+ expect(linear.states.closed).toBe('Canceled');
119
+ });
120
+ });
121
+ describe('repo configuration', () => {
122
+ it('sets github as default repo platform', () => {
123
+ const config = (0, defaults_1.getDefaultConfig)();
124
+ expect(config.repo?.active_handler).toBe('github');
125
+ });
126
+ it('configures github handler with token', () => {
127
+ const config = (0, defaults_1.getDefaultConfig)();
128
+ const github = config.repo?.handlers?.github;
129
+ expect(github.token).toBe('${GITHUB_TOKEN}');
130
+ expect(github.api_url).toBe('https://api.github.com');
131
+ });
132
+ it('includes repo defaults', () => {
133
+ const config = (0, defaults_1.getDefaultConfig)();
134
+ const defaults = config.repo?.defaults;
135
+ expect(defaults?.default_branch).toBe('main');
136
+ expect(defaults?.protected_branches).toContain('main');
137
+ expect(defaults?.commit_format).toBe('faber');
138
+ });
139
+ it('includes branch naming configuration', () => {
140
+ const config = (0, defaults_1.getDefaultConfig)();
141
+ const naming = config.repo?.defaults?.branch_naming;
142
+ expect(naming?.pattern).toBe('{prefix}/{issue_id}-{slug}');
143
+ expect(naming?.allowed_prefixes).toContain('feat');
144
+ expect(naming?.allowed_prefixes).toContain('fix');
145
+ });
146
+ it('includes PR configuration', () => {
147
+ const config = (0, defaults_1.getDefaultConfig)();
148
+ const pr = config.repo?.defaults?.pr;
149
+ expect(pr?.template).toBe('standard');
150
+ expect(pr?.require_work_id).toBe(true);
151
+ expect(pr?.auto_link_issues).toBe(true);
152
+ });
153
+ it('includes CI polling configuration', () => {
154
+ const config = (0, defaults_1.getDefaultConfig)();
155
+ const ciPolling = config.repo?.defaults?.pr?.ci_polling;
156
+ expect(ciPolling?.enabled).toBe(true);
157
+ expect(ciPolling?.interval_seconds).toBe(60);
158
+ expect(ciPolling?.timeout_seconds).toBe(900);
159
+ });
160
+ it('includes merge configuration', () => {
161
+ const config = (0, defaults_1.getDefaultConfig)();
162
+ const merge = config.repo?.defaults?.pr?.merge;
163
+ expect(merge?.strategy).toBe('squash');
164
+ expect(merge?.delete_branch).toBe(true);
165
+ });
166
+ });
167
+ describe('file handler: local (default)', () => {
168
+ it('uses local storage by default', () => {
169
+ const config = (0, defaults_1.getDefaultConfig)();
170
+ expect(config.file?.handlers?.specs?.type).toBe('local');
171
+ expect(config.file?.handlers?.logs?.type).toBe('local');
172
+ });
173
+ it('configures local base paths', () => {
174
+ const config = (0, defaults_1.getDefaultConfig)();
175
+ expect(config.file?.handlers?.specs?.local?.base_path).toBe('.fractary/specs');
176
+ expect(config.file?.handlers?.logs?.local?.base_path).toBe('.fractary/logs');
177
+ });
178
+ it('does not include S3-specific fields for local', () => {
179
+ const config = (0, defaults_1.getDefaultConfig)();
180
+ expect(config.file?.handlers?.specs?.bucket).toBeUndefined();
181
+ expect(config.file?.handlers?.specs?.region).toBeUndefined();
182
+ });
183
+ it('includes global settings', () => {
184
+ const config = (0, defaults_1.getDefaultConfig)();
185
+ expect(config.file?.global_settings?.retry_attempts).toBe(3);
186
+ expect(config.file?.global_settings?.timeout_seconds).toBe(300);
187
+ });
188
+ });
189
+ describe('file handler: s3', () => {
190
+ it('configures S3 storage when specified with bucket', () => {
191
+ const config = (0, defaults_1.getDefaultConfig)({
192
+ fileHandler: 's3',
193
+ s3Bucket: 'my-bucket',
194
+ awsRegion: 'us-west-2',
195
+ });
196
+ expect(config.file?.handlers?.specs?.type).toBe('s3');
197
+ expect(config.file?.handlers?.specs?.bucket).toBe('my-bucket');
198
+ expect(config.file?.handlers?.specs?.region).toBe('us-west-2');
199
+ });
200
+ it('includes S3 prefixes', () => {
201
+ const config = (0, defaults_1.getDefaultConfig)({
202
+ fileHandler: 's3',
203
+ s3Bucket: 'my-bucket',
204
+ });
205
+ expect(config.file?.handlers?.specs?.prefix).toBe('specs/');
206
+ expect(config.file?.handlers?.logs?.prefix).toBe('logs/');
207
+ });
208
+ it('includes push configuration for S3', () => {
209
+ const config = (0, defaults_1.getDefaultConfig)({
210
+ fileHandler: 's3',
211
+ s3Bucket: 'my-bucket',
212
+ });
213
+ expect(config.file?.handlers?.specs?.push?.keep_local).toBe(true);
214
+ expect(config.file?.handlers?.logs?.push?.compress).toBe(true);
215
+ });
216
+ it('includes auth configuration for S3', () => {
217
+ const config = (0, defaults_1.getDefaultConfig)({
218
+ fileHandler: 's3',
219
+ s3Bucket: 'my-bucket',
220
+ });
221
+ expect(config.file?.handlers?.specs?.auth?.profile).toBe('default');
222
+ });
223
+ it('falls back to local when s3 specified without bucket', () => {
224
+ const config = (0, defaults_1.getDefaultConfig)({ fileHandler: 's3' });
225
+ expect(config.file?.handlers?.specs?.type).toBe('local');
226
+ });
227
+ it('uses default region when not specified', () => {
228
+ const config = (0, defaults_1.getDefaultConfig)({
229
+ fileHandler: 's3',
230
+ s3Bucket: 'my-bucket',
231
+ });
232
+ expect(config.file?.handlers?.specs?.region).toBe('us-east-1');
233
+ });
234
+ });
235
+ describe('logs configuration', () => {
236
+ it('includes logs config with schema version', () => {
237
+ const config = (0, defaults_1.getDefaultConfig)();
238
+ expect(config.logs?.schema_version).toBe('2.0');
239
+ });
240
+ it('includes storage paths', () => {
241
+ const config = (0, defaults_1.getDefaultConfig)();
242
+ expect(config.logs?.storage?.local_path).toBe('.fractary/logs');
243
+ });
244
+ it('includes retention configuration', () => {
245
+ const config = (0, defaults_1.getDefaultConfig)();
246
+ expect(config.logs?.retention?.default?.local_days).toBe(30);
247
+ });
248
+ it('includes session logging configuration', () => {
249
+ const config = (0, defaults_1.getDefaultConfig)();
250
+ const session = config.logs?.session_logging;
251
+ expect(session?.enabled).toBe(true);
252
+ expect(session?.format).toBe('markdown');
253
+ expect(session?.redact_sensitive).toBe(true);
254
+ });
255
+ it('includes cloud archive path for S3', () => {
256
+ const config = (0, defaults_1.getDefaultConfig)({
257
+ fileHandler: 's3',
258
+ s3Bucket: 'my-bucket',
259
+ });
260
+ expect(config.logs?.storage?.cloud_archive_path).toBeDefined();
261
+ });
262
+ it('omits cloud archive path for local', () => {
263
+ const config = (0, defaults_1.getDefaultConfig)({ fileHandler: 'local' });
264
+ expect(config.logs?.storage?.cloud_archive_path).toBeUndefined();
265
+ });
266
+ });
267
+ describe('spec configuration', () => {
268
+ it('includes spec config with schema version', () => {
269
+ const config = (0, defaults_1.getDefaultConfig)();
270
+ expect(config.spec?.schema_version).toBe('1.0');
271
+ });
272
+ it('includes naming configuration', () => {
273
+ const config = (0, defaults_1.getDefaultConfig)();
274
+ const naming = config.spec?.naming;
275
+ expect(naming?.issue_specs?.prefix).toBe('WORK');
276
+ expect(naming?.standalone_specs?.prefix).toBe('SPEC');
277
+ });
278
+ it('includes archive configuration', () => {
279
+ const config = (0, defaults_1.getDefaultConfig)();
280
+ const archive = config.spec?.archive;
281
+ expect(archive?.strategy).toBe('lifecycle');
282
+ });
283
+ });
284
+ describe('docs configuration', () => {
285
+ it('includes docs config with schema version', () => {
286
+ const config = (0, defaults_1.getDefaultConfig)();
287
+ expect(config.docs?.schema_version).toBe('1.1');
288
+ });
289
+ it('includes custom templates path', () => {
290
+ const config = (0, defaults_1.getDefaultConfig)();
291
+ expect(config.docs?.custom_templates_path).toBe('.fractary/docs/templates/manifest.yaml');
292
+ });
293
+ });
294
+ });
295
+ describe('getMinimalConfig', () => {
296
+ it('returns a valid config object with version 2.0', () => {
297
+ const config = (0, defaults_1.getMinimalConfig)();
298
+ expect(config.version).toBe('2.0');
299
+ });
300
+ it('includes only work and repo sections', () => {
301
+ const config = (0, defaults_1.getMinimalConfig)();
302
+ expect(config.work).toBeDefined();
303
+ expect(config.repo).toBeDefined();
304
+ expect(config.logs).toBeUndefined();
305
+ expect(config.file).toBeUndefined();
306
+ expect(config.spec).toBeUndefined();
307
+ expect(config.docs).toBeUndefined();
308
+ });
309
+ it('respects workPlatform option', () => {
310
+ const config = (0, defaults_1.getMinimalConfig)({ workPlatform: 'jira' });
311
+ expect(config.work?.active_handler).toBe('jira');
312
+ });
313
+ it('respects owner and repo options', () => {
314
+ const config = (0, defaults_1.getMinimalConfig)({ owner: 'test-org', repo: 'test-repo' });
315
+ const github = config.work?.handlers?.github;
316
+ expect(github?.owner).toBe('test-org');
317
+ expect(github?.repo).toBe('test-repo');
318
+ });
319
+ it('configures repo section same as full config', () => {
320
+ const minConfig = (0, defaults_1.getMinimalConfig)();
321
+ const fullConfig = (0, defaults_1.getDefaultConfig)();
322
+ expect(minConfig.repo?.active_handler).toBe(fullConfig.repo?.active_handler);
323
+ expect(minConfig.repo?.defaults?.default_branch).toBe(fullConfig.repo?.defaults?.default_branch);
324
+ });
325
+ });
326
+ describe('DefaultConfigOptions', () => {
327
+ it('uses fallback values when options not provided', () => {
328
+ const config = (0, defaults_1.getDefaultConfig)({});
329
+ expect(config.work?.active_handler).toBe('github');
330
+ expect(config.work?.handlers?.github?.owner).toBe('your-org');
331
+ expect(config.work?.handlers?.github?.repo).toBe('your-repo');
332
+ });
333
+ it('uses provided values over defaults', () => {
334
+ const options = {
335
+ workPlatform: 'linear',
336
+ owner: 'custom-org',
337
+ repo: 'custom-repo',
338
+ fileHandler: 's3',
339
+ s3Bucket: 'custom-bucket',
340
+ awsRegion: 'eu-west-1',
341
+ };
342
+ const config = (0, defaults_1.getDefaultConfig)(options);
343
+ expect(config.work?.active_handler).toBe('linear');
344
+ expect(config.file?.handlers?.specs?.bucket).toBe('custom-bucket');
345
+ expect(config.file?.handlers?.specs?.region).toBe('eu-west-1');
346
+ });
347
+ });
348
+ //# sourceMappingURL=defaults.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.test.js","sourceRoot":"","sources":["../../src/config/defaults.test.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@
3
3
  *
4
4
  * Unified configuration loading with authentication support.
5
5
  */
6
- export { loadEnv, isEnvLoaded, loadConfig, loadConfigSync, type LoadedConfig, type LoadConfigOptions, type ExtractedGitHubConfig, } from './loader';
7
- export { loadYamlConfig, writeYamlConfig, findProjectRoot, configExists, getConfigPath, getCoreDir, substituteEnvVars, validateEnvVars, type CoreYamlConfig, type ConfigLoadOptions, type WorkConfig as YamlWorkConfig, type RepoConfig as YamlRepoConfig, type LogsConfig as YamlLogsConfig, type FileConfig as YamlFileConfig, type SpecConfig as YamlSpecConfig, type DocsConfig as YamlDocsConfig, type CodexConfig as YamlCodexConfig, type RepoDefaults as YamlRepoDefaults, type PRDefaults as YamlPRDefaults, type PRMergeDefaults as YamlPRMergeDefaults, type FileSource as YamlFileSource, } from '../common/yaml-config';
6
+ export { loadEnv, isEnvLoaded, getCurrentEnv, switchEnv, clearEnv, loadConfig, loadConfigSync, type LoadedConfig, type LoadConfigOptions, type ExtractedGitHubConfig, } from './loader';
7
+ export { loadYamlConfig, writeYamlConfig, injectDocumentationComments, findProjectRoot, configExists, getConfigPath, getCoreDir, substituteEnvVars, validateEnvVars, PLUGIN_DOC_URLS, CONFIG_GUIDE_URL, type CoreYamlConfig, type ConfigLoadOptions, type WriteYamlConfigOptions, type WorkConfig as YamlWorkConfig, type RepoConfig as YamlRepoConfig, type LogsConfig as YamlLogsConfig, type FileConfig as YamlFileConfig, type SpecConfig as YamlSpecConfig, type DocsConfig as YamlDocsConfig, type CodexConfig as YamlCodexConfig, type RepoDefaults as YamlRepoDefaults, type PRDefaults as YamlPRDefaults, type PRMergeDefaults as YamlPRMergeDefaults, type FileSource as YamlFileSource, } from '../common/yaml-config';
8
+ export { getDefaultConfig, getMinimalConfig, type DefaultConfigOptions, } from './defaults';
9
+ export { validateConfig, CoreYamlConfigSchema, WorkConfigSchema, RepoConfigSchema, LogsConfigSchema, FileConfigSchema, SpecConfigSchema, DocsConfigSchema, CodexConfigSchema, type ValidationResult, type ValidatedCoreYamlConfig, } from './schema';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,OAAO,EACP,WAAW,EACX,UAAU,EACV,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,UAAU,CAAC;AAKlB,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEtB,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,WAAW,IAAI,eAAe,EACnC,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,eAAe,IAAI,mBAAmB,EAC3C,KAAK,UAAU,IAAI,cAAc,GAClC,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,OAAO,EACP,WAAW,EACX,aAAa,EACb,SAAS,EACT,QAAQ,EACR,UAAU,EACV,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,UAAU,CAAC;AAKlB,OAAO,EACL,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,eAAe,EAEf,eAAe,EACf,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAE3B,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,WAAW,IAAI,eAAe,EACnC,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,eAAe,IAAI,mBAAmB,EAC3C,KAAK,UAAU,IAAI,cAAc,GAClC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,oBAAoB,GAC1B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,UAAU,CAAC"}
@@ -5,11 +5,14 @@
5
5
  * Unified configuration loading with authentication support.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.validateEnvVars = exports.substituteEnvVars = exports.getCoreDir = exports.getConfigPath = exports.configExists = exports.findProjectRoot = exports.writeYamlConfig = exports.loadYamlConfig = exports.loadConfigSync = exports.loadConfig = exports.isEnvLoaded = exports.loadEnv = void 0;
8
+ exports.CodexConfigSchema = exports.DocsConfigSchema = exports.SpecConfigSchema = exports.FileConfigSchema = exports.LogsConfigSchema = exports.RepoConfigSchema = exports.WorkConfigSchema = exports.CoreYamlConfigSchema = exports.validateConfig = exports.getMinimalConfig = exports.getDefaultConfig = exports.CONFIG_GUIDE_URL = exports.PLUGIN_DOC_URLS = exports.validateEnvVars = exports.substituteEnvVars = exports.getCoreDir = exports.getConfigPath = exports.configExists = exports.findProjectRoot = exports.injectDocumentationComments = exports.writeYamlConfig = exports.loadYamlConfig = exports.loadConfigSync = exports.loadConfig = exports.clearEnv = exports.switchEnv = exports.getCurrentEnv = exports.isEnvLoaded = exports.loadEnv = void 0;
9
9
  // Re-export from loader
10
10
  var loader_1 = require("./loader");
11
11
  Object.defineProperty(exports, "loadEnv", { enumerable: true, get: function () { return loader_1.loadEnv; } });
12
12
  Object.defineProperty(exports, "isEnvLoaded", { enumerable: true, get: function () { return loader_1.isEnvLoaded; } });
13
+ Object.defineProperty(exports, "getCurrentEnv", { enumerable: true, get: function () { return loader_1.getCurrentEnv; } });
14
+ Object.defineProperty(exports, "switchEnv", { enumerable: true, get: function () { return loader_1.switchEnv; } });
15
+ Object.defineProperty(exports, "clearEnv", { enumerable: true, get: function () { return loader_1.clearEnv; } });
13
16
  Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return loader_1.loadConfig; } });
14
17
  Object.defineProperty(exports, "loadConfigSync", { enumerable: true, get: function () { return loader_1.loadConfigSync; } });
15
18
  // Re-export common yaml-config utilities
@@ -18,10 +21,29 @@ Object.defineProperty(exports, "loadConfigSync", { enumerable: true, get: functi
18
21
  var yaml_config_1 = require("../common/yaml-config");
19
22
  Object.defineProperty(exports, "loadYamlConfig", { enumerable: true, get: function () { return yaml_config_1.loadYamlConfig; } });
20
23
  Object.defineProperty(exports, "writeYamlConfig", { enumerable: true, get: function () { return yaml_config_1.writeYamlConfig; } });
24
+ Object.defineProperty(exports, "injectDocumentationComments", { enumerable: true, get: function () { return yaml_config_1.injectDocumentationComments; } });
21
25
  Object.defineProperty(exports, "findProjectRoot", { enumerable: true, get: function () { return yaml_config_1.findProjectRoot; } });
22
26
  Object.defineProperty(exports, "configExists", { enumerable: true, get: function () { return yaml_config_1.configExists; } });
23
27
  Object.defineProperty(exports, "getConfigPath", { enumerable: true, get: function () { return yaml_config_1.getConfigPath; } });
24
28
  Object.defineProperty(exports, "getCoreDir", { enumerable: true, get: function () { return yaml_config_1.getCoreDir; } });
25
29
  Object.defineProperty(exports, "substituteEnvVars", { enumerable: true, get: function () { return yaml_config_1.substituteEnvVars; } });
26
30
  Object.defineProperty(exports, "validateEnvVars", { enumerable: true, get: function () { return yaml_config_1.validateEnvVars; } });
31
+ // Documentation URL constants for config sections
32
+ Object.defineProperty(exports, "PLUGIN_DOC_URLS", { enumerable: true, get: function () { return yaml_config_1.PLUGIN_DOC_URLS; } });
33
+ Object.defineProperty(exports, "CONFIG_GUIDE_URL", { enumerable: true, get: function () { return yaml_config_1.CONFIG_GUIDE_URL; } });
34
+ // Re-export default config generators
35
+ var defaults_1 = require("./defaults");
36
+ Object.defineProperty(exports, "getDefaultConfig", { enumerable: true, get: function () { return defaults_1.getDefaultConfig; } });
37
+ Object.defineProperty(exports, "getMinimalConfig", { enumerable: true, get: function () { return defaults_1.getMinimalConfig; } });
38
+ // Re-export validation schemas and utilities
39
+ var schema_1 = require("./schema");
40
+ Object.defineProperty(exports, "validateConfig", { enumerable: true, get: function () { return schema_1.validateConfig; } });
41
+ Object.defineProperty(exports, "CoreYamlConfigSchema", { enumerable: true, get: function () { return schema_1.CoreYamlConfigSchema; } });
42
+ Object.defineProperty(exports, "WorkConfigSchema", { enumerable: true, get: function () { return schema_1.WorkConfigSchema; } });
43
+ Object.defineProperty(exports, "RepoConfigSchema", { enumerable: true, get: function () { return schema_1.RepoConfigSchema; } });
44
+ Object.defineProperty(exports, "LogsConfigSchema", { enumerable: true, get: function () { return schema_1.LogsConfigSchema; } });
45
+ Object.defineProperty(exports, "FileConfigSchema", { enumerable: true, get: function () { return schema_1.FileConfigSchema; } });
46
+ Object.defineProperty(exports, "SpecConfigSchema", { enumerable: true, get: function () { return schema_1.SpecConfigSchema; } });
47
+ Object.defineProperty(exports, "DocsConfigSchema", { enumerable: true, get: function () { return schema_1.DocsConfigSchema; } });
48
+ Object.defineProperty(exports, "CodexConfigSchema", { enumerable: true, get: function () { return schema_1.CodexConfigSchema; } });
27
49
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,wBAAwB;AACxB,mCAQkB;AAPhB,iGAAA,OAAO,OAAA;AACP,qGAAA,WAAW,OAAA;AACX,oGAAA,UAAU,OAAA;AACV,wGAAA,cAAc,OAAA;AAMhB,yCAAyC;AACzC,sEAAsE;AACtE,gEAAgE;AAChE,qDAuB+B;AAtB7B,6GAAA,cAAc,OAAA;AACd,8GAAA,eAAe,OAAA;AACf,8GAAA,eAAe,OAAA;AACf,2GAAA,YAAY,OAAA;AACZ,4GAAA,aAAa,OAAA;AACb,yGAAA,UAAU,OAAA;AACV,gHAAA,iBAAiB,OAAA;AACjB,8GAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,wBAAwB;AACxB,mCAWkB;AAVhB,iGAAA,OAAO,OAAA;AACP,qGAAA,WAAW,OAAA;AACX,uGAAA,aAAa,OAAA;AACb,mGAAA,SAAS,OAAA;AACT,kGAAA,QAAQ,OAAA;AACR,oGAAA,UAAU,OAAA;AACV,wGAAA,cAAc,OAAA;AAMhB,yCAAyC;AACzC,sEAAsE;AACtE,gEAAgE;AAChE,qDA4B+B;AA3B7B,6GAAA,cAAc,OAAA;AACd,8GAAA,eAAe,OAAA;AACf,0HAAA,2BAA2B,OAAA;AAC3B,8GAAA,eAAe,OAAA;AACf,2GAAA,YAAY,OAAA;AACZ,4GAAA,aAAa,OAAA;AACb,yGAAA,UAAU,OAAA;AACV,gHAAA,iBAAiB,OAAA;AACjB,8GAAA,eAAe,OAAA;AACf,kDAAkD;AAClD,8GAAA,eAAe,OAAA;AACf,+GAAA,gBAAgB,OAAA;AAkBlB,sCAAsC;AACtC,uCAIoB;AAHlB,4GAAA,gBAAgB,OAAA;AAChB,4GAAA,gBAAgB,OAAA;AAIlB,6CAA6C;AAC7C,mCAYkB;AAXhB,wGAAA,cAAc,OAAA;AACd,8GAAA,oBAAoB,OAAA;AACpB,0GAAA,gBAAgB,OAAA;AAChB,0GAAA,gBAAgB,OAAA;AAChB,0GAAA,gBAAgB,OAAA;AAChB,0GAAA,gBAAgB,OAAA;AAChB,0GAAA,gBAAgB,OAAA;AAChB,0GAAA,gBAAgB,OAAA;AAChB,2GAAA,iBAAiB,OAAA"}
@@ -7,31 +7,147 @@
7
7
  import { CoreYamlConfig, ConfigLoadOptions, WorkConfig, RepoConfig, LogsConfig, FileConfig, SpecConfig, DocsConfig, CodexConfig } from '../common/yaml-config';
8
8
  import type { TokenProvider, GitHubAppConfig } from '../auth/types';
9
9
  /**
10
- * Load environment variables from .env files
10
+ * Load environment variables from .env files with multi-environment support
11
11
  *
12
12
  * This function explicitly loads .env files - it must be called manually
13
13
  * rather than being a side effect of importing the module.
14
14
  *
15
- * Searches for .env files in the following order:
15
+ * ## Multi-Environment Support
16
+ *
17
+ * Set `FRACTARY_ENV` to load environment-specific .env files:
18
+ * - `FRACTARY_ENV=staging` loads `.env.staging`
19
+ * - `FRACTARY_ENV=production` loads `.env.production`
20
+ *
21
+ * Loading order (later files override earlier):
22
+ * 1. `.env` - Base configuration (always loaded if exists)
23
+ * 2. `.env.{FRACTARY_ENV}` - Environment-specific overrides
24
+ * 3. `.env.local` - Local overrides (never committed, always loaded last)
25
+ *
26
+ * All files are optional. Missing files are silently skipped.
27
+ *
28
+ * ## File Locations
29
+ *
30
+ * Searches for .env files in:
16
31
  * 1. Current working directory
17
32
  * 2. Project root (directory containing .fractary or .git)
18
33
  *
19
34
  * @param options Loading options
20
- * @returns true if .env was loaded, false if no .env file found
35
+ * @returns true if any .env file was loaded, false if no .env files found
21
36
  *
22
37
  * @example
23
38
  * ```typescript
24
39
  * import { loadEnv, loadConfig } from '@fractary/core';
25
40
  *
26
- * // Explicitly load .env before loading config
41
+ * // Load default .env
27
42
  * loadEnv();
28
- * const config = await loadConfig();
43
+ *
44
+ * // Or set environment before loading
45
+ * process.env.FRACTARY_ENV = 'production';
46
+ * loadEnv({ force: true });
47
+ *
48
+ * // From CLI: FRACTARY_ENV=production fractary-core:work issue-list
29
49
  * ```
30
50
  */
31
51
  export declare function loadEnv(options?: {
32
52
  cwd?: string;
33
53
  force?: boolean;
34
54
  }): boolean;
55
+ /**
56
+ * Get the currently loaded environment name
57
+ *
58
+ * @returns The value of FRACTARY_ENV when loadEnv was called, or undefined
59
+ */
60
+ export declare function getCurrentEnv(): string | undefined;
61
+ /**
62
+ * Switch to a different environment mid-session
63
+ *
64
+ * This function allows changing environments during a Claude session, which is
65
+ * useful for workflows like FABR where you move through phases that target
66
+ * different environments:
67
+ *
68
+ * - **Local/Dev**: Writing code, running local tests
69
+ * - **Test**: Deploying during evaluate phase
70
+ * - **Prod**: Deploying during release phase
71
+ *
72
+ * ## What It Does
73
+ *
74
+ * 1. Sets `process.env.FRACTARY_ENV` to the new environment
75
+ * 2. Reloads environment variables in order: `.env` → `.env.{newEnv}` → `.env.local`
76
+ * 3. Updates `getCurrentEnv()` to return the new environment
77
+ *
78
+ * ## Important Notes
79
+ *
80
+ * - Variables from the previous environment that aren't overwritten will persist
81
+ * - To start fresh, call `clearEnv()` before `switchEnv()`
82
+ * - The config.yaml is NOT reloaded automatically; credentials are resolved
83
+ * from process.env when API calls are made
84
+ *
85
+ * @param envName The environment to switch to (e.g., 'test', 'staging', 'prod')
86
+ * @param options Optional settings
87
+ * @returns true if the environment was switched successfully
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * import { switchEnv, getCurrentEnv } from '@fractary/core';
92
+ *
93
+ * // FABR Workflow Example
94
+ *
95
+ * // Frame & Architect phases - local development
96
+ * console.log(getCurrentEnv()); // undefined or 'dev'
97
+ *
98
+ * // Build phase - still local
99
+ * // ... build and test locally ...
100
+ *
101
+ * // Evaluate phase - switch to test environment
102
+ * switchEnv('test');
103
+ * console.log(getCurrentEnv()); // 'test'
104
+ * // Now GITHUB_TOKEN, AWS_* etc. come from .env.test
105
+ * // ... deploy to test, run integration tests ...
106
+ *
107
+ * // Release phase - switch to production
108
+ * switchEnv('prod');
109
+ * console.log(getCurrentEnv()); // 'prod'
110
+ * // Now credentials come from .env.prod
111
+ * // ... deploy to production ...
112
+ * ```
113
+ */
114
+ export declare function switchEnv(envName: string, options?: {
115
+ cwd?: string;
116
+ }): boolean;
117
+ /**
118
+ * Clear environment-specific variables and reset to base state
119
+ *
120
+ * This removes variables that were loaded from `.env.{FRACTARY_ENV}` files,
121
+ * leaving only system environment variables and base `.env` values.
122
+ *
123
+ * Useful before `switchEnv()` if you want to ensure no variables from the
124
+ * previous environment persist.
125
+ *
126
+ * ## State Reset Behavior
127
+ *
128
+ * After calling `clearEnv()`:
129
+ * - `getCurrentEnv()` returns `undefined`
130
+ * - `isEnvLoaded()` returns `false`
131
+ * - The next `loadEnv()` or `switchEnv()` call will reload from files
132
+ *
133
+ * Note: This only clears the specified variables from `process.env`.
134
+ * System environment variables (set outside Node.js) are not affected
135
+ * and may still be present.
136
+ *
137
+ * @param variablesToClear Optional list of specific variables to clear.
138
+ * If not provided, clears common Fractary variables.
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * // Clear before switching to ensure clean state
143
+ * clearEnv();
144
+ * switchEnv('prod');
145
+ *
146
+ * // Or clear specific variables
147
+ * clearEnv(['GITHUB_TOKEN', 'AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY']);
148
+ * ```
149
+ */
150
+ export declare function clearEnv(variablesToClear?: string[]): void;
35
151
  /**
36
152
  * Check if environment variables have been loaded
37
153
  *
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAEL,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAgB,eAAe,EAAE,MAAM,eAAe,CAAC;AAOlF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CA8BhF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,GAAG,CAAC,EAAE,eAAe,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAEhB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAE/B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B,kCAAkC;IAClC,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,oCAAoC;IACpC,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,iCAAiC;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,iDAAiD;IACjD,GAAG,EAAE,cAAc,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAqED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoDvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,iBAAsB,GAAG,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAwBnG"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAEL,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAgB,eAAe,EAAE,MAAM,eAAe,CAAC;AAiBlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CA6DhF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAElD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,OAAO,CA0BT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAmC1D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,GAAG,CAAC,EAAE,eAAe,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAEhB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAE/B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B,kCAAkC;IAClC,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,oCAAoC;IACpC,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,iCAAiC;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,iDAAiD;IACjD,GAAG,EAAE,cAAc,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAqED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoDvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,iBAAsB,GAAG,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAwBnG"}