agent-recall-core 3.4.31 → 3.4.36

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 (270) hide show
  1. package/README.md +121 -441
  2. package/dist/digest/store.d.ts.map +1 -1
  3. package/dist/digest/store.js +4 -3
  4. package/dist/digest/store.js.map +1 -1
  5. package/dist/display/board-render.d.ts +61 -0
  6. package/dist/display/board-render.d.ts.map +1 -0
  7. package/dist/display/board-render.js +223 -0
  8. package/dist/display/board-render.js.map +1 -0
  9. package/dist/helpers/alignment-patterns.d.ts +10 -0
  10. package/dist/helpers/alignment-patterns.d.ts.map +1 -1
  11. package/dist/helpers/alignment-patterns.js +5 -1
  12. package/dist/helpers/alignment-patterns.js.map +1 -1
  13. package/dist/helpers/blind-spots.d.ts +86 -0
  14. package/dist/helpers/blind-spots.d.ts.map +1 -0
  15. package/dist/helpers/blind-spots.js +205 -0
  16. package/dist/helpers/blind-spots.js.map +1 -0
  17. package/dist/helpers/conflict-scan.d.ts +10 -0
  18. package/dist/helpers/conflict-scan.d.ts.map +1 -1
  19. package/dist/helpers/conflict-scan.js +3 -3
  20. package/dist/helpers/conflict-scan.js.map +1 -1
  21. package/dist/helpers/semantic-match.d.ts +82 -0
  22. package/dist/helpers/semantic-match.d.ts.map +1 -0
  23. package/dist/helpers/semantic-match.js +229 -0
  24. package/dist/helpers/semantic-match.js.map +1 -0
  25. package/dist/index.d.ts +57 -17
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +60 -14
  28. package/dist/index.js.map +1 -1
  29. package/dist/palace/awareness.d.ts +30 -0
  30. package/dist/palace/awareness.d.ts.map +1 -1
  31. package/dist/palace/awareness.js +65 -2
  32. package/dist/palace/awareness.js.map +1 -1
  33. package/dist/palace/consolidate.d.ts.map +1 -1
  34. package/dist/palace/consolidate.js +17 -0
  35. package/dist/palace/consolidate.js.map +1 -1
  36. package/dist/palace/decay-pass.d.ts +46 -0
  37. package/dist/palace/decay-pass.d.ts.map +1 -0
  38. package/dist/palace/decay-pass.js +87 -0
  39. package/dist/palace/decay-pass.js.map +1 -0
  40. package/dist/palace/insights-index.d.ts.map +1 -1
  41. package/dist/palace/insights-index.js +4 -2
  42. package/dist/palace/insights-index.js.map +1 -1
  43. package/dist/palace/skills.d.ts +41 -2
  44. package/dist/palace/skills.d.ts.map +1 -1
  45. package/dist/palace/skills.js +106 -4
  46. package/dist/palace/skills.js.map +1 -1
  47. package/dist/prompts/consolidation-prompt.d.ts +25 -0
  48. package/dist/prompts/consolidation-prompt.d.ts.map +1 -0
  49. package/dist/prompts/consolidation-prompt.js +91 -0
  50. package/dist/prompts/consolidation-prompt.js.map +1 -0
  51. package/dist/storage/ab-experiment.d.ts +184 -0
  52. package/dist/storage/ab-experiment.d.ts.map +1 -0
  53. package/dist/storage/ab-experiment.js +294 -0
  54. package/dist/storage/ab-experiment.js.map +1 -0
  55. package/dist/storage/archive-prune.d.ts +56 -0
  56. package/dist/storage/archive-prune.d.ts.map +1 -0
  57. package/dist/storage/archive-prune.js +118 -0
  58. package/dist/storage/archive-prune.js.map +1 -0
  59. package/dist/storage/archive-write.d.ts +38 -0
  60. package/dist/storage/archive-write.d.ts.map +1 -0
  61. package/dist/storage/archive-write.js +98 -0
  62. package/dist/storage/archive-write.js.map +1 -0
  63. package/dist/storage/blind-spots-store.d.ts +30 -0
  64. package/dist/storage/blind-spots-store.d.ts.map +1 -0
  65. package/dist/storage/blind-spots-store.js +91 -0
  66. package/dist/storage/blind-spots-store.js.map +1 -0
  67. package/dist/storage/capture-router.d.ts +60 -0
  68. package/dist/storage/capture-router.d.ts.map +1 -0
  69. package/dist/storage/capture-router.js +133 -0
  70. package/dist/storage/capture-router.js.map +1 -0
  71. package/dist/storage/classification.d.ts +36 -0
  72. package/dist/storage/classification.d.ts.map +1 -0
  73. package/dist/storage/classification.js +78 -0
  74. package/dist/storage/classification.js.map +1 -0
  75. package/dist/storage/consolidation-queue.d.ts +39 -0
  76. package/dist/storage/consolidation-queue.d.ts.map +1 -0
  77. package/dist/storage/consolidation-queue.js +120 -0
  78. package/dist/storage/consolidation-queue.js.map +1 -0
  79. package/dist/storage/content-guard.d.ts +74 -0
  80. package/dist/storage/content-guard.d.ts.map +1 -0
  81. package/dist/storage/content-guard.js +179 -0
  82. package/dist/storage/content-guard.js.map +1 -0
  83. package/dist/storage/corrections.d.ts +329 -22
  84. package/dist/storage/corrections.d.ts.map +1 -1
  85. package/dist/storage/corrections.js +788 -58
  86. package/dist/storage/corrections.js.map +1 -1
  87. package/dist/storage/durable-intent.d.ts +49 -0
  88. package/dist/storage/durable-intent.d.ts.map +1 -0
  89. package/dist/storage/durable-intent.js +124 -0
  90. package/dist/storage/durable-intent.js.map +1 -0
  91. package/dist/storage/filelock.d.ts +6 -0
  92. package/dist/storage/filelock.d.ts.map +1 -1
  93. package/dist/storage/filelock.js +6 -1
  94. package/dist/storage/filelock.js.map +1 -1
  95. package/dist/storage/memory-protocol.d.ts +19 -0
  96. package/dist/storage/memory-protocol.d.ts.map +1 -0
  97. package/dist/storage/memory-protocol.js +101 -0
  98. package/dist/storage/memory-protocol.js.map +1 -0
  99. package/dist/storage/paths.d.ts +23 -0
  100. package/dist/storage/paths.d.ts.map +1 -1
  101. package/dist/storage/paths.js +39 -0
  102. package/dist/storage/paths.js.map +1 -1
  103. package/dist/storage/retention.d.ts +23 -0
  104. package/dist/storage/retention.d.ts.map +1 -0
  105. package/dist/storage/retention.js +48 -0
  106. package/dist/storage/retention.js.map +1 -0
  107. package/dist/storage/session.d.ts +2 -2
  108. package/dist/storage/session.d.ts.map +1 -1
  109. package/dist/storage/session.js +11 -1
  110. package/dist/storage/session.js.map +1 -1
  111. package/dist/supabase/config.d.ts +26 -0
  112. package/dist/supabase/config.d.ts.map +1 -1
  113. package/dist/supabase/config.js +11 -0
  114. package/dist/supabase/config.js.map +1 -1
  115. package/dist/supabase/recall-backend.d.ts +1 -0
  116. package/dist/supabase/recall-backend.d.ts.map +1 -1
  117. package/dist/supabase/recall-backend.js +13 -13
  118. package/dist/supabase/recall-backend.js.map +1 -1
  119. package/dist/supabase/sync.d.ts +1 -1
  120. package/dist/supabase/sync.d.ts.map +1 -1
  121. package/dist/supabase/sync.js +85 -3
  122. package/dist/supabase/sync.js.map +1 -1
  123. package/dist/tools-logic/bootstrap.d.ts +15 -0
  124. package/dist/tools-logic/bootstrap.d.ts.map +1 -1
  125. package/dist/tools-logic/bootstrap.js +238 -47
  126. package/dist/tools-logic/bootstrap.js.map +1 -1
  127. package/dist/tools-logic/brief.d.ts +84 -0
  128. package/dist/tools-logic/brief.d.ts.map +1 -0
  129. package/dist/tools-logic/brief.js +193 -0
  130. package/dist/tools-logic/brief.js.map +1 -0
  131. package/dist/tools-logic/check-action.d.ts +9 -0
  132. package/dist/tools-logic/check-action.d.ts.map +1 -1
  133. package/dist/tools-logic/check-action.js +61 -3
  134. package/dist/tools-logic/check-action.js.map +1 -1
  135. package/dist/tools-logic/check.d.ts +7 -0
  136. package/dist/tools-logic/check.d.ts.map +1 -1
  137. package/dist/tools-logic/check.js +24 -2
  138. package/dist/tools-logic/check.js.map +1 -1
  139. package/dist/tools-logic/confidence.d.ts +50 -0
  140. package/dist/tools-logic/confidence.d.ts.map +1 -0
  141. package/dist/tools-logic/confidence.js +70 -0
  142. package/dist/tools-logic/confidence.js.map +1 -0
  143. package/dist/tools-logic/drill-down.d.ts +37 -0
  144. package/dist/tools-logic/drill-down.d.ts.map +1 -0
  145. package/dist/tools-logic/drill-down.js +63 -0
  146. package/dist/tools-logic/drill-down.js.map +1 -0
  147. package/dist/tools-logic/export-corrections.d.ts +63 -0
  148. package/dist/tools-logic/export-corrections.d.ts.map +1 -0
  149. package/dist/tools-logic/export-corrections.js +124 -0
  150. package/dist/tools-logic/export-corrections.js.map +1 -0
  151. package/dist/tools-logic/journal-capture.d.ts.map +1 -1
  152. package/dist/tools-logic/journal-capture.js +4 -1
  153. package/dist/tools-logic/journal-capture.js.map +1 -1
  154. package/dist/tools-logic/journal-write.d.ts.map +1 -1
  155. package/dist/tools-logic/journal-write.js +3 -2
  156. package/dist/tools-logic/journal-write.js.map +1 -1
  157. package/dist/tools-logic/local-archive-backend.d.ts +33 -0
  158. package/dist/tools-logic/local-archive-backend.d.ts.map +1 -0
  159. package/dist/tools-logic/local-archive-backend.js +124 -0
  160. package/dist/tools-logic/local-archive-backend.js.map +1 -0
  161. package/dist/tools-logic/memory-backend.d.ts +74 -0
  162. package/dist/tools-logic/memory-backend.d.ts.map +1 -0
  163. package/dist/tools-logic/memory-backend.js +172 -0
  164. package/dist/tools-logic/memory-backend.js.map +1 -0
  165. package/dist/tools-logic/memory-query.d.ts +10 -3
  166. package/dist/tools-logic/memory-query.d.ts.map +1 -1
  167. package/dist/tools-logic/memory-query.js +31 -7
  168. package/dist/tools-logic/memory-query.js.map +1 -1
  169. package/dist/tools-logic/mirror-builder.d.ts +115 -0
  170. package/dist/tools-logic/mirror-builder.d.ts.map +1 -0
  171. package/dist/tools-logic/mirror-builder.js +348 -0
  172. package/dist/tools-logic/mirror-builder.js.map +1 -0
  173. package/dist/tools-logic/palace-write.d.ts.map +1 -1
  174. package/dist/tools-logic/palace-write.js +3 -2
  175. package/dist/tools-logic/palace-write.js.map +1 -1
  176. package/dist/tools-logic/pipeline-close.d.ts.map +1 -1
  177. package/dist/tools-logic/pipeline-close.js +2 -1
  178. package/dist/tools-logic/pipeline-close.js.map +1 -1
  179. package/dist/tools-logic/pipeline-open.d.ts.map +1 -1
  180. package/dist/tools-logic/pipeline-open.js +2 -1
  181. package/dist/tools-logic/pipeline-open.js.map +1 -1
  182. package/dist/tools-logic/predict-correction.d.ts +47 -0
  183. package/dist/tools-logic/predict-correction.d.ts.map +1 -0
  184. package/dist/tools-logic/predict-correction.js +137 -0
  185. package/dist/tools-logic/predict-correction.js.map +1 -0
  186. package/dist/tools-logic/prior-builder.d.ts +27 -0
  187. package/dist/tools-logic/prior-builder.d.ts.map +1 -0
  188. package/dist/tools-logic/prior-builder.js +90 -0
  189. package/dist/tools-logic/prior-builder.js.map +1 -0
  190. package/dist/tools-logic/recognition-builder.d.ts +122 -0
  191. package/dist/tools-logic/recognition-builder.d.ts.map +1 -0
  192. package/dist/tools-logic/recognition-builder.js +289 -0
  193. package/dist/tools-logic/recognition-builder.js.map +1 -0
  194. package/dist/tools-logic/safety-consolidation.d.ts +104 -0
  195. package/dist/tools-logic/safety-consolidation.d.ts.map +1 -0
  196. package/dist/tools-logic/safety-consolidation.js +256 -0
  197. package/dist/tools-logic/safety-consolidation.js.map +1 -0
  198. package/dist/tools-logic/session-end-reflect.d.ts +18 -0
  199. package/dist/tools-logic/session-end-reflect.d.ts.map +1 -1
  200. package/dist/tools-logic/session-end-reflect.js +69 -30
  201. package/dist/tools-logic/session-end-reflect.js.map +1 -1
  202. package/dist/tools-logic/session-end.d.ts +18 -0
  203. package/dist/tools-logic/session-end.d.ts.map +1 -1
  204. package/dist/tools-logic/session-end.js +189 -34
  205. package/dist/tools-logic/session-end.js.map +1 -1
  206. package/dist/tools-logic/session-start-lite.d.ts +2 -0
  207. package/dist/tools-logic/session-start-lite.d.ts.map +1 -1
  208. package/dist/tools-logic/session-start-lite.js +11 -2
  209. package/dist/tools-logic/session-start-lite.js.map +1 -1
  210. package/dist/tools-logic/session-start.d.ts +81 -2
  211. package/dist/tools-logic/session-start.d.ts.map +1 -1
  212. package/dist/tools-logic/session-start.js +357 -40
  213. package/dist/tools-logic/session-start.js.map +1 -1
  214. package/dist/tools-logic/skill-propose.d.ts +27 -0
  215. package/dist/tools-logic/skill-propose.d.ts.map +1 -0
  216. package/dist/tools-logic/skill-propose.js +66 -0
  217. package/dist/tools-logic/skill-propose.js.map +1 -0
  218. package/dist/tools-logic/skill-recall.d.ts +5 -0
  219. package/dist/tools-logic/skill-recall.d.ts.map +1 -1
  220. package/dist/tools-logic/skill-recall.js +14 -1
  221. package/dist/tools-logic/skill-recall.js.map +1 -1
  222. package/dist/tools-logic/smart-recall.d.ts +17 -0
  223. package/dist/tools-logic/smart-recall.d.ts.map +1 -1
  224. package/dist/tools-logic/smart-recall.js +51 -16
  225. package/dist/tools-logic/smart-recall.js.map +1 -1
  226. package/dist/tools-logic/smart-remember.js +8 -9
  227. package/dist/tools-logic/smart-remember.js.map +1 -1
  228. package/dist/tools-logic/store-doctor.d.ts +71 -0
  229. package/dist/tools-logic/store-doctor.d.ts.map +1 -0
  230. package/dist/tools-logic/store-doctor.js +387 -0
  231. package/dist/tools-logic/store-doctor.js.map +1 -0
  232. package/dist/tools-logic/store-repair.d.ts +64 -0
  233. package/dist/tools-logic/store-repair.d.ts.map +1 -0
  234. package/dist/tools-logic/store-repair.js +243 -0
  235. package/dist/tools-logic/store-repair.js.map +1 -0
  236. package/dist/tools-logic/supersession.d.ts +34 -0
  237. package/dist/tools-logic/supersession.d.ts.map +1 -0
  238. package/dist/tools-logic/supersession.js +103 -0
  239. package/dist/tools-logic/supersession.js.map +1 -0
  240. package/dist/types.d.ts +7 -1
  241. package/dist/types.d.ts.map +1 -1
  242. package/dist/types.js +1 -1
  243. package/dist/vector/embedding.d.ts +8 -0
  244. package/dist/vector/embedding.d.ts.map +1 -1
  245. package/dist/vector/embedding.js +9 -1
  246. package/dist/vector/embedding.js.map +1 -1
  247. package/dist/vector/local-vector-backend.d.ts.map +1 -1
  248. package/dist/vector/local-vector-backend.js +14 -17
  249. package/dist/vector/local-vector-backend.js.map +1 -1
  250. package/package.json +2 -2
  251. package/dist/relevance/injector.d.ts +0 -51
  252. package/dist/relevance/injector.d.ts.map +0 -1
  253. package/dist/relevance/injector.js +0 -121
  254. package/dist/relevance/injector.js.map +0 -1
  255. package/dist/relevance/precision.d.ts +0 -109
  256. package/dist/relevance/precision.d.ts.map +0 -1
  257. package/dist/relevance/precision.js +0 -279
  258. package/dist/relevance/precision.js.map +0 -1
  259. package/dist/relevance/promoter.d.ts +0 -60
  260. package/dist/relevance/promoter.d.ts.map +0 -1
  261. package/dist/relevance/promoter.js +0 -336
  262. package/dist/relevance/promoter.js.map +0 -1
  263. package/dist/relevance/stager.d.ts +0 -61
  264. package/dist/relevance/stager.d.ts.map +0 -1
  265. package/dist/relevance/stager.js +0 -251
  266. package/dist/relevance/stager.js.map +0 -1
  267. package/dist/relevance/surfacer.d.ts +0 -34
  268. package/dist/relevance/surfacer.d.ts.map +0 -1
  269. package/dist/relevance/surfacer.js +0 -333
  270. package/dist/relevance/surfacer.js.map +0 -1
@@ -14,7 +14,9 @@ import { journalDirs } from "../storage/paths.js";
14
14
  import { extractSection } from "../helpers/sections.js";
15
15
  import { todayISO } from "../storage/fs-utils.js";
16
16
  import { readAlignmentLog, extractWatchPatterns, computeDecisionCalibration } from "../helpers/alignment-patterns.js";
17
- import { readP0Corrections, recordOutcome, getCorrectionKPIs } from "../storage/corrections.js";
17
+ import { readP0Corrections, recordOutcome, getCorrectionKPIs, rankCorrections } from "../storage/corrections.js";
18
+ import { readBlindSpots } from "../storage/blind-spots-store.js";
19
+ import { predictCorrection } from "./predict-correction.js";
18
20
  import { extractKeywords } from "../helpers/auto-name.js";
19
21
  import { isJournalFile } from "../helpers/journal-filter.js";
20
22
  import { hasCaptureLogs, readRecentCaptures } from "../helpers/journal-files.js";
@@ -26,6 +28,9 @@ import { backfill } from "../supabase/sync.js";
26
28
  import { listMilestones } from "../palace/pipeline.js";
27
29
  import { getDreamHealth } from "../storage/dream-health.js";
28
30
  import { readBehaviorPolicies, recordPolicyLoad } from "../storage/behavior-policies.js";
31
+ import { buildRecognition } from "./recognition-builder.js";
32
+ import { runStoreDoctor, storeDoctorBanner } from "./store-doctor.js";
33
+ import { isExperimentEnabled, assignArm, logABResult, warnForcedWithoutEnabled, } from "../storage/ab-experiment.js";
29
34
  /** Slice text at the nearest word boundary, avoiding mid-word truncation. */
30
35
  function sliceAtWord(text, maxLen) {
31
36
  if (text.length <= maxLen)
@@ -34,6 +39,105 @@ function sliceAtWord(text, maxLen) {
34
39
  const lastSpace = sliced.lastIndexOf(" ");
35
40
  return lastSpace > maxLen * 0.6 ? sliced.slice(0, lastSpace) : sliced;
36
41
  }
42
+ /**
43
+ * Project a full CorrectionRecord to the slim payload shape.
44
+ *
45
+ * KPI counters (retrieved_count, heeded_count, precision, proof_confidence, etc.)
46
+ * are stripped — they are internal bookkeeping and add ~60 tokens per correction
47
+ * without helping the LLM act. The agent reads `rule` + `severity` to comply.
48
+ *
49
+ * `context` is included only when it contains materially more text than `rule`
50
+ * (i.e. len > rule.len + 20 chars). When rule == context (the common case),
51
+ * omitting context saves ~50% of per-correction payload.
52
+ */
53
+ function toSlimCorrection(c) {
54
+ const slim = {
55
+ id: c.id,
56
+ severity: c.severity,
57
+ rule: c.rule,
58
+ };
59
+ const ctx = (c.context ?? "").trim();
60
+ const rule = (c.rule ?? "").trim();
61
+ // Include context only when it adds ≥20 chars of additional content.
62
+ if (ctx && ctx !== rule && ctx.length > rule.length + 20) {
63
+ slim.context = sliceAtWord(ctx, 300);
64
+ }
65
+ return slim;
66
+ }
67
+ /**
68
+ * Hard per-section budget cap for the session_start payload.
69
+ *
70
+ * BUDGET BASIS: the `*_total` budgets are measured against the JSON-SERIALIZED
71
+ * length of each item (`JSON.stringify(item).length` summed per section), NOT
72
+ * raw field chars — so keys, quotes, and escapes count against the budget.
73
+ * Per-field limits (`correction_rule`, `insights_title`, …) ARE raw char caps
74
+ * applied to the field text before serialization.
75
+ *
76
+ * Token estimate: chars / 4 (conservative; real tokenizer would give ~same for English prose).
77
+ * P0 corrections ALWAYS survive the cap regardless of position — they are the
78
+ * highest-priority behavioral rules and must never be silently trimmed. When
79
+ * P0s alone exceed corrections_total, the section intentionally exceeds its
80
+ * budget (see applyCorrectionBudget).
81
+ *
82
+ * Budget allocation (serialized chars — divide by 4 for token equiv):
83
+ * corrections: 1200 (~300 tokens) — P0s always kept, may overflow on dense P0s
84
+ * insights: 700 (~175 tokens)
85
+ * active_rooms: 500 (~125 tokens)
86
+ * recent_captures: 550 (~140 tokens)
87
+ * recent briefs: 300+250 raw chars (today+yesterday, per-field caps)
88
+ * behavior_rules: per-field caps only (when≤100, do≤120 raw chars)
89
+ * other sections: unbounded (already small or absent-when-empty)
90
+ *
91
+ * Total: ~6000 serialized chars → ~1500 tokens (target: ≤1500 tokens median).
92
+ */
93
+ const SECTION_CHAR_LIMITS = {
94
+ correction_rule: 120, // per item rule field (raw chars)
95
+ correction_context: 250, // per item context field (raw chars, only when included)
96
+ corrections_total: 1200, // total serialized corrections budget (JSON chars)
97
+ insights_title: 180, // per insight title (raw chars)
98
+ insights_total: 700, // total insights budget (JSON chars)
99
+ rooms_one_liner: 160, // per room one_liner (raw chars)
100
+ rooms_total: 500, // total rooms budget (JSON chars)
101
+ recent_today: 300, // today brief (raw chars)
102
+ recent_yesterday: 250, // yesterday brief (raw chars)
103
+ capture_question: 80, // per capture question (raw chars)
104
+ capture_answer: 180, // per capture answer (raw chars)
105
+ captures_total: 550, // total captures budget (JSON chars)
106
+ rule_when: 100, // behavior rule when (raw chars)
107
+ rule_do: 120, // behavior rule do (raw chars)
108
+ };
109
+ /** Apply per-section char limits to slim corrections, respecting P0 priority. */
110
+ function applyCorrectionBudget(corrections) {
111
+ // P0s are unconditionally included (they are the non-negotiable behavioral rules).
112
+ // P1s fill remaining budget. Both categories are already ranked by rankCorrections.
113
+ const p0s = corrections.filter(c => c.severity === "p0");
114
+ const p1s = corrections.filter(c => c.severity !== "p0");
115
+ const trimmedP0s = p0s.map(c => ({
116
+ ...c,
117
+ rule: sliceAtWord(c.rule, SECTION_CHAR_LIMITS.correction_rule),
118
+ context: c.context ? sliceAtWord(c.context, SECTION_CHAR_LIMITS.correction_context) : undefined,
119
+ }));
120
+ // INTENTIONAL P0 OVERFLOW: P0s always survive — when the trimmed P0s alone
121
+ // exceed corrections_total, `budget` goes NEGATIVE, zero P1s are admitted,
122
+ // and the section EXCEEDS its cap. P0 completeness beats the byte budget:
123
+ // silently dropping a non-negotiable behavioral rule is worse than a fat
124
+ // payload. Controlled, not accidental — covered by the P0-overflow test.
125
+ let budget = SECTION_CHAR_LIMITS.corrections_total - JSON.stringify(trimmedP0s).length;
126
+ const trimmedP1s = [];
127
+ for (const c of p1s) {
128
+ const trimmed = {
129
+ ...c,
130
+ rule: sliceAtWord(c.rule, SECTION_CHAR_LIMITS.correction_rule),
131
+ context: c.context ? sliceAtWord(c.context, SECTION_CHAR_LIMITS.correction_context) : undefined,
132
+ };
133
+ const itemSize = JSON.stringify(trimmed).length;
134
+ if (budget - itemSize < 0)
135
+ break; // no room left for P1s
136
+ trimmedP1s.push(trimmed);
137
+ budget -= itemSize;
138
+ }
139
+ return [...trimmedP0s, ...trimmedP1s];
140
+ }
37
141
  /**
38
142
  * Strip markdown ATX headers from a journal fragment before embedding it into
39
143
  * a card field. `extractSection(content, "next")` returns the section heading
@@ -56,6 +160,25 @@ export async function sessionStart(input) {
56
160
  resetOwnedFiles();
57
161
  const slug = await resolveProject(input.project);
58
162
  ensurePalaceInitialized(slug);
163
+ // C4 A/B experiment — assign the arm FIRST so every correction-derived
164
+ // section below can gate on it. OFF semantics (orchestrator ruling
165
+ // 2026-07-03): "this agent has no correction memory today" — corrections,
166
+ // watch_for, predicted_risks, blind_spots, mirror_available, the alignment
167
+ // KPI block, and correction-derived recognition tendencies are ALL
168
+ // absent/empty in OFF payloads. Insights/rooms/captures (journal lineage)
169
+ // stay in both arms — v1 manipulates corrections only.
170
+ //
171
+ // When AR_AB_ENABLED is not set (default), abAssignment is null and every
172
+ // session gets full injection as before — no degradation, no ledger write.
173
+ // AR_AB_FORCE without AR_AB_ENABLED=1 is a loud no-op (stderr warning).
174
+ let abAssignment = null;
175
+ if (isExperimentEnabled()) {
176
+ abAssignment = assignArm(slug);
177
+ }
178
+ else {
179
+ warnForcedWithoutEnabled();
180
+ }
181
+ const abArm = abAssignment?.arm ?? null;
59
182
  // 1. Identity — first meaningful lines, skipping YAML frontmatter keys and empty template stubs
60
183
  const rawIdentity = readIdentity(slug);
61
184
  const identityLines = rawIdentity.split("\n").filter((l) => {
@@ -189,46 +312,58 @@ export async function sessionStart(input) {
189
312
  const content = fs.readFileSync(path.join(dir, file), "utf-8");
190
313
  const brief = extractSection(content, "brief");
191
314
  const raw = brief ? brief : content.split("\n").slice(0, 3).join(" ");
192
- const entry = sliceAtWord(stripMarkdownHeaders(raw), 400);
315
+ const entry = sliceAtWord(stripMarkdownHeaders(raw), SECTION_CHAR_LIMITS.recent_today);
193
316
  todayBrief = todayBrief ? `${todayBrief} | ${entry}` : entry;
194
317
  }
195
318
  else if (d === yesterday && !yesterdayBrief) {
196
319
  const content = fs.readFileSync(path.join(dir, file), "utf-8");
197
320
  const brief = extractSection(content, "brief");
198
321
  const raw = brief ? brief : content.split("\n").slice(0, 3).join(" ");
199
- yesterdayBrief = sliceAtWord(stripMarkdownHeaders(raw), 400);
322
+ yesterdayBrief = sliceAtWord(stripMarkdownHeaders(raw), SECTION_CHAR_LIMITS.recent_yesterday);
200
323
  }
201
324
  else if (d < yesterday) {
202
325
  olderCount++;
203
326
  }
204
327
  }
205
328
  }
206
- // 6. Watch for — predictive warnings from past corrections
207
- const alignLog = readAlignmentLog(slug);
208
- const watch_for = extractWatchPatterns(alignLog, 2);
209
- // 8b. Decision calibration warnings
210
- const calibration = computeDecisionCalibration(slug);
211
- for (const cal of calibration) {
212
- watch_for.push({
213
- pattern: cal.pattern,
214
- frequency: cal.sample_size,
215
- suggestion: cal.suggestion,
216
- });
329
+ // 6. Watch for — predictive warnings from past corrections.
330
+ // A/B OFF arm: suppressed entirely (correction-derived; ruling 2026-07-03).
331
+ const watch_for = [];
332
+ if (abArm !== "off") {
333
+ const alignLog = readAlignmentLog(slug);
334
+ watch_for.push(...extractWatchPatterns(alignLog, 2));
335
+ // 8b. Decision calibration warnings
336
+ const calibration = computeDecisionCalibration(slug);
337
+ for (const cal of calibration) {
338
+ watch_for.push({
339
+ pattern: cal.pattern,
340
+ frequency: cal.sample_size,
341
+ suggestion: cal.suggestion,
342
+ });
343
+ }
217
344
  }
218
- // 7. P0 corrections — always-load behavioral rules (max 10 most recent)
219
- const corrections = readP0Corrections(slug).slice(0, 10);
345
+ // 7. P0 corrections — always-load behavioral rules (max 10).
346
+ // P5: rank by severity → proof_confidence → recency → proof_count so the most
347
+ // authoritative, evidence-backed rules win the cap (was: arbitrary newest-10).
348
+ // We read the FULL records for outcome tracking, then slim them for the payload.
349
+ const rawCorrections = rankCorrections(readP0Corrections(slug), 10);
220
350
  // P0-B: auto-record "retrieved" outcome for each surfaced correction.
221
351
  // Automaticity Law: only automatic instrumentation captures real data.
222
352
  // Guard: fire at most once per correction per calendar day — prevents
223
353
  // double-counting if session_start is called twice in the same session
224
354
  // (e.g. on reconnect or tool retry).
225
- {
355
+ //
356
+ // A/B: "retrieved" is ONLY recorded when the correction is actually injected
357
+ // (arm ON or experiment disabled). In the OFF arm the agent never sees the
358
+ // corrections — recording "retrieved" would falsely inflate the precision
359
+ // numerator and corrupt the KPI that measures injection effectiveness.
360
+ if (abArm !== "off") {
226
361
  // Local-TZ date for the 1/day guard (Sprint-0 review: toISOString is UTC,
227
362
  // which breaks the guard for users in UTC+5..+14 — e.g. 07:50 local in UTC+8
228
363
  // is "yesterday" in UTC). "sv" locale formats as YYYY-MM-DD.
229
364
  const todayStr = new Date().toLocaleDateString("sv");
230
365
  const nowISO = new Date().toISOString();
231
- for (const c of corrections) {
366
+ for (const c of rawCorrections) {
232
367
  if (c.last_retrieved && new Date(c.last_retrieved).toLocaleDateString("sv") === todayStr)
233
368
  continue; // already counted today
234
369
  try {
@@ -245,6 +380,11 @@ export async function sessionStart(input) {
245
380
  }
246
381
  }
247
382
  }
383
+ // Slim corrections: strip KPI fields, keep only what the LLM acts on.
384
+ // applyCorrectionBudget ensures P0s always survive the total char cap.
385
+ // A/B OFF arm: corrections is an empty array — the agent never sees them.
386
+ const correctionsSlim = applyCorrectionBudget(rawCorrections.map(toSlimCorrection));
387
+ const corrections = abArm === "off" ? [] : correctionsSlim;
248
388
  // 8. Resume block — structured re-entry briefing for returning sessions
249
389
  const sessionsCount = olderCount + (yesterdayBrief ? 1 : 0) + (todayBrief ? 1 : 0);
250
390
  let resume = null;
@@ -303,8 +443,11 @@ export async function sessionStart(input) {
303
443
  // internals, so "non-empty" is precise rather than `active_rooms.length > 0`.
304
444
  const hasPalaceContent = allRooms.some((r) => countRoomEntries(slug, r.slug) > 0);
305
445
  const hasCaptures = recentCaptures.length > 0 || hasCaptureLogs(slug);
446
+ // A/B: use correctionsSlim (pre-suppression), NOT the arm-gated `corrections`,
447
+ // so empty-state detection is arm-independent — an OFF-arm session on a
448
+ // corrections-only project must not flash the "No memory found" banner.
306
449
  const isEmpty = !resume &&
307
- corrections.length === 0 &&
450
+ correctionsSlim.length === 0 &&
308
451
  !todayBrief && !yesterdayBrief &&
309
452
  olderCount === 0 &&
310
453
  !hasCaptures &&
@@ -326,24 +469,37 @@ export async function sessionStart(input) {
326
469
  // Wrapped in try/catch so a corrupt or unreadable corrections dir never
327
470
  // breaks session orientation. Null when no outcome data exists yet
328
471
  // (retrieved === 0) — no fake claims.
472
+ // A/B OFF arm: suppressed (correction-derived KPI; ruling 2026-07-03).
329
473
  let alignment = null;
330
- try {
331
- const kpis = getCorrectionKPIs(slug);
332
- if (kpis.retrieved > 0) {
333
- alignment = {
334
- precision: kpis.precision,
335
- retrieved: kpis.retrieved,
336
- heeded: kpis.heeded,
337
- recurred: kpis.recurred,
338
- };
474
+ if (abArm !== "off") {
475
+ try {
476
+ const kpis = getCorrectionKPIs(slug);
477
+ if (kpis.retrieved > 0) {
478
+ alignment = {
479
+ precision: kpis.precision,
480
+ retrieved: kpis.retrieved,
481
+ heeded: kpis.heeded,
482
+ recurred: kpis.recurred,
483
+ };
484
+ }
485
+ }
486
+ catch {
487
+ // alignment remains null — session_start must always succeed
339
488
  }
340
- }
341
- catch {
342
- // alignment remains null — session_start must always succeed
343
489
  }
344
490
  // Dream cron health — surface when broken for ≥2 nights
345
491
  const dreamHealthRaw = getDreamHealth();
346
492
  const dreamHealth = dreamHealthRaw.banner ? dreamHealthRaw : null;
493
+ // Store-doctor health line — ONE line, ONLY on warn/red, silent on ok.
494
+ // Best-effort and lock-free: any failure leaves the line null and never
495
+ // blocks orientation/recall.
496
+ let storeDoctorLine = null;
497
+ try {
498
+ storeDoctorLine = storeDoctorBanner(runStoreDoctor());
499
+ }
500
+ catch {
501
+ storeDoctorLine = null;
502
+ }
347
503
  // Pipeline narrative spine summary — null if no pipeline files exist for project
348
504
  const pipelineMilestones = listMilestones(slug);
349
505
  let pipeline = null;
@@ -365,27 +521,188 @@ export async function sessionStart(input) {
365
521
  : null,
366
522
  };
367
523
  }
368
- return {
524
+ // Wave 5: Blind Spots (READ-only) + forward anticipation. Both are best-effort
525
+ // — never break orientation. Derivation runs async in consolidation; here we
526
+ // only READ the profile and run the (synchronous) predictor over the active
527
+ // phase goal + latest `## Next` trajectory.
528
+ // A/B OFF arm: blind_spots + predicted_risks are correction-derived —
529
+ // suppressed entirely (ruling 2026-07-03). The predictor is not even run.
530
+ let blindSpots = [];
531
+ // predicted_risks is optional — undefined when empty (absent from JSON, saves ~20 bytes/project).
532
+ let predictedRisks;
533
+ if (abArm !== "off") {
534
+ try {
535
+ const profile = readBlindSpots(slug);
536
+ if (profile) {
537
+ blindSpots = profile.blind_spots.slice(0, 2).map((b) => ({
538
+ tendency: sliceAtWord(b.tendency, 160),
539
+ severity: b.severity,
540
+ evidence_count: b.evidence_count,
541
+ }));
542
+ }
543
+ }
544
+ catch {
545
+ blindSpots = [];
546
+ }
547
+ try {
548
+ const planParts = [];
549
+ if (pipeline?.active_phase_goal)
550
+ planParts.push(pipeline.active_phase_goal);
551
+ if (resume?.last_trajectory)
552
+ planParts.push(resume.last_trajectory);
553
+ const planText = planParts.join(". ").trim();
554
+ if (planText) {
555
+ const pred = await predictCorrection({ plan: planText, project: slug });
556
+ if (pred.likelihood !== "low" && pred.top_risks.length > 0) {
557
+ predictedRisks = pred.top_risks.slice(0, 2).map((r) => ({
558
+ tendency: sliceAtWord(r.tendency, 160),
559
+ likelihood: pred.likelihood,
560
+ matched: r.matched,
561
+ }));
562
+ }
563
+ }
564
+ }
565
+ catch {
566
+ predictedRisks = undefined;
567
+ }
568
+ }
569
+ // Loop 9 — cheap pointer to The Mirror. We do NOT assemble the reflection on
570
+ // the hot path; we only note it EXISTS when there is real data to reflect (a
571
+ // stored blind-spots profile OR ≥1 active correction). Best-effort: a failure
572
+ // here leaves the pointer null and never breaks orientation.
573
+ // A/B OFF arm: suppressed — the pointer names correction counts (correction-
574
+ // derived). With corrections=[] and blindSpots=[] it would self-suppress
575
+ // anyway, but the explicit gate keeps the contract robust to future edits.
576
+ let mirrorAvailable;
577
+ if (abArm !== "off") {
578
+ try {
579
+ const hasProfile = blindSpots.length > 0;
580
+ // corrections is now SlimCorrection[] (no `active` field) — count length directly.
581
+ // All surfaced corrections are already active (readP0Corrections filters inactive).
582
+ const activeCorrections = corrections.length;
583
+ if (hasProfile || activeCorrections > 0) {
584
+ mirrorAvailable =
585
+ `The Mirror is available — run \`ar mirror --project ${slug}\` to see, and correct, ` +
586
+ `what I've noticed about how you think (${activeCorrections} corrections grounding it).`;
587
+ }
588
+ }
589
+ catch {
590
+ mirrorAvailable = undefined;
591
+ }
592
+ }
593
+ // Loop 4 — real-time recognition snapshot. Pure-local assembler over the
594
+ // already-resolved slug (no re-detection ⇒ no git shell-out on the hot path).
595
+ // Best-effort: a degraded recognition must never break orientation.
596
+ let recognition;
597
+ try {
598
+ recognition = buildRecognition(slug);
599
+ }
600
+ catch {
601
+ recognition = {
602
+ who: { name: "unknown", role: null, owner: null, unknown: true },
603
+ can_do: { skills: [], permissions: [] },
604
+ project: { slug, last_journal_date: null, status: "empty", trajectory: null, rooms: [] },
605
+ person: { tendencies: [], caveat: "" },
606
+ };
607
+ }
608
+ // A/B OFF arm: recognition.person tendencies derive from the blind-spots
609
+ // profile (corrections lineage) — strip the person block regardless of
610
+ // content (ruling 2026-07-03). who/can_do/project are NOT correction-derived
611
+ // and stay.
612
+ if (abArm === "off" && recognition.person) {
613
+ const { person: _correctionDerived, ...rest } = recognition;
614
+ recognition = rest;
615
+ }
616
+ // Apply per-section char budgets to insights and rooms.
617
+ const insightsBudgeted = (() => {
618
+ let budget = SECTION_CHAR_LIMITS.insights_total;
619
+ const out = [];
620
+ for (const i of insights) {
621
+ const trimmed = { ...i, title: sliceAtWord(i.title, SECTION_CHAR_LIMITS.insights_title) };
622
+ const size = JSON.stringify(trimmed).length;
623
+ if (budget - size < 0)
624
+ break;
625
+ out.push(trimmed);
626
+ budget -= size;
627
+ }
628
+ return out;
629
+ })();
630
+ const roomsBudgeted = (() => {
631
+ let budget = SECTION_CHAR_LIMITS.rooms_total;
632
+ const out = [];
633
+ for (const r of active_rooms) {
634
+ const trimmed = { ...r, one_liner: sliceAtWord(r.one_liner, SECTION_CHAR_LIMITS.rooms_one_liner) };
635
+ const size = JSON.stringify(trimmed).length;
636
+ if (budget - size < 0)
637
+ break;
638
+ out.push(trimmed);
639
+ budget -= size;
640
+ }
641
+ return out;
642
+ })();
643
+ // recent_captures: suppress "Auto-captured" label (not useful), apply budget.
644
+ const capturesBudgeted = (() => {
645
+ let budget = SECTION_CHAR_LIMITS.captures_total;
646
+ const out = [];
647
+ for (const c of recentCaptures) {
648
+ // Suppress generic "Auto-captured" question — it adds no signal for the agent.
649
+ const q = c.question && c.question !== "Auto-captured"
650
+ ? sliceAtWord(c.question, SECTION_CHAR_LIMITS.capture_question)
651
+ : "";
652
+ const a = sliceAtWord(c.answer, SECTION_CHAR_LIMITS.capture_answer);
653
+ const item = { date: c.date, question: q, answer: a };
654
+ const size = JSON.stringify(item).length;
655
+ if (budget - size < 0)
656
+ break;
657
+ out.push(item);
658
+ budget -= size;
659
+ }
660
+ return out;
661
+ })();
662
+ // behavior_rules: apply per-field char limits to when/do.
663
+ const rulesBudgeted = behaviorRules.map((r) => ({
664
+ ...r,
665
+ when: sliceAtWord(r.when, SECTION_CHAR_LIMITS.rule_when),
666
+ do: sliceAtWord(r.do, SECTION_CHAR_LIMITS.rule_do),
667
+ }));
668
+ const result = {
369
669
  project: slug,
370
670
  identity,
371
- insights,
372
- active_rooms,
671
+ insights: insightsBudgeted,
672
+ active_rooms: roomsBudgeted,
373
673
  cross_project,
374
674
  recent: { today: todayBrief, yesterday: yesterdayBrief, older_count: olderCount },
375
- recent_captures: recentCaptures.map((c) => ({
376
- date: c.date,
377
- question: sliceAtWord(c.question, 120),
378
- answer: sliceAtWord(c.answer, 200),
379
- })),
675
+ recent_captures: capturesBudgeted,
380
676
  watch_for,
381
677
  corrections,
382
678
  resume,
383
- behavior_rules: behaviorRules,
679
+ behavior_rules: rulesBudgeted,
384
680
  dream_health: dreamHealth,
681
+ store_doctor: storeDoctorLine,
385
682
  pipeline,
386
683
  alignment,
684
+ blind_spots: blindSpots,
685
+ // Omit predicted_risks entirely when empty — absent from JSON saves bytes.
686
+ predicted_risks: predictedRisks && predictedRisks.length > 0 ? predictedRisks : undefined,
687
+ // Suppress recognition.person when tendencies is empty — the caveat string alone
688
+ // wastes ~70 bytes with no actionable content. RecognitionPayload.person is
689
+ // optional (absent-when-empty contract); destructuring drops the key entirely.
690
+ recognition: recognition.person && recognition.person.tendencies.length === 0
691
+ ? (({ person: _omitEmptyPerson, ...rest }) => rest)(recognition)
692
+ : recognition,
693
+ mirror_available: mirrorAvailable,
387
694
  empty_state: isEmpty ? "No memory found for this project. Try: bootstrap_scan() to import existing projects, or start working and use remember() to save decisions." : undefined,
695
+ // C4: ab_arm is included only when the experiment is running (saves bytes otherwise).
696
+ ab_arm: abArm ?? undefined,
388
697
  };
698
+ // C4: fill in the injected_count + payload_tokens in the ledger row now that
699
+ // we know the final payload shape. Best-effort — never delays the return.
700
+ if (abAssignment) {
701
+ const injectedCount = corrections.length; // 0 for OFF arm
702
+ const payloadTokens = Math.round(JSON.stringify(corrections).length / 4);
703
+ logABResult(slug, abAssignment.session_key, injectedCount, payloadTokens);
704
+ }
705
+ return result;
389
706
  }
390
707
  async function autoBackfill(project) {
391
708
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/tools-logic/session-start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/tools-logic/session-start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * skill-propose.ts — draft procedural skills from closed pipeline phases
3
+ * (Wave 5, agent-as-author).
4
+ *
5
+ * Scans closed milestones' `how_solved` / `synthesis` for a repeated procedural
6
+ * shape and emits DRAFT skills the agent can confirm. It NEVER calls writeSkill
7
+ * — synthesis-to-disk is the agent's call (Decision: agent-as-author). The CLI /
8
+ * reflect surface presents these drafts; the human/agent decides what to persist.
9
+ */
10
+ import type { SkillMeta, SkillBody } from "../palace/skills.js";
11
+ export interface ProposedSkill {
12
+ meta: Omit<SkillMeta, "created" | "updated" | "fsrs"> & {
13
+ created?: string;
14
+ updated?: string;
15
+ };
16
+ body: SkillBody;
17
+ /** Always "auto_reflection" — these are drafts, not manual skills. */
18
+ source: "auto_reflection";
19
+ /** Pipeline phases this draft was distilled from (evidence). */
20
+ from_phases: number[];
21
+ }
22
+ /**
23
+ * Propose DRAFT skills from a project's closed phases. Returns [] when there
24
+ * is no closed phase with usable procedural content. Pure read — writes nothing.
25
+ */
26
+ export declare function proposeSkillsFromPhases(project?: string): Promise<ProposedSkill[]>;
27
+ //# sourceMappingURL=skill-propose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-propose.d.ts","sourceRoot":"","sources":["../../src/tools-logic/skill-propose.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/F,IAAI,EAAE,SAAS,CAAC;IAChB,sEAAsE;IACtE,MAAM,EAAE,iBAAiB,CAAC;IAC1B,gEAAgE;IAChE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAYD;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAyCxF"}