@altnovatrail/contracts 0.8.3 → 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.
@@ -5,8 +5,9 @@
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
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. What they mean, and how
9
- // `app` reads a cause it does not know, are the rules of contracts/README.md, section 15.
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.
10
11
 
11
12
  import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
12
13
  import type { Message } from "@bufbuild/protobuf";
@@ -172,8 +173,8 @@ export declare const OwnKeyLimitSchema: GenMessage<OwnKeyLimit>;
172
173
  /**
173
174
  * The engine's choice: what the learner is given next — a lesson, or a task outside a lesson — or
174
175
  * that there is nothing to give (concepts 12). A choice begins nothing: `app` opens a lesson by
175
- * `OpenLesson` and begins a task by `BeginAttempt`, each naming the choice. Its reason code, which
176
- * the adult sees, is RUN.md's T65.
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`.
177
178
  *
178
179
  * @generated from message novatrail.api.v1.EngineChoice
179
180
  */
@@ -751,6 +752,92 @@ export enum ChoiceKind {
751
752
  */
752
753
  export declare const ChoiceKindSchema: GenEnum<ChoiceKind>;
753
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
+
754
841
  /**
755
842
  * Why a lesson run ended (concepts 5). A reason its build does not know `app` reads as an end other
756
843
  * than `RUN_END_REASON_PASSED`, and erases the state of the lesson as at every end.
@@ -5,8 +5,9 @@
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
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. What they mean, and how
9
- // `app` reads a cause it does not know, are the rules of contracts/README.md, section 15.
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.
10
11
 
11
12
  import { enumDesc, fileDesc, messageDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
12
13
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
@@ -15,7 +16,7 @@ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
15
16
  * Describes the file novatrail/api/v1/cause.proto.
16
17
  */
17
18
  export const file_novatrail_api_v1_cause = /*@__PURE__*/
18
- fileDesc("Chxub3ZhdHJhaWwvYXBpL3YxL2NhdXNlLnByb3RvEhBub3ZhdHJhaWwuYXBpLnYxIvwCCgdSZWZ1c2FsEiYKBWNhdXNlGAEgASgOMhcubm92YXRyYWlsLmFwaS52MS5DYXVzZRI1CgxjbG9zZV9yZWFzb24YAiABKA4yHS5ub3ZhdHJhaWwuYXBpLnYxLkNsb3NlUmVhc29uSAASNQoPbmV4dF9mYW1pbHlfZGF5GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAEhcKDXdyb25nX2Fuc3dlcnMYBCABKAVIABIyCgxsb2NrZWRfdW50aWwYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAASHgoUbWF4X2F1dGhfYWdlX3NlY29uZHMYBiABKAVIABIrCgdydW5fZW5kGAcgASgLMhgubm92YXRyYWlsLmFwaS52MS5SdW5FbmRIABI5Cg5lbmRlZF9zZWdtZW50cxgIIAEoCzIfLm5vdmF0cmFpbC5hcGkudjEuRW5kZWRTZWdtZW50c0gAQgYKBGRhdGEinAEKB091dGNvbWUSJgoFY2F1c2UYASABKA4yFy5ub3ZhdHJhaWwuYXBpLnYxLkNhdXNlEjMKD25leHRfZmFtaWx5X2RheRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoNb3duX2tleV9saW1pdBgDIAEoCzIdLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5TGltaXQibgoLT3duS2V5TGltaXQSKwoFY2F1c2UYASABKA4yHC5ub3ZhdHJhaWwuYXBpLnYxLkxpbWl0Q2F1c2USMgoOYWNjZXNzX3JldHVybnMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wInkKDEVuZ2luZUNob2ljZRIRCgljaG9pY2VfaWQYASABKAkSKgoEa2luZBgCIAEoDjIcLm5vdmF0cmFpbC5hcGkudjEuQ2hvaWNlS2luZBIqCgdvdXRjb21lGAMgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lImgKBlJ1bkVuZBIuCgZyZWFzb24YASABKA4yHi5ub3ZhdHJhaWwuYXBpLnYxLlJ1bkVuZFJlYXNvbhIuCgZjaG9pY2UYAiABKAsyHi5ub3ZhdHJhaWwuYXBpLnYxLkVuZ2luZUNob2ljZSIfCg1FbmRlZFNlZ21lbnRzEg4KBnBsYWNlcxgBIAMoBSrVBwoFQ2F1c2USFQoRQ0FVU0VfVU5TUEVDSUZJRUQQABIUChBDQVVTRV9OT19QUk9GSUxFEAESEwoPQ0FVU0VfTk9UX0ZPVU5EEAISGAoUQ0FVU0VfQVRURU1QVF9DTE9TRUQQAxIaChZDQVVTRV9LRVlfQUxSRUFEWV9VU0VEEAQSFQoRQ0FVU0VfU1RJTExfR09JTkcQBRIdChlDQVVTRV9LRVlfTk9UX0ZPUl9QUk9GSUxFEAYSDwoLQ0FVU0VfUVVPVEEQBxIYChRDQVVTRV9QTEFURk9STV9MSU1JVBAIEhYKEkNBVVNFX05PVF9BRE1JVFRFRBAJEhQKEENBVVNFX0FJX0ZBSUxVUkUQChIXChNDQVVTRV9MSU1JVF9SRUFDSEVEEAsSFQoRQ0FVU0VfS0VZX1JFRlVTRUQQDBIWChJDQVVTRV9BRFVMVF9ORUVERUQQDRIbChdDQVVTRV9MQURERVJfTk9UX1BBU1NFRBAOEhQKEENBVVNFX05PX1NIT1dJTkcQDxIRCg1DQVVTRV9OT19SVU5HEBASFwoTQ0FVU0VfQUxSRUFEWV9BU0tFRBAREhgKFENBVVNFX05PX09USEVSX1dPUkRTEBISFwoTQ0FVU0VfTk9fTU9SRV9XT1JEUxATEhcKE0NBVVNFX05PX1NVQk1JU1NJT04QFBIVChFDQVVTRV9OT1RfQ1VSUkVOVBAVEhMKD0NBVVNFX05PX0FDQ0VTUxAWEhYKEkNBVVNFX0FDQ09VTlRfR09ORRAXEh4KGkNBVVNFX0ZSRVNIX1NJR05fSU5fTkVFREVEEBgSGwoXQ0FVU0VfQ09ERV9OT1RfQUNDRVBURUQQGRIYChRDQVVTRV9BTFJFQURZX0VYSVNUUxAaEh4KGkNBVVNFX0NPVU5UUllfTk9UX0FDQ0VQVEVEEBsSFAoQQ0FVU0VfTk9fQ09OU0VOVBAcEhQKEENBVVNFX1BJTl9MT0NLRUQQHRIZChVDQVVTRV9QSU5fQUxSRUFEWV9TRVQQHhIQCgxDQVVTRV9OT19QSU4QHxIbChdDQVVTRV9WRVJTSU9OX05PVF9HSVZFThAgEhkKFUNBVVNFX1BBQ0tBR0VfVU5LTk9XThAhEhwKGENBVVNFX05PX0NVUlJFTlRfVkVSU0lPThAiEhYKEkNBVVNFX05PVF9TVUlUQUJMRRAjEhMKD0NBVVNFX1JVTl9FTkRFRBAkEhwKGENBVVNFX1NFR01FTlRTX05PVF9FTkRFRBAlEh0KGUNBVVNFX1NFR01FTlRfVU5BVkFJTEFCTEUQJiqIAQoKTGltaXRDYXVzZRIbChdMSU1JVF9DQVVTRV9VTlNQRUNJRklFRBAAEhUKEUxJTUlUX0NBVVNFX0xJTUlUEAESFAoQTElNSVRfQ0FVU0VfVElFUhACEhcKE0xJTUlUX0NBVVNFX0JBTEFOQ0UQAxIXChNMSU1JVF9DQVVTRV9QQVlNRU5UEAQq6wEKC0Nsb3NlUmVhc29uEhwKGENMT1NFX1JFQVNPTl9VTlNQRUNJRklFRBAAEhgKFENMT1NFX1JFQVNPTl9DT1JSRUNUEAESHwobQ0xPU0VfUkVBU09OX1NPTFVUSU9OX1NIT1dOEAISFQoRQ0xPU0VfUkVBU09OX0xFRlQQAxIaChZDTE9TRV9SRUFTT05fQUJBTkRPTkVEEAQSGgoWQ0xPU0VfUkVBU09OX1VOQ0hFQ0tFRBAFEh0KGUNMT1NFX1JFQVNPTl9OT1RfU1VJVEFCTEUQBhIVChFDTE9TRV9SRUFTT05fRE9ORRAHKnAKCkNob2ljZUtpbmQSGwoXQ0hPSUNFX0tJTkRfVU5TUEVDSUZJRUQQABIWChJDSE9JQ0VfS0lORF9MRVNTT04QARIUChBDSE9JQ0VfS0lORF9UQVNLEAISFwoTQ0hPSUNFX0tJTkRfTk9USElORxADKqYBCgxSdW5FbmRSZWFzb24SHgoaUlVOX0VORF9SRUFTT05fVU5TUEVDSUZJRUQQABIZChVSVU5fRU5EX1JFQVNPTl9QQVNTRUQQARIcChhSVU5fRU5EX1JFQVNPTl9VTkNIRUNLRUQQAhIfChtSVU5fRU5EX1JFQVNPTl9OT1RfU1VJVEFCTEUQAxIcChhSVU5fRU5EX1JFQVNPTl9BQkFORE9ORUQQBELDAQoUY29tLm5vdmF0cmFpbC5hcGkudjFCCkNhdXNlUHJvdG9QAVo9Z2l0aHViLmNvbS9hbHRub3ZhdHJhaWwvc3BlYy9jb250cmFjdHMvbm92YXRyYWlsL2FwaS92MTthcGl2MaICA05BWKoCEE5vdmF0cmFpbC5BcGkuVjHKAhBOb3ZhdHJhaWxcQXBpXFYx4gIcTm92YXRyYWlsXEFwaVxWMVxHUEJNZXRhZGF0YeoCEk5vdmF0cmFpbDo6QXBpOjpWMWIGcHJvdG8z", [file_google_protobuf_timestamp]);
19
+ fileDesc("Chxub3ZhdHJhaWwvYXBpL3YxL2NhdXNlLnByb3RvEhBub3ZhdHJhaWwuYXBpLnYxIvwCCgdSZWZ1c2FsEiYKBWNhdXNlGAEgASgOMhcubm92YXRyYWlsLmFwaS52MS5DYXVzZRI1CgxjbG9zZV9yZWFzb24YAiABKA4yHS5ub3ZhdHJhaWwuYXBpLnYxLkNsb3NlUmVhc29uSAASNQoPbmV4dF9mYW1pbHlfZGF5GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAEhcKDXdyb25nX2Fuc3dlcnMYBCABKAVIABIyCgxsb2NrZWRfdW50aWwYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAASHgoUbWF4X2F1dGhfYWdlX3NlY29uZHMYBiABKAVIABIrCgdydW5fZW5kGAcgASgLMhgubm92YXRyYWlsLmFwaS52MS5SdW5FbmRIABI5Cg5lbmRlZF9zZWdtZW50cxgIIAEoCzIfLm5vdmF0cmFpbC5hcGkudjEuRW5kZWRTZWdtZW50c0gAQgYKBGRhdGEinAEKB091dGNvbWUSJgoFY2F1c2UYASABKA4yFy5ub3ZhdHJhaWwuYXBpLnYxLkNhdXNlEjMKD25leHRfZmFtaWx5X2RheRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoNb3duX2tleV9saW1pdBgDIAEoCzIdLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5TGltaXQibgoLT3duS2V5TGltaXQSKwoFY2F1c2UYASABKA4yHC5ub3ZhdHJhaWwuYXBpLnYxLkxpbWl0Q2F1c2USMgoOYWNjZXNzX3JldHVybnMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wInkKDEVuZ2luZUNob2ljZRIRCgljaG9pY2VfaWQYASABKAkSKgoEa2luZBgCIAEoDjIcLm5vdmF0cmFpbC5hcGkudjEuQ2hvaWNlS2luZBIqCgdvdXRjb21lGAMgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lImgKBlJ1bkVuZBIuCgZyZWFzb24YASABKA4yHi5ub3ZhdHJhaWwuYXBpLnYxLlJ1bkVuZFJlYXNvbhIuCgZjaG9pY2UYAiABKAsyHi5ub3ZhdHJhaWwuYXBpLnYxLkVuZ2luZUNob2ljZSIfCg1FbmRlZFNlZ21lbnRzEg4KBnBsYWNlcxgBIAMoBSrVBwoFQ2F1c2USFQoRQ0FVU0VfVU5TUEVDSUZJRUQQABIUChBDQVVTRV9OT19QUk9GSUxFEAESEwoPQ0FVU0VfTk9UX0ZPVU5EEAISGAoUQ0FVU0VfQVRURU1QVF9DTE9TRUQQAxIaChZDQVVTRV9LRVlfQUxSRUFEWV9VU0VEEAQSFQoRQ0FVU0VfU1RJTExfR09JTkcQBRIdChlDQVVTRV9LRVlfTk9UX0ZPUl9QUk9GSUxFEAYSDwoLQ0FVU0VfUVVPVEEQBxIYChRDQVVTRV9QTEFURk9STV9MSU1JVBAIEhYKEkNBVVNFX05PVF9BRE1JVFRFRBAJEhQKEENBVVNFX0FJX0ZBSUxVUkUQChIXChNDQVVTRV9MSU1JVF9SRUFDSEVEEAsSFQoRQ0FVU0VfS0VZX1JFRlVTRUQQDBIWChJDQVVTRV9BRFVMVF9ORUVERUQQDRIbChdDQVVTRV9MQURERVJfTk9UX1BBU1NFRBAOEhQKEENBVVNFX05PX1NIT1dJTkcQDxIRCg1DQVVTRV9OT19SVU5HEBASFwoTQ0FVU0VfQUxSRUFEWV9BU0tFRBAREhgKFENBVVNFX05PX09USEVSX1dPUkRTEBISFwoTQ0FVU0VfTk9fTU9SRV9XT1JEUxATEhcKE0NBVVNFX05PX1NVQk1JU1NJT04QFBIVChFDQVVTRV9OT1RfQ1VSUkVOVBAVEhMKD0NBVVNFX05PX0FDQ0VTUxAWEhYKEkNBVVNFX0FDQ09VTlRfR09ORRAXEh4KGkNBVVNFX0ZSRVNIX1NJR05fSU5fTkVFREVEEBgSGwoXQ0FVU0VfQ09ERV9OT1RfQUNDRVBURUQQGRIYChRDQVVTRV9BTFJFQURZX0VYSVNUUxAaEh4KGkNBVVNFX0NPVU5UUllfTk9UX0FDQ0VQVEVEEBsSFAoQQ0FVU0VfTk9fQ09OU0VOVBAcEhQKEENBVVNFX1BJTl9MT0NLRUQQHRIZChVDQVVTRV9QSU5fQUxSRUFEWV9TRVQQHhIQCgxDQVVTRV9OT19QSU4QHxIbChdDQVVTRV9WRVJTSU9OX05PVF9HSVZFThAgEhkKFUNBVVNFX1BBQ0tBR0VfVU5LTk9XThAhEhwKGENBVVNFX05PX0NVUlJFTlRfVkVSU0lPThAiEhYKEkNBVVNFX05PVF9TVUlUQUJMRRAjEhMKD0NBVVNFX1JVTl9FTkRFRBAkEhwKGENBVVNFX1NFR01FTlRTX05PVF9FTkRFRBAlEh0KGUNBVVNFX1NFR01FTlRfVU5BVkFJTEFCTEUQJiqIAQoKTGltaXRDYXVzZRIbChdMSU1JVF9DQVVTRV9VTlNQRUNJRklFRBAAEhUKEUxJTUlUX0NBVVNFX0xJTUlUEAESFAoQTElNSVRfQ0FVU0VfVElFUhACEhcKE0xJTUlUX0NBVVNFX0JBTEFOQ0UQAxIXChNMSU1JVF9DQVVTRV9QQVlNRU5UEAQq6wEKC0Nsb3NlUmVhc29uEhwKGENMT1NFX1JFQVNPTl9VTlNQRUNJRklFRBAAEhgKFENMT1NFX1JFQVNPTl9DT1JSRUNUEAESHwobQ0xPU0VfUkVBU09OX1NPTFVUSU9OX1NIT1dOEAISFQoRQ0xPU0VfUkVBU09OX0xFRlQQAxIaChZDTE9TRV9SRUFTT05fQUJBTkRPTkVEEAQSGgoWQ0xPU0VfUkVBU09OX1VOQ0hFQ0tFRBAFEh0KGUNMT1NFX1JFQVNPTl9OT1RfU1VJVEFCTEUQBhIVChFDTE9TRV9SRUFTT05fRE9ORRAHKnAKCkNob2ljZUtpbmQSGwoXQ0hPSUNFX0tJTkRfVU5TUEVDSUZJRUQQABIWChJDSE9JQ0VfS0lORF9MRVNTT04QARIUChBDSE9JQ0VfS0lORF9UQVNLEAISFwoTQ0hPSUNFX0tJTkRfTk9USElORxADKoMCCgpSZWFzb25Db2RlEhsKF1JFQVNPTl9DT0RFX1VOU1BFQ0lGSUVEEAASHQoZUkVBU09OX0NPREVfQ09OU09MSURBVElPThABEhkKFVJFQVNPTl9DT0RFX05FV19TS0lMTBACEhUKEVJFQVNPTl9DT0RFX1FVRVVFEAMSGgoWUkVBU09OX0NPREVfUkVQRVRJVElPThAEEhUKEVJFQVNPTl9DT0RFX1BST0JFEAUSHAoYUkVBU09OX0NPREVfU0tJTExfQ0hPU0VOEAYSHAoYUkVBU09OX0NPREVfQVVUSE9SX09SREVSEAcSGAoUUkVBU09OX0NPREVfT1BFTl9SVU4QCCqmAQoMUnVuRW5kUmVhc29uEh4KGlJVTl9FTkRfUkVBU09OX1VOU1BFQ0lGSUVEEAASGQoVUlVOX0VORF9SRUFTT05fUEFTU0VEEAESHAoYUlVOX0VORF9SRUFTT05fVU5DSEVDS0VEEAISHwobUlVOX0VORF9SRUFTT05fTk9UX1NVSVRBQkxFEAMSHAoYUlVOX0VORF9SRUFTT05fQUJBTkRPTkVEEARCwwEKFGNvbS5ub3ZhdHJhaWwuYXBpLnYxQgpDYXVzZVByb3RvUAFaPWdpdGh1Yi5jb20vYWx0bm92YXRyYWlsL3NwZWMvY29udHJhY3RzL25vdmF0cmFpbC9hcGkvdjE7YXBpdjGiAgNOQViqAhBOb3ZhdHJhaWwuQXBpLlYxygIQTm92YXRyYWlsXEFwaVxWMeICHE5vdmF0cmFpbFxBcGlcVjFcR1BCTWV0YWRhdGHqAhJOb3ZhdHJhaWw6OkFwaTo6VjFiBnByb3RvMw", [file_google_protobuf_timestamp]);
19
20
 
20
21
  /**
21
22
  * Describes the message novatrail.api.v1.Refusal.
@@ -121,11 +122,31 @@ export const ChoiceKindSchema = /*@__PURE__*/
121
122
  export const ChoiceKind = /*@__PURE__*/
122
123
  tsEnum(ChoiceKindSchema);
123
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
+
124
145
  /**
125
146
  * Describes the enum novatrail.api.v1.RunEndReason.
126
147
  */
127
148
  export const RunEndReasonSchema = /*@__PURE__*/
128
- enumDesc(file_novatrail_api_v1_cause, 4);
149
+ enumDesc(file_novatrail_api_v1_cause, 5);
129
150
 
130
151
  /**
131
152
  * Why a lesson run ended (concepts 5). A reason its build does not know `app` reads as an end other
@@ -11,7 +11,7 @@ import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobu
11
11
  import type { Message } from "@bufbuild/protobuf";
12
12
  import type { Action, SubmissionEnd } from "./attempt_pb.js";
13
13
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
14
- import type { CloseReason } from "./cause_pb.js";
14
+ import type { CloseReason, ReasonCode } from "./cause_pb.js";
15
15
 
16
16
  /**
17
17
  * Describes the file novatrail/api/v1/progress.proto.
@@ -340,8 +340,8 @@ export declare type AttemptRecord = Message<"novatrail.api.v1.AttemptRecord"> &
340
340
  closedAt?: Timestamp | undefined;
341
341
 
342
342
  /**
343
- * When the engine chose the task, or the lesson of the run: absent for an attempt begun again by
344
- * the learner.
343
+ * When the engine chose the task, or the lesson of the run by the choice that began the run:
344
+ * absent for an attempt begun again by the learner.
345
345
  *
346
346
  * @generated from field: google.protobuf.Timestamp chosen_at = 8;
347
347
  */
@@ -353,6 +353,14 @@ export declare type AttemptRecord = Message<"novatrail.api.v1.AttemptRecord"> &
353
353
  * @generated from field: repeated novatrail.api.v1.EssayRecord essay_submissions = 9;
354
354
  */
355
355
  essaySubmissions: EssayRecord[];
356
+
357
+ /**
358
+ * The reason code of the choice that `chosen_at` names, which the adult sees and a child is not
359
+ * told (R100): `REASON_CODE_UNSPECIFIED` where `chosen_at` is absent.
360
+ *
361
+ * @generated from field: novatrail.api.v1.ReasonCode reason_code = 10;
362
+ */
363
+ reasonCode: ReasonCode;
356
364
  };
357
365
 
358
366
  /**
@@ -16,7 +16,7 @@ import { file_novatrail_api_v1_cause } from "./cause_pb.js";
16
16
  * Describes the file novatrail/api/v1/progress.proto.
17
17
  */
18
18
  export const file_novatrail_api_v1_progress = /*@__PURE__*/
19
- fileDesc("Ch9ub3ZhdHJhaWwvYXBpL3YxL3Byb2dyZXNzLnByb3RvEhBub3ZhdHJhaWwuYXBpLnYxImUKEkdldFNraWxsTWFwUmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEhEKCW1vZHVsZV9pZBgCIAEoCRIoCgZhY3Rpb24YAyABKA4yGC5ub3ZhdHJhaWwuYXBpLnYxLkFjdGlvbiKWAQoTR2V0U2tpbGxNYXBSZXNwb25zZRIWCg5wYWNrYWdlX2RpZ2VzdBgBIAEoCRIsCgZza2lsbHMYAiADKAsyHC5ub3ZhdHJhaWwuYXBpLnYxLlNraWxsU3RhdGUSOQoNYW5jaG9yX3NraWxscxgDIAMoCzIiLm5vdmF0cmFpbC5hcGkudjEuQW5jaG9yU2tpbGxTdGF0ZSL1AgoKU2tpbGxTdGF0ZRINCgVza2lsbBgBIAEoCRIWCg5ldmlkZW5jZV9jb3VudBgCIAEoBRI1ChFsYXN0X3ByYWN0aWNlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoIZXN0aW1hdGUYBCABKAFIAIgBARIYCgt1bmNlcnRhaW50eRgFIAEoAUgBiAEBEhYKCXJldGVudGlvbhgGIAEoAUgCiAEBEhQKDG1hc3RlcnlfYmFuZBgHIAEoCRIhChRjYXV0aW91c19wcm9iYWJpbGl0eRgIIAEoAUgDiAEBEi8KC3Jldmlld19kYXRlGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpyZXZpZXdfZHVlGAogASgIQgsKCV9lc3RpbWF0ZUIOCgxfdW5jZXJ0YWludHlCDAoKX3JldGVudGlvbkIXChVfY2F1dGlvdXNfcHJvYmFiaWxpdHkirQEKEEFuY2hvclNraWxsU3RhdGUSFAoMYW5jaG9yX3NraWxsGAEgASgJEjUKB2hvbGRpbmcYAiABKA4yJC5ub3ZhdHJhaWwuYXBpLnYxLkFuY2hvclNraWxsSG9sZGluZxIzCgZyZWFzb24YAyABKA4yIy5ub3ZhdHJhaWwuYXBpLnYxLkFuY2hvclNraWxsUmVhc29uEhcKD3RlYWNoaW5nX3NraWxscxgEIAMoCSI8ChJHZXRQcm9ncmVzc1JlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgpwYWdlX3Rva2VuGAIgASgJIpsBChNHZXRQcm9ncmVzc1Jlc3BvbnNlEjEKCGF0dGVtcHRzGAEgAygLMh8ubm92YXRyYWlsLmFwaS52MS5BdHRlbXB0UmVjb3JkEjgKD3JlcGVhdGluZ190cmFwcxgCIAMoCzIfLm5vdmF0cmFpbC5hcGkudjEuUmVwZWF0aW5nVHJhcBIXCg9uZXh0X3BhZ2VfdG9rZW4YAyABKAki1wIKDUF0dGVtcHRSZWNvcmQSDAoEdGFzaxgBIAEoCRIWCg5tb2R1bGVfdmVyc2lvbhgCIAEoCRIOCgZsZXNzb24YAyABKAkSMwoMY2xvc2VfcmVhc29uGAQgASgOMh0ubm92YXRyYWlsLmFwaS52MS5DbG9zZVJlYXNvbhIVCg13cm9uZ19hbnN3ZXJzGAUgASgFEiwKCGJlZ3VuX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCgljbG9zZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWNob3Nlbl9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoRZXNzYXlfc3VibWlzc2lvbnMYCSADKAsyHS5ub3ZhdHJhaWwuYXBpLnYxLkVzc2F5UmVjb3JkIqcBCgtFc3NheVJlY29yZBIwCgxzdWJtaXR0ZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKA2VuZBgCIAEoDjIfLm5vdmF0cmFpbC5hcGkudjEuU3VibWlzc2lvbkVuZBI4Cg9jcml0ZXJpb25fbWFya3MYAyADKA4yHy5ub3ZhdHJhaWwuYXBpLnYxLkNyaXRlcmlvbk1hcmsikgEKDVJlcGVhdGluZ1RyYXASDAoEdHJhcBgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRITCgt0cmFwX2FkdmljZRgDIAEoCRIVCg1hdHRlbXB0X2NvdW50GAQgASgFEjIKDmxhc3RfY2xvc2VkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCqeAQoSQW5jaG9yU2tpbGxIb2xkaW5nEiQKIEFOQ0hPUl9TS0lMTF9IT0xESU5HX1VOU1BFQ0lGSUVEEAASHQoZQU5DSE9SX1NLSUxMX0hPTERJTkdfSEVMRBABEiEKHUFOQ0hPUl9TS0lMTF9IT0xESU5HX05PVF9IRUxEEAISIAocQU5DSE9SX1NLSUxMX0hPTERJTkdfVU5LTk9XThADKtYBChFBbmNob3JTa2lsbFJlYXNvbhIjCh9BTkNIT1JfU0tJTExfUkVBU09OX1VOU1BFQ0lGSUVEEAASJAogQU5DSE9SX1NLSUxMX1JFQVNPTl9OT1RfTUFTVEVSRUQQARIjCh9BTkNIT1JfU0tJTExfUkVBU09OX05PX0VWSURFTkNFEAISJgoiQU5DSE9SX1NLSUxMX1JFQVNPTl9OT0JPRFlfVEVBQ0hFUxADEikKJUFOQ0hPUl9TS0lMTF9SRUFTT05fT05MWV9VTkFTU0VTU0FCTEUQBCqEAQoNQ3JpdGVyaW9uTWFyaxIeChpDUklURVJJT05fTUFSS19VTlNQRUNJRklFRBAAEhYKEkNSSVRFUklPTl9NQVJLX01FVBABEhoKFkNSSVRFUklPTl9NQVJLX05PVF9NRVQQAhIfChtDUklURVJJT05fTUFSS19OT1RfQVNTRVNTRUQQAzLJAQoPUHJvZ3Jlc3NTZXJ2aWNlEloKC0dldFNraWxsTWFwEiQubm92YXRyYWlsLmFwaS52MS5HZXRTa2lsbE1hcFJlcXVlc3QaJS5ub3ZhdHJhaWwuYXBpLnYxLkdldFNraWxsTWFwUmVzcG9uc2USWgoLR2V0UHJvZ3Jlc3MSJC5ub3ZhdHJhaWwuYXBpLnYxLkdldFByb2dyZXNzUmVxdWVzdBolLm5vdmF0cmFpbC5hcGkudjEuR2V0UHJvZ3Jlc3NSZXNwb25zZULGAQoUY29tLm5vdmF0cmFpbC5hcGkudjFCDVByb2dyZXNzUHJvdG9QAVo9Z2l0aHViLmNvbS9hbHRub3ZhdHJhaWwvc3BlYy9jb250cmFjdHMvbm92YXRyYWlsL2FwaS92MTthcGl2MaICA05BWKoCEE5vdmF0cmFpbC5BcGkuVjHKAhBOb3ZhdHJhaWxcQXBpXFYx4gIcTm92YXRyYWlsXEFwaVxWMVxHUEJNZXRhZGF0YeoCEk5vdmF0cmFpbDo6QXBpOjpWMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_novatrail_api_v1_attempt, file_novatrail_api_v1_cause]);
19
+ fileDesc("Ch9ub3ZhdHJhaWwvYXBpL3YxL3Byb2dyZXNzLnByb3RvEhBub3ZhdHJhaWwuYXBpLnYxImUKEkdldFNraWxsTWFwUmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEhEKCW1vZHVsZV9pZBgCIAEoCRIoCgZhY3Rpb24YAyABKA4yGC5ub3ZhdHJhaWwuYXBpLnYxLkFjdGlvbiKWAQoTR2V0U2tpbGxNYXBSZXNwb25zZRIWCg5wYWNrYWdlX2RpZ2VzdBgBIAEoCRIsCgZza2lsbHMYAiADKAsyHC5ub3ZhdHJhaWwuYXBpLnYxLlNraWxsU3RhdGUSOQoNYW5jaG9yX3NraWxscxgDIAMoCzIiLm5vdmF0cmFpbC5hcGkudjEuQW5jaG9yU2tpbGxTdGF0ZSL1AgoKU2tpbGxTdGF0ZRINCgVza2lsbBgBIAEoCRIWCg5ldmlkZW5jZV9jb3VudBgCIAEoBRI1ChFsYXN0X3ByYWN0aWNlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoIZXN0aW1hdGUYBCABKAFIAIgBARIYCgt1bmNlcnRhaW50eRgFIAEoAUgBiAEBEhYKCXJldGVudGlvbhgGIAEoAUgCiAEBEhQKDG1hc3RlcnlfYmFuZBgHIAEoCRIhChRjYXV0aW91c19wcm9iYWJpbGl0eRgIIAEoAUgDiAEBEi8KC3Jldmlld19kYXRlGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpyZXZpZXdfZHVlGAogASgIQgsKCV9lc3RpbWF0ZUIOCgxfdW5jZXJ0YWludHlCDAoKX3JldGVudGlvbkIXChVfY2F1dGlvdXNfcHJvYmFiaWxpdHkirQEKEEFuY2hvclNraWxsU3RhdGUSFAoMYW5jaG9yX3NraWxsGAEgASgJEjUKB2hvbGRpbmcYAiABKA4yJC5ub3ZhdHJhaWwuYXBpLnYxLkFuY2hvclNraWxsSG9sZGluZxIzCgZyZWFzb24YAyABKA4yIy5ub3ZhdHJhaWwuYXBpLnYxLkFuY2hvclNraWxsUmVhc29uEhcKD3RlYWNoaW5nX3NraWxscxgEIAMoCSI8ChJHZXRQcm9ncmVzc1JlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgpwYWdlX3Rva2VuGAIgASgJIpsBChNHZXRQcm9ncmVzc1Jlc3BvbnNlEjEKCGF0dGVtcHRzGAEgAygLMh8ubm92YXRyYWlsLmFwaS52MS5BdHRlbXB0UmVjb3JkEjgKD3JlcGVhdGluZ190cmFwcxgCIAMoCzIfLm5vdmF0cmFpbC5hcGkudjEuUmVwZWF0aW5nVHJhcBIXCg9uZXh0X3BhZ2VfdG9rZW4YAyABKAkiigMKDUF0dGVtcHRSZWNvcmQSDAoEdGFzaxgBIAEoCRIWCg5tb2R1bGVfdmVyc2lvbhgCIAEoCRIOCgZsZXNzb24YAyABKAkSMwoMY2xvc2VfcmVhc29uGAQgASgOMh0ubm92YXRyYWlsLmFwaS52MS5DbG9zZVJlYXNvbhIVCg13cm9uZ19hbnN3ZXJzGAUgASgFEiwKCGJlZ3VuX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCgljbG9zZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWNob3Nlbl9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoRZXNzYXlfc3VibWlzc2lvbnMYCSADKAsyHS5ub3ZhdHJhaWwuYXBpLnYxLkVzc2F5UmVjb3JkEjEKC3JlYXNvbl9jb2RlGAogASgOMhwubm92YXRyYWlsLmFwaS52MS5SZWFzb25Db2RlIqcBCgtFc3NheVJlY29yZBIwCgxzdWJtaXR0ZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKA2VuZBgCIAEoDjIfLm5vdmF0cmFpbC5hcGkudjEuU3VibWlzc2lvbkVuZBI4Cg9jcml0ZXJpb25fbWFya3MYAyADKA4yHy5ub3ZhdHJhaWwuYXBpLnYxLkNyaXRlcmlvbk1hcmsikgEKDVJlcGVhdGluZ1RyYXASDAoEdHJhcBgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRITCgt0cmFwX2FkdmljZRgDIAEoCRIVCg1hdHRlbXB0X2NvdW50GAQgASgFEjIKDmxhc3RfY2xvc2VkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCqeAQoSQW5jaG9yU2tpbGxIb2xkaW5nEiQKIEFOQ0hPUl9TS0lMTF9IT0xESU5HX1VOU1BFQ0lGSUVEEAASHQoZQU5DSE9SX1NLSUxMX0hPTERJTkdfSEVMRBABEiEKHUFOQ0hPUl9TS0lMTF9IT0xESU5HX05PVF9IRUxEEAISIAocQU5DSE9SX1NLSUxMX0hPTERJTkdfVU5LTk9XThADKtYBChFBbmNob3JTa2lsbFJlYXNvbhIjCh9BTkNIT1JfU0tJTExfUkVBU09OX1VOU1BFQ0lGSUVEEAASJAogQU5DSE9SX1NLSUxMX1JFQVNPTl9OT1RfTUFTVEVSRUQQARIjCh9BTkNIT1JfU0tJTExfUkVBU09OX05PX0VWSURFTkNFEAISJgoiQU5DSE9SX1NLSUxMX1JFQVNPTl9OT0JPRFlfVEVBQ0hFUxADEikKJUFOQ0hPUl9TS0lMTF9SRUFTT05fT05MWV9VTkFTU0VTU0FCTEUQBCqEAQoNQ3JpdGVyaW9uTWFyaxIeChpDUklURVJJT05fTUFSS19VTlNQRUNJRklFRBAAEhYKEkNSSVRFUklPTl9NQVJLX01FVBABEhoKFkNSSVRFUklPTl9NQVJLX05PVF9NRVQQAhIfChtDUklURVJJT05fTUFSS19OT1RfQVNTRVNTRUQQAzLJAQoPUHJvZ3Jlc3NTZXJ2aWNlEloKC0dldFNraWxsTWFwEiQubm92YXRyYWlsLmFwaS52MS5HZXRTa2lsbE1hcFJlcXVlc3QaJS5ub3ZhdHJhaWwuYXBpLnYxLkdldFNraWxsTWFwUmVzcG9uc2USWgoLR2V0UHJvZ3Jlc3MSJC5ub3ZhdHJhaWwuYXBpLnYxLkdldFByb2dyZXNzUmVxdWVzdBolLm5vdmF0cmFpbC5hcGkudjEuR2V0UHJvZ3Jlc3NSZXNwb25zZULGAQoUY29tLm5vdmF0cmFpbC5hcGkudjFCDVByb2dyZXNzUHJvdG9QAVo9Z2l0aHViLmNvbS9hbHRub3ZhdHJhaWwvc3BlYy9jb250cmFjdHMvbm92YXRyYWlsL2FwaS92MTthcGl2MaICA05BWKoCEE5vdmF0cmFpbC5BcGkuVjHKAhBOb3ZhdHJhaWxcQXBpXFYx4gIcTm92YXRyYWlsXEFwaVxWMVxHUEJNZXRhZGF0YeoCEk5vdmF0cmFpbDo6QXBpOjpWMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_novatrail_api_v1_attempt, file_novatrail_api_v1_cause]);
20
20
 
21
21
  /**
22
22
  * Describes the message novatrail.api.v1.GetSkillMapRequest.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@altnovatrail/contracts",
3
- "version": "0.8.3",
3
+ "version": "0.8.4",
4
4
  "description": "The code of NovaTrail's API contracts for TypeScript, which protoc-gen-es generates from their protobuf files: the messages and enums of each contract, with their descriptors, for @bufbuild/protobuf and Connect.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {