@faros-fde-sandbox/cli 2.0.6 → 2.1.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.
- package/README.md +48 -19
- package/lib/commands/sync/linear.d.ts.map +1 -1
- package/lib/commands/sync/linear.js +130 -25
- package/lib/commands/sync/linear.js.map +1 -1
- package/lib/config/loader.d.ts.map +1 -1
- package/lib/config/loader.js +4 -6
- package/lib/config/loader.js.map +1 -1
- package/lib/types/config.d.ts +12 -12
- package/lib/types/config.js +6 -6
- package/lib/types/config.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -145,29 +145,28 @@ faros sync linear [options]
|
|
|
145
145
|
|
|
146
146
|
**Configuration Priority:**
|
|
147
147
|
1. CLI options (`--linear-api-key`, `--cutoff-days`)
|
|
148
|
-
2. Environment variables (`LINEAR_API_KEY`, `FAROS_API_KEY`, `FAROS_GRAPH`)
|
|
148
|
+
2. Environment variables (`LINEAR_API_KEY`, `FAROS_API_KEY`, `FAROS_GRAPH`, `FAROS_ORIGIN`)
|
|
149
149
|
3. Config file (`faros.config.yaml`)
|
|
150
|
-
4.
|
|
150
|
+
4. Built-in defaults (ships with the CLI)
|
|
151
151
|
|
|
152
152
|
**Examples:**
|
|
153
153
|
|
|
154
|
-
|
|
154
|
+
Minimal setup - just create a `.env` file:
|
|
155
155
|
```bash
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
# .env
|
|
157
|
+
LINEAR_API_KEY=lin_api_xxx
|
|
158
|
+
FAROS_API_KEY=your_faros_key
|
|
159
159
|
```
|
|
160
160
|
|
|
161
|
-
Then run:
|
|
161
|
+
Then run (uses default config):
|
|
162
162
|
```bash
|
|
163
163
|
faros sync linear
|
|
164
164
|
```
|
|
165
165
|
|
|
166
|
-
|
|
166
|
+
Override defaults with your own `faros.config.yaml`:
|
|
167
167
|
```yaml
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
origin: my-company-ci
|
|
168
|
+
graph: production
|
|
169
|
+
origin: my-company
|
|
171
170
|
|
|
172
171
|
sources:
|
|
173
172
|
linear:
|
|
@@ -175,7 +174,10 @@ sources:
|
|
|
175
174
|
pageSize: 100 # Larger page size
|
|
176
175
|
```
|
|
177
176
|
|
|
178
|
-
**Note:**
|
|
177
|
+
**Security Note:**
|
|
178
|
+
- ✅ API keys go in `.env` file (auto-loaded, never commit)
|
|
179
|
+
- ✅ Config goes in `faros.config.yaml` (safe to commit)
|
|
180
|
+
- ❌ Never put API keys in `faros.config.yaml` (CLI strips them anyway)
|
|
179
181
|
|
|
180
182
|
Sync only recent issues (override config):
|
|
181
183
|
```bash
|
|
@@ -205,7 +207,29 @@ faros sync linear --preview
|
|
|
205
207
|
|
|
206
208
|
## Configuration
|
|
207
209
|
|
|
208
|
-
The CLI
|
|
210
|
+
The CLI ships with sensible defaults in `faros.config.yaml`, so most users only need to set up a `.env` file with their API keys.
|
|
211
|
+
|
|
212
|
+
**Quick Setup:**
|
|
213
|
+
1. Create a `.env` file with your API keys:
|
|
214
|
+
```
|
|
215
|
+
FAROS_API_KEY=your_faros_api_key
|
|
216
|
+
LINEAR_API_KEY=your_linear_api_key # if using Linear sync
|
|
217
|
+
```
|
|
218
|
+
2. Run CLI commands - the default config handles the rest!
|
|
219
|
+
|
|
220
|
+
### Two-File Configuration Approach
|
|
221
|
+
|
|
222
|
+
The CLI separates configuration into two types:
|
|
223
|
+
- **`.env` file** - Secrets and API keys (never commit this!)
|
|
224
|
+
- **`faros.config.yaml`** - Non-sensitive defaults (safe to commit)
|
|
225
|
+
|
|
226
|
+
A default `faros.config.yaml` is included with sensible defaults:
|
|
227
|
+
- API URL: `https://prod.api.faros.ai`
|
|
228
|
+
- Graph: `default`
|
|
229
|
+
- Origin: `faros-cli`
|
|
230
|
+
- Linear cutoff: 180 days
|
|
231
|
+
|
|
232
|
+
You can override these by creating your own `faros.config.yaml` or using environment variables.
|
|
209
233
|
|
|
210
234
|
### Environment Variables
|
|
211
235
|
|
|
@@ -224,7 +248,7 @@ The CLI can be configured entirely through environment variables, which is ideal
|
|
|
224
248
|
|----------|-------------|---------|---------|
|
|
225
249
|
| `FAROS_URL` | Faros API URL | `https://prod.api.faros.ai` | `https://prod.api.faros.ai` |
|
|
226
250
|
| `FAROS_GRAPH` | Target graph name | `default` | `my-graph` |
|
|
227
|
-
| `FAROS_ORIGIN` | Origin identifier for synced data | - | `my-company-ci` |
|
|
251
|
+
| `FAROS_ORIGIN` | Origin identifier for synced data | `faros-cli` | `my-company-ci` |
|
|
228
252
|
|
|
229
253
|
#### Logging and Debug
|
|
230
254
|
|
|
@@ -235,13 +259,18 @@ The CLI can be configured entirely through environment variables, which is ideal
|
|
|
235
259
|
|
|
236
260
|
### Configuration File
|
|
237
261
|
|
|
238
|
-
|
|
262
|
+
The CLI ships with a default `faros.config.yaml` that works out of the box. You can override it by creating your own `faros.config.yaml` in your project:
|
|
239
263
|
|
|
240
264
|
```yaml
|
|
241
|
-
#
|
|
265
|
+
# Override API configuration (optional)
|
|
242
266
|
url: https://prod.api.faros.ai
|
|
243
|
-
graph:
|
|
244
|
-
origin: my-company-ci
|
|
267
|
+
graph: production # use a different graph
|
|
268
|
+
origin: my-company-ci # custom origin identifier
|
|
269
|
+
|
|
270
|
+
# Customize Linear sync defaults
|
|
271
|
+
sources:
|
|
272
|
+
linear:
|
|
273
|
+
cutoffDays: 30 # fetch last 30 days instead of default 180
|
|
245
274
|
|
|
246
275
|
# Default values for commands
|
|
247
276
|
defaults:
|
|
@@ -250,7 +279,7 @@ defaults:
|
|
|
250
279
|
concurrency: 8
|
|
251
280
|
```
|
|
252
281
|
|
|
253
|
-
|
|
282
|
+
**Important:** Never put API keys in `faros.config.yaml`! The CLI automatically strips any credentials from config files. All secrets must be in `.env` or environment variables.
|
|
254
283
|
|
|
255
284
|
### Configuration Priority
|
|
256
285
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/linear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/linear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAyU5C,wBAAgB,iBAAiB,IAAI,OAAO,CAiE3C"}
|
|
@@ -45,27 +45,41 @@ const os = __importStar(require("os"));
|
|
|
45
45
|
const chalk_1 = __importDefault(require("chalk"));
|
|
46
46
|
const loader_1 = require("../../config/loader");
|
|
47
47
|
const ui_1 = require("../../lib/ui");
|
|
48
|
-
|
|
48
|
+
const client_1 = require("../../lib/api/client");
|
|
49
|
+
function createTempConfig(options, config, srcImage, dstImage) {
|
|
49
50
|
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'faros-linear-'));
|
|
50
51
|
const configPath = path.join(tempDir, 'faros_airbyte_cli_config.json');
|
|
52
|
+
// Build source config with date filtering
|
|
53
|
+
const srcConfig = {
|
|
54
|
+
api_key: options.linearApiKey || '',
|
|
55
|
+
page_size: options.pageSize,
|
|
56
|
+
};
|
|
57
|
+
// Date filtering: use startDate/endDate if provided, otherwise use cutoffDays
|
|
58
|
+
if (options.startDate) {
|
|
59
|
+
srcConfig.start_date = options.startDate;
|
|
60
|
+
}
|
|
61
|
+
if (options.endDate) {
|
|
62
|
+
srcConfig.end_date = options.endDate;
|
|
63
|
+
}
|
|
64
|
+
// Only use cutoff_days if no explicit dates provided
|
|
65
|
+
if (!options.startDate && !options.endDate) {
|
|
66
|
+
srcConfig.cutoff_days = options.cutoffDays;
|
|
67
|
+
}
|
|
51
68
|
const airbyteConfig = {
|
|
52
69
|
src: {
|
|
53
|
-
image:
|
|
54
|
-
config:
|
|
55
|
-
api_key: options.linearApiKey || '',
|
|
56
|
-
cutoff_days: options.cutoffDays || 90,
|
|
57
|
-
page_size: options.pageSize || 50,
|
|
58
|
-
},
|
|
70
|
+
image: srcImage,
|
|
71
|
+
config: srcConfig,
|
|
59
72
|
},
|
|
60
73
|
dst: {
|
|
61
|
-
image:
|
|
74
|
+
image: dstImage,
|
|
62
75
|
config: {
|
|
63
76
|
edition_configs: {
|
|
64
77
|
api_key: config.apiKey,
|
|
65
78
|
graph: config.graph,
|
|
66
79
|
api_url: config.url,
|
|
67
|
-
origin: config.origin,
|
|
68
80
|
},
|
|
81
|
+
origin: config.origin,
|
|
82
|
+
accept_input_records_origin: false,
|
|
69
83
|
},
|
|
70
84
|
},
|
|
71
85
|
};
|
|
@@ -105,6 +119,34 @@ async function runAirbyteSync(configPath) {
|
|
|
105
119
|
});
|
|
106
120
|
});
|
|
107
121
|
}
|
|
122
|
+
async function querySyncStats(apiKey, url, graph, origin) {
|
|
123
|
+
const config = { apiKey, url, graph, origin };
|
|
124
|
+
const client = (0, client_1.createClient)(config);
|
|
125
|
+
const query = `
|
|
126
|
+
query {
|
|
127
|
+
tms_Task_aggregate(where: {source: {_eq: "Linear"}}) {
|
|
128
|
+
aggregate { count }
|
|
129
|
+
}
|
|
130
|
+
tms_Project_aggregate(where: {source: {_eq: "Linear"}}) {
|
|
131
|
+
aggregate { count }
|
|
132
|
+
}
|
|
133
|
+
tms_TaskBoard_aggregate(where: {source: {_eq: "Linear"}}) {
|
|
134
|
+
aggregate { count }
|
|
135
|
+
}
|
|
136
|
+
tms_User_aggregate(where: {source: {_eq: "Linear"}}) {
|
|
137
|
+
aggregate { count }
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
`;
|
|
141
|
+
const response = await client.post(`/graphs/${graph}/graphql`, { query });
|
|
142
|
+
const data = response.data.data;
|
|
143
|
+
return {
|
|
144
|
+
tasks: data.tms_Task_aggregate.aggregate.count,
|
|
145
|
+
projects: data.tms_Project_aggregate.aggregate.count,
|
|
146
|
+
taskBoards: data.tms_TaskBoard_aggregate.aggregate.count,
|
|
147
|
+
users: data.tms_User_aggregate.aggregate.count,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
108
150
|
async function syncLinearData(options) {
|
|
109
151
|
const fileConfig = await (0, loader_1.loadConfig)();
|
|
110
152
|
const config = (0, loader_1.mergeConfig)(fileConfig, options);
|
|
@@ -119,22 +161,53 @@ async function syncLinearData(options) {
|
|
|
119
161
|
if (!config.graph) {
|
|
120
162
|
throw new Error('Faros graph is required. Set FAROS_GRAPH environment variable or use --graph.');
|
|
121
163
|
}
|
|
122
|
-
|
|
164
|
+
if (!config.origin) {
|
|
165
|
+
throw new Error('Origin is required. Set FAROS_ORIGIN environment variable or configure in faros.config.yaml.');
|
|
166
|
+
}
|
|
167
|
+
// Get date filtering options from CLI or config file
|
|
123
168
|
const linearSource = config.sources?.linear;
|
|
124
|
-
const cutoffDays = options.cutoffDays || linearSource?.cutoffDays
|
|
125
|
-
const
|
|
169
|
+
const cutoffDays = options.cutoffDays || linearSource?.cutoffDays;
|
|
170
|
+
const startDate = options.startDate || linearSource?.startDate;
|
|
171
|
+
const endDate = options.endDate || linearSource?.endDate;
|
|
172
|
+
const pageSize = options.pageSize || linearSource?.pageSize;
|
|
173
|
+
// Get Docker images from config
|
|
174
|
+
const srcImage = linearSource?.srcImage;
|
|
175
|
+
const dstImage = linearSource?.dstImage;
|
|
176
|
+
// Validate required Linear source configuration
|
|
177
|
+
if (!linearSource) {
|
|
178
|
+
throw new Error('Linear source configuration not found in faros.config.yaml. Add a "sources.linear" section.');
|
|
179
|
+
}
|
|
180
|
+
if (!pageSize) {
|
|
181
|
+
throw new Error('Linear pageSize is required. Set in faros.config.yaml under sources.linear.pageSize or use --page-size.');
|
|
182
|
+
}
|
|
183
|
+
if (!srcImage) {
|
|
184
|
+
throw new Error('Linear srcImage is required. Set in faros.config.yaml under sources.linear.srcImage (e.g., farosfde/airbyte-linear-source:1.0.1).');
|
|
185
|
+
}
|
|
186
|
+
if (!dstImage) {
|
|
187
|
+
throw new Error('Linear dstImage is required. Set in faros.config.yaml under sources.linear.dstImage (e.g., farosfde/airbyte-faros-destination:1.0.1).');
|
|
188
|
+
}
|
|
189
|
+
// Require either date range OR cutoffDays
|
|
190
|
+
if (!startDate && !endDate && !cutoffDays) {
|
|
191
|
+
throw new Error('Linear date filtering is required. Set cutoffDays in faros.config.yaml or use --cutoff-days / --start-date.');
|
|
192
|
+
}
|
|
126
193
|
// Preview mode
|
|
127
194
|
if (options.preview) {
|
|
128
195
|
console.log();
|
|
129
196
|
console.log(chalk_1.default.bold('Linear Sync Configuration:'));
|
|
130
197
|
console.log();
|
|
131
198
|
console.log(chalk_1.default.blue('Source:'));
|
|
132
|
-
console.log(` Image:
|
|
133
|
-
|
|
199
|
+
console.log(` Image: ${srcImage}`);
|
|
200
|
+
// Show date filtering method
|
|
201
|
+
if (startDate || endDate) {
|
|
202
|
+
console.log(` Date Range: ${startDate || '(beginning)'} to ${endDate || '(now)'}`);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
console.log(` Cutoff Days: ${cutoffDays}`);
|
|
206
|
+
}
|
|
134
207
|
console.log(` Page Size: ${pageSize}`);
|
|
135
208
|
console.log();
|
|
136
209
|
console.log(chalk_1.default.blue('Destination:'));
|
|
137
|
-
console.log(` Image:
|
|
210
|
+
console.log(` Image: ${dstImage}`);
|
|
138
211
|
console.log(` Graph: ${config.graph}`);
|
|
139
212
|
console.log(` URL: ${config.url}`);
|
|
140
213
|
console.log(` Origin: ${config.origin}`);
|
|
@@ -157,19 +230,46 @@ async function syncLinearData(options) {
|
|
|
157
230
|
...options,
|
|
158
231
|
linearApiKey,
|
|
159
232
|
cutoffDays,
|
|
233
|
+
startDate,
|
|
234
|
+
endDate,
|
|
160
235
|
pageSize,
|
|
161
236
|
};
|
|
162
|
-
configPath = createTempConfig(tempOptions, config);
|
|
237
|
+
configPath = createTempConfig(tempOptions, config, srcImage, dstImage);
|
|
163
238
|
spinner.succeed('Configuration prepared');
|
|
164
239
|
const syncSpinner = ui_1.ui.spinner('Syncing Linear data to Faros...');
|
|
165
240
|
syncSpinner.start();
|
|
166
241
|
// Run airbyte-local
|
|
167
242
|
await runAirbyteSync(configPath);
|
|
168
243
|
syncSpinner.succeed('Linear data synced successfully');
|
|
169
|
-
|
|
170
|
-
ui_1.ui.
|
|
171
|
-
|
|
172
|
-
|
|
244
|
+
// Query stats after sync
|
|
245
|
+
const statsSpinner = ui_1.ui.spinner('Fetching sync statistics...');
|
|
246
|
+
statsSpinner.start();
|
|
247
|
+
try {
|
|
248
|
+
const stats = await querySyncStats(config.apiKey, config.url, config.graph, config.origin);
|
|
249
|
+
statsSpinner.succeed('Statistics retrieved');
|
|
250
|
+
console.log();
|
|
251
|
+
ui_1.ui.log.success('Sync completed');
|
|
252
|
+
console.log();
|
|
253
|
+
console.log(chalk_1.default.bold('Records synced:'));
|
|
254
|
+
console.log(chalk_1.default.cyan(` • Tasks: ${stats.tasks.toLocaleString()}`));
|
|
255
|
+
console.log(chalk_1.default.cyan(` • Projects: ${stats.projects.toLocaleString()}`));
|
|
256
|
+
console.log(chalk_1.default.cyan(` • Task Boards: ${stats.taskBoards.toLocaleString()}`));
|
|
257
|
+
console.log(chalk_1.default.cyan(` • Users: ${stats.users.toLocaleString()}`));
|
|
258
|
+
console.log();
|
|
259
|
+
console.log(chalk_1.default.bold('Destination:'));
|
|
260
|
+
console.log(chalk_1.default.dim(` • Graph: ${config.graph}`));
|
|
261
|
+
console.log(chalk_1.default.dim(` • Origin: ${config.origin}`));
|
|
262
|
+
console.log(chalk_1.default.dim(` • View in UI: ${config.url.replace('/api', '')}/${config.graph}/tms`));
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
statsSpinner.fail('Could not retrieve statistics');
|
|
266
|
+
ui_1.ui.log.warning(`Stats query failed: ${error.message}`);
|
|
267
|
+
// Fall back to basic success message
|
|
268
|
+
console.log();
|
|
269
|
+
ui_1.ui.log.success('Sync completed');
|
|
270
|
+
console.log(chalk_1.default.dim(` Graph: ${config.graph}`));
|
|
271
|
+
console.log(chalk_1.default.dim(` View in Faros: ${config.url.replace('/api', '')}/${config.graph}/tms`));
|
|
272
|
+
}
|
|
173
273
|
}
|
|
174
274
|
catch (error) {
|
|
175
275
|
// Try to fail spinner if it's still running
|
|
@@ -205,6 +305,8 @@ function syncLinearCommand() {
|
|
|
205
305
|
.description('Sync Linear issues, projects, teams, and users to Faros')
|
|
206
306
|
.option('--linear-api-key <key>', 'Linear API key (or set LINEAR_API_KEY env var)')
|
|
207
307
|
.option('--cutoff-days <days>', 'Fetch issues updated in the last N days', parseInt)
|
|
308
|
+
.option('--start-date <date>', 'Start date for fetching data (YYYY-MM-DD format)')
|
|
309
|
+
.option('--end-date <date>', 'End date for fetching data (YYYY-MM-DD format)')
|
|
208
310
|
.option('--page-size <size>', 'Number of records per API call (1-250)', parseInt)
|
|
209
311
|
.option('--preview', 'Show sync configuration without executing')
|
|
210
312
|
.addHelpText('after', `
|
|
@@ -219,24 +321,27 @@ Examples:
|
|
|
219
321
|
# Sync only recent issues (last 30 days)
|
|
220
322
|
$ faros sync linear --cutoff-days 30
|
|
221
323
|
|
|
324
|
+
# Or use explicit date range
|
|
325
|
+
$ faros sync linear --start-date 2024-01-01 --end-date 2024-12-31
|
|
326
|
+
|
|
222
327
|
# Preview configuration before syncing
|
|
223
328
|
$ faros sync linear --preview
|
|
224
329
|
|
|
225
330
|
Configuration:
|
|
331
|
+
Requires faros.config.yaml with Linear source configuration.
|
|
226
332
|
The command reads configuration from multiple sources (in order of precedence):
|
|
227
333
|
1. CLI options (--linear-api-key, --cutoff-days, etc.)
|
|
228
334
|
2. Environment variables (LINEAR_API_KEY, FAROS_API_KEY, FAROS_GRAPH)
|
|
229
|
-
3. Config file (faros.config.yaml)
|
|
230
|
-
4. Defaults (cutoff-days: 90, page-size: 50)
|
|
335
|
+
3. Config file (faros.config.yaml) - required
|
|
231
336
|
|
|
232
337
|
Example faros.config.yaml:
|
|
233
338
|
url: https://prod.api.faros.ai
|
|
234
339
|
graph: default
|
|
235
|
-
origin:
|
|
340
|
+
origin: faros-cli
|
|
236
341
|
sources:
|
|
237
342
|
linear:
|
|
238
|
-
cutoffDays:
|
|
239
|
-
pageSize:
|
|
343
|
+
cutoffDays: 180 # required: days to look back
|
|
344
|
+
pageSize: 50 # required: records per API call
|
|
240
345
|
|
|
241
346
|
Notes:
|
|
242
347
|
- Linear API key can be generated at https://linear.app/settings/api
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../src/commands/sync/linear.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../src/commands/sync/linear.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAkCvD,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwBzD;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,EAAE,GAAG,EACf,OAAO,GAAE,MAAM,CAAC,UAAwB,GACvC,MAAM,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAkCvD,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwBzD;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,EAAE,GAAG,EACf,OAAO,GAAE,MAAM,CAAC,UAAwB,GACvC,MAAM,CAiDR"}
|
package/lib/config/loader.js
CHANGED
|
@@ -92,13 +92,11 @@ async function loadConfig() {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
function mergeConfig(fileConfig, cliOptions, envVars = process.env) {
|
|
95
|
+
if (!fileConfig) {
|
|
96
|
+
throw new Error('Configuration file not found. Please create a faros.config.yaml file. ' +
|
|
97
|
+
'See https://github.com/faros-fde/faros-cli for configuration template.');
|
|
98
|
+
}
|
|
95
99
|
const merged = {
|
|
96
|
-
url: 'https://prod.api.faros.ai',
|
|
97
|
-
graph: 'default',
|
|
98
|
-
origin: 'faros-cli',
|
|
99
|
-
defaults: {
|
|
100
|
-
concurrency: 8,
|
|
101
|
-
},
|
|
102
100
|
...fileConfig,
|
|
103
101
|
};
|
|
104
102
|
// Strip any credentials that may have been placed in the config file.
|
package/lib/config/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,gCAwBC;AAED,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
package/lib/types/config.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const ConfigSchema: z.ZodObject<{
|
|
3
|
-
url: z.
|
|
4
|
-
graph: z.
|
|
5
|
-
origin: z.
|
|
3
|
+
url: z.ZodString;
|
|
4
|
+
graph: z.ZodString;
|
|
5
|
+
origin: z.ZodString;
|
|
6
6
|
apiKey: z.ZodOptional<z.ZodString>;
|
|
7
7
|
sources: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
8
8
|
type: z.ZodOptional<z.ZodString>;
|
|
@@ -53,22 +53,22 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
53
53
|
defaults: z.ZodOptional<z.ZodObject<{
|
|
54
54
|
testSource: z.ZodOptional<z.ZodString>;
|
|
55
55
|
testType: z.ZodOptional<z.ZodString>;
|
|
56
|
-
concurrency: z.
|
|
56
|
+
concurrency: z.ZodOptional<z.ZodNumber>;
|
|
57
57
|
}, "strip", z.ZodTypeAny, {
|
|
58
|
-
concurrency: number;
|
|
59
58
|
testSource?: string | undefined;
|
|
60
59
|
testType?: string | undefined;
|
|
60
|
+
concurrency?: number | undefined;
|
|
61
61
|
}, {
|
|
62
62
|
testSource?: string | undefined;
|
|
63
63
|
testType?: string | undefined;
|
|
64
64
|
concurrency?: number | undefined;
|
|
65
65
|
}>>;
|
|
66
66
|
logs: z.ZodOptional<z.ZodObject<{
|
|
67
|
-
level: z.
|
|
67
|
+
level: z.ZodEnum<["debug", "info", "warn", "error"]>;
|
|
68
68
|
}, "strip", z.ZodTypeAny, {
|
|
69
69
|
level: "debug" | "info" | "warn" | "error";
|
|
70
70
|
}, {
|
|
71
|
-
level
|
|
71
|
+
level: "debug" | "info" | "warn" | "error";
|
|
72
72
|
}>>;
|
|
73
73
|
}, "strip", z.ZodTypeAny, {
|
|
74
74
|
url: string;
|
|
@@ -92,17 +92,17 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
92
92
|
connectionName?: string | undefined;
|
|
93
93
|
}> | null | undefined;
|
|
94
94
|
defaults?: {
|
|
95
|
-
concurrency: number;
|
|
96
95
|
testSource?: string | undefined;
|
|
97
96
|
testType?: string | undefined;
|
|
97
|
+
concurrency?: number | undefined;
|
|
98
98
|
} | undefined;
|
|
99
99
|
logs?: {
|
|
100
100
|
level: "debug" | "info" | "warn" | "error";
|
|
101
101
|
} | undefined;
|
|
102
102
|
}, {
|
|
103
|
-
url
|
|
104
|
-
graph
|
|
105
|
-
origin
|
|
103
|
+
url: string;
|
|
104
|
+
graph: string;
|
|
105
|
+
origin: string;
|
|
106
106
|
apiKey?: string | undefined;
|
|
107
107
|
sources?: Record<string, {
|
|
108
108
|
type?: string | undefined;
|
|
@@ -126,7 +126,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
126
126
|
concurrency?: number | undefined;
|
|
127
127
|
} | undefined;
|
|
128
128
|
logs?: {
|
|
129
|
-
level
|
|
129
|
+
level: "debug" | "info" | "warn" | "error";
|
|
130
130
|
} | undefined;
|
|
131
131
|
}>;
|
|
132
132
|
export type Config = z.infer<typeof ConfigSchema>;
|
package/lib/types/config.js
CHANGED
|
@@ -5,10 +5,10 @@ const zod_1 = require("zod");
|
|
|
5
5
|
// Config schema
|
|
6
6
|
// NOTE: All credentials (API keys, tokens) MUST be in .env or env vars, NOT in config files.
|
|
7
7
|
exports.ConfigSchema = zod_1.z.object({
|
|
8
|
-
// API Configuration (
|
|
9
|
-
url: zod_1.z.string().url()
|
|
10
|
-
graph: zod_1.z.string()
|
|
11
|
-
origin: zod_1.z.string()
|
|
8
|
+
// API Configuration (required in config file)
|
|
9
|
+
url: zod_1.z.string().url(),
|
|
10
|
+
graph: zod_1.z.string(),
|
|
11
|
+
origin: zod_1.z.string(),
|
|
12
12
|
// Credentials - populated at runtime from env vars / CLI flags only.
|
|
13
13
|
// Not read from config file. Set FAROS_API_KEY in .env or environment.
|
|
14
14
|
apiKey: zod_1.z.string().optional(),
|
|
@@ -37,11 +37,11 @@ exports.ConfigSchema = zod_1.z.object({
|
|
|
37
37
|
defaults: zod_1.z.object({
|
|
38
38
|
testSource: zod_1.z.string().optional(),
|
|
39
39
|
testType: zod_1.z.string().optional(),
|
|
40
|
-
concurrency: zod_1.z.number().
|
|
40
|
+
concurrency: zod_1.z.number().optional(),
|
|
41
41
|
}).optional(),
|
|
42
42
|
// Logging
|
|
43
43
|
logs: zod_1.z.object({
|
|
44
|
-
level: zod_1.z.enum(['debug', 'info', 'warn', 'error'])
|
|
44
|
+
level: zod_1.z.enum(['debug', 'info', 'warn', 'error']),
|
|
45
45
|
}).optional(),
|
|
46
46
|
});
|
|
47
47
|
//# sourceMappingURL=config.js.map
|
package/lib/types/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,gBAAgB;AAChB,6FAA6F;AAChF,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,gBAAgB;AAChB,6FAA6F;AAChF,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,8CAA8C;IAC9C,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAElB,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE7B,eAAe;IACf,iFAAiF;IACjF,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,CAAC;QACzB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,iBAAiB;QAChD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,YAAY;QAC3C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,YAAY;QAC3C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,aAAa;QAC7C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACvC,2BAA2B;QAC3B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,yBAAyB;QACzB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,sBAAsB;QACtB,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACtC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAEzB,WAAW;IACX,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC;QACjB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACnC,CAAC,CAAC,QAAQ,EAAE;IAEb,UAAU;IACV,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAClD,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC"}
|