@chanl/eval-cli 0.4.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 (98) hide show
  1. package/LICENSE +21 -0
  2. package/dist/agent-loader.d.ts +39 -0
  3. package/dist/agent-loader.d.ts.map +1 -0
  4. package/dist/agent-loader.js +166 -0
  5. package/dist/agent-loader.js.map +1 -0
  6. package/dist/analytics.d.ts +15 -0
  7. package/dist/analytics.d.ts.map +1 -0
  8. package/dist/analytics.js +94 -0
  9. package/dist/analytics.js.map +1 -0
  10. package/dist/assertions.d.ts +73 -0
  11. package/dist/assertions.d.ts.map +1 -0
  12. package/dist/assertions.js +282 -0
  13. package/dist/assertions.js.map +1 -0
  14. package/dist/baseline.d.ts +100 -0
  15. package/dist/baseline.d.ts.map +1 -0
  16. package/dist/baseline.js +327 -0
  17. package/dist/baseline.js.map +1 -0
  18. package/dist/bin/chanl.d.ts +3 -0
  19. package/dist/bin/chanl.d.ts.map +1 -0
  20. package/dist/bin/chanl.js +11 -0
  21. package/dist/bin/chanl.js.map +1 -0
  22. package/dist/client.d.ts +40 -0
  23. package/dist/client.d.ts.map +1 -0
  24. package/dist/client.js +99 -0
  25. package/dist/client.js.map +1 -0
  26. package/dist/commands/analytics.d.ts +3 -0
  27. package/dist/commands/analytics.d.ts.map +1 -0
  28. package/dist/commands/analytics.js +44 -0
  29. package/dist/commands/analytics.js.map +1 -0
  30. package/dist/commands/compare.d.ts +51 -0
  31. package/dist/commands/compare.d.ts.map +1 -0
  32. package/dist/commands/compare.js +429 -0
  33. package/dist/commands/compare.js.map +1 -0
  34. package/dist/commands/config.d.ts +3 -0
  35. package/dist/commands/config.d.ts.map +1 -0
  36. package/dist/commands/config.js +94 -0
  37. package/dist/commands/config.js.map +1 -0
  38. package/dist/commands/dataset.d.ts +6 -0
  39. package/dist/commands/dataset.d.ts.map +1 -0
  40. package/dist/commands/dataset.js +225 -0
  41. package/dist/commands/dataset.js.map +1 -0
  42. package/dist/commands/executions.d.ts +3 -0
  43. package/dist/commands/executions.d.ts.map +1 -0
  44. package/dist/commands/executions.js +249 -0
  45. package/dist/commands/executions.js.map +1 -0
  46. package/dist/commands/generate.d.ts +3 -0
  47. package/dist/commands/generate.d.ts.map +1 -0
  48. package/dist/commands/generate.js +159 -0
  49. package/dist/commands/generate.js.map +1 -0
  50. package/dist/commands/init.d.ts +29 -0
  51. package/dist/commands/init.d.ts.map +1 -0
  52. package/dist/commands/init.js +545 -0
  53. package/dist/commands/init.js.map +1 -0
  54. package/dist/commands/login.d.ts +3 -0
  55. package/dist/commands/login.d.ts.map +1 -0
  56. package/dist/commands/login.js +65 -0
  57. package/dist/commands/login.js.map +1 -0
  58. package/dist/commands/personas.d.ts +3 -0
  59. package/dist/commands/personas.d.ts.map +1 -0
  60. package/dist/commands/personas.js +269 -0
  61. package/dist/commands/personas.js.map +1 -0
  62. package/dist/commands/scenarios.d.ts +16 -0
  63. package/dist/commands/scenarios.d.ts.map +1 -0
  64. package/dist/commands/scenarios.js +755 -0
  65. package/dist/commands/scenarios.js.map +1 -0
  66. package/dist/commands/scorecards.d.ts +3 -0
  67. package/dist/commands/scorecards.d.ts.map +1 -0
  68. package/dist/commands/scorecards.js +220 -0
  69. package/dist/commands/scorecards.js.map +1 -0
  70. package/dist/commands/server.d.ts +8 -0
  71. package/dist/commands/server.d.ts.map +1 -0
  72. package/dist/commands/server.js +357 -0
  73. package/dist/commands/server.js.map +1 -0
  74. package/dist/commands/test.d.ts +3 -0
  75. package/dist/commands/test.d.ts.map +1 -0
  76. package/dist/commands/test.js +410 -0
  77. package/dist/commands/test.js.map +1 -0
  78. package/dist/commands/tool-fixtures.d.ts +3 -0
  79. package/dist/commands/tool-fixtures.d.ts.map +1 -0
  80. package/dist/commands/tool-fixtures.js +324 -0
  81. package/dist/commands/tool-fixtures.js.map +1 -0
  82. package/dist/config.d.ts +32 -0
  83. package/dist/config.d.ts.map +1 -0
  84. package/dist/config.js +132 -0
  85. package/dist/config.js.map +1 -0
  86. package/dist/index.d.ts +8 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +146 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/output.d.ts +30 -0
  91. package/dist/output.d.ts.map +1 -0
  92. package/dist/output.js +77 -0
  93. package/dist/output.js.map +1 -0
  94. package/dist/update-check.d.ts +6 -0
  95. package/dist/update-check.d.ts.map +1 -0
  96. package/dist/update-check.js +50 -0
  97. package/dist/update-check.js.map +1 -0
  98. package/package.json +42 -0
@@ -0,0 +1,324 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.registerToolFixturesCommand = registerToolFixturesCommand;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const yaml = __importStar(require("js-yaml"));
43
+ const chalk_1 = __importDefault(require("chalk"));
44
+ const inquirer_1 = __importDefault(require("inquirer"));
45
+ const client_1 = require("../client");
46
+ const output_1 = require("../output");
47
+ function registerToolFixturesCommand(program) {
48
+ const toolFixtures = program
49
+ .command('tool-fixtures')
50
+ .description('Manage tool fixtures (mock tools for scenario testing)');
51
+ // --- list ---
52
+ toolFixtures
53
+ .command('list')
54
+ .description('List all tool fixtures')
55
+ .option('--active', 'Show only active fixtures')
56
+ .option('--inactive', 'Show only inactive fixtures')
57
+ .option('--tags <tags>', 'Filter by tags (comma-separated)')
58
+ .option('--search <query>', 'Search by name or description')
59
+ .option('--page <page>', 'Page number', '1')
60
+ .option('--limit <limit>', 'Results per page', '20')
61
+ .action(async (options) => {
62
+ try {
63
+ const params = {
64
+ page: options.page,
65
+ limit: options.limit,
66
+ };
67
+ if (options.active)
68
+ params.isActive = 'true';
69
+ if (options.inactive)
70
+ params.isActive = 'false';
71
+ if (options.tags)
72
+ params.tags = options.tags;
73
+ if (options.search)
74
+ params.search = options.search;
75
+ const result = await (0, client_1.get)('/tool-fixtures', params);
76
+ const items = result.toolFixtures || [];
77
+ const format = program.opts().format;
78
+ const headers = [
79
+ 'ID',
80
+ 'Name',
81
+ 'Description',
82
+ 'Params',
83
+ 'Mocks',
84
+ 'Active',
85
+ 'Tags',
86
+ ];
87
+ const rows = items.map((tf) => [
88
+ tf.id || tf._id || '',
89
+ (0, output_1.truncate)(tf.name || '', 25),
90
+ (0, output_1.truncate)(tf.description || '', 30),
91
+ String(Object.keys(tf.parameters || {}).length),
92
+ String((tf.mockResponses || []).length),
93
+ tf.isActive ? chalk_1.default.green('Yes') : chalk_1.default.dim('No'),
94
+ (tf.tags || []).join(', ') || '-',
95
+ ]);
96
+ (0, output_1.printOutput)(format, headers, rows, result);
97
+ if (format !== 'json' && result.pagination) {
98
+ const p = result.pagination;
99
+ console.log(chalk_1.default.dim(`\nShowing page ${p.page}/${p.totalPages} (${result.total} total)`));
100
+ }
101
+ }
102
+ catch (err) {
103
+ (0, output_1.printError)((0, client_1.formatError)(err));
104
+ process.exit(1);
105
+ }
106
+ });
107
+ // --- get ---
108
+ toolFixtures
109
+ .command('get <id>')
110
+ .description('Get tool fixture details')
111
+ .action(async (id) => {
112
+ try {
113
+ const result = await (0, client_1.get)(`/tool-fixtures/${id}`);
114
+ const format = program.opts().format;
115
+ if (format === 'json') {
116
+ console.log(JSON.stringify(result, null, 2));
117
+ return;
118
+ }
119
+ const tf = result.toolFixture || result;
120
+ console.log(chalk_1.default.bold('Tool Fixture'));
121
+ console.log(chalk_1.default.dim('\u2500'.repeat(60)));
122
+ console.log(` Name: ${tf.name}`);
123
+ console.log(` ID: ${tf.id || tf._id}`);
124
+ console.log(` Active: ${tf.isActive ? chalk_1.default.green('Yes') : chalk_1.default.dim('No')}`);
125
+ if (tf.description) {
126
+ console.log(` Description: ${tf.description}`);
127
+ }
128
+ if (tf.tags && tf.tags.length > 0) {
129
+ console.log(` Tags: ${tf.tags.join(', ')}`);
130
+ }
131
+ // Parameters
132
+ if (tf.parameters && Object.keys(tf.parameters).length > 0) {
133
+ console.log('');
134
+ console.log(chalk_1.default.bold(' Parameters'));
135
+ console.log(chalk_1.default.dim(' ' + '\u2500'.repeat(52)));
136
+ console.log(formatJsonIndented(tf.parameters, 4));
137
+ }
138
+ // Mock responses
139
+ if (tf.mockResponses && tf.mockResponses.length > 0) {
140
+ console.log('');
141
+ console.log(chalk_1.default.bold(' Mock Responses'));
142
+ console.log(chalk_1.default.dim(' ' + '\u2500'.repeat(52)));
143
+ for (let i = 0; i < tf.mockResponses.length; i++) {
144
+ const mock = tf.mockResponses[i];
145
+ const label = mock.isDefault
146
+ ? chalk_1.default.yellow('Default')
147
+ : `Rule ${i + 1}`;
148
+ const desc = mock.description
149
+ ? chalk_1.default.dim(` - ${mock.description}`)
150
+ : '';
151
+ console.log(` ${label}${desc}`);
152
+ if (mock.when && Object.keys(mock.when).length > 0) {
153
+ console.log(` ${chalk_1.default.dim('When:')} ${JSON.stringify(mock.when)}`);
154
+ }
155
+ console.log(` ${chalk_1.default.dim('Return:')} ${JSON.stringify(mock.return)}`);
156
+ console.log('');
157
+ }
158
+ }
159
+ }
160
+ catch (err) {
161
+ (0, output_1.printError)((0, client_1.formatError)(err));
162
+ process.exit(1);
163
+ }
164
+ });
165
+ // --- create ---
166
+ toolFixtures
167
+ .command('create')
168
+ .description('Create a new tool fixture')
169
+ .requiredOption('--name <name>', 'Tool fixture name')
170
+ .requiredOption('--description <description>', 'Description of the tool')
171
+ .option('--file <path>', 'Load full definition from a JSON or YAML file')
172
+ .option('--tags <tags>', 'Comma-separated tags')
173
+ .option('--inactive', 'Create as inactive')
174
+ .action(async (options) => {
175
+ try {
176
+ let dto = {
177
+ name: options.name,
178
+ description: options.description,
179
+ };
180
+ // If --file is provided, merge the file contents
181
+ if (options.file) {
182
+ const filePath = path.resolve(options.file);
183
+ if (!fs.existsSync(filePath)) {
184
+ (0, output_1.printError)(`File not found: ${filePath}`);
185
+ process.exit(1);
186
+ }
187
+ const content = fs.readFileSync(filePath, 'utf-8');
188
+ let fileData;
189
+ if (filePath.endsWith('.yaml') || filePath.endsWith('.yml')) {
190
+ fileData = yaml.load(content);
191
+ }
192
+ else {
193
+ fileData = JSON.parse(content);
194
+ }
195
+ // File data merges with CLI options (CLI options take precedence for name/description)
196
+ dto = { ...fileData, ...dto };
197
+ }
198
+ if (options.tags) {
199
+ dto.tags = options.tags.split(',').map((t) => t.trim());
200
+ }
201
+ if (options.inactive) {
202
+ dto.isActive = false;
203
+ }
204
+ const result = await (0, client_1.post)('/tool-fixtures', dto);
205
+ const tf = result.toolFixture || result;
206
+ const format = program.opts().format;
207
+ if (format === 'json') {
208
+ console.log(JSON.stringify(result, null, 2));
209
+ }
210
+ else {
211
+ (0, output_1.printSuccess)(`Created tool fixture: ${tf.name} (${tf.id || tf._id})`);
212
+ }
213
+ }
214
+ catch (err) {
215
+ (0, output_1.printError)((0, client_1.formatError)(err));
216
+ process.exit(1);
217
+ }
218
+ });
219
+ // --- update ---
220
+ toolFixtures
221
+ .command('update <id>')
222
+ .description('Update a tool fixture')
223
+ .option('--name <name>', 'New name')
224
+ .option('--description <description>', 'New description')
225
+ .option('--file <path>', 'Replace full definition from a JSON or YAML file')
226
+ .option('--tags <tags>', 'Comma-separated tags')
227
+ .option('--active', 'Set as active')
228
+ .option('--inactive', 'Set as inactive')
229
+ .action(async (id, options) => {
230
+ try {
231
+ let dto = {};
232
+ // If --file is provided, load the file contents as the base
233
+ if (options.file) {
234
+ const filePath = path.resolve(options.file);
235
+ if (!fs.existsSync(filePath)) {
236
+ (0, output_1.printError)(`File not found: ${filePath}`);
237
+ process.exit(1);
238
+ }
239
+ const content = fs.readFileSync(filePath, 'utf-8');
240
+ if (filePath.endsWith('.yaml') || filePath.endsWith('.yml')) {
241
+ dto = yaml.load(content);
242
+ }
243
+ else {
244
+ dto = JSON.parse(content);
245
+ }
246
+ }
247
+ // CLI options override file data
248
+ if (options.name)
249
+ dto.name = options.name;
250
+ if (options.description)
251
+ dto.description = options.description;
252
+ if (options.tags) {
253
+ dto.tags = options.tags.split(',').map((t) => t.trim());
254
+ }
255
+ if (options.active)
256
+ dto.isActive = true;
257
+ if (options.inactive)
258
+ dto.isActive = false;
259
+ if (Object.keys(dto).length === 0) {
260
+ (0, output_1.printError)('No update options provided. Use --name, --description, --file, --active, --inactive, or --tags.');
261
+ process.exit(1);
262
+ }
263
+ const result = await (0, client_1.patch)(`/tool-fixtures/${id}`, dto);
264
+ const tf = result.toolFixture || result;
265
+ const format = program.opts().format;
266
+ if (format === 'json') {
267
+ console.log(JSON.stringify(result, null, 2));
268
+ }
269
+ else {
270
+ (0, output_1.printSuccess)(`Updated tool fixture: ${tf.name} (${tf.id || tf._id})`);
271
+ }
272
+ }
273
+ catch (err) {
274
+ (0, output_1.printError)((0, client_1.formatError)(err));
275
+ process.exit(1);
276
+ }
277
+ });
278
+ // --- delete ---
279
+ toolFixtures
280
+ .command('delete <id>')
281
+ .description('Delete a tool fixture')
282
+ .option('--force', 'Skip confirmation prompt')
283
+ .action(async (id, options) => {
284
+ try {
285
+ if (!options.force) {
286
+ const { confirmed } = await inquirer_1.default.prompt([
287
+ {
288
+ type: 'confirm',
289
+ name: 'confirmed',
290
+ message: `Delete tool fixture ${id}? This cannot be undone.`,
291
+ default: false,
292
+ },
293
+ ]);
294
+ if (!confirmed) {
295
+ console.log('Cancelled.');
296
+ return;
297
+ }
298
+ }
299
+ await (0, client_1.del)(`/tool-fixtures/${id}`);
300
+ const format = program.opts().format;
301
+ if (format === 'json') {
302
+ console.log(JSON.stringify({ deleted: true, id }, null, 2));
303
+ }
304
+ else {
305
+ (0, output_1.printSuccess)(`Deleted tool fixture: ${id}`);
306
+ }
307
+ }
308
+ catch (err) {
309
+ (0, output_1.printError)((0, client_1.formatError)(err));
310
+ process.exit(1);
311
+ }
312
+ });
313
+ }
314
+ /**
315
+ * Format a JSON object with indentation for display.
316
+ */
317
+ function formatJsonIndented(obj, indent) {
318
+ const pad = ' '.repeat(indent);
319
+ return JSON.stringify(obj, null, 2)
320
+ .split('\n')
321
+ .map((line) => pad + line)
322
+ .join('\n');
323
+ }
324
+ //# sourceMappingURL=tool-fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-fixtures.js","sourceRoot":"","sources":["../../src/commands/tool-fixtures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export interface CliConfig {
2
+ server: string;
3
+ apiKey: string;
4
+ provider: string;
5
+ openaiApiKey: string;
6
+ anthropicApiKey: string;
7
+ httpEndpoint: string;
8
+ httpApiKey: string;
9
+ twilioAccountSid: string;
10
+ twilioAuthToken: string;
11
+ twilioPhoneNumber: string;
12
+ analytics: boolean;
13
+ analyticsId: string;
14
+ [key: string]: string | boolean;
15
+ }
16
+ /**
17
+ * Load the config from disk. Returns defaults if file does not exist.
18
+ */
19
+ export declare function loadConfig(): CliConfig;
20
+ /**
21
+ * Save config to disk. Accepts a partial config — missing fields use defaults.
22
+ */
23
+ export declare function saveConfig(config: Partial<CliConfig>): void;
24
+ /**
25
+ * Get a single config value by key.
26
+ */
27
+ export declare function getConfig(key: keyof CliConfig): string | boolean;
28
+ /**
29
+ * Set a single config value by key.
30
+ */
31
+ export declare function setConfig(key: keyof CliConfig, value: string | boolean): void;
32
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjC;AA6BD;;GAEG;AACH,wBAAgB,UAAU,IAAI,SAAS,CAkCtC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAO3D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAGhE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAI7E"}
package/dist/config.js ADDED
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadConfig = loadConfig;
37
+ exports.saveConfig = saveConfig;
38
+ exports.getConfig = getConfig;
39
+ exports.setConfig = setConfig;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const os = __importStar(require("os"));
43
+ const DEFAULT_CONFIG = {
44
+ server: 'http://localhost:18005/api/v1',
45
+ apiKey: '',
46
+ provider: '',
47
+ openaiApiKey: '',
48
+ anthropicApiKey: '',
49
+ httpEndpoint: '',
50
+ httpApiKey: '',
51
+ twilioAccountSid: '',
52
+ twilioAuthToken: '',
53
+ twilioPhoneNumber: '',
54
+ analytics: true,
55
+ analyticsId: '',
56
+ };
57
+ /**
58
+ * Resolve the config directory path.
59
+ * Uses CHANL_CONFIG_DIR env var if set (useful for testing), otherwise ~/.chanl.
60
+ */
61
+ function getConfigDir() {
62
+ return process.env.CHANL_CONFIG_DIR || path.join(os.homedir(), '.chanl');
63
+ }
64
+ function getConfigPath() {
65
+ return path.join(getConfigDir(), 'config.json');
66
+ }
67
+ /**
68
+ * Load the config from disk. Returns defaults if file does not exist.
69
+ */
70
+ function loadConfig() {
71
+ const configPath = getConfigPath();
72
+ let fromFile = {};
73
+ try {
74
+ if (fs.existsSync(configPath)) {
75
+ const raw = fs.readFileSync(configPath, 'utf-8');
76
+ fromFile = JSON.parse(raw);
77
+ }
78
+ }
79
+ catch {
80
+ fromFile = {};
81
+ }
82
+ const merged = { ...DEFAULT_CONFIG, ...fromFile };
83
+ if (!('server' in fromFile) && process.env.CHANL_SERVER_URL) {
84
+ merged.server = process.env.CHANL_SERVER_URL;
85
+ }
86
+ if (!('apiKey' in fromFile) && process.env.CHANL_API_KEY) {
87
+ merged.apiKey = process.env.CHANL_API_KEY;
88
+ }
89
+ if (!('provider' in fromFile) && process.env.CHANL_PROVIDER) {
90
+ merged.provider = process.env.CHANL_PROVIDER;
91
+ }
92
+ if (!('openaiApiKey' in fromFile) && process.env.CHANL_OPENAI_API_KEY) {
93
+ merged.openaiApiKey = process.env.CHANL_OPENAI_API_KEY;
94
+ }
95
+ if (!('anthropicApiKey' in fromFile) && process.env.CHANL_ANTHROPIC_API_KEY) {
96
+ merged.anthropicApiKey = process.env.CHANL_ANTHROPIC_API_KEY;
97
+ }
98
+ if (!('httpEndpoint' in fromFile) && process.env.CHANL_HTTP_ENDPOINT) {
99
+ merged.httpEndpoint = process.env.CHANL_HTTP_ENDPOINT;
100
+ }
101
+ if (!('httpApiKey' in fromFile) && process.env.CHANL_HTTP_API_KEY) {
102
+ merged.httpApiKey = process.env.CHANL_HTTP_API_KEY;
103
+ }
104
+ return merged;
105
+ }
106
+ /**
107
+ * Save config to disk. Accepts a partial config — missing fields use defaults.
108
+ */
109
+ function saveConfig(config) {
110
+ const configDir = getConfigDir();
111
+ if (!fs.existsSync(configDir)) {
112
+ fs.mkdirSync(configDir, { recursive: true });
113
+ }
114
+ const configPath = getConfigPath();
115
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
116
+ }
117
+ /**
118
+ * Get a single config value by key.
119
+ */
120
+ function getConfig(key) {
121
+ const config = loadConfig();
122
+ return config[key] ?? '';
123
+ }
124
+ /**
125
+ * Set a single config value by key.
126
+ */
127
+ function setConfig(key, value) {
128
+ const config = loadConfig();
129
+ config[key] = value;
130
+ saveConfig(config);
131
+ }
132
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Command } from 'commander';
2
+ export declare function createProgram(): Command;
3
+ export { loadConfig, saveConfig, getConfig, setConfig } from './config';
4
+ export { createClient, get, post, put, patch, del, formatError } from './client';
5
+ export { printTable, printJson, printOutput } from './output';
6
+ export { initAnalytics, track } from './analytics';
7
+ export { ensureServerRunning } from './commands/server';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,wBAAgB,aAAa,IAAI,OAAO,CAiEvC;AAWD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}