@tutorflow/cli 0.1.2 → 0.3.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 +400 -89
- package/dist/client.d.ts +7 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +53 -19
- package/dist/client.js.map +1 -1
- package/dist/commands/agent.d.ts +3 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +123 -0
- package/dist/commands/agent.js.map +1 -0
- 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/module.d.ts +3 -0
- package/dist/commands/module.d.ts.map +1 -0
- package/dist/commands/module.js +108 -0
- package/dist/commands/module.js.map +1 -0
- package/dist/commands/platform.d.ts +3 -0
- package/dist/commands/platform.d.ts.map +1 -0
- package/dist/commands/platform.js +36 -0
- package/dist/commands/platform.js.map +1 -0
- 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/test.d.ts +3 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +119 -0
- package/dist/commands/test.js.map +1 -0
- 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 +24 -2
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +75 -0
- package/dist/types.d.ts.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
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,4CAAgD;AAChD,4CAAgD;AAChD,8CAAkD;AAClD,kDAAsD;AACtD,8CAAkD;AAClD,kDAA0C;AAE1C,mBAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,uDAAuD,CAAC;KACpE,OAAO,CAAC,sBAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,4CAAgD;AAChD,4CAAgD;AAChD,8CAAkD;AAClD,kDAAsD;AACtD,8CAAkD;AAClD,4CAAgD;AAChD,8CAAkD;AAClD,0CAA8C;AAC9C,kDAAsD;AACtD,6CAA4D;AAC5D,kDAA0C;AAE1C,mBAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,uDAAuD,CAAC;KACpE,OAAO,CAAC,sBAAO,CAAC;KAChB,MAAM,CAAC,QAAQ,EAAE,2DAA2D,CAAC;KAC7E,MAAM,CAAC,SAAS,EAAE,iDAAiD,CAAC;KACpE,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;IACzB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,IAAI,CAAC,IAAI;QAAE,IAAA,qBAAW,EAAC,IAAI,CAAC,CAAC;IACjC,IAAI,IAAI,CAAC,KAAK;QAAE,IAAA,sBAAY,EAAC,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL,mBAAO,CAAC,UAAU,CAAC,IAAA,kBAAW,GAAE,CAAC,CAAC;AAClC,mBAAO,CAAC,UAAU,CAAC,IAAA,oBAAY,GAAE,CAAC,CAAC;AACnC,mBAAO,CAAC,UAAU,CAAC,IAAA,oBAAY,GAAE,CAAC,CAAC;AACnC,mBAAO,CAAC,UAAU,CAAC,IAAA,sBAAa,GAAE,CAAC,CAAC;AACpC,mBAAO,CAAC,UAAU,CAAC,IAAA,0BAAe,GAAE,CAAC,CAAC;AACtC,mBAAO,CAAC,UAAU,CAAC,IAAA,sBAAa,GAAE,CAAC,CAAC;AACpC,mBAAO,CAAC,UAAU,CAAC,IAAA,oBAAY,GAAE,CAAC,CAAC;AACnC,mBAAO,CAAC,UAAU,CAAC,IAAA,sBAAa,GAAE,CAAC,CAAC;AACpC,mBAAO,CAAC,UAAU,CAAC,IAAA,kBAAW,GAAE,CAAC,CAAC;AAClC,mBAAO,CAAC,UAAU,CAAC,IAAA,0BAAe,GAAE,CAAC,CAAC;AAEtC,mBAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;IAC1C,sEAAsE;IACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,mBAAO,CAAC,UAAU,EAAE,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -31,4 +31,79 @@ export interface EvaluationResponse {
|
|
|
31
31
|
[key: string]: unknown;
|
|
32
32
|
}
|
|
33
33
|
export type EvaluationType = 'exact' | 'rubric' | 'open-ended';
|
|
34
|
+
export interface AgentRegisterResponse {
|
|
35
|
+
organizationId: string;
|
|
36
|
+
apiKey: string;
|
|
37
|
+
keyPrefix: string;
|
|
38
|
+
trialCredits: number;
|
|
39
|
+
message: string;
|
|
40
|
+
requiresEmailVerification: boolean;
|
|
41
|
+
verifyEmailResendEndpoint: string;
|
|
42
|
+
nextSteps: {
|
|
43
|
+
createSlide: string;
|
|
44
|
+
createVideo: string;
|
|
45
|
+
accountInfo: string;
|
|
46
|
+
[key: string]: unknown;
|
|
47
|
+
};
|
|
48
|
+
[key: string]: unknown;
|
|
49
|
+
}
|
|
50
|
+
export interface AgentAccountResponse {
|
|
51
|
+
organizationId: string;
|
|
52
|
+
name: string;
|
|
53
|
+
slug: string;
|
|
54
|
+
status: string;
|
|
55
|
+
creditBalance: number;
|
|
56
|
+
rateLimitPerMinute: number;
|
|
57
|
+
isEmailVerified: boolean;
|
|
58
|
+
restrictedActions: string[];
|
|
59
|
+
createdAt: string;
|
|
60
|
+
[key: string]: unknown;
|
|
61
|
+
}
|
|
62
|
+
export interface AgentBillingSessionResponse {
|
|
63
|
+
url: string;
|
|
64
|
+
sessionId: string;
|
|
65
|
+
[key: string]: unknown;
|
|
66
|
+
}
|
|
67
|
+
export interface AgentBillingStatusResponse {
|
|
68
|
+
hasPaymentMethod: boolean;
|
|
69
|
+
cardBrand: string | null;
|
|
70
|
+
cardLast4: string | null;
|
|
71
|
+
creditBalance: number;
|
|
72
|
+
billingMode: string;
|
|
73
|
+
isEmailVerified: boolean;
|
|
74
|
+
restrictedActions: string[];
|
|
75
|
+
[key: string]: unknown;
|
|
76
|
+
}
|
|
77
|
+
export interface ModuleResource {
|
|
78
|
+
id: string;
|
|
79
|
+
title?: string | null;
|
|
80
|
+
description?: string | null;
|
|
81
|
+
type?: string;
|
|
82
|
+
status?: string | null;
|
|
83
|
+
publicUrl?: string | null;
|
|
84
|
+
shareToken?: string;
|
|
85
|
+
createdAt?: string;
|
|
86
|
+
[key: string]: unknown;
|
|
87
|
+
}
|
|
88
|
+
export interface ModuleListResponse {
|
|
89
|
+
items: ModuleResource[];
|
|
90
|
+
total: number;
|
|
91
|
+
[key: string]: unknown;
|
|
92
|
+
}
|
|
93
|
+
export interface TestResource {
|
|
94
|
+
id: string;
|
|
95
|
+
status: string;
|
|
96
|
+
title?: string | null;
|
|
97
|
+
description?: string | null;
|
|
98
|
+
itemCount?: number | null;
|
|
99
|
+
previewUrl?: string | null;
|
|
100
|
+
publicUrl?: string | null;
|
|
101
|
+
createdAt?: string;
|
|
102
|
+
[key: string]: unknown;
|
|
103
|
+
}
|
|
104
|
+
export interface TestListResponse {
|
|
105
|
+
items: TestResource[];
|
|
106
|
+
total: number;
|
|
107
|
+
[key: string]: unknown;
|
|
108
|
+
}
|
|
34
109
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/output.d.ts
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Output helpers. In JSON mode every "user-facing" call writes a single
|
|
3
|
+
* JSON line to stdout (or nothing for purely cosmetic info). In text mode
|
|
4
|
+
* they write human-readable, colored output.
|
|
5
|
+
*
|
|
6
|
+
* Rules:
|
|
7
|
+
* - data results → stdout
|
|
8
|
+
* - errors → stderr (handled by runtime.printError)
|
|
9
|
+
* - status / progress chatter → stderr in JSON mode, stdout in text mode
|
|
10
|
+
*/
|
|
11
|
+
/** Print the canonical result of a command. JSON mode writes raw object. */
|
|
12
|
+
export declare function printResult(data: unknown): void;
|
|
13
|
+
/** Status/progress line. Suppressed in JSON mode to keep stdout clean. */
|
|
14
|
+
export declare function printStatus(message: string, kind?: 'info' | 'success'): void;
|
|
15
|
+
export declare function formatTable(rows: Record<string, unknown>[]): string;
|
|
3
16
|
//# sourceMappingURL=output.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAmB/C;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,SAAkB,GAAG,IAAI,CAIpF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,CAgCnE"}
|
package/dist/utils/output.js
CHANGED
|
@@ -1,36 +1,80 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.printResult = printResult;
|
|
7
|
+
exports.printStatus = printStatus;
|
|
3
8
|
exports.formatTable = formatTable;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const runtime_1 = require("./runtime");
|
|
11
|
+
/**
|
|
12
|
+
* Output helpers. In JSON mode every "user-facing" call writes a single
|
|
13
|
+
* JSON line to stdout (or nothing for purely cosmetic info). In text mode
|
|
14
|
+
* they write human-readable, colored output.
|
|
15
|
+
*
|
|
16
|
+
* Rules:
|
|
17
|
+
* - data results → stdout
|
|
18
|
+
* - errors → stderr (handled by runtime.printError)
|
|
19
|
+
* - status / progress chatter → stderr in JSON mode, stdout in text mode
|
|
20
|
+
*/
|
|
21
|
+
/** Print the canonical result of a command. JSON mode writes raw object. */
|
|
22
|
+
function printResult(data) {
|
|
23
|
+
if ((0, runtime_1.isJsonMode)()) {
|
|
24
|
+
process.stdout.write(JSON.stringify(data) + '\n');
|
|
25
|
+
}
|
|
26
|
+
else if (Array.isArray(data)) {
|
|
27
|
+
if (data.length === 0) {
|
|
28
|
+
process.stdout.write(chalk_1.default.gray('(no results)\n'));
|
|
29
|
+
}
|
|
30
|
+
else if (typeof data[0] === 'object' && data[0] !== null) {
|
|
31
|
+
process.stdout.write(formatTable(data) + '\n');
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
process.stdout.write(data.join('\n') + '\n');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else if (typeof data === 'object' && data !== null) {
|
|
38
|
+
for (const [k, v] of Object.entries(data)) {
|
|
39
|
+
if (v === undefined || v === null)
|
|
40
|
+
continue;
|
|
41
|
+
process.stdout.write(chalk_1.default.gray(` ${k}: ${v}\n`));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
process.stdout.write(String(data) + '\n');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** Status/progress line. Suppressed in JSON mode to keep stdout clean. */
|
|
49
|
+
function printStatus(message, kind = 'info') {
|
|
50
|
+
if ((0, runtime_1.isJsonMode)())
|
|
51
|
+
return;
|
|
52
|
+
const color = kind === 'success' ? chalk_1.default.green : chalk_1.default.gray;
|
|
53
|
+
process.stdout.write(color(`${kind === 'success' ? '✓ ' : ''}${message}\n`));
|
|
54
|
+
}
|
|
55
|
+
function formatTable(rows) {
|
|
56
|
+
if (rows.length === 0)
|
|
7
57
|
return '';
|
|
8
|
-
const columns = Object.keys(
|
|
58
|
+
const columns = Object.keys(rows[0]);
|
|
9
59
|
const colWidths = {};
|
|
10
60
|
columns.forEach((col) => {
|
|
11
|
-
colWidths[col] = Math.max(col.length, ...
|
|
61
|
+
colWidths[col] = Math.max(col.length, ...rows.map((r) => String(r[col] ?? '').length));
|
|
12
62
|
});
|
|
13
|
-
const border = columns
|
|
14
|
-
.map((col) => '─'.repeat(colWidths[col] + 2))
|
|
15
|
-
.join('┼');
|
|
63
|
+
const border = columns.map((c) => '─'.repeat(colWidths[c] + 2)).join('┼');
|
|
16
64
|
const header = columns
|
|
17
|
-
.map((
|
|
18
|
-
const padding = colWidths[col] - col.length;
|
|
19
|
-
return ` ${col}${' '.repeat(padding)} `;
|
|
20
|
-
})
|
|
65
|
+
.map((c) => ` ${c}${' '.repeat(colWidths[c] - c.length)} `)
|
|
21
66
|
.join('│');
|
|
22
|
-
const
|
|
23
|
-
.map((
|
|
24
|
-
.map((
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
return ` ${value}${' '.repeat(padding)} `;
|
|
67
|
+
const body = rows
|
|
68
|
+
.map((r) => columns
|
|
69
|
+
.map((c) => {
|
|
70
|
+
const v = String(r[c] ?? '');
|
|
71
|
+
return ` ${v}${' '.repeat(colWidths[c] - v.length)} `;
|
|
28
72
|
})
|
|
29
73
|
.join('│'))
|
|
30
74
|
.join('\n');
|
|
31
|
-
return `┌${border}┐\n│${header}│\n├${border}┤\n${
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
75
|
+
return `┌${border}┐\n│${header}│\n├${border}┤\n${body
|
|
76
|
+
.split('\n')
|
|
77
|
+
.map((r) => `│${r}│`)
|
|
78
|
+
.join('\n')}\n└${border}┘`;
|
|
35
79
|
}
|
|
36
80
|
//# sourceMappingURL=output.js.map
|
package/dist/utils/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime helpers shared by every command.
|
|
3
|
+
*
|
|
4
|
+
* Output mode and debug are set once on the root program and read here so
|
|
5
|
+
* subcommands don't need to thread options through. They are the *only*
|
|
6
|
+
* pieces of mutable global state in the CLI.
|
|
7
|
+
*/
|
|
8
|
+
export declare function setJsonMode(on: boolean): void;
|
|
9
|
+
export declare function setDebugMode(on: boolean): void;
|
|
10
|
+
export declare function isJsonMode(): boolean;
|
|
11
|
+
export declare function isDebugMode(): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* True when stdin is connected to a terminal. False in CI, pipes,
|
|
14
|
+
* AI agent sandboxes, etc. — i.e. anywhere `@clack/prompts` would crash.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isInteractive(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Wrap a command action so:
|
|
19
|
+
* - thrown errors always set exit code 1 (or the error's `exitCode`)
|
|
20
|
+
* - in JSON mode, errors are serialized as { error: { message, code? } }
|
|
21
|
+
* - in text mode, errors are formatted via `printError`
|
|
22
|
+
* - stack traces are printed only when DEBUG / --debug is on
|
|
23
|
+
*/
|
|
24
|
+
export declare function command<T extends unknown[]>(fn: (...args: T) => Promise<void> | void): (...args: T) => Promise<void>;
|
|
25
|
+
export declare class CliError extends Error {
|
|
26
|
+
readonly code: string;
|
|
27
|
+
readonly exitCode: number;
|
|
28
|
+
constructor(message: string, opts?: {
|
|
29
|
+
code?: string;
|
|
30
|
+
exitCode?: number;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export declare function printError(error: unknown): void;
|
|
34
|
+
/**
|
|
35
|
+
* Refuse to launch an interactive prompt in a non-TTY environment.
|
|
36
|
+
* `hint` should describe the flags the caller could use instead.
|
|
37
|
+
*/
|
|
38
|
+
export declare function requireInteractive(hint: string): void;
|
|
39
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/utils/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAE7C;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED,wBAAgB,UAAU,IAAI,OAAO,CAGpC;AAED,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,EACzC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GACvC,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAS/B;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO;CAK7E;AAiBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAc/C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMrD"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Runtime helpers shared by every command.
|
|
4
|
+
*
|
|
5
|
+
* Output mode and debug are set once on the root program and read here so
|
|
6
|
+
* subcommands don't need to thread options through. They are the *only*
|
|
7
|
+
* pieces of mutable global state in the CLI.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.CliError = void 0;
|
|
11
|
+
exports.setJsonMode = setJsonMode;
|
|
12
|
+
exports.setDebugMode = setDebugMode;
|
|
13
|
+
exports.isJsonMode = isJsonMode;
|
|
14
|
+
exports.isDebugMode = isDebugMode;
|
|
15
|
+
exports.isInteractive = isInteractive;
|
|
16
|
+
exports.command = command;
|
|
17
|
+
exports.printError = printError;
|
|
18
|
+
exports.requireInteractive = requireInteractive;
|
|
19
|
+
let jsonMode = false;
|
|
20
|
+
let debugMode = false;
|
|
21
|
+
function setJsonMode(on) {
|
|
22
|
+
jsonMode = on;
|
|
23
|
+
}
|
|
24
|
+
function setDebugMode(on) {
|
|
25
|
+
debugMode = on;
|
|
26
|
+
}
|
|
27
|
+
function isJsonMode() {
|
|
28
|
+
// Env var override lets agents set this once globally without a flag.
|
|
29
|
+
return jsonMode || process.env.TUTORFLOW_JSON === '1';
|
|
30
|
+
}
|
|
31
|
+
function isDebugMode() {
|
|
32
|
+
return debugMode || process.env.DEBUG === '1' || process.env.TUTORFLOW_DEBUG === '1';
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* True when stdin is connected to a terminal. False in CI, pipes,
|
|
36
|
+
* AI agent sandboxes, etc. — i.e. anywhere `@clack/prompts` would crash.
|
|
37
|
+
*/
|
|
38
|
+
function isInteractive() {
|
|
39
|
+
return Boolean(process.stdin.isTTY) && Boolean(process.stdout.isTTY);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Wrap a command action so:
|
|
43
|
+
* - thrown errors always set exit code 1 (or the error's `exitCode`)
|
|
44
|
+
* - in JSON mode, errors are serialized as { error: { message, code? } }
|
|
45
|
+
* - in text mode, errors are formatted via `printError`
|
|
46
|
+
* - stack traces are printed only when DEBUG / --debug is on
|
|
47
|
+
*/
|
|
48
|
+
function command(fn) {
|
|
49
|
+
return async (...args) => {
|
|
50
|
+
try {
|
|
51
|
+
await fn(...args);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
printError(error);
|
|
55
|
+
process.exit(getExitCode(error));
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
class CliError extends Error {
|
|
60
|
+
constructor(message, opts = {}) {
|
|
61
|
+
super(message);
|
|
62
|
+
this.code = opts.code ?? 'EGENERIC';
|
|
63
|
+
this.exitCode = opts.exitCode ?? 1;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.CliError = CliError;
|
|
67
|
+
function getExitCode(error) {
|
|
68
|
+
if (error instanceof CliError)
|
|
69
|
+
return error.exitCode;
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
function getErrorCode(error) {
|
|
73
|
+
if (error instanceof CliError)
|
|
74
|
+
return error.code;
|
|
75
|
+
return 'EGENERIC';
|
|
76
|
+
}
|
|
77
|
+
function getErrorMessage(error) {
|
|
78
|
+
if (error instanceof Error)
|
|
79
|
+
return error.message;
|
|
80
|
+
return String(error);
|
|
81
|
+
}
|
|
82
|
+
function printError(error) {
|
|
83
|
+
const message = getErrorMessage(error);
|
|
84
|
+
const code = getErrorCode(error);
|
|
85
|
+
if (isJsonMode()) {
|
|
86
|
+
process.stderr.write(JSON.stringify({ error: { message, code } }) + '\n');
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// chalk is loaded by callers; keep this dependency-free and use ANSI directly.
|
|
90
|
+
process.stderr.write(`\x1b[31m✗ ${message}\x1b[0m\n`);
|
|
91
|
+
}
|
|
92
|
+
if (isDebugMode() && error instanceof Error && error.stack) {
|
|
93
|
+
process.stderr.write(error.stack + '\n');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Refuse to launch an interactive prompt in a non-TTY environment.
|
|
98
|
+
* `hint` should describe the flags the caller could use instead.
|
|
99
|
+
*/
|
|
100
|
+
function requireInteractive(hint) {
|
|
101
|
+
if (isInteractive())
|
|
102
|
+
return;
|
|
103
|
+
throw new CliError(`Required input not provided and stdin is not a terminal. ${hint}`, { code: 'ENOINTERACTIVE', exitCode: 2 });
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/utils/runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tutorflow/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "TutorFlow CLI for creating AI-powered educational content (slides, videos, courses) and evaluating student responses.",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "TutorFlow CLI - agent-friendly tool for creating AI-powered educational content (slides, videos, courses) and evaluating student responses. Supports --json output, env-var auth, and non-interactive use.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"tutorflow",
|
|
7
|
+
"education",
|
|
8
|
+
"edtech",
|
|
9
|
+
"ai",
|
|
10
|
+
"ai-content",
|
|
11
|
+
"slides",
|
|
12
|
+
"video",
|
|
13
|
+
"course",
|
|
14
|
+
"tutor",
|
|
15
|
+
"lesson",
|
|
16
|
+
"evaluation",
|
|
17
|
+
"cli",
|
|
18
|
+
"agent",
|
|
19
|
+
"automation"
|
|
20
|
+
],
|
|
5
21
|
"bin": {
|
|
6
22
|
"tutorflow": "./dist/index.js"
|
|
7
23
|
},
|