@altnovatrail/contracts 0.8.2 → 0.8.4

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.
@@ -4,8 +4,10 @@
4
4
 
5
5
  // The causes of the contract between `app` and `api`: one list for its refusals and for the
6
6
  // outcomes of its calls of AI, the refusal that a method's error carries, and the outcome that its
7
- // answer carries. What they mean, and how `app` reads a cause it does not know, are the rules of
8
- // contracts/README.md, section 15.
7
+ // answer carries; and the values that come both in answers and in the data of a refusal: why an
8
+ // attempt was closed, how a lesson run ended, and the engine's choice, with the list of its reason
9
+ // codes, which the adult's progress alone carries. What they mean, and how `app` reads a cause it
10
+ // does not know, are the rules of contracts/README.md, section 15.
9
11
 
10
12
  import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
11
13
  import type { Message } from "@bufbuild/protobuf";
@@ -74,6 +76,24 @@ export declare type Refusal = Message<"novatrail.api.v1.Refusal"> & {
74
76
  */
75
77
  value: number;
76
78
  case: "maxAuthAgeSeconds";
79
+ } | {
80
+ /**
81
+ * Beside `CAUSE_RUN_ENDED`: how the lesson run ended, and the engine's choice when this request
82
+ * ended it.
83
+ *
84
+ * @generated from field: novatrail.api.v1.RunEnd run_end = 7;
85
+ */
86
+ value: RunEnd;
87
+ case: "runEnd";
88
+ } | {
89
+ /**
90
+ * Beside `CAUSE_SEGMENTS_NOT_ENDED` and `CAUSE_SEGMENT_UNAVAILABLE`: the task segments of the
91
+ * lesson run that have ended.
92
+ *
93
+ * @generated from field: novatrail.api.v1.EndedSegments ended_segments = 8;
94
+ */
95
+ value: EndedSegments;
96
+ case: "endedSegments";
77
97
  } | { case: undefined; value?: undefined };
78
98
  };
79
99
 
@@ -84,7 +104,8 @@ export declare type Refusal = Message<"novatrail.api.v1.Refusal"> & {
84
104
  export declare const RefusalSchema: GenMessage<Refusal>;
85
105
 
86
106
  /**
87
- * An outcome: what a call of AI came to when the answer holds no reading, or no words, of AI.
107
+ * An outcome: what a call of AI came to when the answer holds no reading, or no words, of AI; and
108
+ * why the engine's choice gives nothing, when the AI that checks the tasks is closed to the learner.
88
109
  *
89
110
  * @generated from message novatrail.api.v1.Outcome
90
111
  */
@@ -93,7 +114,9 @@ export declare type Outcome = Message<"novatrail.api.v1.Outcome"> & {
93
114
  * The outcome: `CAUSE_AI_FAILURE`, `CAUSE_QUOTA`, `CAUSE_PLATFORM_LIMIT`,
94
115
  * `CAUSE_NOT_ADMITTED`, `CAUSE_LIMIT_REACHED`, `CAUSE_KEY_REFUSED` or `CAUSE_NO_OTHER_WORDS`.
95
116
  * "Explain differently" makes no call without the reserve of the quota: there the quota, the limit
96
- * of platform AI and no admission are refusals, and the right to it on the rung stays.
117
+ * of platform AI and no admission are refusals, and the right to it on the rung stays. Beside an
118
+ * engine's choice that gives nothing: `CAUSE_QUOTA`, `CAUSE_PLATFORM_LIMIT` or
119
+ * `CAUSE_NOT_ADMITTED`.
97
120
  *
98
121
  * @generated from field: novatrail.api.v1.Cause cause = 1;
99
122
  */
@@ -147,6 +170,96 @@ export declare type OwnKeyLimit = Message<"novatrail.api.v1.OwnKeyLimit"> & {
147
170
  */
148
171
  export declare const OwnKeyLimitSchema: GenMessage<OwnKeyLimit>;
149
172
 
173
+ /**
174
+ * The engine's choice: what the learner is given next — a lesson, or a task outside a lesson — or
175
+ * that there is nothing to give (concepts 12). A choice begins nothing: `app` opens a lesson by
176
+ * `OpenLesson` and begins a task by `BeginAttempt`, each naming the choice. Its reason code is not
177
+ * here: a child is not told it, and it goes to the adult's progress alone, `AttemptRecord`.
178
+ *
179
+ * @generated from message novatrail.api.v1.EngineChoice
180
+ */
181
+ export declare type EngineChoice = Message<"novatrail.api.v1.EngineChoice"> & {
182
+ /**
183
+ * The ID of the choice: empty beside `CHOICE_KIND_NOTHING`.
184
+ *
185
+ * @generated from field: string choice_id = 1;
186
+ */
187
+ choiceId: string;
188
+
189
+ /**
190
+ * What the choice gives.
191
+ *
192
+ * @generated from field: novatrail.api.v1.ChoiceKind kind = 2;
193
+ */
194
+ kind: ChoiceKind;
195
+
196
+ /**
197
+ * Beside `CHOICE_KIND_NOTHING`, when the AI that checks the tasks is closed to the learner and no
198
+ * task that a tap checks is left: `CAUSE_QUOTA`, with when the next family day begins,
199
+ * `CAUSE_PLATFORM_LIMIT` or `CAUSE_NOT_ADMITTED`. Absent when there is nothing to give for
200
+ * another reason, such as no module connected with a current version.
201
+ *
202
+ * @generated from field: novatrail.api.v1.Outcome outcome = 3;
203
+ */
204
+ outcome?: Outcome | undefined;
205
+ };
206
+
207
+ /**
208
+ * Describes the message novatrail.api.v1.EngineChoice.
209
+ * Use `create(EngineChoiceSchema)` to create a new message.
210
+ */
211
+ export declare const EngineChoiceSchema: GenMessage<EngineChoice>;
212
+
213
+ /**
214
+ * How a lesson run ended.
215
+ *
216
+ * @generated from message novatrail.api.v1.RunEnd
217
+ */
218
+ export declare type RunEnd = Message<"novatrail.api.v1.RunEnd"> & {
219
+ /**
220
+ * Why it ended.
221
+ *
222
+ * @generated from field: novatrail.api.v1.RunEndReason reason = 1;
223
+ */
224
+ reason: RunEndReason;
225
+
226
+ /**
227
+ * The engine's choice that the end gave: when the request that carries it ended the run — "lesson
228
+ * done", or a request that found the run's package no longer given, the lesson unsuitable, or the
229
+ * run abandoned —, and on a repeat of the "lesson done" that ended it. Absent when the run had
230
+ * ended before by anything else, such as a job of the operator: `app` then asks `ChooseNext`.
231
+ *
232
+ * @generated from field: novatrail.api.v1.EngineChoice choice = 2;
233
+ */
234
+ choice?: EngineChoice | undefined;
235
+ };
236
+
237
+ /**
238
+ * Describes the message novatrail.api.v1.RunEnd.
239
+ * Use `create(RunEndSchema)` to create a new message.
240
+ */
241
+ export declare const RunEndSchema: GenMessage<RunEnd>;
242
+
243
+ /**
244
+ * The task segments of a lesson run that have ended.
245
+ *
246
+ * @generated from message novatrail.api.v1.EndedSegments
247
+ */
248
+ export declare type EndedSegments = Message<"novatrail.api.v1.EndedSegments"> & {
249
+ /**
250
+ * Their places among the segments of the lesson, from 1, in order.
251
+ *
252
+ * @generated from field: repeated int32 places = 1;
253
+ */
254
+ places: number[];
255
+ };
256
+
257
+ /**
258
+ * Describes the message novatrail.api.v1.EndedSegments.
259
+ * Use `create(EndedSegmentsSchema)` to create a new message.
260
+ */
261
+ export declare const EndedSegmentsSchema: GenMessage<EndedSegments>;
262
+
150
263
  /**
151
264
  * Why a request was refused, or what a call of AI in it came to: one list for the whole contract
152
265
  * (R17 api). A refusal comes as the detail `Refusal` of an error of Connect, with the code that the
@@ -173,8 +286,11 @@ export enum Cause {
173
286
  NO_PROFILE = 1,
174
287
 
175
288
  /**
176
- * The profile has no attempt with the ID named, or the account no consent with the ID named;
177
- * another profile's, or another account's, is the same. Code `not_found`.
289
+ * The profile has no attempt, lesson run or engine's choice with the ID named, no module
290
+ * connected with the ID named, and no skill by the full ID named in the current version of a
291
+ * module connected to it; or the account has no consent with the ID named; or the pinned index
292
+ * of `api` has no module with the ID named. Another profile's, or another account's, is the
293
+ * same. Code `not_found`.
178
294
  *
179
295
  * @generated from enum value: CAUSE_NOT_FOUND = 2;
180
296
  */
@@ -206,16 +322,17 @@ export enum Cause {
206
322
  STILL_GOING = 5,
207
323
 
208
324
  /**
209
- * The learner's own key came with a profile whose age category is not `adult`. Code
210
- * `invalid_argument`.
325
+ * The learner's own key, or the provider of one at the beginning of an attempt, came with a
326
+ * profile whose age category is not `adult`. Code `invalid_argument`.
211
327
  *
212
328
  * @generated from enum value: CAUSE_KEY_NOT_FOR_PROFILE = 6;
213
329
  */
214
330
  KEY_NOT_FOR_PROFILE = 6,
215
331
 
216
332
  /**
217
- * The quota of platform AI for the family day is spent. A refusal holds when the next family day
218
- * begins; so does an outcome. Code `resource_exhausted`.
333
+ * The quota of platform AI for the family day is spent; at the beginning of an attempt on a task
334
+ * that platform AI checks, what is left of it is not enough for a typical task. A refusal holds
335
+ * when the next family day begins; so does an outcome. Code `resource_exhausted`.
219
336
  *
220
337
  * @generated from enum value: CAUSE_QUOTA = 7;
221
338
  */
@@ -364,8 +481,8 @@ export enum Cause {
364
481
  CODE_NOT_ACCEPTED = 25,
365
482
 
366
483
  /**
367
- * What the request creates is there already: the account of the user, the owner's profile, or
368
- * the profile of a consent. Code `already_exists`.
484
+ * What the request creates is there already: the account of the user, the owner's profile, the
485
+ * profile of a consent, or the attempt of an engine's choice of a task. Code `already_exists`.
369
486
  *
370
487
  * @generated from enum value: CAUSE_ALREADY_EXISTS = 26;
371
488
  */
@@ -409,6 +526,67 @@ export enum Cause {
409
526
  * @generated from enum value: CAUSE_NO_PIN = 31;
410
527
  */
411
528
  NO_PIN = 31,
529
+
530
+ /**
531
+ * An open view asked for by the digest of a package whose version the image of `api` no longer
532
+ * gives: its index marks the version withdrawn, or the version's module format is out of the
533
+ * window of formats that `api` reads. `app` asks `CheckPackages` about the digests it keeps,
534
+ * and erases what it keeps of the version. An attempt or a lesson run on such a version is closed
535
+ * or ended `unchecked` instead. Code `failed_precondition`.
536
+ *
537
+ * @generated from enum value: CAUSE_VERSION_NOT_GIVEN = 32;
538
+ */
539
+ VERSION_NOT_GIVEN = 32,
540
+
541
+ /**
542
+ * The index of the image of `api` does not know the package digest: a deployment is going on,
543
+ * and a repeat reaches the new image. Code `unavailable`.
544
+ *
545
+ * @generated from enum value: CAUSE_PACKAGE_UNKNOWN = 33;
546
+ */
547
+ PACKAGE_UNKNOWN = 33,
548
+
549
+ /**
550
+ * The module has no current version for the learner — none at all, or one whose audience the
551
+ * learner is not in — or its current version has no lesson or task by the ID named. Code
552
+ * `failed_precondition`.
553
+ *
554
+ * @generated from enum value: CAUSE_NO_CURRENT_VERSION = 34;
555
+ */
556
+ NO_CURRENT_VERSION = 34,
557
+
558
+ /**
559
+ * The lesson, one of its tasks, or the task does not suit the age category of the profile. Code
560
+ * `failed_precondition`.
561
+ *
562
+ * @generated from enum value: CAUSE_NOT_SUITABLE = 35;
563
+ */
564
+ NOT_SUITABLE = 35,
565
+
566
+ /**
567
+ * The lesson run has ended. The refusal holds how it ended, and the engine's choice when this
568
+ * request ended it. Code `failed_precondition`.
569
+ *
570
+ * @generated from enum value: CAUSE_RUN_ENDED = 36;
571
+ */
572
+ RUN_ENDED = 36,
573
+
574
+ /**
575
+ * "Lesson done" while a task segment of the lesson has not ended. The refusal holds the places
576
+ * of the task segments that have ended. Code `failed_precondition`.
577
+ *
578
+ * @generated from enum value: CAUSE_SEGMENTS_NOT_ENDED = 37;
579
+ */
580
+ SEGMENTS_NOT_ENDED = 37,
581
+
582
+ /**
583
+ * An attempt asked for on a segment out of order: a task segment before it has not ended, or it
584
+ * has ended itself. The refusal holds the places of the task segments that have ended. Code
585
+ * `failed_precondition`.
586
+ *
587
+ * @generated from enum value: CAUSE_SEGMENT_UNAVAILABLE = 38;
588
+ */
589
+ SEGMENT_UNAVAILABLE = 38,
412
590
  }
413
591
 
414
592
  /**
@@ -533,3 +711,180 @@ export enum CloseReason {
533
711
  */
534
712
  export declare const CloseReasonSchema: GenEnum<CloseReason>;
535
713
 
714
+ /**
715
+ * What an engine's choice gives. A kind its build does not know `app` reads as
716
+ * `CHOICE_KIND_NOTHING`.
717
+ *
718
+ * @generated from enum novatrail.api.v1.ChoiceKind
719
+ */
720
+ export enum ChoiceKind {
721
+ /**
722
+ * Not named: never sent.
723
+ *
724
+ * @generated from enum value: CHOICE_KIND_UNSPECIFIED = 0;
725
+ */
726
+ UNSPECIFIED = 0,
727
+
728
+ /**
729
+ * A lesson: `app` opens it by `OpenLesson`. It may be the lesson of a run that is open.
730
+ *
731
+ * @generated from enum value: CHOICE_KIND_LESSON = 1;
732
+ */
733
+ LESSON = 1,
734
+
735
+ /**
736
+ * A task outside a lesson: `app` begins it by `BeginAttempt`.
737
+ *
738
+ * @generated from enum value: CHOICE_KIND_TASK = 2;
739
+ */
740
+ TASK = 2,
741
+
742
+ /**
743
+ * Nothing to give.
744
+ *
745
+ * @generated from enum value: CHOICE_KIND_NOTHING = 3;
746
+ */
747
+ NOTHING = 3,
748
+ }
749
+
750
+ /**
751
+ * Describes the enum novatrail.api.v1.ChoiceKind.
752
+ */
753
+ export declare const ChoiceKindSchema: GenEnum<ChoiceKind>;
754
+
755
+ /**
756
+ * Why the engine gave what it chose: its reason code (concepts 12; R29; R100). The adult sees it
757
+ * in the progress of a profile, and a child is not told it: no answer to a learning request
758
+ * carries it. A choice has one code, that of the branch of the engine's rule that made it, a
759
+ * lesson's as a task's, and `ChoiceKind` says what it gave. A value never changes its meaning: a
760
+ * branch of the engine's rule that the list does not name comes as a new value, and the value of a
761
+ * branch the engine drops stays, its comment saying that it is no longer given. A code its build
762
+ * does not know `app` words as a reason it does not name.
763
+ *
764
+ * @generated from enum novatrail.api.v1.ReasonCode
765
+ */
766
+ export enum ReasonCode {
767
+ /**
768
+ * No code: a choice of nothing, and an attempt that the learner began again.
769
+ *
770
+ * @generated from enum value: REASON_CODE_UNSPECIFIED = 0;
771
+ */
772
+ UNSPECIFIED = 0,
773
+
774
+ /**
775
+ * Consolidation: after a wrong answer, another task on the same skill, while the skill is within
776
+ * reach.
777
+ *
778
+ * @generated from enum value: REASON_CODE_CONSOLIDATION = 1;
779
+ */
780
+ CONSOLIDATION = 1,
781
+
782
+ /**
783
+ * A new skill: one not given before, whose prerequisites are mastered or which has none.
784
+ *
785
+ * @generated from enum value: REASON_CODE_NEW_SKILL = 2;
786
+ */
787
+ NEW_SKILL = 2,
788
+
789
+ /**
790
+ * The queue: of the skills within reach that were given before and are not mastered, the one
791
+ * not given for longest.
792
+ *
793
+ * @generated from enum value: REASON_CODE_QUEUE = 3;
794
+ */
795
+ QUEUE = 3,
796
+
797
+ /**
798
+ * Repetition: the review date of a mastered skill has come.
799
+ *
800
+ * @generated from enum value: REASON_CODE_REPETITION = 4;
801
+ */
802
+ REPETITION = 4,
803
+
804
+ /**
805
+ * A probe: a skill put aside comes back as a check.
806
+ *
807
+ * @generated from enum value: REASON_CODE_PROBE = 5;
808
+ */
809
+ PROBE = 5,
810
+
811
+ /**
812
+ * The learner chose the skill on the skill map, and the engine the lesson or the task on it,
813
+ * whatever else the skill would fit.
814
+ *
815
+ * @generated from enum value: REASON_CODE_SKILL_CHOSEN = 6;
816
+ */
817
+ SKILL_CHOSEN = 6,
818
+
819
+ /**
820
+ * The author's order: a skill with a rubric or without assessment comes next by the skill graph,
821
+ * without the learner model (concepts 4).
822
+ *
823
+ * @generated from enum value: REASON_CODE_AUTHOR_ORDER = 7;
824
+ */
825
+ AUTHOR_ORDER = 7,
826
+
827
+ /**
828
+ * The lesson of a run that is open, which the learner goes on with, whatever else its skills
829
+ * would fit.
830
+ *
831
+ * @generated from enum value: REASON_CODE_OPEN_RUN = 8;
832
+ */
833
+ OPEN_RUN = 8,
834
+ }
835
+
836
+ /**
837
+ * Describes the enum novatrail.api.v1.ReasonCode.
838
+ */
839
+ export declare const ReasonCodeSchema: GenEnum<ReasonCode>;
840
+
841
+ /**
842
+ * Why a lesson run ended (concepts 5). A reason its build does not know `app` reads as an end other
843
+ * than `RUN_END_REASON_PASSED`, and erases the state of the lesson as at every end.
844
+ *
845
+ * @generated from enum novatrail.api.v1.RunEndReason
846
+ */
847
+ export enum RunEndReason {
848
+ /**
849
+ * Not ended: the run is open.
850
+ *
851
+ * @generated from enum value: RUN_END_REASON_UNSPECIFIED = 0;
852
+ */
853
+ UNSPECIFIED = 0,
854
+
855
+ /**
856
+ * The lesson is done: "lesson done" came once every task segment had ended.
857
+ *
858
+ * @generated from enum value: RUN_END_REASON_PASSED = 1;
859
+ */
860
+ PASSED = 1,
861
+
862
+ /**
863
+ * Unchecked: the run's version of the module is no longer given, withdrawn or out of the window
864
+ * of formats that `api` reads, or an attempt of the run was closed `CLOSE_REASON_UNCHECKED`.
865
+ *
866
+ * @generated from enum value: RUN_END_REASON_UNCHECKED = 2;
867
+ */
868
+ UNCHECKED = 2,
869
+
870
+ /**
871
+ * Not suitable: the module is no longer connected or has no current version for the learner, or
872
+ * the lesson or one of its tasks no longer suits the age category of the profile.
873
+ *
874
+ * @generated from enum value: RUN_END_REASON_NOT_SUITABLE = 3;
875
+ */
876
+ NOT_SUITABLE = 3,
877
+
878
+ /**
879
+ * Abandoned: no request on the run or its attempts for 30 days.
880
+ *
881
+ * @generated from enum value: RUN_END_REASON_ABANDONED = 4;
882
+ */
883
+ ABANDONED = 4,
884
+ }
885
+
886
+ /**
887
+ * Describes the enum novatrail.api.v1.RunEndReason.
888
+ */
889
+ export declare const RunEndReasonSchema: GenEnum<RunEndReason>;
890
+
@@ -4,8 +4,10 @@
4
4
 
5
5
  // The causes of the contract between `app` and `api`: one list for its refusals and for the
6
6
  // outcomes of its calls of AI, the refusal that a method's error carries, and the outcome that its
7
- // answer carries. What they mean, and how `app` reads a cause it does not know, are the rules of
8
- // contracts/README.md, section 15.
7
+ // answer carries; and the values that come both in answers and in the data of a refusal: why an
8
+ // attempt was closed, how a lesson run ended, and the engine's choice, with the list of its reason
9
+ // codes, which the adult's progress alone carries. What they mean, and how `app` reads a cause it
10
+ // does not know, are the rules of contracts/README.md, section 15.
9
11
 
10
12
  import { enumDesc, fileDesc, messageDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
11
13
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
@@ -14,7 +16,7 @@ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
14
16
  * Describes the file novatrail/api/v1/cause.proto.
15
17
  */
16
18
  export const file_novatrail_api_v1_cause = /*@__PURE__*/
17
- fileDesc("Chxub3ZhdHJhaWwvYXBpL3YxL2NhdXNlLnByb3RvEhBub3ZhdHJhaWwuYXBpLnYxIpQCCgdSZWZ1c2FsEiYKBWNhdXNlGAEgASgOMhcubm92YXRyYWlsLmFwaS52MS5DYXVzZRI1CgxjbG9zZV9yZWFzb24YAiABKA4yHS5ub3ZhdHJhaWwuYXBpLnYxLkNsb3NlUmVhc29uSAASNQoPbmV4dF9mYW1pbHlfZGF5GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAEhcKDXdyb25nX2Fuc3dlcnMYBCABKAVIABIyCgxsb2NrZWRfdW50aWwYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAASHgoUbWF4X2F1dGhfYWdlX3NlY29uZHMYBiABKAVIAEIGCgRkYXRhIpwBCgdPdXRjb21lEiYKBWNhdXNlGAEgASgOMhcubm92YXRyYWlsLmFwaS52MS5DYXVzZRIzCg9uZXh0X2ZhbWlseV9kYXkYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKDW93bl9rZXlfbGltaXQYAyABKAsyHS5ub3ZhdHJhaWwuYXBpLnYxLk93bktleUxpbWl0Im4KC093bktleUxpbWl0EisKBWNhdXNlGAEgASgOMhwubm92YXRyYWlsLmFwaS52MS5MaW1pdENhdXNlEjIKDmFjY2Vzc19yZXR1cm5zGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCqVBgoFQ2F1c2USFQoRQ0FVU0VfVU5TUEVDSUZJRUQQABIUChBDQVVTRV9OT19QUk9GSUxFEAESEwoPQ0FVU0VfTk9UX0ZPVU5EEAISGAoUQ0FVU0VfQVRURU1QVF9DTE9TRUQQAxIaChZDQVVTRV9LRVlfQUxSRUFEWV9VU0VEEAQSFQoRQ0FVU0VfU1RJTExfR09JTkcQBRIdChlDQVVTRV9LRVlfTk9UX0ZPUl9QUk9GSUxFEAYSDwoLQ0FVU0VfUVVPVEEQBxIYChRDQVVTRV9QTEFURk9STV9MSU1JVBAIEhYKEkNBVVNFX05PVF9BRE1JVFRFRBAJEhQKEENBVVNFX0FJX0ZBSUxVUkUQChIXChNDQVVTRV9MSU1JVF9SRUFDSEVEEAsSFQoRQ0FVU0VfS0VZX1JFRlVTRUQQDBIWChJDQVVTRV9BRFVMVF9ORUVERUQQDRIbChdDQVVTRV9MQURERVJfTk9UX1BBU1NFRBAOEhQKEENBVVNFX05PX1NIT1dJTkcQDxIRCg1DQVVTRV9OT19SVU5HEBASFwoTQ0FVU0VfQUxSRUFEWV9BU0tFRBAREhgKFENBVVNFX05PX09USEVSX1dPUkRTEBISFwoTQ0FVU0VfTk9fTU9SRV9XT1JEUxATEhcKE0NBVVNFX05PX1NVQk1JU1NJT04QFBIVChFDQVVTRV9OT1RfQ1VSUkVOVBAVEhMKD0NBVVNFX05PX0FDQ0VTUxAWEhYKEkNBVVNFX0FDQ09VTlRfR09ORRAXEh4KGkNBVVNFX0ZSRVNIX1NJR05fSU5fTkVFREVEEBgSGwoXQ0FVU0VfQ09ERV9OT1RfQUNDRVBURUQQGRIYChRDQVVTRV9BTFJFQURZX0VYSVNUUxAaEh4KGkNBVVNFX0NPVU5UUllfTk9UX0FDQ0VQVEVEEBsSFAoQQ0FVU0VfTk9fQ09OU0VOVBAcEhQKEENBVVNFX1BJTl9MT0NLRUQQHRIZChVDQVVTRV9QSU5fQUxSRUFEWV9TRVQQHhIQCgxDQVVTRV9OT19QSU4QHyqIAQoKTGltaXRDYXVzZRIbChdMSU1JVF9DQVVTRV9VTlNQRUNJRklFRBAAEhUKEUxJTUlUX0NBVVNFX0xJTUlUEAESFAoQTElNSVRfQ0FVU0VfVElFUhACEhcKE0xJTUlUX0NBVVNFX0JBTEFOQ0UQAxIXChNMSU1JVF9DQVVTRV9QQVlNRU5UEAQq6wEKC0Nsb3NlUmVhc29uEhwKGENMT1NFX1JFQVNPTl9VTlNQRUNJRklFRBAAEhgKFENMT1NFX1JFQVNPTl9DT1JSRUNUEAESHwobQ0xPU0VfUkVBU09OX1NPTFVUSU9OX1NIT1dOEAISFQoRQ0xPU0VfUkVBU09OX0xFRlQQAxIaChZDTE9TRV9SRUFTT05fQUJBTkRPTkVEEAQSGgoWQ0xPU0VfUkVBU09OX1VOQ0hFQ0tFRBAFEh0KGUNMT1NFX1JFQVNPTl9OT1RfU1VJVEFCTEUQBhIVChFDTE9TRV9SRUFTT05fRE9ORRAHQsMBChRjb20ubm92YXRyYWlsLmFwaS52MUIKQ2F1c2VQcm90b1ABWj1naXRodWIuY29tL2FsdG5vdmF0cmFpbC9zcGVjL2NvbnRyYWN0cy9ub3ZhdHJhaWwvYXBpL3YxO2FwaXYxogIDTkFYqgIQTm92YXRyYWlsLkFwaS5WMcoCEE5vdmF0cmFpbFxBcGlcVjHiAhxOb3ZhdHJhaWxcQXBpXFYxXEdQQk1ldGFkYXRh6gISTm92YXRyYWlsOjpBcGk6OlYxYgZwcm90bzM", [file_google_protobuf_timestamp]);
19
+ fileDesc("Chxub3ZhdHJhaWwvYXBpL3YxL2NhdXNlLnByb3RvEhBub3ZhdHJhaWwuYXBpLnYxIvwCCgdSZWZ1c2FsEiYKBWNhdXNlGAEgASgOMhcubm92YXRyYWlsLmFwaS52MS5DYXVzZRI1CgxjbG9zZV9yZWFzb24YAiABKA4yHS5ub3ZhdHJhaWwuYXBpLnYxLkNsb3NlUmVhc29uSAASNQoPbmV4dF9mYW1pbHlfZGF5GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAEhcKDXdyb25nX2Fuc3dlcnMYBCABKAVIABIyCgxsb2NrZWRfdW50aWwYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAASHgoUbWF4X2F1dGhfYWdlX3NlY29uZHMYBiABKAVIABIrCgdydW5fZW5kGAcgASgLMhgubm92YXRyYWlsLmFwaS52MS5SdW5FbmRIABI5Cg5lbmRlZF9zZWdtZW50cxgIIAEoCzIfLm5vdmF0cmFpbC5hcGkudjEuRW5kZWRTZWdtZW50c0gAQgYKBGRhdGEinAEKB091dGNvbWUSJgoFY2F1c2UYASABKA4yFy5ub3ZhdHJhaWwuYXBpLnYxLkNhdXNlEjMKD25leHRfZmFtaWx5X2RheRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoNb3duX2tleV9saW1pdBgDIAEoCzIdLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5TGltaXQibgoLT3duS2V5TGltaXQSKwoFY2F1c2UYASABKA4yHC5ub3ZhdHJhaWwuYXBpLnYxLkxpbWl0Q2F1c2USMgoOYWNjZXNzX3JldHVybnMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wInkKDEVuZ2luZUNob2ljZRIRCgljaG9pY2VfaWQYASABKAkSKgoEa2luZBgCIAEoDjIcLm5vdmF0cmFpbC5hcGkudjEuQ2hvaWNlS2luZBIqCgdvdXRjb21lGAMgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lImgKBlJ1bkVuZBIuCgZyZWFzb24YASABKA4yHi5ub3ZhdHJhaWwuYXBpLnYxLlJ1bkVuZFJlYXNvbhIuCgZjaG9pY2UYAiABKAsyHi5ub3ZhdHJhaWwuYXBpLnYxLkVuZ2luZUNob2ljZSIfCg1FbmRlZFNlZ21lbnRzEg4KBnBsYWNlcxgBIAMoBSrVBwoFQ2F1c2USFQoRQ0FVU0VfVU5TUEVDSUZJRUQQABIUChBDQVVTRV9OT19QUk9GSUxFEAESEwoPQ0FVU0VfTk9UX0ZPVU5EEAISGAoUQ0FVU0VfQVRURU1QVF9DTE9TRUQQAxIaChZDQVVTRV9LRVlfQUxSRUFEWV9VU0VEEAQSFQoRQ0FVU0VfU1RJTExfR09JTkcQBRIdChlDQVVTRV9LRVlfTk9UX0ZPUl9QUk9GSUxFEAYSDwoLQ0FVU0VfUVVPVEEQBxIYChRDQVVTRV9QTEFURk9STV9MSU1JVBAIEhYKEkNBVVNFX05PVF9BRE1JVFRFRBAJEhQKEENBVVNFX0FJX0ZBSUxVUkUQChIXChNDQVVTRV9MSU1JVF9SRUFDSEVEEAsSFQoRQ0FVU0VfS0VZX1JFRlVTRUQQDBIWChJDQVVTRV9BRFVMVF9ORUVERUQQDRIbChdDQVVTRV9MQURERVJfTk9UX1BBU1NFRBAOEhQKEENBVVNFX05PX1NIT1dJTkcQDxIRCg1DQVVTRV9OT19SVU5HEBASFwoTQ0FVU0VfQUxSRUFEWV9BU0tFRBAREhgKFENBVVNFX05PX09USEVSX1dPUkRTEBISFwoTQ0FVU0VfTk9fTU9SRV9XT1JEUxATEhcKE0NBVVNFX05PX1NVQk1JU1NJT04QFBIVChFDQVVTRV9OT1RfQ1VSUkVOVBAVEhMKD0NBVVNFX05PX0FDQ0VTUxAWEhYKEkNBVVNFX0FDQ09VTlRfR09ORRAXEh4KGkNBVVNFX0ZSRVNIX1NJR05fSU5fTkVFREVEEBgSGwoXQ0FVU0VfQ09ERV9OT1RfQUNDRVBURUQQGRIYChRDQVVTRV9BTFJFQURZX0VYSVNUUxAaEh4KGkNBVVNFX0NPVU5UUllfTk9UX0FDQ0VQVEVEEBsSFAoQQ0FVU0VfTk9fQ09OU0VOVBAcEhQKEENBVVNFX1BJTl9MT0NLRUQQHRIZChVDQVVTRV9QSU5fQUxSRUFEWV9TRVQQHhIQCgxDQVVTRV9OT19QSU4QHxIbChdDQVVTRV9WRVJTSU9OX05PVF9HSVZFThAgEhkKFUNBVVNFX1BBQ0tBR0VfVU5LTk9XThAhEhwKGENBVVNFX05PX0NVUlJFTlRfVkVSU0lPThAiEhYKEkNBVVNFX05PVF9TVUlUQUJMRRAjEhMKD0NBVVNFX1JVTl9FTkRFRBAkEhwKGENBVVNFX1NFR01FTlRTX05PVF9FTkRFRBAlEh0KGUNBVVNFX1NFR01FTlRfVU5BVkFJTEFCTEUQJiqIAQoKTGltaXRDYXVzZRIbChdMSU1JVF9DQVVTRV9VTlNQRUNJRklFRBAAEhUKEUxJTUlUX0NBVVNFX0xJTUlUEAESFAoQTElNSVRfQ0FVU0VfVElFUhACEhcKE0xJTUlUX0NBVVNFX0JBTEFOQ0UQAxIXChNMSU1JVF9DQVVTRV9QQVlNRU5UEAQq6wEKC0Nsb3NlUmVhc29uEhwKGENMT1NFX1JFQVNPTl9VTlNQRUNJRklFRBAAEhgKFENMT1NFX1JFQVNPTl9DT1JSRUNUEAESHwobQ0xPU0VfUkVBU09OX1NPTFVUSU9OX1NIT1dOEAISFQoRQ0xPU0VfUkVBU09OX0xFRlQQAxIaChZDTE9TRV9SRUFTT05fQUJBTkRPTkVEEAQSGgoWQ0xPU0VfUkVBU09OX1VOQ0hFQ0tFRBAFEh0KGUNMT1NFX1JFQVNPTl9OT1RfU1VJVEFCTEUQBhIVChFDTE9TRV9SRUFTT05fRE9ORRAHKnAKCkNob2ljZUtpbmQSGwoXQ0hPSUNFX0tJTkRfVU5TUEVDSUZJRUQQABIWChJDSE9JQ0VfS0lORF9MRVNTT04QARIUChBDSE9JQ0VfS0lORF9UQVNLEAISFwoTQ0hPSUNFX0tJTkRfTk9USElORxADKoMCCgpSZWFzb25Db2RlEhsKF1JFQVNPTl9DT0RFX1VOU1BFQ0lGSUVEEAASHQoZUkVBU09OX0NPREVfQ09OU09MSURBVElPThABEhkKFVJFQVNPTl9DT0RFX05FV19TS0lMTBACEhUKEVJFQVNPTl9DT0RFX1FVRVVFEAMSGgoWUkVBU09OX0NPREVfUkVQRVRJVElPThAEEhUKEVJFQVNPTl9DT0RFX1BST0JFEAUSHAoYUkVBU09OX0NPREVfU0tJTExfQ0hPU0VOEAYSHAoYUkVBU09OX0NPREVfQVVUSE9SX09SREVSEAcSGAoUUkVBU09OX0NPREVfT1BFTl9SVU4QCCqmAQoMUnVuRW5kUmVhc29uEh4KGlJVTl9FTkRfUkVBU09OX1VOU1BFQ0lGSUVEEAASGQoVUlVOX0VORF9SRUFTT05fUEFTU0VEEAESHAoYUlVOX0VORF9SRUFTT05fVU5DSEVDS0VEEAISHwobUlVOX0VORF9SRUFTT05fTk9UX1NVSVRBQkxFEAMSHAoYUlVOX0VORF9SRUFTT05fQUJBTkRPTkVEEARCwwEKFGNvbS5ub3ZhdHJhaWwuYXBpLnYxQgpDYXVzZVByb3RvUAFaPWdpdGh1Yi5jb20vYWx0bm92YXRyYWlsL3NwZWMvY29udHJhY3RzL25vdmF0cmFpbC9hcGkvdjE7YXBpdjGiAgNOQViqAhBOb3ZhdHJhaWwuQXBpLlYxygIQTm92YXRyYWlsXEFwaVxWMeICHE5vdmF0cmFpbFxBcGlcVjFcR1BCTWV0YWRhdGHqAhJOb3ZhdHJhaWw6OkFwaTo6VjFiBnByb3RvMw", [file_google_protobuf_timestamp]);
18
20
 
19
21
  /**
20
22
  * Describes the message novatrail.api.v1.Refusal.
@@ -37,6 +39,27 @@ export const OutcomeSchema = /*@__PURE__*/
37
39
  export const OwnKeyLimitSchema = /*@__PURE__*/
38
40
  messageDesc(file_novatrail_api_v1_cause, 2);
39
41
 
42
+ /**
43
+ * Describes the message novatrail.api.v1.EngineChoice.
44
+ * Use `create(EngineChoiceSchema)` to create a new message.
45
+ */
46
+ export const EngineChoiceSchema = /*@__PURE__*/
47
+ messageDesc(file_novatrail_api_v1_cause, 3);
48
+
49
+ /**
50
+ * Describes the message novatrail.api.v1.RunEnd.
51
+ * Use `create(RunEndSchema)` to create a new message.
52
+ */
53
+ export const RunEndSchema = /*@__PURE__*/
54
+ messageDesc(file_novatrail_api_v1_cause, 4);
55
+
56
+ /**
57
+ * Describes the message novatrail.api.v1.EndedSegments.
58
+ * Use `create(EndedSegmentsSchema)` to create a new message.
59
+ */
60
+ export const EndedSegmentsSchema = /*@__PURE__*/
61
+ messageDesc(file_novatrail_api_v1_cause, 5);
62
+
40
63
  /**
41
64
  * Describes the enum novatrail.api.v1.Cause.
42
65
  */
@@ -84,3 +107,53 @@ export const CloseReasonSchema = /*@__PURE__*/
84
107
  export const CloseReason = /*@__PURE__*/
85
108
  tsEnum(CloseReasonSchema);
86
109
 
110
+ /**
111
+ * Describes the enum novatrail.api.v1.ChoiceKind.
112
+ */
113
+ export const ChoiceKindSchema = /*@__PURE__*/
114
+ enumDesc(file_novatrail_api_v1_cause, 3);
115
+
116
+ /**
117
+ * What an engine's choice gives. A kind its build does not know `app` reads as
118
+ * `CHOICE_KIND_NOTHING`.
119
+ *
120
+ * @generated from enum novatrail.api.v1.ChoiceKind
121
+ */
122
+ export const ChoiceKind = /*@__PURE__*/
123
+ tsEnum(ChoiceKindSchema);
124
+
125
+ /**
126
+ * Describes the enum novatrail.api.v1.ReasonCode.
127
+ */
128
+ export const ReasonCodeSchema = /*@__PURE__*/
129
+ enumDesc(file_novatrail_api_v1_cause, 4);
130
+
131
+ /**
132
+ * Why the engine gave what it chose: its reason code (concepts 12; R29; R100). The adult sees it
133
+ * in the progress of a profile, and a child is not told it: no answer to a learning request
134
+ * carries it. A choice has one code, that of the branch of the engine's rule that made it, a
135
+ * lesson's as a task's, and `ChoiceKind` says what it gave. A value never changes its meaning: a
136
+ * branch of the engine's rule that the list does not name comes as a new value, and the value of a
137
+ * branch the engine drops stays, its comment saying that it is no longer given. A code its build
138
+ * does not know `app` words as a reason it does not name.
139
+ *
140
+ * @generated from enum novatrail.api.v1.ReasonCode
141
+ */
142
+ export const ReasonCode = /*@__PURE__*/
143
+ tsEnum(ReasonCodeSchema);
144
+
145
+ /**
146
+ * Describes the enum novatrail.api.v1.RunEndReason.
147
+ */
148
+ export const RunEndReasonSchema = /*@__PURE__*/
149
+ enumDesc(file_novatrail_api_v1_cause, 5);
150
+
151
+ /**
152
+ * Why a lesson run ended (concepts 5). A reason its build does not know `app` reads as an end other
153
+ * than `RUN_END_REASON_PASSED`, and erases the state of the lesson as at every end.
154
+ *
155
+ * @generated from enum novatrail.api.v1.RunEndReason
156
+ */
157
+ export const RunEndReason = /*@__PURE__*/
158
+ tsEnum(RunEndReasonSchema);
159
+