@altnovatrail/contracts 0.8.0 → 0.8.2
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/novatrail/api/v1/account_pb.d.ts +1547 -0
- package/novatrail/api/v1/account_pb.js +405 -0
- package/novatrail/api/v1/attempt_pb.d.ts +1409 -0
- package/novatrail/api/v1/attempt_pb.js +293 -0
- package/novatrail/api/v1/cause_pb.d.ts +535 -0
- package/novatrail/api/v1/cause_pb.js +86 -0
- package/package.json +13 -1
|
@@ -0,0 +1,1409 @@
|
|
|
1
|
+
// @generated by protoc-gen-es v2.16.0 with parameter "target=js+dts,import_extension=js"
|
|
2
|
+
// @generated from file novatrail/api/v1/attempt.proto (package novatrail.api.v1, syntax proto3)
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
|
|
5
|
+
// The checking of an attempt in the contract between `app` and `api`: the submission of the work
|
|
6
|
+
// and the verdict, the tutor's words and marks, hints, the solution shown, and "Done" on a task with
|
|
7
|
+
// a rubric. What each message means, what never reaches the device, and what a repeat with the same
|
|
8
|
+
// idempotency key answers are the rules of contracts/README.md, section 15.
|
|
9
|
+
|
|
10
|
+
import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
|
|
11
|
+
import type { Message } from "@bufbuild/protobuf";
|
|
12
|
+
import type { CloseReason, Outcome } from "./cause_pb.js";
|
|
13
|
+
import type { AnswerSlotPlace, CropBox } from "../../observation/v1/observation_pb.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Describes the file novatrail/api/v1/attempt.proto.
|
|
17
|
+
*/
|
|
18
|
+
export declare const file_novatrail_api_v1_attempt: GenFile;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The submission of a task with a verdict.
|
|
22
|
+
*
|
|
23
|
+
* @generated from message novatrail.api.v1.SubmitWorkRequest
|
|
24
|
+
*/
|
|
25
|
+
export declare type SubmitWorkRequest = Message<"novatrail.api.v1.SubmitWorkRequest"> & {
|
|
26
|
+
/**
|
|
27
|
+
* The profile whose attempt it is.
|
|
28
|
+
*
|
|
29
|
+
* @generated from field: string profile_id = 1;
|
|
30
|
+
*/
|
|
31
|
+
profileId: string;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The attempt.
|
|
35
|
+
*
|
|
36
|
+
* @generated from field: string attempt_id = 2;
|
|
37
|
+
*/
|
|
38
|
+
attemptId: string;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The idempotency key of this action of the learner: `app` makes one for it, and sends it again
|
|
42
|
+
* with every repeat of it.
|
|
43
|
+
*
|
|
44
|
+
* @generated from field: string idempotency_key = 3;
|
|
45
|
+
*/
|
|
46
|
+
idempotencyKey: string;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The handwriting for checking: absent when the task's answer slots are bound `choice` alone.
|
|
50
|
+
*
|
|
51
|
+
* @generated from field: novatrail.api.v1.Work work = 4;
|
|
52
|
+
*/
|
|
53
|
+
work?: Work | undefined;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The options tapped, one for each answer slot bound `choice` that the learner tapped one of, in
|
|
57
|
+
* the task's order.
|
|
58
|
+
*
|
|
59
|
+
* @generated from field: repeated novatrail.api.v1.TappedChoice tapped_choices = 5;
|
|
60
|
+
*/
|
|
61
|
+
tappedChoices: TappedChoice[];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* The learner's own key and its provider: with a profile of its owner, when AI reads the work.
|
|
65
|
+
*
|
|
66
|
+
* @generated from field: novatrail.api.v1.OwnKey own_key = 6;
|
|
67
|
+
*/
|
|
68
|
+
ownKey?: OwnKey | undefined;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The offset of the device's clock from UTC, in minutes: with a request on platform AI alone.
|
|
72
|
+
*
|
|
73
|
+
* @generated from field: optional int32 clock_offset_minutes = 7;
|
|
74
|
+
*/
|
|
75
|
+
clockOffsetMinutes?: number | undefined;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Describes the message novatrail.api.v1.SubmitWorkRequest.
|
|
80
|
+
* Use `create(SubmitWorkRequestSchema)` to create a new message.
|
|
81
|
+
*/
|
|
82
|
+
export declare const SubmitWorkRequestSchema: GenMessage<SubmitWorkRequest>;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* The verdict of a submission.
|
|
86
|
+
*
|
|
87
|
+
* @generated from message novatrail.api.v1.SubmitWorkResponse
|
|
88
|
+
*/
|
|
89
|
+
export declare type SubmitWorkResponse = Message<"novatrail.api.v1.SubmitWorkResponse"> & {
|
|
90
|
+
/**
|
|
91
|
+
* Every item of the task, in the task's order, with its verdict.
|
|
92
|
+
*
|
|
93
|
+
* @generated from field: repeated novatrail.api.v1.ItemVerdict items = 1;
|
|
94
|
+
*/
|
|
95
|
+
items: ItemVerdict[];
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* What the call of AI came to, when the answer slots that AI reads got "unchecked" by it: a
|
|
99
|
+
* failure of AI, a quota or a limit, no admission, or a refusal of the own key. A slot bound
|
|
100
|
+
* `choice` still has its verdict.
|
|
101
|
+
*
|
|
102
|
+
* @generated from field: novatrail.api.v1.Outcome outcome = 2;
|
|
103
|
+
*/
|
|
104
|
+
outcome?: Outcome | undefined;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* How many wrong answers the attempt has, this submission's too: a wrong answer is a submission
|
|
108
|
+
* with an answer slot "not_yet".
|
|
109
|
+
*
|
|
110
|
+
* @generated from field: int32 wrong_answers = 3;
|
|
111
|
+
*/
|
|
112
|
+
wrongAnswers: number;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* The solved task, when every item is correct and the attempt is closed `CLOSE_REASON_CORRECT`.
|
|
116
|
+
*
|
|
117
|
+
* @generated from field: novatrail.api.v1.SolvedTask solved = 4;
|
|
118
|
+
*/
|
|
119
|
+
solved?: SolvedTask | undefined;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Describes the message novatrail.api.v1.SubmitWorkResponse.
|
|
124
|
+
* Use `create(SubmitWorkResponseSchema)` to create a new message.
|
|
125
|
+
*/
|
|
126
|
+
export declare const SubmitWorkResponseSchema: GenMessage<SubmitWorkResponse>;
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* The submission of an essay.
|
|
130
|
+
*
|
|
131
|
+
* @generated from message novatrail.api.v1.SubmitEssayRequest
|
|
132
|
+
*/
|
|
133
|
+
export declare type SubmitEssayRequest = Message<"novatrail.api.v1.SubmitEssayRequest"> & {
|
|
134
|
+
/**
|
|
135
|
+
* The profile whose attempt it is.
|
|
136
|
+
*
|
|
137
|
+
* @generated from field: string profile_id = 1;
|
|
138
|
+
*/
|
|
139
|
+
profileId: string;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* The attempt.
|
|
143
|
+
*
|
|
144
|
+
* @generated from field: string attempt_id = 2;
|
|
145
|
+
*/
|
|
146
|
+
attemptId: string;
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* The idempotency key of this action of the learner.
|
|
150
|
+
*
|
|
151
|
+
* @generated from field: string idempotency_key = 3;
|
|
152
|
+
*/
|
|
153
|
+
idempotencyKey: string;
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* The PNG of the crop of the sheet, without its `sheet_box`.
|
|
157
|
+
*
|
|
158
|
+
* @generated from field: bytes crop = 4;
|
|
159
|
+
*/
|
|
160
|
+
crop: Uint8Array;
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* The learner's own key and its provider: with a profile of its owner.
|
|
164
|
+
*
|
|
165
|
+
* @generated from field: novatrail.api.v1.OwnKey own_key = 5;
|
|
166
|
+
*/
|
|
167
|
+
ownKey?: OwnKey | undefined;
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* The offset of the device's clock from UTC, in minutes: with a request on platform AI alone.
|
|
171
|
+
*
|
|
172
|
+
* @generated from field: optional int32 clock_offset_minutes = 6;
|
|
173
|
+
*/
|
|
174
|
+
clockOffsetMinutes?: number | undefined;
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Describes the message novatrail.api.v1.SubmitEssayRequest.
|
|
179
|
+
* Use `create(SubmitEssayRequestSchema)` to create a new message.
|
|
180
|
+
*/
|
|
181
|
+
export declare const SubmitEssayRequestSchema: GenMessage<SubmitEssayRequest>;
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* How a submission of an essay ended (R87). No verdict: an item with a rubric has none.
|
|
185
|
+
*
|
|
186
|
+
* @generated from message novatrail.api.v1.SubmitEssayResponse
|
|
187
|
+
*/
|
|
188
|
+
export declare type SubmitEssayResponse = Message<"novatrail.api.v1.SubmitEssayResponse"> & {
|
|
189
|
+
/**
|
|
190
|
+
* How the submission ended.
|
|
191
|
+
*
|
|
192
|
+
* @generated from field: novatrail.api.v1.SubmissionEnd end = 1;
|
|
193
|
+
*/
|
|
194
|
+
end: SubmissionEnd;
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* The text read, as it is written, when the essay was read: beside the feedback, and beside
|
|
198
|
+
* "unchecked" when the assessment gave none.
|
|
199
|
+
*
|
|
200
|
+
* @generated from field: optional string text = 2;
|
|
201
|
+
*/
|
|
202
|
+
text?: string | undefined;
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Why the essay could not be read, as a verdict's reason is written: "blank" or "illegible",
|
|
206
|
+
* beside `SUBMISSION_END_UNREADABLE` alone, and empty beside the others. The learner writes the
|
|
207
|
+
* sheet again.
|
|
208
|
+
*
|
|
209
|
+
* @generated from field: string reason = 3;
|
|
210
|
+
*/
|
|
211
|
+
reason: string;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* The words of the feedback, beside `SUBMISSION_END_FEEDBACK`: absent when they failed the leak
|
|
215
|
+
* check or the rule of feedback, and then `app` shows its own phrase, "no feedback this time".
|
|
216
|
+
*
|
|
217
|
+
* @generated from field: optional string feedback = 4;
|
|
218
|
+
*/
|
|
219
|
+
feedback?: string | undefined;
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* What the call of AI came to, beside `SUBMISSION_END_UNCHECKED`: absent when the assessment
|
|
223
|
+
* assessed no criterion.
|
|
224
|
+
*
|
|
225
|
+
* @generated from field: novatrail.api.v1.Outcome outcome = 5;
|
|
226
|
+
*/
|
|
227
|
+
outcome?: Outcome | undefined;
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Why the attempt was closed while this submission went: `CLOSE_REASON_UNSPECIFIED` when it is
|
|
231
|
+
* still open. The feedback came all the same, from the memory of the request.
|
|
232
|
+
*
|
|
233
|
+
* @generated from field: novatrail.api.v1.CloseReason closed = 6;
|
|
234
|
+
*/
|
|
235
|
+
closed: CloseReason;
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* The answer of a repeat with the same idempotency key: it holds neither the text read nor the
|
|
239
|
+
* words of the feedback, which are nowhere on the server.
|
|
240
|
+
*
|
|
241
|
+
* @generated from field: bool repeated = 7;
|
|
242
|
+
*/
|
|
243
|
+
repeated: boolean;
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Describes the message novatrail.api.v1.SubmitEssayResponse.
|
|
248
|
+
* Use `create(SubmitEssayResponseSchema)` to create a new message.
|
|
249
|
+
*/
|
|
250
|
+
export declare const SubmitEssayResponseSchema: GenMessage<SubmitEssayResponse>;
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* "Done" on a task with a rubric.
|
|
254
|
+
*
|
|
255
|
+
* @generated from message novatrail.api.v1.DoneRequest
|
|
256
|
+
*/
|
|
257
|
+
export declare type DoneRequest = Message<"novatrail.api.v1.DoneRequest"> & {
|
|
258
|
+
/**
|
|
259
|
+
* The profile whose attempt it is.
|
|
260
|
+
*
|
|
261
|
+
* @generated from field: string profile_id = 1;
|
|
262
|
+
*/
|
|
263
|
+
profileId: string;
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* The attempt.
|
|
267
|
+
*
|
|
268
|
+
* @generated from field: string attempt_id = 2;
|
|
269
|
+
*/
|
|
270
|
+
attemptId: string;
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Describes the message novatrail.api.v1.DoneRequest.
|
|
275
|
+
* Use `create(DoneRequestSchema)` to create a new message.
|
|
276
|
+
*/
|
|
277
|
+
export declare const DoneRequestSchema: GenMessage<DoneRequest>;
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* What "Done" gives: the task solved.
|
|
281
|
+
*
|
|
282
|
+
* @generated from message novatrail.api.v1.DoneResponse
|
|
283
|
+
*/
|
|
284
|
+
export declare type DoneResponse = Message<"novatrail.api.v1.DoneResponse"> & {
|
|
285
|
+
/**
|
|
286
|
+
* The criteria of the rubric and the solution, if the task has one.
|
|
287
|
+
*
|
|
288
|
+
* @generated from field: novatrail.api.v1.SolvedTask solved = 1;
|
|
289
|
+
*/
|
|
290
|
+
solved?: SolvedTask | undefined;
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Describes the message novatrail.api.v1.DoneResponse.
|
|
295
|
+
* Use `create(DoneResponseSchema)` to create a new message.
|
|
296
|
+
*/
|
|
297
|
+
export declare const DoneResponseSchema: GenMessage<DoneResponse>;
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* A request for the words of a rung.
|
|
301
|
+
*
|
|
302
|
+
* @generated from message novatrail.api.v1.GetRungWordsRequest
|
|
303
|
+
*/
|
|
304
|
+
export declare type GetRungWordsRequest = Message<"novatrail.api.v1.GetRungWordsRequest"> & {
|
|
305
|
+
/**
|
|
306
|
+
* The profile whose attempt it is.
|
|
307
|
+
*
|
|
308
|
+
* @generated from field: string profile_id = 1;
|
|
309
|
+
*/
|
|
310
|
+
profileId: string;
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* The attempt.
|
|
314
|
+
*
|
|
315
|
+
* @generated from field: string attempt_id = 2;
|
|
316
|
+
*/
|
|
317
|
+
attemptId: string;
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* The idempotency key of this request.
|
|
321
|
+
*
|
|
322
|
+
* @generated from field: string idempotency_key = 3;
|
|
323
|
+
*/
|
|
324
|
+
idempotencyKey: string;
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* How many wrong answers the attempt had when the submission came that the words are asked for:
|
|
328
|
+
* the `wrong_answers` of its answer.
|
|
329
|
+
*
|
|
330
|
+
* @generated from field: optional int32 wrong_answers = 4;
|
|
331
|
+
*/
|
|
332
|
+
wrongAnswers?: number | undefined;
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* The work of that submission again: absent when the task's answer slots are bound `choice`
|
|
336
|
+
* alone.
|
|
337
|
+
*
|
|
338
|
+
* @generated from field: novatrail.api.v1.Work work = 5;
|
|
339
|
+
*/
|
|
340
|
+
work?: Work | undefined;
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* The learner's own key and its provider: with a profile of its owner.
|
|
344
|
+
*
|
|
345
|
+
* @generated from field: novatrail.api.v1.OwnKey own_key = 6;
|
|
346
|
+
*/
|
|
347
|
+
ownKey?: OwnKey | undefined;
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* The offset of the device's clock from UTC, in minutes: with a request on platform AI alone.
|
|
351
|
+
*
|
|
352
|
+
* @generated from field: optional int32 clock_offset_minutes = 7;
|
|
353
|
+
*/
|
|
354
|
+
clockOffsetMinutes?: number | undefined;
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Describes the message novatrail.api.v1.GetRungWordsRequest.
|
|
359
|
+
* Use `create(GetRungWordsRequestSchema)` to create a new message.
|
|
360
|
+
*/
|
|
361
|
+
export declare const GetRungWordsRequestSchema: GenMessage<GetRungWordsRequest>;
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* The words of a rung.
|
|
365
|
+
*
|
|
366
|
+
* @generated from message novatrail.api.v1.GetRungWordsResponse
|
|
367
|
+
*/
|
|
368
|
+
export declare type GetRungWordsResponse = Message<"novatrail.api.v1.GetRungWordsResponse"> & {
|
|
369
|
+
/**
|
|
370
|
+
* The rung, from 1 to 3.
|
|
371
|
+
*
|
|
372
|
+
* @generated from field: int32 rung = 1;
|
|
373
|
+
*/
|
|
374
|
+
rung: number;
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* The tutor's words, whole, once they passed the leak check and the form check, or the rung's
|
|
378
|
+
* fallback text.
|
|
379
|
+
*
|
|
380
|
+
* @generated from field: string words = 2;
|
|
381
|
+
*/
|
|
382
|
+
words: string;
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* The tutor's marks that the words come with, on the tutor's layer of the work sent.
|
|
386
|
+
*
|
|
387
|
+
* @generated from field: repeated novatrail.api.v1.Mark marks = 3;
|
|
388
|
+
*/
|
|
389
|
+
marks: Mark[];
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Why the words are the fallback text, when a call of AI came to an outcome. Absent when the
|
|
393
|
+
* model's words came, or when they failed a check.
|
|
394
|
+
*
|
|
395
|
+
* @generated from field: novatrail.api.v1.Outcome outcome = 4;
|
|
396
|
+
*/
|
|
397
|
+
outcome?: Outcome | undefined;
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* The answer of a repeat, or of a request for the same wrong answer: the words the attempt keeps,
|
|
401
|
+
* without marks, which the server does not keep.
|
|
402
|
+
*
|
|
403
|
+
* @generated from field: bool repeated = 5;
|
|
404
|
+
*/
|
|
405
|
+
repeated: boolean;
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Describes the message novatrail.api.v1.GetRungWordsResponse.
|
|
410
|
+
* Use `create(GetRungWordsResponseSchema)` to create a new message.
|
|
411
|
+
*/
|
|
412
|
+
export declare const GetRungWordsResponseSchema: GenMessage<GetRungWordsResponse>;
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* A request for the words after a correct answer.
|
|
416
|
+
*
|
|
417
|
+
* @generated from message novatrail.api.v1.GetCorrectAnswerWordsRequest
|
|
418
|
+
*/
|
|
419
|
+
export declare type GetCorrectAnswerWordsRequest = Message<"novatrail.api.v1.GetCorrectAnswerWordsRequest"> & {
|
|
420
|
+
/**
|
|
421
|
+
* The profile whose attempt it is.
|
|
422
|
+
*
|
|
423
|
+
* @generated from field: string profile_id = 1;
|
|
424
|
+
*/
|
|
425
|
+
profileId: string;
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* The attempt, which the correct answer has just closed.
|
|
429
|
+
*
|
|
430
|
+
* @generated from field: string attempt_id = 2;
|
|
431
|
+
*/
|
|
432
|
+
attemptId: string;
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* The idempotency key of this request.
|
|
436
|
+
*
|
|
437
|
+
* @generated from field: string idempotency_key = 3;
|
|
438
|
+
*/
|
|
439
|
+
idempotencyKey: string;
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* The work of the correct submission again: absent when the task's answer slots are bound
|
|
443
|
+
* `choice` alone.
|
|
444
|
+
*
|
|
445
|
+
* @generated from field: novatrail.api.v1.Work work = 4;
|
|
446
|
+
*/
|
|
447
|
+
work?: Work | undefined;
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* The learner's own key and its provider: with a profile of its owner.
|
|
451
|
+
*
|
|
452
|
+
* @generated from field: novatrail.api.v1.OwnKey own_key = 5;
|
|
453
|
+
*/
|
|
454
|
+
ownKey?: OwnKey | undefined;
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* The offset of the device's clock from UTC, in minutes: with a request on platform AI alone.
|
|
458
|
+
*
|
|
459
|
+
* @generated from field: optional int32 clock_offset_minutes = 6;
|
|
460
|
+
*/
|
|
461
|
+
clockOffsetMinutes?: number | undefined;
|
|
462
|
+
};
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* Describes the message novatrail.api.v1.GetCorrectAnswerWordsRequest.
|
|
466
|
+
* Use `create(GetCorrectAnswerWordsRequestSchema)` to create a new message.
|
|
467
|
+
*/
|
|
468
|
+
export declare const GetCorrectAnswerWordsRequestSchema: GenMessage<GetCorrectAnswerWordsRequest>;
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* The words after a correct answer.
|
|
472
|
+
*
|
|
473
|
+
* @generated from message novatrail.api.v1.GetCorrectAnswerWordsResponse
|
|
474
|
+
*/
|
|
475
|
+
export declare type GetCorrectAnswerWordsResponse = Message<"novatrail.api.v1.GetCorrectAnswerWordsResponse"> & {
|
|
476
|
+
/**
|
|
477
|
+
* The tutor's words, whole, once they passed the leak check and the form check: absent when a
|
|
478
|
+
* call of AI gave none, or they failed a check.
|
|
479
|
+
*
|
|
480
|
+
* @generated from field: optional string words = 1;
|
|
481
|
+
*/
|
|
482
|
+
words?: string | undefined;
|
|
483
|
+
|
|
484
|
+
/**
|
|
485
|
+
* What the call of AI came to, when it gave no words.
|
|
486
|
+
*
|
|
487
|
+
* @generated from field: novatrail.api.v1.Outcome outcome = 2;
|
|
488
|
+
*/
|
|
489
|
+
outcome?: Outcome | undefined;
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* The answer of a repeat with the same idempotency key, which holds no words: the server keeps
|
|
493
|
+
* none.
|
|
494
|
+
*
|
|
495
|
+
* @generated from field: bool repeated = 3;
|
|
496
|
+
*/
|
|
497
|
+
repeated: boolean;
|
|
498
|
+
};
|
|
499
|
+
|
|
500
|
+
/**
|
|
501
|
+
* Describes the message novatrail.api.v1.GetCorrectAnswerWordsResponse.
|
|
502
|
+
* Use `create(GetCorrectAnswerWordsResponseSchema)` to create a new message.
|
|
503
|
+
*/
|
|
504
|
+
export declare const GetCorrectAnswerWordsResponseSchema: GenMessage<GetCorrectAnswerWordsResponse>;
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* "Explain differently".
|
|
508
|
+
*
|
|
509
|
+
* @generated from message novatrail.api.v1.ExplainDifferentlyRequest
|
|
510
|
+
*/
|
|
511
|
+
export declare type ExplainDifferentlyRequest = Message<"novatrail.api.v1.ExplainDifferentlyRequest"> & {
|
|
512
|
+
/**
|
|
513
|
+
* The profile whose attempt it is.
|
|
514
|
+
*
|
|
515
|
+
* @generated from field: string profile_id = 1;
|
|
516
|
+
*/
|
|
517
|
+
profileId: string;
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* The attempt.
|
|
521
|
+
*
|
|
522
|
+
* @generated from field: string attempt_id = 2;
|
|
523
|
+
*/
|
|
524
|
+
attemptId: string;
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* The idempotency key of this action of the learner.
|
|
528
|
+
*
|
|
529
|
+
* @generated from field: string idempotency_key = 3;
|
|
530
|
+
*/
|
|
531
|
+
idempotencyKey: string;
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* The learner's own key and its provider: with a profile of its owner.
|
|
535
|
+
*
|
|
536
|
+
* @generated from field: novatrail.api.v1.OwnKey own_key = 4;
|
|
537
|
+
*/
|
|
538
|
+
ownKey?: OwnKey | undefined;
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* The offset of the device's clock from UTC, in minutes: with a request on platform AI alone.
|
|
542
|
+
*
|
|
543
|
+
* @generated from field: optional int32 clock_offset_minutes = 5;
|
|
544
|
+
*/
|
|
545
|
+
clockOffsetMinutes?: number | undefined;
|
|
546
|
+
|
|
547
|
+
/**
|
|
548
|
+
* How many wrong answers the attempt had when the words that the learner reads came: the
|
|
549
|
+
* `wrong_answers` of the submission whose rung they are.
|
|
550
|
+
*
|
|
551
|
+
* @generated from field: optional int32 wrong_answers = 6;
|
|
552
|
+
*/
|
|
553
|
+
wrongAnswers?: number | undefined;
|
|
554
|
+
};
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* Describes the message novatrail.api.v1.ExplainDifferentlyRequest.
|
|
558
|
+
* Use `create(ExplainDifferentlyRequestSchema)` to create a new message.
|
|
559
|
+
*/
|
|
560
|
+
export declare const ExplainDifferentlyRequestSchema: GenMessage<ExplainDifferentlyRequest>;
|
|
561
|
+
|
|
562
|
+
/**
|
|
563
|
+
* The words of the same rung, in other words.
|
|
564
|
+
*
|
|
565
|
+
* @generated from message novatrail.api.v1.ExplainDifferentlyResponse
|
|
566
|
+
*/
|
|
567
|
+
export declare type ExplainDifferentlyResponse = Message<"novatrail.api.v1.ExplainDifferentlyResponse"> & {
|
|
568
|
+
/**
|
|
569
|
+
* The tutor's words, whole, once they passed the leak check and the form check, or the rung's
|
|
570
|
+
* fallback text.
|
|
571
|
+
*
|
|
572
|
+
* @generated from field: string words = 1;
|
|
573
|
+
*/
|
|
574
|
+
words: string;
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* What the call came to, when the words are not the model's: a failure of AI, a refusal of the own
|
|
578
|
+
* key, or `CAUSE_NO_OTHER_WORDS` when they are the words the learner reads already.
|
|
579
|
+
*
|
|
580
|
+
* @generated from field: novatrail.api.v1.Outcome outcome = 2;
|
|
581
|
+
*/
|
|
582
|
+
outcome?: Outcome | undefined;
|
|
583
|
+
};
|
|
584
|
+
|
|
585
|
+
/**
|
|
586
|
+
* Describes the message novatrail.api.v1.ExplainDifferentlyResponse.
|
|
587
|
+
* Use `create(ExplainDifferentlyResponseSchema)` to create a new message.
|
|
588
|
+
*/
|
|
589
|
+
export declare const ExplainDifferentlyResponseSchema: GenMessage<ExplainDifferentlyResponse>;
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* "Hint".
|
|
593
|
+
*
|
|
594
|
+
* @generated from message novatrail.api.v1.GetHintRequest
|
|
595
|
+
*/
|
|
596
|
+
export declare type GetHintRequest = Message<"novatrail.api.v1.GetHintRequest"> & {
|
|
597
|
+
/**
|
|
598
|
+
* The profile whose attempt it is.
|
|
599
|
+
*
|
|
600
|
+
* @generated from field: string profile_id = 1;
|
|
601
|
+
*/
|
|
602
|
+
profileId: string;
|
|
603
|
+
|
|
604
|
+
/**
|
|
605
|
+
* The attempt.
|
|
606
|
+
*
|
|
607
|
+
* @generated from field: string attempt_id = 2;
|
|
608
|
+
*/
|
|
609
|
+
attemptId: string;
|
|
610
|
+
};
|
|
611
|
+
|
|
612
|
+
/**
|
|
613
|
+
* Describes the message novatrail.api.v1.GetHintRequest.
|
|
614
|
+
* Use `create(GetHintRequestSchema)` to create a new message.
|
|
615
|
+
*/
|
|
616
|
+
export declare const GetHintRequestSchema: GenMessage<GetHintRequest>;
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* What a hint asked for gives. "What is known and what to find" `app` shows from the open view of
|
|
620
|
+
* the task: they are open, and the server records nothing of them.
|
|
621
|
+
*
|
|
622
|
+
* @generated from message novatrail.api.v1.GetHintResponse
|
|
623
|
+
*/
|
|
624
|
+
export declare type GetHintResponse = Message<"novatrail.api.v1.GetHintResponse"> & {
|
|
625
|
+
/**
|
|
626
|
+
* Before the first wrong answer, and on a task with a rubric, the task's techniques; after it, the
|
|
627
|
+
* current rung's words.
|
|
628
|
+
*
|
|
629
|
+
* @generated from oneof novatrail.api.v1.GetHintResponse.hint
|
|
630
|
+
*/
|
|
631
|
+
hint: {
|
|
632
|
+
/**
|
|
633
|
+
* The task's techniques.
|
|
634
|
+
*
|
|
635
|
+
* @generated from field: novatrail.api.v1.Techniques techniques = 1;
|
|
636
|
+
*/
|
|
637
|
+
value: Techniques;
|
|
638
|
+
case: "techniques";
|
|
639
|
+
} | {
|
|
640
|
+
/**
|
|
641
|
+
* The current rung's words.
|
|
642
|
+
*
|
|
643
|
+
* @generated from field: novatrail.api.v1.RungHint rung = 2;
|
|
644
|
+
*/
|
|
645
|
+
value: RungHint;
|
|
646
|
+
case: "rung";
|
|
647
|
+
} | { case: undefined; value?: undefined };
|
|
648
|
+
};
|
|
649
|
+
|
|
650
|
+
/**
|
|
651
|
+
* Describes the message novatrail.api.v1.GetHintResponse.
|
|
652
|
+
* Use `create(GetHintResponseSchema)` to create a new message.
|
|
653
|
+
*/
|
|
654
|
+
export declare const GetHintResponseSchema: GenMessage<GetHintResponse>;
|
|
655
|
+
|
|
656
|
+
/**
|
|
657
|
+
* The techniques of a task, which the server records as given at a step or on request.
|
|
658
|
+
*
|
|
659
|
+
* @generated from message novatrail.api.v1.Techniques
|
|
660
|
+
*/
|
|
661
|
+
export declare type Techniques = Message<"novatrail.api.v1.Techniques"> & {
|
|
662
|
+
/**
|
|
663
|
+
* The IDs of the techniques, local IDs of the module's technique catalog: empty when the task
|
|
664
|
+
* names none, which is the answer that there is nothing to hint.
|
|
665
|
+
*
|
|
666
|
+
* @generated from field: repeated string technique_ids = 1;
|
|
667
|
+
*/
|
|
668
|
+
techniqueIds: string[];
|
|
669
|
+
};
|
|
670
|
+
|
|
671
|
+
/**
|
|
672
|
+
* Describes the message novatrail.api.v1.Techniques.
|
|
673
|
+
* Use `create(TechniquesSchema)` to create a new message.
|
|
674
|
+
*/
|
|
675
|
+
export declare const TechniquesSchema: GenMessage<Techniques>;
|
|
676
|
+
|
|
677
|
+
/**
|
|
678
|
+
* A rung's words that a hint asked for gives again, with no AI.
|
|
679
|
+
*
|
|
680
|
+
* @generated from message novatrail.api.v1.RungHint
|
|
681
|
+
*/
|
|
682
|
+
export declare type RungHint = Message<"novatrail.api.v1.RungHint"> & {
|
|
683
|
+
/**
|
|
684
|
+
* The rung, from 1 to 3.
|
|
685
|
+
*
|
|
686
|
+
* @generated from field: int32 rung = 1;
|
|
687
|
+
*/
|
|
688
|
+
rung: number;
|
|
689
|
+
|
|
690
|
+
/**
|
|
691
|
+
* The words the attempt keeps for the rung, or the rung's fallback text.
|
|
692
|
+
*
|
|
693
|
+
* @generated from field: string words = 2;
|
|
694
|
+
*/
|
|
695
|
+
words: string;
|
|
696
|
+
};
|
|
697
|
+
|
|
698
|
+
/**
|
|
699
|
+
* Describes the message novatrail.api.v1.RungHint.
|
|
700
|
+
* Use `create(RungHintSchema)` to create a new message.
|
|
701
|
+
*/
|
|
702
|
+
export declare const RungHintSchema: GenMessage<RungHint>;
|
|
703
|
+
|
|
704
|
+
/**
|
|
705
|
+
* The beginning of a solving step.
|
|
706
|
+
*
|
|
707
|
+
* @generated from message novatrail.api.v1.BeginStepRequest
|
|
708
|
+
*/
|
|
709
|
+
export declare type BeginStepRequest = Message<"novatrail.api.v1.BeginStepRequest"> & {
|
|
710
|
+
/**
|
|
711
|
+
* The profile whose attempt it is.
|
|
712
|
+
*
|
|
713
|
+
* @generated from field: string profile_id = 1;
|
|
714
|
+
*/
|
|
715
|
+
profileId: string;
|
|
716
|
+
|
|
717
|
+
/**
|
|
718
|
+
* The attempt.
|
|
719
|
+
*
|
|
720
|
+
* @generated from field: string attempt_id = 2;
|
|
721
|
+
*/
|
|
722
|
+
attemptId: string;
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* The step's place among the task's solving steps, from 1.
|
|
726
|
+
*
|
|
727
|
+
* @generated from field: int32 step = 3;
|
|
728
|
+
*/
|
|
729
|
+
step: number;
|
|
730
|
+
};
|
|
731
|
+
|
|
732
|
+
/**
|
|
733
|
+
* Describes the message novatrail.api.v1.BeginStepRequest.
|
|
734
|
+
* Use `create(BeginStepRequestSchema)` to create a new message.
|
|
735
|
+
*/
|
|
736
|
+
export declare const BeginStepRequestSchema: GenMessage<BeginStepRequest>;
|
|
737
|
+
|
|
738
|
+
/**
|
|
739
|
+
* What the beginning of a step gives.
|
|
740
|
+
*
|
|
741
|
+
* @generated from message novatrail.api.v1.BeginStepResponse
|
|
742
|
+
*/
|
|
743
|
+
export declare type BeginStepResponse = Message<"novatrail.api.v1.BeginStepResponse"> & {
|
|
744
|
+
/**
|
|
745
|
+
* The task's techniques.
|
|
746
|
+
*
|
|
747
|
+
* @generated from field: novatrail.api.v1.Techniques techniques = 1;
|
|
748
|
+
*/
|
|
749
|
+
techniques?: Techniques | undefined;
|
|
750
|
+
};
|
|
751
|
+
|
|
752
|
+
/**
|
|
753
|
+
* Describes the message novatrail.api.v1.BeginStepResponse.
|
|
754
|
+
* Use `create(BeginStepResponseSchema)` to create a new message.
|
|
755
|
+
*/
|
|
756
|
+
export declare const BeginStepResponseSchema: GenMessage<BeginStepResponse>;
|
|
757
|
+
|
|
758
|
+
/**
|
|
759
|
+
* A request to show the solution.
|
|
760
|
+
*
|
|
761
|
+
* @generated from message novatrail.api.v1.ShowSolutionRequest
|
|
762
|
+
*/
|
|
763
|
+
export declare type ShowSolutionRequest = Message<"novatrail.api.v1.ShowSolutionRequest"> & {
|
|
764
|
+
/**
|
|
765
|
+
* The profile whose attempt it is.
|
|
766
|
+
*
|
|
767
|
+
* @generated from field: string profile_id = 1;
|
|
768
|
+
*/
|
|
769
|
+
profileId: string;
|
|
770
|
+
|
|
771
|
+
/**
|
|
772
|
+
* The attempt.
|
|
773
|
+
*
|
|
774
|
+
* @generated from field: string attempt_id = 2;
|
|
775
|
+
*/
|
|
776
|
+
attemptId: string;
|
|
777
|
+
|
|
778
|
+
/**
|
|
779
|
+
* The idempotency key of this action.
|
|
780
|
+
*
|
|
781
|
+
* @generated from field: string idempotency_key = 3;
|
|
782
|
+
*/
|
|
783
|
+
idempotencyKey: string;
|
|
784
|
+
|
|
785
|
+
/**
|
|
786
|
+
* Whose action it is.
|
|
787
|
+
*
|
|
788
|
+
* @generated from field: novatrail.api.v1.Action action = 4;
|
|
789
|
+
*/
|
|
790
|
+
action: Action;
|
|
791
|
+
};
|
|
792
|
+
|
|
793
|
+
/**
|
|
794
|
+
* Describes the message novatrail.api.v1.ShowSolutionRequest.
|
|
795
|
+
* Use `create(ShowSolutionRequestSchema)` to create a new message.
|
|
796
|
+
*/
|
|
797
|
+
export declare const ShowSolutionRequestSchema: GenMessage<ShowSolutionRequest>;
|
|
798
|
+
|
|
799
|
+
/**
|
|
800
|
+
* The solution shown.
|
|
801
|
+
*
|
|
802
|
+
* @generated from message novatrail.api.v1.ShowSolutionResponse
|
|
803
|
+
*/
|
|
804
|
+
export declare type ShowSolutionResponse = Message<"novatrail.api.v1.ShowSolutionResponse"> & {
|
|
805
|
+
/**
|
|
806
|
+
* The solved task.
|
|
807
|
+
*
|
|
808
|
+
* @generated from field: novatrail.api.v1.SolvedTask solved = 1;
|
|
809
|
+
*/
|
|
810
|
+
solved?: SolvedTask | undefined;
|
|
811
|
+
};
|
|
812
|
+
|
|
813
|
+
/**
|
|
814
|
+
* Describes the message novatrail.api.v1.ShowSolutionResponse.
|
|
815
|
+
* Use `create(ShowSolutionResponseSchema)` to create a new message.
|
|
816
|
+
*/
|
|
817
|
+
export declare const ShowSolutionResponseSchema: GenMessage<ShowSolutionResponse>;
|
|
818
|
+
|
|
819
|
+
/**
|
|
820
|
+
* The work for checking: a sheet's crop, or the crops of a workbook's filled boxes. Nothing of the
|
|
821
|
+
* writing history, of the context of the submission, of the groups of strokes or of the text of an
|
|
822
|
+
* item goes with it.
|
|
823
|
+
*
|
|
824
|
+
* @generated from message novatrail.api.v1.Work
|
|
825
|
+
*/
|
|
826
|
+
export declare type Work = Message<"novatrail.api.v1.Work"> & {
|
|
827
|
+
/**
|
|
828
|
+
* Where the work was written.
|
|
829
|
+
*
|
|
830
|
+
* @generated from oneof novatrail.api.v1.Work.surface
|
|
831
|
+
*/
|
|
832
|
+
surface: {
|
|
833
|
+
/**
|
|
834
|
+
* A handwriting sheet.
|
|
835
|
+
*
|
|
836
|
+
* @generated from field: novatrail.api.v1.SheetWork sheet = 1;
|
|
837
|
+
*/
|
|
838
|
+
value: SheetWork;
|
|
839
|
+
case: "sheet";
|
|
840
|
+
} | {
|
|
841
|
+
/**
|
|
842
|
+
* A page of a workbook.
|
|
843
|
+
*
|
|
844
|
+
* @generated from field: novatrail.api.v1.WorkbookWork workbook = 2;
|
|
845
|
+
*/
|
|
846
|
+
value: WorkbookWork;
|
|
847
|
+
case: "workbook";
|
|
848
|
+
} | { case: undefined; value?: undefined };
|
|
849
|
+
};
|
|
850
|
+
|
|
851
|
+
/**
|
|
852
|
+
* Describes the message novatrail.api.v1.Work.
|
|
853
|
+
* Use `create(WorkSchema)` to create a new message.
|
|
854
|
+
*/
|
|
855
|
+
export declare const WorkSchema: GenMessage<Work>;
|
|
856
|
+
|
|
857
|
+
/**
|
|
858
|
+
* The work of a handwriting sheet.
|
|
859
|
+
*
|
|
860
|
+
* @generated from message novatrail.api.v1.SheetWork
|
|
861
|
+
*/
|
|
862
|
+
export declare type SheetWork = Message<"novatrail.api.v1.SheetWork"> & {
|
|
863
|
+
/**
|
|
864
|
+
* The PNG of the crop of the visible strokes, without its `sheet_box`.
|
|
865
|
+
*
|
|
866
|
+
* @generated from field: bytes crop = 1;
|
|
867
|
+
*/
|
|
868
|
+
crop: Uint8Array;
|
|
869
|
+
};
|
|
870
|
+
|
|
871
|
+
/**
|
|
872
|
+
* Describes the message novatrail.api.v1.SheetWork.
|
|
873
|
+
* Use `create(SheetWorkSchema)` to create a new message.
|
|
874
|
+
*/
|
|
875
|
+
export declare const SheetWorkSchema: GenMessage<SheetWork>;
|
|
876
|
+
|
|
877
|
+
/**
|
|
878
|
+
* The work of a page of a workbook.
|
|
879
|
+
*
|
|
880
|
+
* @generated from message novatrail.api.v1.WorkbookWork
|
|
881
|
+
*/
|
|
882
|
+
export declare type WorkbookWork = Message<"novatrail.api.v1.WorkbookWork"> & {
|
|
883
|
+
/**
|
|
884
|
+
* Each filled box, in the task's order. A box left empty sends nothing, and the draft, the
|
|
885
|
+
* writing outside the boxes, goes nowhere.
|
|
886
|
+
*
|
|
887
|
+
* @generated from field: repeated novatrail.api.v1.BoxCrop boxes = 1;
|
|
888
|
+
*/
|
|
889
|
+
boxes: BoxCrop[];
|
|
890
|
+
};
|
|
891
|
+
|
|
892
|
+
/**
|
|
893
|
+
* Describes the message novatrail.api.v1.WorkbookWork.
|
|
894
|
+
* Use `create(WorkbookWorkSchema)` to create a new message.
|
|
895
|
+
*/
|
|
896
|
+
export declare const WorkbookWorkSchema: GenMessage<WorkbookWork>;
|
|
897
|
+
|
|
898
|
+
/**
|
|
899
|
+
* The crop of one filled box.
|
|
900
|
+
*
|
|
901
|
+
* @generated from message novatrail.api.v1.BoxCrop
|
|
902
|
+
*/
|
|
903
|
+
export declare type BoxCrop = Message<"novatrail.api.v1.BoxCrop"> & {
|
|
904
|
+
/**
|
|
905
|
+
* The box, by its place.
|
|
906
|
+
*
|
|
907
|
+
* @generated from field: novatrail.observation.v1.AnswerSlotPlace answer_slot = 1;
|
|
908
|
+
*/
|
|
909
|
+
answerSlot?: AnswerSlotPlace | undefined;
|
|
910
|
+
|
|
911
|
+
/**
|
|
912
|
+
* The PNG of the crop of the box's strokes.
|
|
913
|
+
*
|
|
914
|
+
* @generated from field: bytes crop = 2;
|
|
915
|
+
*/
|
|
916
|
+
crop: Uint8Array;
|
|
917
|
+
};
|
|
918
|
+
|
|
919
|
+
/**
|
|
920
|
+
* Describes the message novatrail.api.v1.BoxCrop.
|
|
921
|
+
* Use `create(BoxCropSchema)` to create a new message.
|
|
922
|
+
*/
|
|
923
|
+
export declare const BoxCropSchema: GenMessage<BoxCrop>;
|
|
924
|
+
|
|
925
|
+
/**
|
|
926
|
+
* An option the learner tapped.
|
|
927
|
+
*
|
|
928
|
+
* @generated from message novatrail.api.v1.TappedChoice
|
|
929
|
+
*/
|
|
930
|
+
export declare type TappedChoice = Message<"novatrail.api.v1.TappedChoice"> & {
|
|
931
|
+
/**
|
|
932
|
+
* The answer slot bound `choice`.
|
|
933
|
+
*
|
|
934
|
+
* @generated from field: novatrail.observation.v1.AnswerSlotPlace answer_slot = 1;
|
|
935
|
+
*/
|
|
936
|
+
answerSlot?: AnswerSlotPlace | undefined;
|
|
937
|
+
|
|
938
|
+
/**
|
|
939
|
+
* The text of the option tapped, as the open view of the task writes it.
|
|
940
|
+
*
|
|
941
|
+
* @generated from field: string value = 2;
|
|
942
|
+
*/
|
|
943
|
+
value: string;
|
|
944
|
+
};
|
|
945
|
+
|
|
946
|
+
/**
|
|
947
|
+
* Describes the message novatrail.api.v1.TappedChoice.
|
|
948
|
+
* Use `create(TappedChoiceSchema)` to create a new message.
|
|
949
|
+
*/
|
|
950
|
+
export declare const TappedChoiceSchema: GenMessage<TappedChoice>;
|
|
951
|
+
|
|
952
|
+
/**
|
|
953
|
+
* The learner's own key at its provider, which the server holds in the memory of the request alone.
|
|
954
|
+
*
|
|
955
|
+
* @generated from message novatrail.api.v1.OwnKey
|
|
956
|
+
*/
|
|
957
|
+
export declare type OwnKey = Message<"novatrail.api.v1.OwnKey"> & {
|
|
958
|
+
/**
|
|
959
|
+
* The provider, by its code in the admission table: "openai", "anthropic".
|
|
960
|
+
*
|
|
961
|
+
* @generated from field: string provider = 1;
|
|
962
|
+
*/
|
|
963
|
+
provider: string;
|
|
964
|
+
|
|
965
|
+
/**
|
|
966
|
+
* The key, as the provider gave it.
|
|
967
|
+
*
|
|
968
|
+
* @generated from field: string key = 2;
|
|
969
|
+
*/
|
|
970
|
+
key: string;
|
|
971
|
+
};
|
|
972
|
+
|
|
973
|
+
/**
|
|
974
|
+
* Describes the message novatrail.api.v1.OwnKey.
|
|
975
|
+
* Use `create(OwnKeySchema)` to create a new message.
|
|
976
|
+
*/
|
|
977
|
+
export declare const OwnKeySchema: GenMessage<OwnKey>;
|
|
978
|
+
|
|
979
|
+
/**
|
|
980
|
+
* The verdict of an item.
|
|
981
|
+
*
|
|
982
|
+
* @generated from message novatrail.api.v1.ItemVerdict
|
|
983
|
+
*/
|
|
984
|
+
export declare type ItemVerdict = Message<"novatrail.api.v1.ItemVerdict"> & {
|
|
985
|
+
/**
|
|
986
|
+
* The item's verdict, made of its answer slots': "correct", "not_yet", "unreadable" or
|
|
987
|
+
* "unchecked".
|
|
988
|
+
*
|
|
989
|
+
* @generated from field: string verdict = 1;
|
|
990
|
+
*/
|
|
991
|
+
verdict: string;
|
|
992
|
+
|
|
993
|
+
/**
|
|
994
|
+
* Every answer slot of the item, in order.
|
|
995
|
+
*
|
|
996
|
+
* @generated from field: repeated novatrail.api.v1.AnswerSlotVerdict answer_slots = 2;
|
|
997
|
+
*/
|
|
998
|
+
answerSlots: AnswerSlotVerdict[];
|
|
999
|
+
};
|
|
1000
|
+
|
|
1001
|
+
/**
|
|
1002
|
+
* Describes the message novatrail.api.v1.ItemVerdict.
|
|
1003
|
+
* Use `create(ItemVerdictSchema)` to create a new message.
|
|
1004
|
+
*/
|
|
1005
|
+
export declare const ItemVerdictSchema: GenMessage<ItemVerdict>;
|
|
1006
|
+
|
|
1007
|
+
/**
|
|
1008
|
+
* The verdict of an answer slot, and what was read in it. The trap that a value shows is not here:
|
|
1009
|
+
* the tutor's words alone get it, in `api`.
|
|
1010
|
+
*
|
|
1011
|
+
* @generated from message novatrail.api.v1.AnswerSlotVerdict
|
|
1012
|
+
*/
|
|
1013
|
+
export declare type AnswerSlotVerdict = Message<"novatrail.api.v1.AnswerSlotVerdict"> & {
|
|
1014
|
+
/**
|
|
1015
|
+
* The answer slot.
|
|
1016
|
+
*
|
|
1017
|
+
* @generated from field: novatrail.observation.v1.AnswerSlotPlace answer_slot = 1;
|
|
1018
|
+
*/
|
|
1019
|
+
answerSlot?: AnswerSlotPlace | undefined;
|
|
1020
|
+
|
|
1021
|
+
/**
|
|
1022
|
+
* "correct", "not_yet", "unreadable" or "unchecked".
|
|
1023
|
+
*
|
|
1024
|
+
* @generated from field: string verdict = 2;
|
|
1025
|
+
*/
|
|
1026
|
+
verdict: string;
|
|
1027
|
+
|
|
1028
|
+
/**
|
|
1029
|
+
* Why the verdict is "unreadable": "blank", "notation", "illegible", "ambiguous",
|
|
1030
|
+
* "no_final_answer" or "several_final_answers". Empty beside the others.
|
|
1031
|
+
*
|
|
1032
|
+
* @generated from field: string reason = 3;
|
|
1033
|
+
*/
|
|
1034
|
+
reason: string;
|
|
1035
|
+
|
|
1036
|
+
/**
|
|
1037
|
+
* What was read in the slot, as the learner sees it, "Read: 6": the value of the observation, or
|
|
1038
|
+
* the text of the option tapped. Absent when nothing was read.
|
|
1039
|
+
*
|
|
1040
|
+
* @generated from field: optional string value = 4;
|
|
1041
|
+
*/
|
|
1042
|
+
value?: string | undefined;
|
|
1043
|
+
};
|
|
1044
|
+
|
|
1045
|
+
/**
|
|
1046
|
+
* Describes the message novatrail.api.v1.AnswerSlotVerdict.
|
|
1047
|
+
* Use `create(AnswerSlotVerdictSchema)` to create a new message.
|
|
1048
|
+
*/
|
|
1049
|
+
export declare const AnswerSlotVerdictSchema: GenMessage<AnswerSlotVerdict>;
|
|
1050
|
+
|
|
1051
|
+
/**
|
|
1052
|
+
* What reaches the device once the task is solved: its attempt closed by a correct answer, by the
|
|
1053
|
+
* solution shown, or by "Done".
|
|
1054
|
+
*
|
|
1055
|
+
* @generated from message novatrail.api.v1.SolvedTask
|
|
1056
|
+
*/
|
|
1057
|
+
export declare type SolvedTask = Message<"novatrail.api.v1.SolvedTask"> & {
|
|
1058
|
+
/**
|
|
1059
|
+
* The key of each answer slot that has one, in the task's order: a slot whose check is a
|
|
1060
|
+
* predicate or a rubric has none.
|
|
1061
|
+
*
|
|
1062
|
+
* @generated from field: repeated novatrail.api.v1.AnswerSlotKey keys = 1;
|
|
1063
|
+
*/
|
|
1064
|
+
keys: AnswerSlotKey[];
|
|
1065
|
+
|
|
1066
|
+
/**
|
|
1067
|
+
* The task's solution, the value of its field `solution` as JSON of the module format, of the
|
|
1068
|
+
* instance when the task is a template: empty when the task has none.
|
|
1069
|
+
*
|
|
1070
|
+
* @generated from field: bytes solution = 2;
|
|
1071
|
+
*/
|
|
1072
|
+
solution: Uint8Array;
|
|
1073
|
+
|
|
1074
|
+
/**
|
|
1075
|
+
* The version of the module format the solution is written in, MAJOR.MINOR.
|
|
1076
|
+
*
|
|
1077
|
+
* @generated from field: string module_format_version = 3;
|
|
1078
|
+
*/
|
|
1079
|
+
moduleFormatVersion: string;
|
|
1080
|
+
|
|
1081
|
+
/**
|
|
1082
|
+
* The criteria of a rubric, each its text, in order: on a task with a rubric alone, without the
|
|
1083
|
+
* marks of the assessment.
|
|
1084
|
+
*
|
|
1085
|
+
* @generated from field: repeated string criteria = 4;
|
|
1086
|
+
*/
|
|
1087
|
+
criteria: string[];
|
|
1088
|
+
};
|
|
1089
|
+
|
|
1090
|
+
/**
|
|
1091
|
+
* Describes the message novatrail.api.v1.SolvedTask.
|
|
1092
|
+
* Use `create(SolvedTaskSchema)` to create a new message.
|
|
1093
|
+
*/
|
|
1094
|
+
export declare const SolvedTaskSchema: GenMessage<SolvedTask>;
|
|
1095
|
+
|
|
1096
|
+
/**
|
|
1097
|
+
* The key of an answer slot.
|
|
1098
|
+
*
|
|
1099
|
+
* @generated from message novatrail.api.v1.AnswerSlotKey
|
|
1100
|
+
*/
|
|
1101
|
+
export declare type AnswerSlotKey = Message<"novatrail.api.v1.AnswerSlotKey"> & {
|
|
1102
|
+
/**
|
|
1103
|
+
* The answer slot.
|
|
1104
|
+
*
|
|
1105
|
+
* @generated from field: novatrail.observation.v1.AnswerSlotPlace answer_slot = 1;
|
|
1106
|
+
*/
|
|
1107
|
+
answerSlot?: AnswerSlotPlace | undefined;
|
|
1108
|
+
|
|
1109
|
+
/**
|
|
1110
|
+
* The key as the module format writes it, of the instance when the task is a template.
|
|
1111
|
+
*
|
|
1112
|
+
* @generated from field: string key = 2;
|
|
1113
|
+
*/
|
|
1114
|
+
key: string;
|
|
1115
|
+
};
|
|
1116
|
+
|
|
1117
|
+
/**
|
|
1118
|
+
* Describes the message novatrail.api.v1.AnswerSlotKey.
|
|
1119
|
+
* Use `create(AnswerSlotKeySchema)` to create a new message.
|
|
1120
|
+
*/
|
|
1121
|
+
export declare const AnswerSlotKeySchema: GenMessage<AnswerSlotKey>;
|
|
1122
|
+
|
|
1123
|
+
/**
|
|
1124
|
+
* A mark of the tutor on its layer of the canvas, over the learner's work. The program places it;
|
|
1125
|
+
* `app` gives it its name, which a screen reader reads, and it belongs to the words that bring it.
|
|
1126
|
+
*
|
|
1127
|
+
* @generated from message novatrail.api.v1.Mark
|
|
1128
|
+
*/
|
|
1129
|
+
export declare type Mark = Message<"novatrail.api.v1.Mark"> & {
|
|
1130
|
+
/**
|
|
1131
|
+
* What the mark is.
|
|
1132
|
+
*
|
|
1133
|
+
* @generated from field: novatrail.api.v1.MarkKind kind = 1;
|
|
1134
|
+
*/
|
|
1135
|
+
kind: MarkKind;
|
|
1136
|
+
|
|
1137
|
+
/**
|
|
1138
|
+
* Where the mark stands. A group's label comes only if the frames of the groups go with the work
|
|
1139
|
+
* (repositories 8, Т-31).
|
|
1140
|
+
*
|
|
1141
|
+
* @generated from oneof novatrail.api.v1.Mark.place
|
|
1142
|
+
*/
|
|
1143
|
+
place: {
|
|
1144
|
+
/**
|
|
1145
|
+
* An answer slot by its place: on a workbook, the box, framed with its strokes.
|
|
1146
|
+
*
|
|
1147
|
+
* @generated from field: novatrail.observation.v1.AnswerSlotPlace answer_slot = 2;
|
|
1148
|
+
*/
|
|
1149
|
+
value: AnswerSlotPlace;
|
|
1150
|
+
case: "answerSlot";
|
|
1151
|
+
} | {
|
|
1152
|
+
/**
|
|
1153
|
+
* A box on the crop the device sent, in whole thousandths: on a handwriting sheet alone.
|
|
1154
|
+
*
|
|
1155
|
+
* @generated from field: novatrail.observation.v1.CropBox crop_box = 3;
|
|
1156
|
+
*/
|
|
1157
|
+
value: CropBox;
|
|
1158
|
+
case: "cropBox";
|
|
1159
|
+
} | { case: undefined; value?: undefined };
|
|
1160
|
+
};
|
|
1161
|
+
|
|
1162
|
+
/**
|
|
1163
|
+
* Describes the message novatrail.api.v1.Mark.
|
|
1164
|
+
* Use `create(MarkSchema)` to create a new message.
|
|
1165
|
+
*/
|
|
1166
|
+
export declare const MarkSchema: GenMessage<Mark>;
|
|
1167
|
+
|
|
1168
|
+
/**
|
|
1169
|
+
* How a submission of an essay ended.
|
|
1170
|
+
*
|
|
1171
|
+
* @generated from enum novatrail.api.v1.SubmissionEnd
|
|
1172
|
+
*/
|
|
1173
|
+
export enum SubmissionEnd {
|
|
1174
|
+
/**
|
|
1175
|
+
* Not named: never sent.
|
|
1176
|
+
*
|
|
1177
|
+
* @generated from enum value: SUBMISSION_END_UNSPECIFIED = 0;
|
|
1178
|
+
*/
|
|
1179
|
+
UNSPECIFIED = 0,
|
|
1180
|
+
|
|
1181
|
+
/**
|
|
1182
|
+
* The essay was read and assessed by its rubric: the learner gets feedback.
|
|
1183
|
+
*
|
|
1184
|
+
* @generated from enum value: SUBMISSION_END_FEEDBACK = 1;
|
|
1185
|
+
*/
|
|
1186
|
+
FEEDBACK = 1,
|
|
1187
|
+
|
|
1188
|
+
/**
|
|
1189
|
+
* The sheet is blank, or the essay cannot be read as a whole: it does not reach the assessment.
|
|
1190
|
+
*
|
|
1191
|
+
* @generated from enum value: SUBMISSION_END_UNREADABLE = 2;
|
|
1192
|
+
*/
|
|
1193
|
+
UNREADABLE = 2,
|
|
1194
|
+
|
|
1195
|
+
/**
|
|
1196
|
+
* No check: a call of AI gave nothing, or the assessment assessed no criterion.
|
|
1197
|
+
*
|
|
1198
|
+
* @generated from enum value: SUBMISSION_END_UNCHECKED = 3;
|
|
1199
|
+
*/
|
|
1200
|
+
UNCHECKED = 3,
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
/**
|
|
1204
|
+
* Describes the enum novatrail.api.v1.SubmissionEnd.
|
|
1205
|
+
*/
|
|
1206
|
+
export declare const SubmissionEndSchema: GenEnum<SubmissionEnd>;
|
|
1207
|
+
|
|
1208
|
+
/**
|
|
1209
|
+
* Whose action a request is: the server tells kinds of action apart, not people (R04 api).
|
|
1210
|
+
*
|
|
1211
|
+
* @generated from enum novatrail.api.v1.Action
|
|
1212
|
+
*/
|
|
1213
|
+
export enum Action {
|
|
1214
|
+
/**
|
|
1215
|
+
* Not named: never sent.
|
|
1216
|
+
*
|
|
1217
|
+
* @generated from enum value: ACTION_UNSPECIFIED = 0;
|
|
1218
|
+
*/
|
|
1219
|
+
UNSPECIFIED = 0,
|
|
1220
|
+
|
|
1221
|
+
/**
|
|
1222
|
+
* A learning action, by the learner's session.
|
|
1223
|
+
*
|
|
1224
|
+
* @generated from enum value: ACTION_LEARNING = 1;
|
|
1225
|
+
*/
|
|
1226
|
+
LEARNING = 1,
|
|
1227
|
+
|
|
1228
|
+
/**
|
|
1229
|
+
* An action of an adult, behind the PIN of the section for adults.
|
|
1230
|
+
*
|
|
1231
|
+
* @generated from enum value: ACTION_ADULT = 2;
|
|
1232
|
+
*/
|
|
1233
|
+
ADULT = 2,
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
/**
|
|
1237
|
+
* Describes the enum novatrail.api.v1.Action.
|
|
1238
|
+
*/
|
|
1239
|
+
export declare const ActionSchema: GenEnum<Action>;
|
|
1240
|
+
|
|
1241
|
+
/**
|
|
1242
|
+
* What a mark is.
|
|
1243
|
+
*
|
|
1244
|
+
* @generated from enum novatrail.api.v1.MarkKind
|
|
1245
|
+
*/
|
|
1246
|
+
export enum MarkKind {
|
|
1247
|
+
/**
|
|
1248
|
+
* Not named: never sent.
|
|
1249
|
+
*
|
|
1250
|
+
* @generated from enum value: MARK_KIND_UNSPECIFIED = 0;
|
|
1251
|
+
*/
|
|
1252
|
+
UNSPECIFIED = 0,
|
|
1253
|
+
|
|
1254
|
+
/**
|
|
1255
|
+
* A frame round the place.
|
|
1256
|
+
*
|
|
1257
|
+
* @generated from enum value: MARK_KIND_FRAME = 1;
|
|
1258
|
+
*/
|
|
1259
|
+
FRAME = 1,
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
/**
|
|
1263
|
+
* Describes the enum novatrail.api.v1.MarkKind.
|
|
1264
|
+
*/
|
|
1265
|
+
export declare const MarkKindSchema: GenEnum<MarkKind>;
|
|
1266
|
+
|
|
1267
|
+
/**
|
|
1268
|
+
* The requests on an attempt of a task, as a learner and an adult act on it. Every method names
|
|
1269
|
+
* the profile and the attempt; one of another profile, or none, gets `CAUSE_NOT_FOUND`, and a
|
|
1270
|
+
* profile that is not the account's `CAUSE_NO_PROFILE`. A request whose form the contract refuses
|
|
1271
|
+
* — a field it needs left out, a place the task does not have, a method the task's kind does not
|
|
1272
|
+
* take — gets the code `invalid_argument` with no `Refusal`. Every method carries the token of the
|
|
1273
|
+
* sign-in service and may get the refusals of every request with a token, which the comment of
|
|
1274
|
+
* `AccountService` names with what `app` does on each; a request of a profile whose consent is not
|
|
1275
|
+
* confirmed gets `CAUSE_NO_CONSENT`.
|
|
1276
|
+
*
|
|
1277
|
+
* @generated from service novatrail.api.v1.AttemptService
|
|
1278
|
+
*/
|
|
1279
|
+
export declare const AttemptService: GenService<{
|
|
1280
|
+
/**
|
|
1281
|
+
* Sends the work of a task with a verdict for checking: the handwriting, the options tapped, or
|
|
1282
|
+
* both. The answer is the verdict of every item and answer slot, on the whole observation, and
|
|
1283
|
+
* what was read. Refusals: `CAUSE_ATTEMPT_CLOSED`, `CAUSE_KEY_NOT_FOR_PROFILE`,
|
|
1284
|
+
* `CAUSE_KEY_ALREADY_USED` and `CAUSE_STILL_GOING`. A call of AI that gives no reading is no
|
|
1285
|
+
* refusal: its slots get "unchecked", and the answer names the outcome. A repeat with the same
|
|
1286
|
+
* idempotency key gets the verdicts and the reading recorded, with no AI.
|
|
1287
|
+
*
|
|
1288
|
+
* @generated from rpc novatrail.api.v1.AttemptService.SubmitWork
|
|
1289
|
+
*/
|
|
1290
|
+
submitWork: {
|
|
1291
|
+
methodKind: "unary";
|
|
1292
|
+
input: typeof SubmitWorkRequestSchema;
|
|
1293
|
+
output: typeof SubmitWorkResponseSchema;
|
|
1294
|
+
},
|
|
1295
|
+
/**
|
|
1296
|
+
* Sends the sheet of a task with a rubric, an essay, for its feedback: one request, reading and
|
|
1297
|
+
* assessment both. Refusals: `CAUSE_ATTEMPT_CLOSED`, before any call of AI,
|
|
1298
|
+
* `CAUSE_KEY_NOT_FOR_PROFILE`, `CAUSE_KEY_ALREADY_USED` and `CAUSE_STILL_GOING`. A repeat with
|
|
1299
|
+
* the same idempotency key gets how the submission ended, without the text read and the words of
|
|
1300
|
+
* the feedback: they are nowhere on the server.
|
|
1301
|
+
*
|
|
1302
|
+
* @generated from rpc novatrail.api.v1.AttemptService.SubmitEssay
|
|
1303
|
+
*/
|
|
1304
|
+
submitEssay: {
|
|
1305
|
+
methodKind: "unary";
|
|
1306
|
+
input: typeof SubmitEssayRequestSchema;
|
|
1307
|
+
output: typeof SubmitEssayResponseSchema;
|
|
1308
|
+
},
|
|
1309
|
+
/**
|
|
1310
|
+
* "Done" on a task with a rubric: the learner ends the attempt, which is closed
|
|
1311
|
+
* `CLOSE_REASON_DONE`, and the task is solved. Refusals: `CAUSE_NO_SUBMISSION` and
|
|
1312
|
+
* `CAUSE_ATTEMPT_CLOSED` with another close reason; a repeat on an attempt closed by "Done" gets the
|
|
1313
|
+
* same answer. It carries no idempotency key: it repeats by the attempt's state.
|
|
1314
|
+
*
|
|
1315
|
+
* @generated from rpc novatrail.api.v1.AttemptService.Done
|
|
1316
|
+
*/
|
|
1317
|
+
done: {
|
|
1318
|
+
methodKind: "unary";
|
|
1319
|
+
input: typeof DoneRequestSchema;
|
|
1320
|
+
output: typeof DoneResponseSchema;
|
|
1321
|
+
},
|
|
1322
|
+
/**
|
|
1323
|
+
* Asks for the words of the rung that a wrong answer gave, sending the work again: the server
|
|
1324
|
+
* keeps no crop. Refusals: `CAUSE_NOT_CURRENT`, `CAUSE_NO_RUNG`, `CAUSE_NO_MORE_WORDS`,
|
|
1325
|
+
* `CAUSE_ATTEMPT_CLOSED`, `CAUSE_KEY_NOT_FOR_PROFILE`, `CAUSE_KEY_ALREADY_USED` and
|
|
1326
|
+
* `CAUSE_STILL_GOING`. A call of AI that gives no words is no refusal: the answer holds the
|
|
1327
|
+
* rung's fallback text and names the outcome. A repeat with the same idempotency key, or a request
|
|
1328
|
+
* for the same wrong answer, gets the words the attempt keeps, with no AI and no marks.
|
|
1329
|
+
*
|
|
1330
|
+
* @generated from rpc novatrail.api.v1.AttemptService.GetRungWords
|
|
1331
|
+
*/
|
|
1332
|
+
getRungWords: {
|
|
1333
|
+
methodKind: "unary";
|
|
1334
|
+
input: typeof GetRungWordsRequestSchema;
|
|
1335
|
+
output: typeof GetRungWordsResponseSchema;
|
|
1336
|
+
},
|
|
1337
|
+
/**
|
|
1338
|
+
* Asks for the tutor's words after a correct answer, sending the work again, once, on the attempt
|
|
1339
|
+
* that the answer has just closed. Refusals: `CAUSE_NO_MORE_WORDS`, also on an attempt that no
|
|
1340
|
+
* correct answer closed, `CAUSE_KEY_NOT_FOR_PROFILE`,
|
|
1341
|
+
* `CAUSE_KEY_ALREADY_USED` and `CAUSE_STILL_GOING`. A repeat with the same idempotency key gets
|
|
1342
|
+
* an answer without words: the server keeps none.
|
|
1343
|
+
*
|
|
1344
|
+
* @generated from rpc novatrail.api.v1.AttemptService.GetCorrectAnswerWords
|
|
1345
|
+
*/
|
|
1346
|
+
getCorrectAnswerWords: {
|
|
1347
|
+
methodKind: "unary";
|
|
1348
|
+
input: typeof GetCorrectAnswerWordsRequestSchema;
|
|
1349
|
+
output: typeof GetCorrectAnswerWordsResponseSchema;
|
|
1350
|
+
},
|
|
1351
|
+
/**
|
|
1352
|
+
* "Explain differently": the words of the same rung in other words, one call of AI on a rung,
|
|
1353
|
+
* without the work, for the wrong answer it names. Refusals: `CAUSE_NOT_CURRENT`,
|
|
1354
|
+
* `CAUSE_ALREADY_ASKED`, `CAUSE_NO_RUNG`, `CAUSE_ATTEMPT_CLOSED`, `CAUSE_KEY_NOT_FOR_PROFILE`,
|
|
1355
|
+
* `CAUSE_KEY_ALREADY_USED` and `CAUSE_STILL_GOING`; on platform AI, `CAUSE_QUOTA`,
|
|
1356
|
+
* `CAUSE_PLATFORM_LIMIT` and `CAUSE_NOT_ADMITTED` too: it makes no call without the reserve of the
|
|
1357
|
+
* quota, and the right to it on the rung stays. A repeat with the same idempotency key gets the
|
|
1358
|
+
* words the attempt keeps, with no AI.
|
|
1359
|
+
*
|
|
1360
|
+
* @generated from rpc novatrail.api.v1.AttemptService.ExplainDifferently
|
|
1361
|
+
*/
|
|
1362
|
+
explainDifferently: {
|
|
1363
|
+
methodKind: "unary";
|
|
1364
|
+
input: typeof ExplainDifferentlyRequestSchema;
|
|
1365
|
+
output: typeof ExplainDifferentlyResponseSchema;
|
|
1366
|
+
},
|
|
1367
|
+
/**
|
|
1368
|
+
* "Hint", a hint the learner asks for, without the work and with no AI: before the first wrong
|
|
1369
|
+
* answer, and on a task with a rubric, the IDs of the task's techniques; after it, the words of the
|
|
1370
|
+
* current rung. Refusals: `CAUSE_ATTEMPT_CLOSED`. It carries no idempotency key: it repeats by
|
|
1371
|
+
* the attempt's state.
|
|
1372
|
+
*
|
|
1373
|
+
* @generated from rpc novatrail.api.v1.AttemptService.GetHint
|
|
1374
|
+
*/
|
|
1375
|
+
getHint: {
|
|
1376
|
+
methodKind: "unary";
|
|
1377
|
+
input: typeof GetHintRequestSchema;
|
|
1378
|
+
output: typeof GetHintResponseSchema;
|
|
1379
|
+
},
|
|
1380
|
+
/**
|
|
1381
|
+
* Begins a step of the task's solving steps whose `gives` gives techniques, in the mode "by
|
|
1382
|
+
* steps": the answer is the IDs of the task's techniques. "Step done" sends no request. Refusals:
|
|
1383
|
+
* `CAUSE_ATTEMPT_CLOSED`. It carries no idempotency key: it repeats by the attempt's state.
|
|
1384
|
+
*
|
|
1385
|
+
* @generated from rpc novatrail.api.v1.AttemptService.BeginStep
|
|
1386
|
+
*/
|
|
1387
|
+
beginStep: {
|
|
1388
|
+
methodKind: "unary";
|
|
1389
|
+
input: typeof BeginStepRequestSchema;
|
|
1390
|
+
output: typeof BeginStepResponseSchema;
|
|
1391
|
+
},
|
|
1392
|
+
/**
|
|
1393
|
+
* Shows the solution, by a learning action or by an action of an adult, and closes the attempt
|
|
1394
|
+
* `CLOSE_REASON_SOLUTION_SHOWN`. A learning action needs the right `can_learn`, and an action of
|
|
1395
|
+
* an adult `can_manage`: a request without it gets the code `permission_denied`. The PIN of the
|
|
1396
|
+
* section for adults is a barrier of the interface, not of the server (R04 api). Refusals:
|
|
1397
|
+
* `CAUSE_ADULT_NEEDED`, `CAUSE_LADDER_NOT_PASSED`, by either kind of action,
|
|
1398
|
+
* `CAUSE_NO_SHOWING`, `CAUSE_ATTEMPT_CLOSED`, `CAUSE_KEY_ALREADY_USED` and
|
|
1399
|
+
* `CAUSE_STILL_GOING`. A repeat with the same idempotency key gets the solution again.
|
|
1400
|
+
*
|
|
1401
|
+
* @generated from rpc novatrail.api.v1.AttemptService.ShowSolution
|
|
1402
|
+
*/
|
|
1403
|
+
showSolution: {
|
|
1404
|
+
methodKind: "unary";
|
|
1405
|
+
input: typeof ShowSolutionRequestSchema;
|
|
1406
|
+
output: typeof ShowSolutionResponseSchema;
|
|
1407
|
+
},
|
|
1408
|
+
}>;
|
|
1409
|
+
|