oracular 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -69,6 +69,18 @@ interface IntentConfig {
69
69
  * weight.
70
70
  */
71
71
  saturate?: boolean;
72
+ /**
73
+ * Each outcome is an episode of its own for this intent, rather than the session. After the
74
+ * outcome arrives, the intent's bookkeeping starts over: a later outcome in the same session
75
+ * counts as another episode even with nothing seen since, and signals seen after an outcome
76
+ * take a miss at the session's close (or wait under `attribution`), as a first attempt would.
77
+ * Default false: the episode is the session, a repeated outcome with nothing seen since counts
78
+ * nothing, and signals seen after an outcome are neutral at the close. For intents shaped as
79
+ * attempts (an upload that fails, then completes, then completes again), where the second
80
+ * attempt is the contrast learning needs. With it set, a duplicated outcome event counts twice:
81
+ * dedupe such events in the app.
82
+ */
83
+ episodePerOutcome?: boolean;
72
84
  /**
73
85
  * How long a closed episode's signals wait for the outcome before they take a miss, in the same
74
86
  * unit as `at`. With it set, an episode that ends without the outcome is held instead of
package/dist/presets.d.ts CHANGED
@@ -69,6 +69,18 @@ interface IntentConfig {
69
69
  * weight.
70
70
  */
71
71
  saturate?: boolean;
72
+ /**
73
+ * Each outcome is an episode of its own for this intent, rather than the session. After the
74
+ * outcome arrives, the intent's bookkeeping starts over: a later outcome in the same session
75
+ * counts as another episode even with nothing seen since, and signals seen after an outcome
76
+ * take a miss at the session's close (or wait under `attribution`), as a first attempt would.
77
+ * Default false: the episode is the session, a repeated outcome with nothing seen since counts
78
+ * nothing, and signals seen after an outcome are neutral at the close. For intents shaped as
79
+ * attempts (an upload that fails, then completes, then completes again), where the second
80
+ * attempt is the contrast learning needs. With it set, a duplicated outcome event counts twice:
81
+ * dedupe such events in the app.
82
+ */
83
+ episodePerOutcome?: boolean;
72
84
  /**
73
85
  * How long a closed episode's signals wait for the outcome before they take a miss, in the same
74
86
  * unit as `at`. With it set, an episode that ends without the outcome is held instead of
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oracular",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "On-device intent engine. Your app learns when the user is ready. Nothing leaves the device.",
5
5
  "keywords": [
6
6
  "oracular",
@@ -91,6 +91,10 @@
91
91
  "type": "boolean",
92
92
  "description": "Repeats of a signal within one episode add less. Default: true when episodeTimeout is set, false otherwise."
93
93
  },
94
+ "episodePerOutcome": {
95
+ "type": "boolean",
96
+ "description": "Each outcome is an episode of its own for this intent: a later outcome in the same session counts as another episode even with nothing seen since, and signals seen after an outcome take a miss at the session's close. Default false: the episode is the session."
97
+ },
94
98
  "attribution": {
95
99
  "$ref": "#/$defs/duration",
96
100
  "description": "How long a closed episode's signals wait for the outcome before they take a miss. An outcome inside the window credits each waiting episode by 2^(−age / halfLife). Unset: a miss at once when the episode ends."