@seanhogg/builderforce-memory-engine 2026.10.1 → 2026.10.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.
Files changed (122) hide show
  1. package/dist/evermind/delta_wire.d.ts +16 -1
  2. package/dist/evermind/delta_wire.d.ts.map +1 -1
  3. package/dist/evermind/delta_wire.js +22 -2
  4. package/dist/evermind/delta_wire.js.map +1 -1
  5. package/dist/evermind/index.d.ts +2 -2
  6. package/dist/evermind/index.d.ts.map +1 -1
  7. package/dist/evermind/index.js +1 -1
  8. package/dist/evermind/index.js.map +1 -1
  9. package/dist/evermind/merge.d.ts +5 -2
  10. package/dist/evermind/merge.d.ts.map +1 -1
  11. package/dist/evermind/merge.js +5 -2
  12. package/dist/evermind/merge.js.map +1 -1
  13. package/dist/evermind/ml_head.d.ts +28 -0
  14. package/dist/evermind/ml_head.d.ts.map +1 -0
  15. package/dist/evermind/ml_head.js +47 -0
  16. package/dist/evermind/ml_head.js.map +1 -0
  17. package/dist/evermind/package.d.ts +2 -2
  18. package/dist/evermind/package.d.ts.map +1 -1
  19. package/dist/evermind/package.js +1 -1
  20. package/dist/evermind/package.js.map +1 -1
  21. package/dist/index.d.ts +2 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/limbic/limbic_model.d.ts.map +1 -1
  26. package/dist/limbic/limbic_model.js +1 -3
  27. package/dist/limbic/limbic_model.js.map +1 -1
  28. package/dist/ml/classical/anomaly_composite.d.ts +32 -0
  29. package/dist/ml/classical/anomaly_composite.d.ts.map +1 -0
  30. package/dist/ml/classical/anomaly_composite.js +29 -0
  31. package/dist/ml/classical/anomaly_composite.js.map +1 -0
  32. package/dist/ml/classical/ewma.d.ts +6 -1
  33. package/dist/ml/classical/ewma.d.ts.map +1 -1
  34. package/dist/ml/classical/ewma.js +5 -3
  35. package/dist/ml/classical/ewma.js.map +1 -1
  36. package/dist/ml/classical/gbm.d.ts.map +1 -1
  37. package/dist/ml/classical/gbm.js +2 -1
  38. package/dist/ml/classical/gbm.js.map +1 -1
  39. package/dist/ml/classical/index.d.ts +4 -0
  40. package/dist/ml/classical/index.d.ts.map +1 -1
  41. package/dist/ml/classical/index.js +4 -0
  42. package/dist/ml/classical/index.js.map +1 -1
  43. package/dist/ml/classical/kmeans.d.ts.map +1 -1
  44. package/dist/ml/classical/kmeans.js +23 -4
  45. package/dist/ml/classical/kmeans.js.map +1 -1
  46. package/dist/ml/classical/knn.d.ts +4 -1
  47. package/dist/ml/classical/knn.d.ts.map +1 -1
  48. package/dist/ml/classical/knn.js +2 -1
  49. package/dist/ml/classical/knn.js.map +1 -1
  50. package/dist/ml/classical/logistic.d.ts +1 -9
  51. package/dist/ml/classical/logistic.d.ts.map +1 -1
  52. package/dist/ml/classical/logistic.js +17 -9
  53. package/dist/ml/classical/logistic.js.map +1 -1
  54. package/dist/ml/classical/naive_bayes.d.ts +5 -1
  55. package/dist/ml/classical/naive_bayes.d.ts.map +1 -1
  56. package/dist/ml/classical/naive_bayes.js +8 -3
  57. package/dist/ml/classical/naive_bayes.js.map +1 -1
  58. package/dist/ml/classical/robust_z.d.ts +9 -1
  59. package/dist/ml/classical/robust_z.d.ts.map +1 -1
  60. package/dist/ml/classical/robust_z.js +2 -1
  61. package/dist/ml/classical/robust_z.js.map +1 -1
  62. package/dist/ml/eval_loss.d.ts +15 -0
  63. package/dist/ml/eval_loss.d.ts.map +1 -0
  64. package/dist/ml/eval_loss.js +20 -0
  65. package/dist/ml/eval_loss.js.map +1 -0
  66. package/dist/ml/federate.d.ts +11 -25
  67. package/dist/ml/federate.d.ts.map +1 -1
  68. package/dist/ml/federate.js +15 -38
  69. package/dist/ml/federate.js.map +1 -1
  70. package/dist/ml/head_trainer.d.ts +4 -2
  71. package/dist/ml/head_trainer.d.ts.map +1 -1
  72. package/dist/ml/head_trainer.js +19 -19
  73. package/dist/ml/head_trainer.js.map +1 -1
  74. package/dist/ml/run.d.ts +11 -2
  75. package/dist/ml/run.d.ts.map +1 -1
  76. package/dist/ml/run.js +56 -17
  77. package/dist/ml/run.js.map +1 -1
  78. package/dist/ml/tasks/experience.d.ts +42 -5
  79. package/dist/ml/tasks/experience.d.ts.map +1 -1
  80. package/dist/ml/tasks/experience.js +76 -19
  81. package/dist/ml/tasks/experience.js.map +1 -1
  82. package/dist/ml/tasks/run_anomaly.d.ts +20 -19
  83. package/dist/ml/tasks/run_anomaly.d.ts.map +1 -1
  84. package/dist/ml/tasks/run_anomaly.js +20 -30
  85. package/dist/ml/tasks/run_anomaly.js.map +1 -1
  86. package/dist/ml/train.d.ts +2 -7
  87. package/dist/ml/train.d.ts.map +1 -1
  88. package/dist/ml/train.js +2 -19
  89. package/dist/ml/train.js.map +1 -1
  90. package/dist/ml/types.d.ts +6 -3
  91. package/dist/ml/types.d.ts.map +1 -1
  92. package/dist/ml/types.js +3 -2
  93. package/dist/ml/types.js.map +1 -1
  94. package/package.json +1 -1
  95. package/src/evermind/delta_wire.ts +173 -148
  96. package/src/evermind/index.ts +36 -35
  97. package/src/evermind/merge.ts +10 -4
  98. package/src/evermind/ml_head.ts +63 -0
  99. package/src/evermind/package.ts +488 -488
  100. package/src/index.ts +2 -0
  101. package/src/limbic/limbic_model.ts +1 -4
  102. package/src/limbic/limbic_trainer.ts +91 -91
  103. package/src/ml/classical/anomaly_composite.ts +46 -0
  104. package/src/ml/classical/ewma.ts +7 -1
  105. package/src/ml/classical/gbm.ts +144 -143
  106. package/src/ml/classical/index.ts +6 -0
  107. package/src/ml/classical/kmeans.ts +22 -4
  108. package/src/ml/classical/knn.ts +6 -2
  109. package/src/ml/classical/logistic.ts +9 -9
  110. package/src/ml/classical/math.ts +93 -93
  111. package/src/ml/classical/naive_bayes.ts +10 -3
  112. package/src/ml/classical/robust_z.ts +11 -2
  113. package/src/ml/eval_loss.ts +27 -0
  114. package/src/ml/federate.ts +22 -52
  115. package/src/ml/head_trainer.ts +21 -42
  116. package/src/ml/registry.ts +44 -44
  117. package/src/ml/run.ts +57 -13
  118. package/src/ml/tasks/experience.ts +98 -19
  119. package/src/ml/tasks/run_anomaly.ts +30 -36
  120. package/src/ml/train.ts +3 -19
  121. package/src/ml/types.ts +135 -132
  122. package/src/training/cpu_ops.ts +141 -141
package/dist/ml/run.js CHANGED
@@ -59,32 +59,51 @@ export class MlEngineUnavailableError extends Error {
59
59
  taskId;
60
60
  decision;
61
61
  constructor(taskId, decision) {
62
- super(`runMlTask(${taskId}): no engine could answer in '${decision.mode}' mode (${decision.skipped.map((s) => `${s.engine}: ${s.reason}`).join(", ") || "none allowed"})`);
62
+ super(`runMlTask(${taskId}): no engine could answer in '${decision.mode}' mode (${decision.skipped.map((s) => `${s.engine}: ${s.reason}${s.detail ? ` (${s.detail})` : ""}`).join(", ") || "none allowed"})`);
63
63
  this.taskId = taskId;
64
64
  this.decision = decision;
65
65
  this.name = "MlEngineUnavailableError";
66
66
  }
67
67
  }
68
- /** The task's engines the mode allows, in the order the runner tries them. */
68
+ /**
69
+ * The task's engines the mode allows, in the order the runner tries them. Exhaustive:
70
+ * a mode string outside {@link InferenceMode} (a host passing a stale or mistyped
71
+ * setting) throws instead of being read as `specific`.
72
+ */
69
73
  export function candidateEngines(task, mode, specific) {
70
- if (mode === "local-only")
71
- return task.engines.filter((e) => e.tier === "local");
72
- if (mode === "hybrid")
73
- return [...task.engines.filter((e) => e.tier === "local"), ...task.engines.filter((e) => e.tier === "cloud")];
74
- if (specific == null)
75
- throw new Error(`runMlTask(${task.id}): 'specific' mode needs ctx.engine`);
76
- const key = typeof specific === "string" ? specific : engineKey(specific);
77
- const match = task.engines.filter((e) => engineKey(e) === key);
78
- if (match.length === 0)
79
- throw new Error(`runMlTask(${task.id}): engine '${key}' is not one of this task's engines`);
80
- return match;
74
+ switch (mode) {
75
+ case "local-only":
76
+ return task.engines.filter((e) => e.tier === "local");
77
+ case "hybrid":
78
+ return [...task.engines.filter((e) => e.tier === "local"), ...task.engines.filter((e) => e.tier === "cloud")];
79
+ case "specific": {
80
+ if (specific == null)
81
+ throw new Error(`runMlTask(${task.id}): 'specific' mode needs ctx.engine`);
82
+ const key = typeof specific === "string" ? specific : engineKey(specific);
83
+ const match = task.engines.filter((e) => engineKey(e) === key);
84
+ if (match.length === 0)
85
+ throw new Error(`runMlTask(${task.id}): engine '${key}' is not one of this task's engines`);
86
+ return match;
87
+ }
88
+ default: {
89
+ const unknown = mode;
90
+ throw new Error(`runMlTask(${task.id}): unknown inference mode '${String(unknown)}'`);
91
+ }
92
+ }
81
93
  }
82
- /** Answer task `id` for `input` with the first engine the mode allows that can. */
94
+ const errorDetail = (error) => (error instanceof Error ? error.message : String(error));
95
+ /**
96
+ * Answer task `id` for `input` with the first engine the mode allows that can. An
97
+ * engine that throws (feature extraction or its own predict) is recorded as an
98
+ * `error` skip and the next allowed engine is tried — in Hybrid, the cloud. Throws
99
+ * {@link MlEngineUnavailableError}, carrying every engine's reason, only when none answers.
100
+ */
83
101
  export async function runMlTask(id, input, ctx) {
84
102
  const task = ctx.registry.require(id);
85
103
  const engines = candidateEngines(task, ctx.mode, ctx.engine);
86
104
  const skipped = [];
87
105
  let features = null;
106
+ let featureError = null;
88
107
  let deferred = null;
89
108
  const finish = (ref, p) => {
90
109
  ctx.decisions?.record({ taskId: id, mode: ctx.mode, engine: engineKey(ref), tier: ref.tier, confidence: p.confidence, skipped });
@@ -99,8 +118,28 @@ export async function runMlTask(id, input, ctx) {
99
118
  skipped.push({ engine: key, reason: "unavailable" });
100
119
  continue;
101
120
  }
102
- features ??= await extractFeatures(task.features, input, ctx.embedder);
103
- const p = predictor.predict(features);
121
+ // Extract once; a failure (e.g. no embedder) fails every local engine alike, so
122
+ // it is remembered rather than retried per engine.
123
+ if (!features && featureError == null) {
124
+ try {
125
+ features = await extractFeatures(task.features, input, ctx.embedder);
126
+ }
127
+ catch (error) {
128
+ featureError = error;
129
+ }
130
+ }
131
+ if (!features) {
132
+ skipped.push({ engine: key, reason: "error", detail: `features: ${errorDetail(featureError)}` });
133
+ continue;
134
+ }
135
+ let p;
136
+ try {
137
+ p = predictor.predict(features);
138
+ }
139
+ catch (error) {
140
+ skipped.push({ engine: key, reason: "error", detail: errorDetail(error) });
141
+ continue;
142
+ }
104
143
  const cloudLater = ctx.mode === "hybrid" && !!ctx.cloud && engines.slice(i + 1).some((e) => e.tier === "cloud");
105
144
  if (ctx.minConfidence != null && p.confidence < ctx.minConfidence && cloudLater) {
106
145
  skipped.push({ engine: key, reason: "low-confidence", detail: p.confidence.toFixed(3) });
@@ -117,7 +156,7 @@ export async function runMlTask(id, input, ctx) {
117
156
  return finish(ref, await ctx.cloud.run({ taskId: id, engine: ref, input }));
118
157
  }
119
158
  catch (error) {
120
- skipped.push({ engine: key, reason: "error", detail: error instanceof Error ? error.message : String(error) });
159
+ skipped.push({ engine: key, reason: "error", detail: errorDetail(error) });
121
160
  }
122
161
  }
123
162
  // The cloud could not answer after a low-confidence local one: the local answer stands.
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/ml/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/ml/run.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import { type ExperienceDocument } from "../../experience/corpus.js";
8
8
  import type { Episode, Run, Skill } from "../../experience/types.js";
9
9
  import { type TextEmbedder } from "../features.js";
10
10
  import { type MlRunContext } from "../run.js";
11
- import type { MlTrainExample } from "../train.js";
11
+ import { type MlTrainExample } from "../train.js";
12
12
  import type { MlPrediction, MlPredictor, MlTask } from "../types.js";
13
13
  /** One learnable procedure plus the outcome fields that say how well it went. */
14
14
  export interface ExperienceQualityInput {
@@ -60,7 +60,8 @@ export interface CurationOptions {
60
60
  dedupeThreshold?: number;
61
61
  /**
62
62
  * Quality filter through the runner. A document whose P(high) is below `minPHigh`
63
- * (default 0.5) is dropped; one the runner cannot score (no trained engine) is kept.
63
+ * (default 0.5) is dropped; one the runner cannot score (no trained engine) is kept,
64
+ * and so is an UNSCORED one (`runs === 0` — never run is unknown, not bad).
64
65
  */
65
66
  quality?: {
66
67
  ctx: MlRunContext;
@@ -69,7 +70,22 @@ export interface CurationOptions {
69
70
  };
70
71
  /** Document ids to leave out (e.g. those whose runs `run.anomaly` flagged). */
71
72
  exclude?: ReadonlySet<string>;
73
+ /**
74
+ * Documents the model has ALREADY learned. They seed the de-duplication index, so a
75
+ * pending document that only repeats one of them is dropped (reported `of` that
76
+ * one); they are never in `kept`. Each is embedded once per call, so this is
77
+ * bounded — {@link curatePendingExperience} keeps the {@link CURATION_KNOWN_LIMIT}
78
+ * most recently learned.
79
+ */
80
+ known?: readonly ExperienceDocument[];
72
81
  }
82
+ /**
83
+ * How many already-learned documents curation de-duplicates against: the most
84
+ * recently learned ones. Each costs one CPU embed per curation call, and a
85
+ * repeat of something learned long ago is cheap to relearn, so a recent window is the
86
+ * trade — 200 embeds of a small Evermind take seconds on a laptop CPU.
87
+ */
88
+ export declare const CURATION_KNOWN_LIMIT = 200;
73
89
  export interface CurationResult {
74
90
  kept: ExperienceDocument[];
75
91
  dropped: {
@@ -82,9 +98,30 @@ export interface CurationResult {
82
98
  /**
83
99
  * Curate documents before they are packed into adaptation passes: drop excluded
84
100
  * ones, low-quality ones (when a quality filter is given), then near-duplicates of
85
- * an earlier kept one. Order is preserved, and the FIRST copy wins — compiled
86
- * skills come before raw demonstrations in `experienceDocuments`, so the reviewed
87
- * version is the one kept.
101
+ * an already-learned one (`known`) or an earlier kept one. Order is preserved, and
102
+ * the FIRST copy wins — compiled skills come before raw demonstrations in
103
+ * `experienceDocuments`, so the reviewed version is the one kept.
88
104
  */
89
105
  export declare function curateExperience(docs: readonly ExperienceDocument[], opts: CurationOptions): Promise<CurationResult>;
106
+ /** What {@link curatePendingExperience} reads: the experience snapshot's raw records. */
107
+ export interface ExperienceCurationSource {
108
+ episodes: Episode[];
109
+ skills: Skill[];
110
+ runs: readonly Run[];
111
+ }
112
+ /**
113
+ * The whole curation step a host runs in front of the adaptation passes, so every
114
+ * host wires it the same way: train `experience.quality` on the run outcomes there
115
+ * are (it stays untrained below its `minSamples`, and then nothing is dropped for
116
+ * quality), then {@link curateExperience} the pending documents with it,
117
+ * de-duplicating against each other and against `known` — the already-learned
118
+ * documents, MOST RECENTLY LEARNED FIRST; only the first {@link CURATION_KNOWN_LIMIT}
119
+ * are embedded, so a host can pass its whole ledger.
120
+ */
121
+ export declare function curatePendingExperience(pending: readonly ExperienceDocument[], source: ExperienceCurationSource, opts: {
122
+ embedder: TextEmbedder;
123
+ known?: readonly ExperienceDocument[];
124
+ dedupeThreshold?: number;
125
+ minPHigh?: number;
126
+ }): Promise<CurationResult>;
90
127
  //# sourceMappingURL=experience.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../../src/ml/tasks/experience.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../../src/ml/tasks/experience.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAyD,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACrG,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrE,iFAAiF;AACjF,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,kBAAkB,CAAC;IACxB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,eAAe;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAwBrF,CAAC;AAEF,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,GAAE,SAAS,GAAG,EAAO,GAAG,sBAAsB,EAAE,CAgBjI;AAED,wHAAwH;AACxH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAG/E;AAED,2FAA2F;AAC3F,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,GAAG,cAAc,CAAC,sBAAsB,CAAC,EAAE,CAK7H;AAID,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CASlF,CAAC;AAEF;;;GAGG;AACH,qBAAa,WAAY,YAAW,WAAW;IAGjC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAFtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;gBAEhC,SAAS,GAAE,MAAiC;IAEjE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAI1B,OAAO,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY;CAMvC;AAID,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,QAAQ,EAAE,YAAY,CAAC;IACvB,sHAAsH;IACtH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE;QACR,GAAG,EAAE,YAAY,CAAC;QAClB,KAAK,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,sBAAsB,CAAC;QAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,+EAA+E;IAC/E,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACvC;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAC3B,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1G;AAgBD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,SAAS,kBAAkB,EAAE,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA8C1H;AAED,yFAAyF;AACzF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,SAAS,kBAAkB,EAAE,EACtC,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACnH,OAAO,CAAC,cAAc,CAAC,CAoBzB"}
@@ -6,22 +6,30 @@
6
6
  */
7
7
  import { experienceDocuments } from "../../experience/corpus.js";
8
8
  import { KnnModel } from "../classical/knn.js";
9
- import { clampRatio, logScale } from "../features.js";
10
- import { MlEngineUnavailableError, runMlTask } from "../run.js";
9
+ import { logScale } from "../features.js";
10
+ import { MlTaskRegistry } from "../registry.js";
11
+ import { InMemoryMlModels, MlEngineUnavailableError, runMlTask } from "../run.js";
12
+ import { trainMlTask } from "../train.js";
11
13
  export const EXPERIENCE_QUALITY_TASK = {
12
14
  kind: "classify",
13
15
  id: "experience.quality",
14
16
  description: "Is this procedure worth learning from (does it run, and run well)?",
15
17
  features: {
16
18
  text: (i) => i.doc.text,
17
- numeric: (i) => [logScale(i.steps, 50), logScale(i.runs, 20), clampRatio(i.succeeded, i.runs, 1), clampRatio(i.failed, i.runs, 1)],
18
- numericNames: ["steps", "runs", "successRate", "failureRate"],
19
+ // No success/failure rate: the label IS `succeeded / runs >= 0.5`, so a rate
20
+ // feature would leak it — the model would learn the label, not the procedure.
21
+ numeric: (i) => [logScale(i.steps, 50), logScale(i.runs, 20)],
22
+ numericNames: ["steps", "runs"],
19
23
  },
20
24
  engines: [
21
25
  { tier: "local", engine: "classical", algorithm: "knn" },
22
26
  { tier: "local", engine: "classical", algorithm: "logistic" },
23
27
  ],
24
- train: { minSamples: 4 },
28
+ // Below 12 labelled procedures the task stays untrained and curation keeps
29
+ // everything. At 12, after the 20% holdout ≈10 remain to fit, both classes can have
30
+ // several members, and kNN votes with k = ⌊√n⌋ = 3 neighbours rather than the whole
31
+ // set — with fewer, every point votes and the answer collapses to the class prior.
32
+ train: { minSamples: 12 },
25
33
  output: {
26
34
  labels: ["low", "high"],
27
35
  decode: (p) => ({ label: (p.scores[1] ?? 0) >= 0.5 ? "high" : "low", pHigh: p.scores[1] ?? 0 }),
@@ -97,6 +105,13 @@ export class DedupeIndex {
97
105
  return { scores: [n.index, n.similarity, dup ? 1 : 0], confidence: Math.abs(n.similarity) };
98
106
  }
99
107
  }
108
+ /**
109
+ * How many already-learned documents curation de-duplicates against: the most
110
+ * recently learned ones. Each costs one CPU embed per curation call, and a
111
+ * repeat of something learned long ago is cheap to relearn, so a recent window is the
112
+ * trade — 200 embeds of a small Evermind take seconds on a laptop CPU.
113
+ */
114
+ export const CURATION_KNOWN_LIMIT = 200;
100
115
  /** Memoise an embedder for one call, so curation embeds each text once. */
101
116
  function memoEmbedder(e) {
102
117
  const cache = new Map();
@@ -114,43 +129,85 @@ function memoEmbedder(e) {
114
129
  /**
115
130
  * Curate documents before they are packed into adaptation passes: drop excluded
116
131
  * ones, low-quality ones (when a quality filter is given), then near-duplicates of
117
- * an earlier kept one. Order is preserved, and the FIRST copy wins — compiled
118
- * skills come before raw demonstrations in `experienceDocuments`, so the reviewed
119
- * version is the one kept.
132
+ * an already-learned one (`known`) or an earlier kept one. Order is preserved, and
133
+ * the FIRST copy wins — compiled skills come before raw demonstrations in
134
+ * `experienceDocuments`, so the reviewed version is the one kept.
120
135
  */
121
136
  export async function curateExperience(docs, opts) {
122
137
  const embedder = memoEmbedder(opts.embedder);
123
138
  const index = new DedupeIndex(opts.dedupeThreshold ?? DEFAULT_DEDUPE_THRESHOLD);
139
+ /** Index position → document id: the known documents first, then each kept one. */
140
+ const indexed = [];
124
141
  const kept = [];
125
142
  const dropped = [];
126
143
  const qctx = opts.quality ? { ...opts.quality.ctx, embedder } : null;
144
+ const embedDoc = (doc) => embedder.embed(EXPERIENCE_DEDUPE_TASK.features.text(doc));
145
+ for (const doc of opts.known ?? []) {
146
+ index.add(await embedDoc(doc));
147
+ indexed.push(doc.id);
148
+ }
127
149
  for (const doc of docs) {
128
150
  if (opts.exclude?.has(doc.id)) {
129
151
  dropped.push({ id: doc.id, reason: "excluded" });
130
152
  continue;
131
153
  }
132
154
  if (opts.quality && qctx) {
133
- try {
134
- const r = await runMlTask(EXPERIENCE_QUALITY_TASK.id, opts.quality.input(doc), qctx);
135
- if (r.output.pHigh < (opts.quality.minPHigh ?? 0.5)) {
136
- dropped.push({ id: doc.id, reason: "low-quality", score: r.output.pHigh });
137
- continue;
155
+ const input = opts.quality.input(doc);
156
+ // Never run ⇒ no outcome to judge it by: keep it rather than let a guess drop it.
157
+ if (input.runs > 0) {
158
+ try {
159
+ const r = await runMlTask(EXPERIENCE_QUALITY_TASK.id, input, qctx);
160
+ if (r.output.pHigh < (opts.quality.minPHigh ?? 0.5)) {
161
+ dropped.push({ id: doc.id, reason: "low-quality", score: r.output.pHigh });
162
+ continue;
163
+ }
164
+ }
165
+ catch (error) {
166
+ if (!(error instanceof MlEngineUnavailableError))
167
+ throw error;
138
168
  }
139
- }
140
- catch (error) {
141
- if (!(error instanceof MlEngineUnavailableError))
142
- throw error;
143
169
  }
144
170
  }
145
- const x = await embedder.embed(EXPERIENCE_DEDUPE_TASK.features.text(doc));
171
+ const x = await embedDoc(doc);
146
172
  const d = EXPERIENCE_DEDUPE_TASK.output.decode(index.predict(x));
147
173
  if (d.duplicate) {
148
- dropped.push({ id: doc.id, reason: "duplicate", of: kept[d.nearest].id, score: d.similarity });
174
+ dropped.push({ id: doc.id, reason: "duplicate", of: indexed[d.nearest], score: d.similarity });
149
175
  continue;
150
176
  }
151
177
  index.add(x);
178
+ indexed.push(doc.id);
152
179
  kept.push(doc);
153
180
  }
154
181
  return { kept, dropped };
155
182
  }
183
+ /**
184
+ * The whole curation step a host runs in front of the adaptation passes, so every
185
+ * host wires it the same way: train `experience.quality` on the run outcomes there
186
+ * are (it stays untrained below its `minSamples`, and then nothing is dropped for
187
+ * quality), then {@link curateExperience} the pending documents with it,
188
+ * de-duplicating against each other and against `known` — the already-learned
189
+ * documents, MOST RECENTLY LEARNED FIRST; only the first {@link CURATION_KNOWN_LIMIT}
190
+ * are embedded, so a host can pass its whole ledger.
191
+ */
192
+ export async function curatePendingExperience(pending, source, opts) {
193
+ const known = opts.known?.slice(0, CURATION_KNOWN_LIMIT);
194
+ const embedder = memoEmbedder(opts.embedder);
195
+ const inputs = experienceQualityInputs(source.episodes, source.skills, source.runs);
196
+ const byId = new Map(inputs.map((i) => [i.doc.id, i]));
197
+ const registry = new MlTaskRegistry();
198
+ registry.register(EXPERIENCE_QUALITY_TASK);
199
+ const models = new InMemoryMlModels();
200
+ await trainMlTask(EXPERIENCE_QUALITY_TASK, experienceQualityExamples(inputs), { embedder, models });
201
+ return curateExperience(pending, {
202
+ embedder,
203
+ ...(known ? { known } : {}),
204
+ ...(opts.dedupeThreshold != null ? { dedupeThreshold: opts.dedupeThreshold } : {}),
205
+ quality: {
206
+ ctx: { registry, mode: "local-only", models },
207
+ // A document with no joined input (not in the snapshot) counts as never run.
208
+ input: (doc) => byId.get(doc.id) ?? { doc, steps: 0, runs: 0, succeeded: 0, failed: 0 },
209
+ ...(opts.minPHigh != null ? { minPHigh: opts.minPHigh } : {}),
210
+ },
211
+ });
212
+ }
156
213
  //# sourceMappingURL=experience.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"experience.js","sourceRoot":"","sources":["../../../src/ml/tasks/experience.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experience.js","sourceRoot":"","sources":["../../../src/ml/tasks/experience.ts"],"names":[],"mappings":"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"}
@@ -3,14 +3,14 @@
3
3
  * outside its normal range. Flags runs to leave out of training and to surface as
4
4
  * Insights.
5
5
  *
6
- * Two detectors, one answer: robust z (median/MAD over the whole history — "far
7
- * from normal") and EWMA (the recent trend — "drifting away from lately"). The
8
- * score is the larger of the two, so either one can flag.
6
+ * ONE engine, `anomaly-composite`: robust z (median/MAD over the whole history —
7
+ * "far from normal") and EWMA (the recent trend — "drifting away from lately"),
8
+ * scored as the larger of the two so either one can flag. The row lists exactly
9
+ * that engine, so the key it is stored under is the key the runner asks for.
9
10
  */
10
11
  import type { Run } from "../../experience/types.js";
11
- import { EwmaModel, type EwmaOptions } from "../classical/ewma.js";
12
- import { RobustZModel, type RobustZOptions } from "../classical/robust_z.js";
13
- import type { MlPrediction, MlPredictor, MlSample, MlTask } from "../types.js";
12
+ import { AnomalyCompositeModel, type AnomalyCompositeOptions } from "../classical/anomaly_composite.js";
13
+ import type { MlSample, MlTask } from "../types.js";
14
14
  /** What a run cost and how it went — the host supplies cost; the rest is in the run log. */
15
15
  export interface RunMetrics {
16
16
  costUsd: number;
@@ -25,26 +25,27 @@ export interface RunAnomaly {
25
25
  export declare const RUN_ANOMALY_METRICS: readonly ["cost", "duration", "toolFailures"];
26
26
  /** Fixed log scales (a $10 run, a one-hour run, 50 failures map to 1). */
27
27
  export declare function runAnomalyFeatures(m: RunMetrics): number[];
28
- /** Robust z over the history, combined with EWMA over its recent trend. */
29
- export declare class RunAnomalyDetector implements MlPredictor {
30
- readonly population: RobustZModel;
31
- readonly trend: EwmaModel;
32
- constructor(population: RobustZModel, trend: EwmaModel);
28
+ /**
29
+ * The smallest per-metric scale (σ) both detectors use, in the fixed log units above.
30
+ * A history with no tool failures has MAD = mean-AD = 0 and EWMA σ = 0, so without an
31
+ * absolute floor ONE failure (log1p(1)/log1p(50) ≈ 0.18) scored as a huge outlier and
32
+ * every run with any failure was flagged. At 0.1, one or two failures after a clean
33
+ * history stay normal (z ≈ 1.8 / 2.8) and three or more flag (z ≥ 3.5); on cost, 0.1
34
+ * is ~0.7 nats, so a constant-cost history flags a ~10× jump. (0.05 was too tight: it
35
+ * still flagged a single failure.)
36
+ */
37
+ export declare const RUN_ANOMALY_MIN_SCALE = 0.1;
38
+ /** The composite detector with `run.anomaly`'s metric names on its explanation. */
39
+ export declare class RunAnomalyDetector extends AnomalyCompositeModel {
33
40
  /** Which metrics are out of range, per detector (z / threshold, ≥ 1 = out of range). */
34
41
  explain(x: ArrayLike<number>): {
35
42
  metric: (typeof RUN_ANOMALY_METRICS)[number];
36
43
  population: number;
37
44
  trend: number;
38
45
  }[];
39
- /** Fold a finished, non-anomalous run into the trend. */
40
- observe(x: ArrayLike<number>): void;
41
- predict(x: Float32Array): MlPrediction;
42
46
  }
43
- /** Fit both detectors on a chronological history of runs (as feature vectors). */
44
- export declare function fitRunAnomaly(samples: readonly MlSample[], opts?: {
45
- robustZ?: RobustZOptions;
46
- ewma?: EwmaOptions;
47
- }): RunAnomalyDetector;
47
+ /** Fit both detectors on a chronological history of runs (as feature vectors), floored at {@link RUN_ANOMALY_MIN_SCALE}. */
48
+ export declare function fitRunAnomaly(samples: readonly MlSample[], opts?: AnomalyCompositeOptions): RunAnomalyDetector;
48
49
  export declare const RUN_ANOMALY_TASK: MlTask<RunMetrics, RunAnomaly>;
49
50
  /** Duration and tool-failure count of an experience run, with the host's cost. */
50
51
  export declare function experienceRunMetrics(run: Run, costUsd?: number): RunMetrics;
@@ -1 +1 @@
1
- {"version":3,"file":"run_anomaly.d.ts","sourceRoot":"","sources":["../../../src/ml/tasks/run_anomaly.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAW,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAiC,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE5G,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE/E,4FAA4F;AAC5F,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,mBAAmB,+CAAgD,CAAC;AAEjF,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAE1D;AAED,2EAA2E;AAC3E,qBAAa,kBAAmB,YAAW,WAAW;IAElD,QAAQ,CAAC,UAAU,EAAE,YAAY;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS;gBADhB,UAAU,EAAE,YAAY,EACxB,KAAK,EAAE,SAAS;IAG3B,wFAAwF;IACxF,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG;QAAE,MAAM,EAAE,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;IAUpH,yDAAyD;IACzD,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;IAInC,OAAO,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY;CAIvC;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,EAAE,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,cAAc,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAAO,GAAG,kBAAkB,CAE3I;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAW3D,CAAC;AAEF,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,SAAI,GAAG,UAAU,CAMtE"}
1
+ {"version":3,"file":"run_anomaly.d.ts","sourceRoot":"","sources":["../../../src/ml/tasks/run_anomaly.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,KAAK,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAIxG,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAElE,4FAA4F;AAC5F,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,mBAAmB,+CAAgD,CAAC;AAEjF,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAE1D;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,mFAAmF;AACnF,qBAAa,kBAAmB,SAAQ,qBAAqB;IAC3D,wFAAwF;IACxF,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG;QAAE,MAAM,EAAE,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;CAIrH;AAED,4HAA4H;AAC5H,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,EAAE,IAAI,GAAE,uBAA4B,GAAG,kBAAkB,CAKlH;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAS3D,CAAC;AAEF,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,SAAI,GAAG,UAAU,CAMtE"}
@@ -1,51 +1,41 @@
1
+ import { AnomalyCompositeModel } from "../classical/anomaly_composite.js";
1
2
  import { fitEwma } from "../classical/ewma.js";
2
- import { anomalyConfidence, fitRobustZ } from "../classical/robust_z.js";
3
+ import { fitRobustZ } from "../classical/robust_z.js";
3
4
  import { logScale } from "../features.js";
4
5
  export const RUN_ANOMALY_METRICS = ["cost", "duration", "toolFailures"];
5
6
  /** Fixed log scales (a $10 run, a one-hour run, 50 failures map to 1). */
6
7
  export function runAnomalyFeatures(m) {
7
8
  return [logScale(m.costUsd * 100, 1000), logScale(m.durationMs, 3_600_000), logScale(m.toolFailures, 50)];
8
9
  }
9
- /** Robust z over the history, combined with EWMA over its recent trend. */
10
- export class RunAnomalyDetector {
11
- population;
12
- trend;
13
- constructor(population, trend) {
14
- this.population = population;
15
- this.trend = trend;
16
- }
10
+ /**
11
+ * The smallest per-metric scale (σ) both detectors use, in the fixed log units above.
12
+ * A history with no tool failures has MAD = mean-AD = 0 and EWMA σ = 0, so without an
13
+ * absolute floor ONE failure (log1p(1)/log1p(50) ≈ 0.18) scored as a huge outlier and
14
+ * every run with any failure was flagged. At 0.1, one or two failures after a clean
15
+ * history stay normal (z ≈ 1.8 / 2.8) and three or more flag (z ≥ 3.5); on cost, 0.1
16
+ * is ~0.7 nats, so a constant-cost history flags a ~10× jump. (0.05 was too tight: it
17
+ * still flagged a single failure.)
18
+ */
19
+ export const RUN_ANOMALY_MIN_SCALE = 0.1;
20
+ /** The composite detector with `run.anomaly`'s metric names on its explanation. */
21
+ export class RunAnomalyDetector extends AnomalyCompositeModel {
17
22
  /** Which metrics are out of range, per detector (z / threshold, ≥ 1 = out of range). */
18
23
  explain(x) {
19
- const pz = this.population.zScores(x);
20
- const tz = this.trend.zScores(x);
21
- return RUN_ANOMALY_METRICS.map((metric, i) => ({
22
- metric,
23
- population: pz[i] / this.population.threshold,
24
- trend: tz[i] / this.trend.threshold,
25
- }));
26
- }
27
- /** Fold a finished, non-anomalous run into the trend. */
28
- observe(x) {
29
- this.trend.update(x);
30
- }
31
- predict(x) {
32
- const score = Math.max(this.population.predict(x).scores[0], this.trend.predict(x).scores[0]);
33
- return { scores: [score], confidence: anomalyConfidence(score) };
24
+ const per = this.featureScores(x);
25
+ return RUN_ANOMALY_METRICS.map((metric, i) => ({ metric, ...per[i] }));
34
26
  }
35
27
  }
36
- /** Fit both detectors on a chronological history of runs (as feature vectors). */
28
+ /** Fit both detectors on a chronological history of runs (as feature vectors), floored at {@link RUN_ANOMALY_MIN_SCALE}. */
37
29
  export function fitRunAnomaly(samples, opts = {}) {
38
- return new RunAnomalyDetector(fitRobustZ(samples, opts.robustZ), fitEwma(samples, opts.ewma));
30
+ return new RunAnomalyDetector(fitRobustZ(samples, { ...opts.robustZ, minScale: opts.robustZ?.minScale ?? RUN_ANOMALY_MIN_SCALE }), fitEwma(samples, { ...opts.ewma, minScale: opts.ewma?.minScale ?? RUN_ANOMALY_MIN_SCALE }));
39
31
  }
40
32
  export const RUN_ANOMALY_TASK = {
41
33
  kind: "anomaly",
42
34
  id: "run.anomaly",
43
35
  description: "Did this run cost, take or fail far outside its normal range?",
44
36
  features: { numeric: runAnomalyFeatures, numericNames: RUN_ANOMALY_METRICS },
45
- engines: [
46
- { tier: "local", engine: "classical", algorithm: "robust-z" },
47
- { tier: "local", engine: "classical", algorithm: "ewma" },
48
- ],
37
+ engines: [{ tier: "local", engine: "classical", algorithm: "anomaly-composite" }],
38
+ // The task's own fit: the same composite, with the metric floor and named explanation.
49
39
  train: { minSamples: 5, fit: (samples) => fitRunAnomaly(samples) },
50
40
  output: { decode: (p) => ({ anomalous: (p.scores[0] ?? 0) >= 1, score: p.scores[0] ?? 0 }) },
51
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"run_anomaly.js","sourceRoot":"","sources":["../../../src/ml/tasks/run_anomaly.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run_anomaly.js","sourceRoot":"","sources":["../../../src/ml/tasks/run_anomaly.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import { type ClassicalOptions } from "./classical/index.js";
14
14
  import { type TextEmbedder } from "./features.js";
15
15
  import { type HeadTrainOptions } from "./head_trainer.js";
16
16
  import type { MlModelStore } from "./run.js";
17
- import { type MlEngineRef, type MlPredictor, type MlSample, type MlTask, type MlTaskKind } from "./types.js";
17
+ import { type MlEngineRef, type MlPredictor, type MlTask } from "./types.js";
18
18
  /** One labelled example in input space. */
19
19
  export interface MlTrainExample<I> {
20
20
  input: I;
@@ -49,12 +49,7 @@ export interface MlTrainResult {
49
49
  holdout: number;
50
50
  holdoutLoss: number | null;
51
51
  }
52
- /**
53
- * Mean loss of `predictor` on `samples` for a task of `kind` — classify: weighted
54
- * cross-entropy of the true class; regress: weighted ½·squared error. Null for
55
- * kinds without a supervised loss, or an empty set.
56
- */
57
- export declare function mlEvalLoss(kind: MlTaskKind, predictor: MlPredictor, samples: readonly MlSample[]): number | null;
52
+ export { mlEvalLoss } from "./eval_loss.js";
58
53
  /**
59
54
  * Fit task `task` on labelled examples. Returns null when there are fewer than
60
55
  * the task's `minSamples` (it stays untrained). Throws for a task with no train
@@ -1 +1 @@
1
- {"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../src/ml/train.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAa,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAExH,2CAA2C;AAC3C,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC;IACT,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAC;IACvE,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mEAAmE;IACnE,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,WAAW,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,CAYhH;AA4BD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,EACpB,QAAQ,EAAE,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,EACtC,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA6B/B"}
1
+ {"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../src/ml/train.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG3E,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAa,KAAK,WAAW,EAAE,KAAK,WAAW,EAAiB,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAEvG,2CAA2C;AAC3C,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC;IACT,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAC;IACvE,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mEAAmE;IACnE,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,WAAW,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA4B5C;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,EACpB,QAAQ,EAAE,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,EACtC,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA6B/B"}