@seanhogg/builderforce-memory-engine 2026.9.28 → 2026.9.29

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 (61) hide show
  1. package/dist/evermind/adapt.d.ts +13 -0
  2. package/dist/evermind/adapt.d.ts.map +1 -1
  3. package/dist/evermind/adapt.js +13 -1
  4. package/dist/evermind/adapt.js.map +1 -1
  5. package/dist/evermind/index.d.ts +3 -3
  6. package/dist/evermind/index.d.ts.map +1 -1
  7. package/dist/evermind/index.js +2 -2
  8. package/dist/evermind/index.js.map +1 -1
  9. package/dist/evermind/package.d.ts +16 -0
  10. package/dist/evermind/package.d.ts.map +1 -1
  11. package/dist/evermind/package.js +40 -14
  12. package/dist/evermind/package.js.map +1 -1
  13. package/dist/experience/approval.d.ts +16 -0
  14. package/dist/experience/approval.d.ts.map +1 -0
  15. package/dist/experience/approval.js +40 -0
  16. package/dist/experience/approval.js.map +1 -0
  17. package/dist/experience/corpus.d.ts +24 -0
  18. package/dist/experience/corpus.d.ts.map +1 -0
  19. package/dist/experience/corpus.js +90 -0
  20. package/dist/experience/corpus.js.map +1 -0
  21. package/dist/experience/index.d.ts +18 -0
  22. package/dist/experience/index.d.ts.map +1 -0
  23. package/dist/experience/index.js +8 -0
  24. package/dist/experience/index.js.map +1 -0
  25. package/dist/experience/overview.d.ts +52 -0
  26. package/dist/experience/overview.d.ts.map +1 -0
  27. package/dist/experience/overview.js +92 -0
  28. package/dist/experience/overview.js.map +1 -0
  29. package/dist/experience/schedule.d.ts +10 -0
  30. package/dist/experience/schedule.d.ts.map +1 -0
  31. package/dist/experience/schedule.js +22 -0
  32. package/dist/experience/schedule.js.map +1 -0
  33. package/dist/experience/store.d.ts +88 -0
  34. package/dist/experience/store.d.ts.map +1 -0
  35. package/dist/experience/store.js +128 -0
  36. package/dist/experience/store.js.map +1 -0
  37. package/dist/experience/trainOnce.d.ts +18 -0
  38. package/dist/experience/trainOnce.d.ts.map +1 -0
  39. package/dist/experience/trainOnce.js +74 -0
  40. package/dist/experience/trainOnce.js.map +1 -0
  41. package/dist/experience/types.d.ts +171 -0
  42. package/dist/experience/types.d.ts.map +1 -0
  43. package/dist/experience/types.js +22 -0
  44. package/dist/experience/types.js.map +1 -0
  45. package/dist/index.d.ts +3 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +3 -1
  48. package/dist/index.js.map +1 -1
  49. package/package.json +1 -1
  50. package/src/evermind/adapt.ts +26 -1
  51. package/src/evermind/index.ts +3 -3
  52. package/src/evermind/package.ts +39 -12
  53. package/src/experience/approval.ts +49 -0
  54. package/src/experience/corpus.ts +103 -0
  55. package/src/experience/index.ts +35 -0
  56. package/src/experience/overview.ts +143 -0
  57. package/src/experience/schedule.ts +29 -0
  58. package/src/experience/store.ts +188 -0
  59. package/src/experience/trainOnce.ts +85 -0
  60. package/src/experience/types.ts +162 -0
  61. package/src/index.ts +8 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/experience/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * experience/types.ts — what Evermind has DONE, as opposed to what it knows.
3
+ *
4
+ * Facts live in `@seanhogg/builderforce-memory` (MemoryStore / EvermindCognition) and
5
+ * weights in the model; this is the third kind of learned item: experience.
6
+ * - an **Episode** is one demonstration — a person doing a task in a program, recorded
7
+ * as semantic steps (the UI element acted on and the value set, never raw keystrokes);
8
+ * - a **Skill** is what Train Once compiles from an episode — a procedure that runs
9
+ * again with new values, with approval gates on irreversible steps;
10
+ * - a **Run** is one execution of a skill, with its step-by-step audit trail.
11
+ *
12
+ * Plain data, JSON-shaped (camelCase, actions tagged by `kind`), so any recorder — the
13
+ * native Windows UI Automation one in Synapse included — produces it and any runtime
14
+ * persists it. Timestamps are epoch milliseconds.
15
+ */
16
+ /** A short random id — unique enough for one person's store. */
17
+ export function newExperienceId() {
18
+ const bytes = new Uint8Array(8);
19
+ globalThis.crypto.getRandomValues(bytes);
20
+ return Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');
21
+ }
22
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/experience/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA8IH,gEAAgE;AAChE,MAAM,UAAU,eAAe;IAC7B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC"}
package/dist/index.d.ts CHANGED
@@ -9,8 +9,8 @@ export { AttentionBlock } from './model/attention_block.js';
9
9
  export { MambaBlock } from './model/mamba1_block.js';
10
10
  export { SharedExpertMoE, LoadBalanceAccumulator, DEFAULT_MOE_CONFIG, DEFAULT_MOE_SEED, MoETrainer, } from './moe/index.js';
11
11
  export type { MoEConfig, MoEParam, RouteResult, MoESample, MoETrainOptions, MoEEpochResult, } from './moe/index.js';
12
- export { EvermindModelPackage, adaptAndDiff, EVERMIND_ADAPT_MAX_CHARS, parseDeltaLearnPayload, buildDeltaLearnPayload, decodeDeltaPayload, deltaUnusableReason, MAX_DELTA_B64_CHARS, mergeCheckpointDiffs, meanEvalLoss, } from './evermind/index.js';
13
- export type { EvermindModelManifest, EvermindModelCard, EvermindModelType, EvermindModality, PackageMeta, ValidationResult, AdaptResult, AdaptOptions, AdaptTokenizer, DeltaLearnPayload, DeltaParseResult, MergeResult, EvalExample, EvalTokenizer, } from './evermind/index.js';
12
+ export { EvermindModelPackage, PACKAGE_HEADER_BYTES, adaptAndDiff, adaptPackage, EVERMIND_ADAPT_MAX_CHARS, parseDeltaLearnPayload, buildDeltaLearnPayload, decodeDeltaPayload, deltaUnusableReason, MAX_DELTA_B64_CHARS, mergeCheckpointDiffs, meanEvalLoss, } from './evermind/index.js';
13
+ export type { EvermindModelManifest, EvermindModelCard, EvermindModelType, EvermindModality, PackageMeta, ValidationResult, AdaptResult, AdaptedPackage, AdaptOptions, AdaptTokenizer, DeltaLearnPayload, DeltaParseResult, MergeResult, EvalExample, EvalTokenizer, } from './evermind/index.js';
14
14
  export { EvermindLM, EvermindLMTrainer, DEFAULT_LM_CONFIG, DEFAULT_LM_SEED, logProbOfToken } from './lm/index.js';
15
15
  export { EvermindTextEmbedder } from './lm/index.js';
16
16
  export type { EvermindLMConfig, LMGenerateOptions, TextCodec, EvermindLMTrainOptions, EvermindLMDecodeState } from './lm/index.js';
@@ -68,4 +68,5 @@ export { ATTENTION_FORWARD_WGSL, ATTENTION_BACKWARD_WGSL, SOFTMAX_WGSL } from '.
68
68
  export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, personalitySetpoint, LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED, LimbicTrainer, } from './limbic/index.js';
69
69
  export type { Region, LimbicDimName, PersonalityTraits, LimbicModelConfig, LimbicForward, LimbicParam, LimbicSample, LimbicTrainOptions, } from './limbic/index.js';
70
70
  export { LIMBIC_AFFECT_WGSL } from './kernels/limbic_affect.js';
71
+ export * from './experience/index.js';
71
72
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ export { MambaBlock } from './model/mamba1_block.js';
13
13
  // ── Mixture-of-Experts (shared-expert hybrid sparsity) ─────────────────────────
14
14
  export { SharedExpertMoE, LoadBalanceAccumulator, DEFAULT_MOE_CONFIG, DEFAULT_MOE_SEED, MoETrainer, } from './moe/index.js';
15
15
  // ── Evermind (the .evermind artifact + the shared learning pipeline) ───────────
16
- export { EvermindModelPackage, adaptAndDiff, EVERMIND_ADAPT_MAX_CHARS, parseDeltaLearnPayload, buildDeltaLearnPayload, decodeDeltaPayload, deltaUnusableReason, MAX_DELTA_B64_CHARS, mergeCheckpointDiffs, meanEvalLoss, } from './evermind/index.js';
16
+ export { EvermindModelPackage, PACKAGE_HEADER_BYTES, adaptAndDiff, adaptPackage, EVERMIND_ADAPT_MAX_CHARS, parseDeltaLearnPayload, buildDeltaLearnPayload, decodeDeltaPayload, deltaUnusableReason, MAX_DELTA_B64_CHARS, mergeCheckpointDiffs, meanEvalLoss, } from './evermind/index.js';
17
17
  // ── EvermindLM (the generative model) + AdamW ──────────────────────────────────
18
18
  export { EvermindLM, EvermindLMTrainer, DEFAULT_LM_CONFIG, DEFAULT_LM_SEED, logProbOfToken } from './lm/index.js';
19
19
  // CPU text→vector embedder — SSM-embedding recall with no GPU.
@@ -71,4 +71,6 @@ export { ATTENTION_FORWARD_WGSL, ATTENTION_BACKWARD_WGSL, SOFTMAX_WGSL } from '.
71
71
  // ── Limbic system (trainable affective dynamics) ──────────────────────────────
72
72
  export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, personalitySetpoint, LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED, LimbicTrainer, } from './limbic/index.js';
73
73
  export { LIMBIC_AFFECT_WGSL } from './kernels/limbic_affect.js';
74
+ // ── Experience (demonstrations, Train Once skills, runs) ─────────────────────
75
+ export * from './experience/index.js';
74
76
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seanhogg/builderforce-memory-engine",
3
- "version": "2026.9.28",
3
+ "version": "2026.9.29",
4
4
  "description": "BuilderForce Agent Memory — engine layer. TypeScript/WGSL Mamba SSM kernels, model blocks, autograd, training, and BPE tokenizer (zero runtime deps, WebGPU-native).",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import type { EvermindModelPackage } from "./package.js";
11
11
  import { EvermindLMTrainer } from "../lm/evermind_lm.js";
12
- import { diffCheckpoints } from "../utils/delta.js";
12
+ import { applyCheckpointDiff, diffCheckpoints } from "../utils/delta.js";
13
13
  import { tokenWindows } from "../bench/adaptation.js";
14
14
 
15
15
  /** Chars of text fed to one adaptation pass. */
@@ -59,3 +59,28 @@ export function adaptAndDiff(
59
59
  const loss = history.length > 0 ? history[history.length - 1]! : 0;
60
60
  return { diff: diffCheckpoints(pkg.checkpoint, lm.exportWeights()), loss, sequences: seqs.length };
61
61
  }
62
+
63
+ /** The outcome of {@link adaptPackage}: the adapted package itself. */
64
+ export interface AdaptedPackage {
65
+ pkg: EvermindModelPackage;
66
+ loss: number;
67
+ sequences: number;
68
+ }
69
+
70
+ /**
71
+ * The same recipe for a PRIVATE Evermind — a single local writer that keeps its own
72
+ * update instead of shipping it. The update is the exact diff {@link adaptAndDiff}
73
+ * would send, applied to the version it was fitted on, so a person's local model moves
74
+ * by the same step a shared writer would have taken from the same text.
75
+ */
76
+ export function adaptPackage(
77
+ pkg: EvermindModelPackage,
78
+ tokenizer: AdaptTokenizer,
79
+ text: string,
80
+ version: string,
81
+ opts: AdaptOptions = {},
82
+ ): AdaptedPackage | null {
83
+ const r = adaptAndDiff(pkg, tokenizer, text, opts);
84
+ if (!r) return null;
85
+ return { pkg: pkg.withCheckpoint(applyCheckpointDiff(pkg.checkpoint, r.diff), version), loss: r.loss, sequences: r.sequences };
86
+ }
@@ -3,7 +3,7 @@
3
3
  * artifact plus the learning pipeline every learner shares (adapt, diff wire
4
4
  * contract, FedAvg merge, pre/post-merge eval).
5
5
  */
6
- export { EvermindModelPackage } from "./package.js";
6
+ export { EvermindModelPackage, PACKAGE_HEADER_BYTES } from "./package.js";
7
7
  export type {
8
8
  EvermindModelManifest,
9
9
  EvermindModelCard,
@@ -13,8 +13,8 @@ export type {
13
13
  ValidationResult,
14
14
  } from "./package.js";
15
15
 
16
- export { adaptAndDiff, EVERMIND_ADAPT_MAX_CHARS } from "./adapt.js";
17
- export type { AdaptResult, AdaptOptions, AdaptTokenizer } from "./adapt.js";
16
+ export { adaptAndDiff, adaptPackage, EVERMIND_ADAPT_MAX_CHARS } from "./adapt.js";
17
+ export type { AdaptResult, AdaptedPackage, AdaptOptions, AdaptTokenizer } from "./adapt.js";
18
18
 
19
19
  export {
20
20
  parseDeltaLearnPayload,
@@ -18,6 +18,8 @@ import { BPETokenizer } from "../tokenizer/bpe.js";
18
18
 
19
19
  /** First 4 bytes of a serialised package: "EVM1". */
20
20
  const PKG_MAGIC = 0x45564d31;
21
+ /** magic, format version, manifest length — three u32s ahead of the manifest. */
22
+ export const PACKAGE_HEADER_BYTES = 12;
21
23
  const PKG_VERSION = 1;
22
24
 
23
25
  /** The kinds of model an `.evermind` package can carry. */
@@ -257,7 +259,7 @@ export class EvermindModelPackage {
257
259
  */
258
260
  toBlob(): ArrayBuffer {
259
261
  const manifestBytes = new TextEncoder().encode(JSON.stringify(this.manifest));
260
- const headerBytes = 12; // magic, version, manifestLen
262
+ const headerBytes = PACKAGE_HEADER_BYTES;
261
263
  const codecBytes = this.codec?.byteLength ?? 0;
262
264
  const tokBytes = this.tokenizer?.byteLength ?? 0;
263
265
  const out = new ArrayBuffer(
@@ -280,20 +282,45 @@ export class EvermindModelPackage {
280
282
  return out;
281
283
  }
282
284
 
285
+ /**
286
+ * This package carrying a new checkpoint of the same model (an adapted copy): the
287
+ * checksum and the checkpoint's section length are recomputed, config, codec and
288
+ * tokenizer are kept, so the result validates and round-trips like the original.
289
+ */
290
+ withCheckpoint(checkpoint: ArrayBuffer, version: string = this.manifest.version): EvermindModelPackage {
291
+ const manifest: EvermindModelManifest = {
292
+ ...this.manifest,
293
+ version,
294
+ ...(this.manifest.checkpointBytes !== undefined ? { checkpointBytes: checkpoint.byteLength } : {}),
295
+ checksum: fnv1a(new Uint8Array(checkpoint)),
296
+ };
297
+ return new EvermindModelPackage(manifest, checkpoint, this.codec, this.tokenizer);
298
+ }
283
299
 
284
300
  /** Parse a `.evermind` blob. Throws on bad magic / truncation. */
301
+ /**
302
+ * How many leading bytes of a package hold its header and manifest, from its first
303
+ * {@link PACKAGE_HEADER_BYTES}. With {@link readManifest}, a host reads a model's
304
+ * identity (version, checksum) without loading the checkpoint. Throws on bad magic.
305
+ */
306
+ static manifestEnd(header: ArrayBuffer): number {
307
+ if (header.byteLength < PACKAGE_HEADER_BYTES) throw new Error("EvermindModelPackage: truncated (no header)");
308
+ const head = new Uint32Array(header, 0, 3);
309
+ if (head[0] !== PKG_MAGIC) throw new Error("EvermindModelPackage: bad magic (not an .evermind package)");
310
+ return PACKAGE_HEADER_BYTES + head[2]!;
311
+ }
312
+
313
+ /** The manifest of a package, from a prefix at least {@link manifestEnd} bytes long. */
314
+ static readManifest(prefix: ArrayBuffer): EvermindModelManifest {
315
+ const end = EvermindModelPackage.manifestEnd(prefix);
316
+ if (end > prefix.byteLength) throw new Error("EvermindModelPackage: truncated (manifest length exceeds blob)");
317
+ const bytes = new Uint8Array(prefix, PACKAGE_HEADER_BYTES, end - PACKAGE_HEADER_BYTES);
318
+ return JSON.parse(new TextDecoder().decode(bytes)) as EvermindModelManifest;
319
+ }
320
+
285
321
  static fromBlob(buffer: ArrayBuffer): EvermindModelPackage {
286
- if (buffer.byteLength < 12) throw new Error("EvermindModelPackage.fromBlob: truncated (no header)");
287
- const head = new Uint32Array(buffer, 0, 3);
288
- if (head[0] !== PKG_MAGIC) throw new Error("EvermindModelPackage.fromBlob: bad magic (not an .evermind package)");
289
- const manifestLen = head[2]!;
290
- const headerBytes = 12;
291
- if (headerBytes + manifestLen > buffer.byteLength) {
292
- throw new Error("EvermindModelPackage.fromBlob: truncated (manifest length exceeds blob)");
293
- }
294
- const manifestBytes = new Uint8Array(buffer, headerBytes, manifestLen);
295
- const manifest = JSON.parse(new TextDecoder().decode(manifestBytes)) as EvermindModelManifest;
296
- const bodyStart = headerBytes + manifestLen;
322
+ const manifest = EvermindModelPackage.readManifest(buffer);
323
+ const bodyStart = EvermindModelPackage.manifestEnd(buffer);
297
324
  // Sections run checkpoint -> codec -> tokenizer, each present only when the
298
325
  // manifest says so. A section's length is explicit whenever another follows it;
299
326
  // the last section runs to end-of-blob. That keeps every package written before
@@ -0,0 +1,49 @@
1
+ /**
2
+ * experience/approval.ts — which learned steps pause for the person: the ones that
3
+ * cannot be taken back. A click on "Send", "Pay", "Delete" or "Submit" is where a replay
4
+ * that drifted does real damage, so the gate is on by default there. Review can still
5
+ * turn it on or off per step.
6
+ */
7
+ import type { Action } from './types.js';
8
+
9
+ /** Words, in the five product languages, that name an action with consequences outside the app. */
10
+ const IRREVERSIBLE = new Set([
11
+ // en
12
+ 'send', 'submit', 'pay', 'purchase', 'buy', 'order', 'checkout', 'delete', 'remove', 'confirm', 'transfer',
13
+ 'publish', 'post', 'sign', 'approve', 'book', 'cancel', 'erase', 'wipe', 'format', 'uninstall',
14
+ // de
15
+ 'senden', 'absenden', 'bezahlen', 'kaufen', 'bestellen', 'löschen', 'entfernen', 'bestätigen', 'überweisen', 'veröffentlichen',
16
+ // es
17
+ 'enviar', 'pagar', 'comprar', 'pedido', 'eliminar', 'borrar', 'confirmar', 'transferir', 'publicar',
18
+ // fr
19
+ 'envoyer', 'payer', 'acheter', 'commander', 'supprimer', 'confirmer', 'virement', 'publier',
20
+ ]);
21
+
22
+ /** CJK has no word boundaries, so these are matched as substrings. */
23
+ const IRREVERSIBLE_CJK = ['发送', '提交', '支付', '付款', '购买', '下单', '删除', '确认', '转账', '发布'];
24
+
25
+ export function isIrreversibleLabel(label: string): boolean {
26
+ const lower = label.toLowerCase();
27
+ if (IRREVERSIBLE_CJK.some((w) => lower.includes(w))) return true;
28
+ return lower.split(/[^\p{L}\p{N}]+/u).some((w) => w.length > 0 && IRREVERSIBLE.has(w));
29
+ }
30
+
31
+ /** The label a person would use for an element: its name, else its automation id. */
32
+ export function elementLabel(target: { name: string; automationId: string } | null | undefined): string {
33
+ if (!target) return '';
34
+ return target.name.trim() || target.automationId.trim();
35
+ }
36
+
37
+ /** The default approval gate for a recorded action. */
38
+ export function needsApproval(action: Action): boolean {
39
+ switch (action.kind) {
40
+ case 'click':
41
+ return isIrreversibleLabel(elementLabel(action.target));
42
+ case 'keys':
43
+ // Enter can submit the form it is pressed in, but which button fires is not in the
44
+ // recording — so it is gated only when the element itself is labelled irreversible.
45
+ return action.keys.toLowerCase() === 'enter' && isIrreversibleLabel(elementLabel(action.target));
46
+ case 'setValue':
47
+ return false;
48
+ }
49
+ }
@@ -0,0 +1,103 @@
1
+ /**
2
+ * experience/corpus.ts — experience as text Evermind can learn from.
3
+ *
4
+ * Evermind already learns from text through ONE recipe (`evermind/adapt.ts`
5
+ * `adaptAndDiff`: fit a private copy of a version, diff it). Rather than a second,
6
+ * trajectory-shaped training path, each demonstration is rendered as the procedure a
7
+ * person would write down — the task, then numbered steps — and handed to that recipe.
8
+ * Values that became parameters are written as `<name>` placeholders, so the model
9
+ * learns the procedure rather than one day's numbers. Secrets never appear: a secret
10
+ * field's value was never recorded.
11
+ */
12
+ import { elementLabel } from './approval.js';
13
+ import type { Action, Episode, Skill, SkillAction } from './types.js';
14
+
15
+ function where(a: Action | SkillAction): string {
16
+ const w = 'target' in a && a.target ? a.target.windowTitle : '';
17
+ return w ? ` in “${w}”` : '';
18
+ }
19
+
20
+ function stepSentence(a: Action | SkillAction): string {
21
+ switch (a.kind) {
22
+ case 'click':
23
+ return `Click “${elementLabel(a.target)}”${where(a)}.`;
24
+ case 'keys':
25
+ return a.target ? `Press ${a.keys} in “${elementLabel(a.target)}”${where(a)}.` : `Press ${a.keys}.`;
26
+ case 'setValue': {
27
+ const field = `“${elementLabel(a.target)}”`;
28
+ if (typeof a.value === 'string') {
29
+ return 'secret' in a && a.secret ? `Enter the secret for ${field}${where(a)}.` : `Set ${field} to “${a.value}”${where(a)}.`;
30
+ }
31
+ return a.value.from === 'param' ? `Set ${field} to <${a.value.name}>${where(a)}.` : `Set ${field} to “${a.value.text}”${where(a)}.`;
32
+ }
33
+ }
34
+ }
35
+
36
+ function programName(program: string): string {
37
+ return program.split(/[\\/]/).pop() ?? program;
38
+ }
39
+
40
+ /** A skill as a written procedure (parameters as placeholders, approvals marked). */
41
+ export function skillText(skill: Skill): string {
42
+ const lines = [`Task: ${skill.name} (${programName(skill.program)})`];
43
+ skill.steps.forEach((s, i) => lines.push(`${i + 1}. ${stepSentence(s.action)}${s.requiresApproval ? ' Ask before doing this.' : ''}`));
44
+ return lines.join('\n');
45
+ }
46
+
47
+ /** A raw demonstration as a written procedure. */
48
+ export function episodeText(episode: Episode): string {
49
+ const lines = [`Task: ${episode.name} (${programName(episode.program)})`];
50
+ episode.steps.forEach((s, i) => lines.push(`${i + 1}. ${stepSentence(s.action)}`));
51
+ return lines.join('\n');
52
+ }
53
+
54
+ /**
55
+ * The corpus to learn from: every skill as a procedure, plus demonstrations that have
56
+ * not been compiled into one yet (a compiled skill supersedes its raw episode — the
57
+ * reviewed version is the one worth learning).
58
+ */
59
+ export function experienceCorpus(episodes: Episode[], skills: Skill[]): string {
60
+ return experienceDocuments(episodes, skills)
61
+ .map((d) => d.text)
62
+ .join('\n\n');
63
+ }
64
+
65
+ /** One learnable procedure and the experience item it came from. */
66
+ export interface ExperienceDocument {
67
+ id: string;
68
+ text: string;
69
+ }
70
+
71
+ /** The corpus as separate procedures, each tagged with its source item's id. */
72
+ export function experienceDocuments(episodes: Episode[], skills: Skill[]): ExperienceDocument[] {
73
+ const compiled = new Set(skills.map((s) => s.sourceEpisode));
74
+ return [
75
+ ...skills.map((s) => ({ id: s.id, text: skillText(s) })),
76
+ ...episodes.filter((e) => !compiled.has(e.id)).map((e) => ({ id: e.id, text: episodeText(e) })),
77
+ ];
78
+ }
79
+
80
+ /**
81
+ * Pack procedures into passes of at most `maxChars` (one adaptation pass reads that
82
+ * much), never splitting a procedure — one longer than a pass gets a pass of its own.
83
+ */
84
+ export function packDocuments(docs: ExperienceDocument[], maxChars: number): ExperienceDocument[][] {
85
+ const passes: ExperienceDocument[][] = [];
86
+ let cur: ExperienceDocument[] = [];
87
+ let len = 0;
88
+ for (const d of docs) {
89
+ const add = cur.length ? d.text.length + 2 : d.text.length;
90
+ if (cur.length && len + add > maxChars) {
91
+ passes.push(cur);
92
+ cur = [];
93
+ len = 0;
94
+ cur.push(d);
95
+ len = d.text.length;
96
+ continue;
97
+ }
98
+ cur.push(d);
99
+ len += add;
100
+ }
101
+ if (cur.length) passes.push(cur);
102
+ return passes;
103
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Experience — the learned items that are not facts or weights: demonstrations
3
+ * (episodes), the skills Train Once compiles from them, and the runs of those skills.
4
+ * Pure and storage-agnostic, like the rest of the engine.
5
+ */
6
+ export type {
7
+ ElementRef,
8
+ Action,
9
+ RecordedStep,
10
+ Episode,
11
+ EpisodeSummary,
12
+ SkillParam,
13
+ SkillValue,
14
+ SkillAction,
15
+ SkillStep,
16
+ Schedule,
17
+ SkillRoutine,
18
+ Skill,
19
+ RunStatus,
20
+ StepOutcome,
21
+ RunStepLog,
22
+ Run,
23
+ Adaptation,
24
+ } from './types.js';
25
+ export { newExperienceId } from './types.js';
26
+ export { isIrreversibleLabel, elementLabel, needsApproval } from './approval.js';
27
+ export { trainOnce, slug } from './trainOnce.js';
28
+ export type { ReviewEdits } from './trainOnce.js';
29
+ export { isDue, dueSkills } from './schedule.js';
30
+ export { experienceCorpus, experienceDocuments, packDocuments } from './corpus.js';
31
+ export type { ExperienceDocument } from './corpus.js';
32
+ export { experienceOverview } from './overview.js';
33
+ export type { ExperienceOverview, ExperienceRegion, ExperienceEvent, ExperienceDay, OverviewOptions } from './overview.js';
34
+ export { EXPERIENCE_SCHEMA, MAX_RUNS, MAX_ADAPTATIONS, emptySnapshot, parseSnapshot, InMemoryExperienceStore } from './store.js';
35
+ export type { ExperienceSnapshot, ExperienceStore } from './store.js';
@@ -0,0 +1,143 @@
1
+ /**
2
+ * experience/overview.ts — what experience says about the brain, for anything that draws
3
+ * it. Pure: the host passes the snapshot, which adaptation its model is at, the clock
4
+ * and the local UTC offset; every number comes from the snapshot, none is estimated.
5
+ *
6
+ * The regions are the parts of the brain experience lives in:
7
+ * - **hippocampus** — episodic memory: the demonstrations;
8
+ * - **basalGanglia** — action selection: the skills, and how their runs went;
9
+ * - **amygdala** — salience: the decisions made at irreversible steps;
10
+ * - **hypothalamus** — drives: the routines that start skills by themselves;
11
+ * - **neocortex** — the private model's weights: the procedures adapted into it.
12
+ * Facts (semantic memory) and attention belong to other stores; a host adds those.
13
+ */
14
+ import { experienceDocuments } from './corpus.js';
15
+ import type { ExperienceSnapshot } from './store.js';
16
+ import type { Adaptation, RunStatus } from './types.js';
17
+
18
+ export type ExperienceRegion = 'hippocampus' | 'basalGanglia' | 'amygdala' | 'hypothalamus' | 'neocortex';
19
+
20
+ /** One thing that happened, placed in the region it landed in. */
21
+ export interface ExperienceEvent {
22
+ region: ExperienceRegion;
23
+ kind: 'demonstration' | 'skill' | 'run' | 'approval' | 'adaptation';
24
+ /** The episode, skill, run or model version it concerns. */
25
+ id: string;
26
+ name: string;
27
+ at: number;
28
+ /** Run status, approval outcome, or the adaptation's loss — what happened. */
29
+ detail?: string;
30
+ }
31
+
32
+ export interface ExperienceDay {
33
+ /** Local calendar day, `YYYY-MM-DD`. */
34
+ day: string;
35
+ demonstrations: number;
36
+ skills: number;
37
+ runs: number;
38
+ learned: number;
39
+ }
40
+
41
+ export interface ExperienceOverview {
42
+ regions: Record<ExperienceRegion, number>;
43
+ /** Procedures the model at `modelIndex` has learned, and those it has not yet. */
44
+ learned: number;
45
+ pending: number;
46
+ runs: Record<RunStatus, number>;
47
+ approvals: { approved: number; denied: number };
48
+ /** Oldest first — the order a chart reads. */
49
+ adaptations: Adaptation[];
50
+ /** One entry per day of the window, oldest first, empty days included. */
51
+ days: ExperienceDay[];
52
+ /** Newest first. */
53
+ recent: ExperienceEvent[];
54
+ }
55
+
56
+ const DAY_MS = 86_400_000;
57
+
58
+ export interface OverviewOptions {
59
+ /** N of the loaded model's `+expN` version (0 for a base model or none). */
60
+ modelIndex: number;
61
+ now: number;
62
+ /** Local minus UTC, in minutes. */
63
+ utcOffsetMinutes: number;
64
+ /** Days of activity to chart. Default 30. */
65
+ days?: number;
66
+ /** Events to list. Default 40. */
67
+ recent?: number;
68
+ }
69
+
70
+ function localDay(at: number, offsetMinutes: number): string {
71
+ return new Date(at + offsetMinutes * 60_000).toISOString().slice(0, 10);
72
+ }
73
+
74
+ export function experienceOverview(snap: ExperienceSnapshot, opts: OverviewOptions): ExperienceOverview {
75
+ const known = (id: string) => {
76
+ const n = snap.learned[id];
77
+ return typeof n === 'number' && n >= 1 && n <= opts.modelIndex;
78
+ };
79
+ const docs = experienceDocuments(snap.episodes, snap.skills);
80
+ const learned = docs.filter((d) => known(d.id)).length;
81
+
82
+ const runs: Record<RunStatus, number> = { running: 0, succeeded: 0, failed: 0, stopped: 0, denied: 0 };
83
+ const approvals = { approved: 0, denied: 0 };
84
+ const events: ExperienceEvent[] = [];
85
+
86
+ for (const e of snap.episodes) {
87
+ events.push({ region: 'hippocampus', kind: 'demonstration', id: e.id, name: e.name, at: e.startedAt });
88
+ }
89
+ for (const s of snap.skills) {
90
+ events.push({ region: 'basalGanglia', kind: 'skill', id: s.id, name: s.name, at: s.createdAt });
91
+ }
92
+ for (const r of snap.runs) {
93
+ runs[r.status] = (runs[r.status] ?? 0) + 1;
94
+ events.push({ region: 'basalGanglia', kind: 'run', id: r.id, name: r.skillName, at: r.startedAt, detail: r.status });
95
+ for (const step of r.steps) {
96
+ if (step.outcome !== 'approved' && step.outcome !== 'denied') continue;
97
+ approvals[step.outcome]++;
98
+ events.push({ region: 'amygdala', kind: 'approval', id: r.id, name: r.skillName, at: step.at, detail: step.outcome });
99
+ }
100
+ }
101
+ // Only adaptations the loaded model descends from: a rolled-back model's discarded
102
+ // versions are not what it knows.
103
+ const adaptations = snap.adaptations.filter((a) => a.index <= opts.modelIndex).reverse();
104
+ for (const a of adaptations) {
105
+ events.push({ region: 'neocortex', kind: 'adaptation', id: a.version, name: a.version, at: a.at, detail: a.loss.toFixed(3) });
106
+ }
107
+
108
+ const windowDays = Math.max(1, opts.days ?? 30);
109
+ const days: ExperienceDay[] = [];
110
+ const index = new Map<string, ExperienceDay>();
111
+ for (let i = windowDays - 1; i >= 0; i--) {
112
+ const day = localDay(opts.now - i * DAY_MS, opts.utcOffsetMinutes);
113
+ if (index.has(day)) continue;
114
+ const entry = { day, demonstrations: 0, skills: 0, runs: 0, learned: 0 };
115
+ index.set(day, entry);
116
+ days.push(entry);
117
+ }
118
+ const bump = (at: number, field: Exclude<keyof ExperienceDay, 'day'>, by = 1) => {
119
+ const d = index.get(localDay(at, opts.utcOffsetMinutes));
120
+ if (d) d[field] += by;
121
+ };
122
+ for (const e of snap.episodes) bump(e.startedAt, 'demonstrations');
123
+ for (const s of snap.skills) bump(s.createdAt, 'skills');
124
+ for (const r of snap.runs) bump(r.startedAt, 'runs');
125
+ for (const a of adaptations) bump(a.at, 'learned', a.learned.length);
126
+
127
+ return {
128
+ regions: {
129
+ hippocampus: snap.episodes.length,
130
+ basalGanglia: snap.skills.length,
131
+ amygdala: approvals.approved + approvals.denied,
132
+ hypothalamus: snap.skills.filter((s) => s.routine?.enabled).length,
133
+ neocortex: learned,
134
+ },
135
+ learned,
136
+ pending: docs.length - learned,
137
+ runs,
138
+ approvals,
139
+ adaptations,
140
+ days,
141
+ recent: events.sort((a, b) => b.at - a.at).slice(0, Math.max(0, opts.recent ?? 40)),
142
+ };
143
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * experience/schedule.ts — when a skill's routine is due. Pure: the host supplies the
3
+ * clock and the local UTC offset, and ticks as often as it likes.
4
+ */
5
+ import type { Schedule, Skill } from './types.js';
6
+
7
+ const MINUTE = 60_000;
8
+ const DAY = 86_400_000;
9
+
10
+ /** `utcOffsetMinutes` is local minus UTC (e.g. -240 for UTC-4). */
11
+ export function isDue(schedule: Schedule, lastRunAt: number | null | undefined, now: number, utcOffsetMinutes: number): boolean {
12
+ if (schedule.every === 'minutes') {
13
+ const every = Math.max(1, schedule.minutes) * MINUTE;
14
+ return lastRunAt == null || now - lastRunAt >= every;
15
+ }
16
+ const offset = utcOffsetMinutes * MINUTE;
17
+ const localNow = now + offset;
18
+ const dayStart = localNow - (((localNow % DAY) + DAY) % DAY);
19
+ const target = dayStart + Math.min(23, Math.max(0, schedule.hour)) * 3_600_000 + Math.min(59, Math.max(0, schedule.minute)) * MINUTE;
20
+ // Due once the time of day has passed, unless it already ran since then.
21
+ return localNow >= target && (lastRunAt == null || lastRunAt + offset < target);
22
+ }
23
+
24
+ /** Skills whose enabled routine is due now, oldest-run first. */
25
+ export function dueSkills(skills: Skill[], now: number, utcOffsetMinutes: number): Skill[] {
26
+ return skills
27
+ .filter((s) => s.routine?.enabled && isDue(s.routine.schedule, s.routine.lastRunAt, now, utcOffsetMinutes))
28
+ .sort((a, b) => (a.routine?.lastRunAt ?? 0) - (b.routine?.lastRunAt ?? 0));
29
+ }