@tutorflow/cli 0.1.1 → 0.2.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.
- package/README.md +195 -89
- package/dist/client.d.ts +6 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +51 -18
- package/dist/client.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +48 -45
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +34 -45
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/course.d.ts.map +1 -1
- package/dist/commands/course.js +61 -75
- package/dist/commands/course.js.map +1 -1
- package/dist/commands/evaluate.d.ts.map +1 -1
- package/dist/commands/evaluate.js +49 -55
- package/dist/commands/evaluate.js.map +1 -1
- package/dist/commands/slide.d.ts.map +1 -1
- package/dist/commands/slide.js +65 -76
- package/dist/commands/slide.js.map +1 -1
- package/dist/commands/video.d.ts.map +1 -1
- package/dist/commands/video.js +66 -78
- package/dist/commands/video.js.map +1 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/utils/output.d.ts +15 -2
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +66 -22
- package/dist/utils/output.js.map +1 -1
- package/dist/utils/runtime.d.ts +39 -0
- package/dist/utils/runtime.d.ts.map +1 -0
- package/dist/utils/runtime.js +105 -0
- package/dist/utils/runtime.js.map +1 -0
- package/package.json +18 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,aAAa,IAAI,OAAO,CA4CvC"}
|
package/dist/commands/config.js
CHANGED
|
@@ -1,65 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.configCommand = configCommand;
|
|
7
4
|
const commander_1 = require("commander");
|
|
8
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
9
5
|
const config_1 = require("../config");
|
|
6
|
+
const output_1 = require("../utils/output");
|
|
7
|
+
const runtime_1 = require("../utils/runtime");
|
|
8
|
+
const VALID_KEYS = ['apiKey', 'baseUrl', 'workspace'];
|
|
10
9
|
function configCommand() {
|
|
11
10
|
const config = new commander_1.Command('config').description('Manage CLI configuration');
|
|
12
11
|
config
|
|
13
12
|
.command('set <key> <value>')
|
|
14
13
|
.description('Set a configuration value')
|
|
15
|
-
.action(async (key, value) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (!validKeys.includes(key)) {
|
|
19
|
-
console.log(chalk_1.default.red(`✗ Unknown config key: ${key}`));
|
|
20
|
-
console.log(chalk_1.default.gray(`Valid keys: ${validKeys.join(', ')}`));
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
const updatePayload = {};
|
|
24
|
-
updatePayload[key] = value;
|
|
25
|
-
await (0, config_1.updateConfig)(updatePayload);
|
|
26
|
-
console.log(chalk_1.default.green(`✓ Config updated: ${key}`));
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
console.error(chalk_1.default.red('✗ Failed to update config'), error);
|
|
14
|
+
.action((0, runtime_1.command)(async (key, value) => {
|
|
15
|
+
if (!VALID_KEYS.includes(key)) {
|
|
16
|
+
throw new runtime_1.CliError(`Unknown config key "${key}". Valid keys: ${VALID_KEYS.join(', ')}`, { code: 'EINVAL', exitCode: 2 });
|
|
30
17
|
}
|
|
31
|
-
|
|
18
|
+
const updated = await (0, config_1.updateConfig)({ [key]: value });
|
|
19
|
+
(0, output_1.printResult)({ key, value: maskIfSecret(key, value), config: maskConfig(updated) });
|
|
20
|
+
}));
|
|
32
21
|
config
|
|
33
22
|
.command('get [key]')
|
|
34
|
-
.description('Get a configuration value')
|
|
35
|
-
.action(async (key) => {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (key) {
|
|
39
|
-
|
|
40
|
-
if (value === undefined) {
|
|
41
|
-
console.log(chalk_1.default.gray(`Config key not set: ${key}`));
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
console.log(`${key}=${value}`);
|
|
45
|
-
}
|
|
23
|
+
.description('Get a configuration value (or all if no key)')
|
|
24
|
+
.action((0, runtime_1.command)(async (key) => {
|
|
25
|
+
const cfg = await (0, config_1.readConfig)();
|
|
26
|
+
if (key) {
|
|
27
|
+
if (!VALID_KEYS.includes(key)) {
|
|
28
|
+
throw new runtime_1.CliError(`Unknown config key "${key}". Valid keys: ${VALID_KEYS.join(', ')}`, { code: 'EINVAL', exitCode: 2 });
|
|
46
29
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (k === 'apiKey' && v) {
|
|
51
|
-
console.log(chalk_1.default.gray(` ${k}: ${v.slice(0, 10)}...`));
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
console.log(chalk_1.default.gray(` ${k}: ${v}`));
|
|
55
|
-
}
|
|
56
|
-
});
|
|
30
|
+
const value = cfg[key];
|
|
31
|
+
if (value === undefined) {
|
|
32
|
+
throw new runtime_1.CliError(`Config key not set: ${key}`, { code: 'ENOTFOUND', exitCode: 1 });
|
|
57
33
|
}
|
|
34
|
+
(0, output_1.printResult)({ [key]: maskIfSecret(key, value) });
|
|
58
35
|
}
|
|
59
|
-
|
|
60
|
-
|
|
36
|
+
else {
|
|
37
|
+
(0, output_1.printResult)(maskConfig(cfg));
|
|
61
38
|
}
|
|
62
|
-
});
|
|
39
|
+
}));
|
|
63
40
|
return config;
|
|
64
41
|
}
|
|
42
|
+
function maskIfSecret(key, value) {
|
|
43
|
+
if (key === 'apiKey' && value.length > 10)
|
|
44
|
+
return `${value.slice(0, 10)}...`;
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
function maskConfig(cfg) {
|
|
48
|
+
return {
|
|
49
|
+
apiKey: cfg.apiKey ? maskIfSecret('apiKey', cfg.apiKey) : undefined,
|
|
50
|
+
baseUrl: cfg.baseUrl,
|
|
51
|
+
workspace: cfg.workspace,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
65
54
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course.d.ts","sourceRoot":"","sources":["../../src/commands/course.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,aAAa,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"course.d.ts","sourceRoot":"","sources":["../../src/commands/course.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,aAAa,IAAI,OAAO,CA2GvC"}
|
package/dist/commands/course.js
CHANGED
|
@@ -6,108 +6,94 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.courseCommand = courseCommand;
|
|
7
7
|
const commander_1 = require("commander");
|
|
8
8
|
const prompts_1 = require("@clack/prompts");
|
|
9
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
10
9
|
const open_1 = __importDefault(require("open"));
|
|
11
10
|
const client_1 = require("../client");
|
|
12
|
-
const config_1 = require("../config");
|
|
13
11
|
const output_1 = require("../utils/output");
|
|
12
|
+
const runtime_1 = require("../utils/runtime");
|
|
14
13
|
function courseCommand() {
|
|
15
14
|
const course = new commander_1.Command('course').description('Manage courses');
|
|
16
15
|
course
|
|
17
16
|
.command('create')
|
|
18
17
|
.argument('[prompt]', 'Prompt describing the course content')
|
|
19
|
-
.option('-l, --lessons <number>', 'Number of lessons
|
|
20
|
-
.option('-lang, --language <lang>', 'Language code
|
|
21
|
-
.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const coursePrompt = prompt || (await (0, prompts_1.text)({ message: 'Describe the course content:' }));
|
|
30
|
-
if (!coursePrompt || typeof coursePrompt === 'symbol') {
|
|
31
|
-
console.log(chalk_1.default.gray('Cancelled'));
|
|
32
|
-
return;
|
|
18
|
+
.option('-l, --lessons <number>', 'Number of lessons', '8')
|
|
19
|
+
.option('-lang, --language <lang>', 'Language code', 'en')
|
|
20
|
+
.option('--open', 'Open the result in a browser when done (TTY only)')
|
|
21
|
+
.action((0, runtime_1.command)(async (prompt, options) => {
|
|
22
|
+
let coursePrompt = prompt;
|
|
23
|
+
if (!coursePrompt) {
|
|
24
|
+
(0, runtime_1.requireInteractive)('Pass a prompt argument: tutorflow course create "Beginner Python"');
|
|
25
|
+
const result = await (0, prompts_1.text)({ message: 'Describe the course content:' });
|
|
26
|
+
if (typeof result === 'symbol') {
|
|
27
|
+
throw new runtime_1.CliError('Cancelled', { code: 'ECANCELLED', exitCode: 130 });
|
|
33
28
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
29
|
+
coursePrompt = result;
|
|
30
|
+
}
|
|
31
|
+
const client = await client_1.ApiClient.createAuthenticated();
|
|
32
|
+
const s = (0, runtime_1.isJsonMode)() || !(0, runtime_1.isInteractive)() ? null : (0, prompts_1.spinner)();
|
|
33
|
+
s?.start('Creating course...');
|
|
34
|
+
let response;
|
|
35
|
+
try {
|
|
36
|
+
response = await client.request('POST', '/v1/platform/courses', {
|
|
37
37
|
prompt: coursePrompt,
|
|
38
38
|
lessonCount: parseInt(options.lessons, 10),
|
|
39
39
|
language: options.language,
|
|
40
40
|
mode: 'sync',
|
|
41
41
|
});
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
s?.stop('Done');
|
|
45
|
+
}
|
|
46
|
+
(0, output_1.printResult)(response);
|
|
47
|
+
if (options.open && response.previewUrl && (0, runtime_1.isInteractive)()) {
|
|
49
48
|
const shouldOpen = await (0, prompts_1.confirm)({ message: 'Open in browser?' });
|
|
50
|
-
if (shouldOpen
|
|
49
|
+
if (shouldOpen === true)
|
|
51
50
|
await (0, open_1.default)(response.previewUrl);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
console.error(chalk_1.default.red('✗ Failed to create course'), error);
|
|
56
51
|
}
|
|
57
|
-
});
|
|
52
|
+
}));
|
|
58
53
|
course
|
|
59
54
|
.command('list')
|
|
60
|
-
.option('-l, --limit <number>', 'Number of results
|
|
61
|
-
.action(async (options) => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (courses.length === 0) {
|
|
72
|
-
console.log(chalk_1.default.gray('No courses found'));
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
const tableData = courses.map((c) => ({
|
|
76
|
-
ID: c.id.slice(0, 8),
|
|
55
|
+
.option('-l, --limit <number>', 'Number of results', '10')
|
|
56
|
+
.action((0, runtime_1.command)(async (options) => {
|
|
57
|
+
const client = await client_1.ApiClient.createAuthenticated();
|
|
58
|
+
const response = await client.request('GET', `/v1/platform/courses?limit=${options.limit}`);
|
|
59
|
+
const courses = response.data ?? [];
|
|
60
|
+
if ((0, runtime_1.isJsonMode)()) {
|
|
61
|
+
(0, output_1.printResult)(courses);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
(0, output_1.printResult)(courses.map((c) => ({
|
|
65
|
+
ID: c.id,
|
|
77
66
|
Title: c.title || 'Untitled',
|
|
78
67
|
Status: c.status,
|
|
79
68
|
Created: new Date(c.createdAt).toLocaleDateString(),
|
|
80
|
-
}));
|
|
81
|
-
console.log((0, output_1.formatTable)(tableData));
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
console.error(chalk_1.default.red('✗ Failed to list courses'), error);
|
|
69
|
+
})));
|
|
85
70
|
}
|
|
86
|
-
});
|
|
71
|
+
}));
|
|
72
|
+
course
|
|
73
|
+
.command('get <id>')
|
|
74
|
+
.description('Fetch a single course by ID')
|
|
75
|
+
.action((0, runtime_1.command)(async (id) => {
|
|
76
|
+
const client = await client_1.ApiClient.createAuthenticated();
|
|
77
|
+
const response = await client.request('GET', `/v1/platform/courses/${id}`);
|
|
78
|
+
(0, output_1.printResult)(response);
|
|
79
|
+
}));
|
|
87
80
|
course
|
|
88
81
|
.command('open <id>')
|
|
89
82
|
.description('Open a course in the browser')
|
|
90
|
-
.action(async (id) => {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const response = await client.request('GET', `/v1/platform/courses/${id}`);
|
|
99
|
-
if (response.previewUrl) {
|
|
100
|
-
await (0, open_1.default)(response.previewUrl);
|
|
101
|
-
console.log(chalk_1.default.green('✓ Opening in browser...'));
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
console.log(chalk_1.default.red('✗ No preview URL available'));
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
catch (error) {
|
|
108
|
-
console.error(chalk_1.default.red('✗ Failed to open course'), error);
|
|
83
|
+
.action((0, runtime_1.command)(async (id) => {
|
|
84
|
+
const client = await client_1.ApiClient.createAuthenticated();
|
|
85
|
+
const response = await client.request('GET', `/v1/platform/courses/${id}`);
|
|
86
|
+
if (!response.previewUrl) {
|
|
87
|
+
throw new runtime_1.CliError('No preview URL available for this course', {
|
|
88
|
+
code: 'ENOPREVIEW',
|
|
89
|
+
exitCode: 1,
|
|
90
|
+
});
|
|
109
91
|
}
|
|
110
|
-
|
|
92
|
+
if ((0, runtime_1.isInteractive)())
|
|
93
|
+
await (0, open_1.default)(response.previewUrl);
|
|
94
|
+
(0, output_1.printResult)({ previewUrl: response.previewUrl });
|
|
95
|
+
(0, output_1.printStatus)('Opening in browser...', 'success');
|
|
96
|
+
}));
|
|
111
97
|
return course;
|
|
112
98
|
}
|
|
113
99
|
//# sourceMappingURL=course.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course.js","sourceRoot":"","sources":["../../src/commands/course.ts"],"names":[],"mappings":";;;;;AAkBA,
|
|
1
|
+
{"version":3,"file":"course.js","sourceRoot":"","sources":["../../src/commands/course.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/commands/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/commands/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,eAAe,IAAI,OAAO,CA2DzC"}
|
|
@@ -1,68 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.evaluateCommand = evaluateCommand;
|
|
7
4
|
const commander_1 = require("commander");
|
|
8
5
|
const prompts_1 = require("@clack/prompts");
|
|
9
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
10
6
|
const client_1 = require("../client");
|
|
11
|
-
const
|
|
7
|
+
const output_1 = require("../utils/output");
|
|
8
|
+
const runtime_1 = require("../utils/runtime");
|
|
9
|
+
const VALID_TYPES = ['exact', 'rubric', 'open-ended'];
|
|
12
10
|
function evaluateCommand() {
|
|
13
|
-
|
|
11
|
+
return new commander_1.Command('evaluate')
|
|
14
12
|
.description('Evaluate student responses')
|
|
15
|
-
.option('-t, --type <type>',
|
|
16
|
-
.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
{ value: 'open-ended', label: 'Open-ended AI Evaluation' },
|
|
31
|
-
],
|
|
32
|
-
}));
|
|
33
|
-
}
|
|
34
|
-
if (!evalType || typeof evalType === 'symbol') {
|
|
35
|
-
console.log(chalk_1.default.gray('Cancelled'));
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const question = await (0, prompts_1.text)({ message: 'Enter the question:' });
|
|
39
|
-
if (!question || typeof question === 'symbol')
|
|
40
|
-
return;
|
|
41
|
-
const studentAnswer = await (0, prompts_1.text)({ message: 'Enter the student answer:' });
|
|
42
|
-
if (!studentAnswer || typeof studentAnswer === 'symbol')
|
|
43
|
-
return;
|
|
44
|
-
let expectedAnswer;
|
|
45
|
-
if (evalType !== 'open-ended') {
|
|
46
|
-
const expected = await (0, prompts_1.text)({ message: 'Enter the expected answer:' });
|
|
47
|
-
if (!expected || typeof expected === 'symbol')
|
|
48
|
-
return;
|
|
49
|
-
expectedAnswer = expected;
|
|
50
|
-
}
|
|
51
|
-
const client = await client_1.ApiClient.create();
|
|
52
|
-
const response = await client.request('POST', '/v1/platform/evaluate', {
|
|
53
|
-
evaluationType: evalType,
|
|
54
|
-
question,
|
|
55
|
-
studentAnswer,
|
|
56
|
-
expectedAnswer,
|
|
13
|
+
.option('-t, --type <type>', `Evaluation type (${VALID_TYPES.join(' | ')})`)
|
|
14
|
+
.option('-q, --question <text>', 'The question being evaluated')
|
|
15
|
+
.option('-a, --student-answer <text>', "Student's answer")
|
|
16
|
+
.option('-e, --expected-answer <text>', 'Expected answer (required for exact and rubric)')
|
|
17
|
+
.action((0, runtime_1.command)(async (options) => {
|
|
18
|
+
let evalType = options.type;
|
|
19
|
+
if (!evalType) {
|
|
20
|
+
(0, runtime_1.requireInteractive)(`Pass --type ${VALID_TYPES.join('|')}`);
|
|
21
|
+
const result = await (0, prompts_1.select)({
|
|
22
|
+
message: 'Select evaluation type:',
|
|
23
|
+
options: [
|
|
24
|
+
{ value: 'exact', label: 'Exact Match' },
|
|
25
|
+
{ value: 'rubric', label: 'Rubric-based' },
|
|
26
|
+
{ value: 'open-ended', label: 'Open-ended AI Evaluation' },
|
|
27
|
+
],
|
|
57
28
|
});
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
29
|
+
if (typeof result === 'symbol') {
|
|
30
|
+
throw new runtime_1.CliError('Cancelled', { code: 'ECANCELLED', exitCode: 130 });
|
|
31
|
+
}
|
|
32
|
+
evalType = result;
|
|
33
|
+
}
|
|
34
|
+
if (!VALID_TYPES.includes(evalType)) {
|
|
35
|
+
throw new runtime_1.CliError(`Invalid --type "${evalType}". Must be one of: ${VALID_TYPES.join(', ')}`, { code: 'EINVAL', exitCode: 2 });
|
|
61
36
|
}
|
|
62
|
-
|
|
63
|
-
|
|
37
|
+
const question = options.question ?? (await promptOrThrow('Enter the question:', '--question'));
|
|
38
|
+
const studentAnswer = options.studentAnswer ??
|
|
39
|
+
(await promptOrThrow('Enter the student answer:', '--student-answer'));
|
|
40
|
+
let expectedAnswer = options.expectedAnswer;
|
|
41
|
+
if (evalType !== 'open-ended' && !expectedAnswer) {
|
|
42
|
+
expectedAnswer = await promptOrThrow('Enter the expected answer:', '--expected-answer');
|
|
64
43
|
}
|
|
65
|
-
|
|
66
|
-
|
|
44
|
+
const client = await client_1.ApiClient.createAuthenticated();
|
|
45
|
+
const response = await client.request('POST', '/v1/platform/evaluate', {
|
|
46
|
+
evaluationType: evalType,
|
|
47
|
+
question,
|
|
48
|
+
studentAnswer,
|
|
49
|
+
expectedAnswer,
|
|
50
|
+
});
|
|
51
|
+
(0, output_1.printResult)(response);
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
async function promptOrThrow(message, flagHint) {
|
|
55
|
+
(0, runtime_1.requireInteractive)(`Pass ${flagHint} <text>.`);
|
|
56
|
+
const result = await (0, prompts_1.text)({ message });
|
|
57
|
+
if (!result || typeof result === 'symbol') {
|
|
58
|
+
throw new runtime_1.CliError('Cancelled', { code: 'ECANCELLED', exitCode: 130 });
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
67
61
|
}
|
|
68
62
|
//# sourceMappingURL=evaluate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/commands/evaluate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/commands/evaluate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slide.d.ts","sourceRoot":"","sources":["../../src/commands/slide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,YAAY,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"slide.d.ts","sourceRoot":"","sources":["../../src/commands/slide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,YAAY,IAAI,OAAO,CA8GtC"}
|