@causyne/agent 0.0.0-stage → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/LICENSE +102 -0
  2. package/README.md +31 -2
  3. package/SECURITY.md +24 -0
  4. package/bin/causyne.js +13 -0
  5. package/docs/ARCHITECTURE.md +63 -0
  6. package/docs/PROVENANCE.md +29 -0
  7. package/docs/SECURITY_REVIEW.md +89 -0
  8. package/docs/THIRD_PARTY_NOTICES.md +49 -0
  9. package/native-skills/ai-engineering/context-window-management/SKILL.md +43 -0
  10. package/native-skills/ai-engineering/llm-evaluation/SKILL.md +46 -0
  11. package/native-skills/ai-engineering/model-cost-and-latency/SKILL.md +46 -0
  12. package/native-skills/ai-engineering/prompt-construction/SKILL.md +42 -0
  13. package/native-skills/ai-engineering/retrieval-augmented-generation/SKILL.md +42 -0
  14. package/native-skills/ai-engineering/structured-output-and-schemas/SKILL.md +45 -0
  15. package/native-skills/ai-engineering/tool-calling-agents/SKILL.md +43 -0
  16. package/native-skills/android/app-performance-profiling/SKILL.md +42 -0
  17. package/native-skills/android/background-work-scheduling/SKILL.md +47 -0
  18. package/native-skills/android/compose-state-and-recomposition/SKILL.md +43 -0
  19. package/native-skills/android/gradle-build-configuration/SKILL.md +41 -0
  20. package/native-skills/android/lifecycle-and-leaks/SKILL.md +46 -0
  21. package/native-skills/android/play-store-release/SKILL.md +43 -0
  22. package/native-skills/android/room-and-persistence/SKILL.md +40 -0
  23. package/native-skills/backend/authentication-and-sessions/SKILL.md +45 -0
  24. package/native-skills/backend/background-jobs-and-queues/SKILL.md +42 -0
  25. package/native-skills/backend/caching-strategy/SKILL.md +44 -0
  26. package/native-skills/backend/graceful-shutdown/SKILL.md +42 -0
  27. package/native-skills/backend/rate-limiting-and-quotas/SKILL.md +40 -0
  28. package/native-skills/backend/rest-api-design/SKILL.md +40 -0
  29. package/native-skills/backend/webhook-delivery-and-receipt/SKILL.md +43 -0
  30. package/native-skills/cloud/cost-optimisation/SKILL.md +46 -0
  31. package/native-skills/cloud/iam-least-privilege/SKILL.md +43 -0
  32. package/native-skills/cloud/infrastructure-as-code/SKILL.md +43 -0
  33. package/native-skills/cloud/multi-region-and-failover/SKILL.md +43 -0
  34. package/native-skills/cloud/serverless-patterns/SKILL.md +47 -0
  35. package/native-skills/data/data-quality-monitoring/SKILL.md +51 -0
  36. package/native-skills/data/etl-pipeline-reliability/SKILL.md +43 -0
  37. package/native-skills/data/exploratory-analysis/SKILL.md +43 -0
  38. package/native-skills/data/metric-definition/SKILL.md +42 -0
  39. package/native-skills/data/notebook-to-production/SKILL.md +43 -0
  40. package/native-skills/database/backup-and-recovery/SKILL.md +43 -0
  41. package/native-skills/database/connection-pooling/SKILL.md +42 -0
  42. package/native-skills/database/data-integrity-and-constraints/SKILL.md +42 -0
  43. package/native-skills/database/query-optimisation/SKILL.md +38 -0
  44. package/native-skills/database/safe-migrations/SKILL.md +47 -0
  45. package/native-skills/database/schema-design/SKILL.md +38 -0
  46. package/native-skills/database/transactions-and-isolation/SKILL.md +41 -0
  47. package/native-skills/design/colour-system-construction/SKILL.md +38 -0
  48. package/native-skills/design/design-direction-brief/SKILL.md +41 -0
  49. package/native-skills/design/motion-and-transitions/SKILL.md +38 -0
  50. package/native-skills/design/responsive-strategy/SKILL.md +39 -0
  51. package/native-skills/design/spacing-and-rhythm/SKILL.md +38 -0
  52. package/native-skills/design/type-scale-and-hierarchy/SKILL.md +39 -0
  53. package/native-skills/design/visual-qa-loop/SKILL.md +42 -0
  54. package/native-skills/devops/docker-multi-stage-builds/SKILL.md +60 -0
  55. package/native-skills/devops/github-actions-ci/SKILL.md +60 -0
  56. package/native-skills/devops/incident-triage/SKILL.md +38 -0
  57. package/native-skills/devops/kubernetes-deployment-hardening/SKILL.md +64 -0
  58. package/native-skills/devops/observability-baseline/SKILL.md +38 -0
  59. package/native-skills/devops/secret-management/SKILL.md +40 -0
  60. package/native-skills/devops/terraform-state-and-modules/SKILL.md +36 -0
  61. package/native-skills/devops/zero-downtime-deploys/SKILL.md +40 -0
  62. package/native-skills/git/bisect-regression-hunt/SKILL.md +43 -0
  63. package/native-skills/git/branch-strategy/SKILL.md +39 -0
  64. package/native-skills/git/commit-hygiene/SKILL.md +41 -0
  65. package/native-skills/git/history-recovery/SKILL.md +44 -0
  66. package/native-skills/git/large-repository-surgery/SKILL.md +46 -0
  67. package/native-skills/git/merge-conflict-resolution/SKILL.md +42 -0
  68. package/native-skills/media/cinematic-3d-shot/SKILL.md +104 -0
  69. package/native-skills/mobile/app-startup-optimisation/SKILL.md +41 -0
  70. package/native-skills/mobile/cross-platform-tradeoffs/SKILL.md +42 -0
  71. package/native-skills/mobile/deep-linking/SKILL.md +39 -0
  72. package/native-skills/mobile/mobile-storage-security/SKILL.md +45 -0
  73. package/native-skills/mobile/offline-first-sync/SKILL.md +42 -0
  74. package/native-skills/mobile/push-notifications/SKILL.md +38 -0
  75. package/native-skills/performance/algorithmic-complexity/SKILL.md +43 -0
  76. package/native-skills/performance/concurrency-and-parallelism/SKILL.md +42 -0
  77. package/native-skills/performance/load-testing/SKILL.md +42 -0
  78. package/native-skills/performance/memory-and-leak-hunting/SKILL.md +41 -0
  79. package/native-skills/performance/network-and-payload-efficiency/SKILL.md +42 -0
  80. package/native-skills/performance/profiling-methodology/SKILL.md +46 -0
  81. package/native-skills/python/async-correctness/SKILL.md +40 -0
  82. package/native-skills/python/cli-tool-construction/SKILL.md +44 -0
  83. package/native-skills/python/data-processing-pipelines/SKILL.md +38 -0
  84. package/native-skills/python/environment-isolation/SKILL.md +41 -0
  85. package/native-skills/python/packaging-and-distribution/SKILL.md +56 -0
  86. package/native-skills/python/pytest-suite-design/SKILL.md +39 -0
  87. package/native-skills/python/type-hints-and-static-checking/SKILL.md +42 -0
  88. package/native-skills/security/authorization-model/SKILL.md +42 -0
  89. package/native-skills/security/crypto-usage/SKILL.md +48 -0
  90. package/native-skills/security/dependency-supply-chain/SKILL.md +42 -0
  91. package/native-skills/security/input-validation-and-injection/SKILL.md +44 -0
  92. package/native-skills/security/secure-file-uploads/SKILL.md +46 -0
  93. package/native-skills/security/security-headers-and-csp/SKILL.md +44 -0
  94. package/native-skills/security/threat-modelling/SKILL.md +46 -0
  95. package/native-skills/testing/end-to-end-test-stability/SKILL.md +42 -0
  96. package/native-skills/testing/property-based-testing/SKILL.md +46 -0
  97. package/native-skills/testing/regression-test-from-a-bug/SKILL.md +41 -0
  98. package/native-skills/testing/snapshot-and-visual-regression/SKILL.md +42 -0
  99. package/native-skills/testing/test-doubles-and-mocking/SKILL.md +43 -0
  100. package/native-skills/testing/test-strategy-and-pyramid/SKILL.md +39 -0
  101. package/native-skills/testing/writing-good-assertions/SKILL.md +42 -0
  102. package/native-skills/web/accessible-components/SKILL.md +45 -0
  103. package/native-skills/web/api-client-resilience/SKILL.md +39 -0
  104. package/native-skills/web/bundle-size-reduction/SKILL.md +38 -0
  105. package/native-skills/web/core-web-vitals/SKILL.md +40 -0
  106. package/native-skills/web/css-layout-systems/SKILL.md +41 -0
  107. package/native-skills/web/form-validation-ux/SKILL.md +39 -0
  108. package/native-skills/web/react-state-architecture/SKILL.md +41 -0
  109. package/native-skills/web/ssr-hydration-correctness/SKILL.md +45 -0
  110. package/package.json +68 -4
  111. package/src/agentLoop.js +2458 -0
  112. package/src/appChannel.js +109 -0
  113. package/src/approvalGrants.js +66 -0
  114. package/src/auditLog.js +52 -0
  115. package/src/autoUpdate.js +12 -0
  116. package/src/capabilities.js +36 -0
  117. package/src/checkpoints.js +1199 -0
  118. package/src/cliMode.js +638 -0
  119. package/src/commands.js +805 -0
  120. package/src/compiledSkills.js +540 -0
  121. package/src/config.js +130 -0
  122. package/src/contextManager.js +498 -0
  123. package/src/cortex/autoCondenser.js +192 -0
  124. package/src/cortex/provisioner.js +27 -0
  125. package/src/cortex/vectorDb.js +447 -0
  126. package/src/designPalettes.js +99 -0
  127. package/src/devMode.js +6 -0
  128. package/src/embodimentSession.js +180 -0
  129. package/src/entrypoint.js +194 -0
  130. package/src/execSafe.js +21 -0
  131. package/src/gitSnapshot.js +378 -0
  132. package/src/mcp/jsonRpc.js +165 -0
  133. package/src/mcp/mcpClient.js +136 -0
  134. package/src/mcp/mcpRegistry.js +207 -0
  135. package/src/memory.js +62 -0
  136. package/src/memoryManager.js +124 -0
  137. package/src/modelCatalogue.js +132 -0
  138. package/src/modelIds.js +42 -0
  139. package/src/modelRouter.js +145 -0
  140. package/src/outputStore.js +246 -0
  141. package/src/perception.js +124 -0
  142. package/src/planCache.js +437 -0
  143. package/src/procSignal.js +32 -0
  144. package/src/providers/anthropic.js +408 -0
  145. package/src/providers/base.js +328 -0
  146. package/src/providers/dashscope-byok.js +86 -0
  147. package/src/providers/deepseek.js +80 -0
  148. package/src/providers/factory.js +37 -0
  149. package/src/providers/gemini.js +346 -0
  150. package/src/providers/moonshot.js +73 -0
  151. package/src/providers/muse.js +169 -0
  152. package/src/providers/ollama.js +104 -0
  153. package/src/providers/openai-compatible.js +84 -0
  154. package/src/providers/openai.js +20 -0
  155. package/src/providers/qwen-byok.js +76 -0
  156. package/src/providers/xai.js +73 -0
  157. package/src/provisioning/capabilityConsent.js +24 -0
  158. package/src/provisioning/capabilityProvisioner.js +271 -0
  159. package/src/provisioning/capabilityTools.js +29 -0
  160. package/src/reporting.js +373 -0
  161. package/src/sandbox.js +529 -0
  162. package/src/sessionStore.js +279 -0
  163. package/src/skillsManager.js +288 -0
  164. package/src/slopDetector.js +307 -0
  165. package/src/taskBuffer.js +45 -0
  166. package/src/taskShape.js +241 -0
  167. package/src/textDiff.js +150 -0
  168. package/src/tokenTracker.js +560 -0
  169. package/src/tool-scripts/ax_snapshot.applescript +39 -0
  170. package/src/tool-scripts/ax_snapshot.ps1 +10 -0
  171. package/src/tool-scripts/desktop_act.applescript +58 -0
  172. package/src/tool-scripts/resolve_automator.py +119 -0
  173. package/src/toolPacks.js +524 -0
  174. package/src/tools/archive.js +63 -0
  175. package/src/tools/astryxOracle.js +78 -0
  176. package/src/tools/axSnapshot.js +165 -0
  177. package/src/tools/blenderAutomator.js +349 -0
  178. package/src/tools/browserAutomator.js +252 -0
  179. package/src/tools/checkSystemSpecs.js +64 -0
  180. package/src/tools/clipboard.js +36 -0
  181. package/src/tools/codeSearchAst.js +101 -0
  182. package/src/tools/codeSearcher.js +230 -0
  183. package/src/tools/codeTools.js +262 -0
  184. package/src/tools/codebaseSearch.js +75 -0
  185. package/src/tools/createSkill.js +129 -0
  186. package/src/tools/deferredMcpSearch.js +246 -0
  187. package/src/tools/desktopAct.js +208 -0
  188. package/src/tools/desktopOpen.js +34 -0
  189. package/src/tools/dynamicLoader.js +44 -0
  190. package/src/tools/executeProceduralMedia.js +93 -0
  191. package/src/tools/fsDelete.js +51 -0
  192. package/src/tools/fsEdit.js +105 -0
  193. package/src/tools/fsFind.js +128 -0
  194. package/src/tools/fsList.js +77 -0
  195. package/src/tools/fsMove.js +57 -0
  196. package/src/tools/fsRead.js +87 -0
  197. package/src/tools/fsSearch.js +198 -0
  198. package/src/tools/fsWrite.js +41 -0
  199. package/src/tools/gameAiBehaviorTree.js +208 -0
  200. package/src/tools/gameAnimationRig.js +194 -0
  201. package/src/tools/gameAssetFetcher.js +372 -0
  202. package/src/tools/gameAssetHarvester.js +210 -0
  203. package/src/tools/gameAudioSynth.js +267 -0
  204. package/src/tools/gameBuilder.js +886 -0
  205. package/src/tools/gameCanvasAudit.js +101 -0
  206. package/src/tools/gameCinematicSequencer.js +151 -0
  207. package/src/tools/gameDataForge.js +124 -0
  208. package/src/tools/gameDialogueTreeGen.js +166 -0
  209. package/src/tools/gameEconomyBalancer.js +161 -0
  210. package/src/tools/gameEntitySpawner.js +207 -0
  211. package/src/tools/gameLoreForge.js +153 -0
  212. package/src/tools/gameQuestArcBuilder.js +152 -0
  213. package/src/tools/gameSceneBuilder.js +158 -0
  214. package/src/tools/gameShaderForge.js +181 -0
  215. package/src/tools/gameTilemapGenerator.js +164 -0
  216. package/src/tools/gameUiHudBuilder.js +292 -0
  217. package/src/tools/gameVfxEmitterGen.js +108 -0
  218. package/src/tools/gameWebRuntimeInspector.js +91 -0
  219. package/src/tools/generateMediaViaApi.js +358 -0
  220. package/src/tools/gitExec.js +54 -0
  221. package/src/tools/godotAutomator.js +437 -0
  222. package/src/tools/manageLocalAiDependencies.js +220 -0
  223. package/src/tools/memoryWrite.js +99 -0
  224. package/src/tools/multiEdit.js +107 -0
  225. package/src/tools/palmierAutomator.js +104 -0
  226. package/src/tools/pdfReader.js +112 -0
  227. package/src/tools/persistentShell.js +148 -0
  228. package/src/tools/printer.js +316 -0
  229. package/src/tools/procTerm.js +91 -0
  230. package/src/tools/processList.js +52 -0
  231. package/src/tools/readNativeSkill.js +39 -0
  232. package/src/tools/registry.js +277 -0
  233. package/src/tools/resolveAutomator.js +102 -0
  234. package/src/tools/screenshot.js +75 -0
  235. package/src/tools/subagentOrchestrator.js +305 -0
  236. package/src/tools/sysRun.js +125 -0
  237. package/src/tools/todoWrite.js +75 -0
  238. package/src/tools/toolDispatch.js +127 -0
  239. package/src/tools/toolForge.js +124 -0
  240. package/src/tools/updatePlan.js +88 -0
  241. package/src/tools/viewImage.js +82 -0
  242. package/src/tools/visionInspector.js +154 -0
  243. package/src/tools/webFetch.js +74 -0
  244. package/src/tools/webSearch.js +82 -0
  245. package/src/tui/ask.js +164 -0
  246. package/src/tui/banner.js +158 -0
  247. package/src/tui/block.js +152 -0
  248. package/src/tui/chatRenderer.js +953 -0
  249. package/src/tui/completion.js +424 -0
  250. package/src/tui/dialogs.js +606 -0
  251. package/src/tui/diff.js +296 -0
  252. package/src/tui/history.js +135 -0
  253. package/src/tui/home.js +217 -0
  254. package/src/tui/invocation.js +105 -0
  255. package/src/tui/keys.js +443 -0
  256. package/src/tui/lineEditor.js +256 -0
  257. package/src/tui/overlay.js +256 -0
  258. package/src/tui/prompt.js +1258 -0
  259. package/src/tui/selectList.js +335 -0
  260. package/src/tui/stage.js +330 -0
  261. package/src/tui/stageSurface.js +609 -0
  262. package/src/tui/statusLine.js +254 -0
  263. package/src/tui/text.js +345 -0
  264. package/src/tui/theme.js +393 -0
  265. package/src/tui/toolDisplay.js +176 -0
  266. package/src/tui/transcript.js +235 -0
  267. package/src/tui/viewport.js +337 -0
  268. package/src/uncertainty.js +271 -0
  269. package/src/userSkills.js +265 -0
  270. package/src/utils/cli_ui.js +0 -0
  271. package/src/utils/inquirer.js +12 -0
  272. package/src/utils/paths.js +37 -0
  273. package/src/version.js +38 -0
  274. package/src/vfeTracker.js +220 -0
@@ -0,0 +1,220 @@
1
+ /**
2
+ * @file vfeTracker.js
3
+ * Variational Free Energy (VFE) Tracker & Active Inference Plateau Detector.
4
+ *
5
+ * Implements Active Inference principles (Friston et al. / Research Section D):
6
+ * In language-mediated active inference, VFE represents the prediction error
7
+ * between the agent's expected environmental state transitions and actual
8
+ * tool execution outcomes.
9
+ *
10
+ * Detection Rule (Research Section D5):
11
+ * When Var(VFE_recent) < VARIANCE_EPSILON and Mean(VFE_recent) > MEAN_ERROR_THRESHOLD
12
+ * over a sliding window (N=10), the agent has converged onto a flat error plateau
13
+ * (a local minimum). Retrying local step variations will waste tokens. Instead,
14
+ * the agent must execute a PARADIGM SHIFT: re-evaluate underlying assumptions,
15
+ * invalidate the current operational hypothesis, and select a fundamentally
16
+ * different route.
17
+ *
18
+ * Zero LLM calls. Computed purely from execution signals already tracked.
19
+ */
20
+
21
+ import { failureClass } from './planCache.js';
22
+
23
+ /** Window size for rolling VFE metrics (default N=10 steps). */
24
+ export const VFE_WINDOW_SIZE = 10;
25
+
26
+ /** Minimum observations needed before plateau detection can trigger. */
27
+ export const MIN_SAMPLES_FOR_PLATEAU = 4;
28
+
29
+ /** Upper bound on variance to qualify as a "plateau" (stuck with no progress). */
30
+ export const VARIANCE_EPSILON = 0.01;
31
+
32
+ /** Lower bound on mean error to qualify as high-error plateau. */
33
+ export const MEAN_ERROR_THRESHOLD = 0.50;
34
+
35
+ /** Minimum step interval between paradigm shift triggers to prevent spamming. */
36
+ export const SHIFT_COOLDOWN_STEPS = 5;
37
+
38
+ /** Hard route-breaking failure categories from uncertainty taxonomy. */
39
+ const ROUTE_BREAKING_FAILURES = new Set(['not_found', 'permission', 'syntax', 'invalid_args']);
40
+
41
+ export class VFETracker {
42
+ /**
43
+ * @param {Object} [options]
44
+ * @param {number} [options.windowSize=10]
45
+ * @param {number} [options.varianceEpsilon=0.01]
46
+ * @param {number} [options.meanThreshold=0.50]
47
+ */
48
+ constructor(options = {}) {
49
+ this.windowSize = options.windowSize || VFE_WINDOW_SIZE;
50
+ this.varianceEpsilon = options.varianceEpsilon || VARIANCE_EPSILON;
51
+ this.meanThreshold = options.meanThreshold || MEAN_ERROR_THRESHOLD;
52
+
53
+ /** @type {Array<{ step: number, vfe: number, tool: string, success: boolean }>} */
54
+ this.history = [];
55
+ this.lastShiftStep = -SHIFT_COOLDOWN_STEPS;
56
+ this.totalSteps = 0;
57
+ }
58
+
59
+ /**
60
+ * Reset tracker state for a fresh task.
61
+ */
62
+ reset() {
63
+ this.history = [];
64
+ this.lastShiftStep = -SHIFT_COOLDOWN_STEPS;
65
+ this.totalSteps = 0;
66
+ }
67
+
68
+ /**
69
+ * Compute the VFE (prediction error proxy) for a single tool execution step.
70
+ *
71
+ * @param {Object} stepData
72
+ * @param {boolean} stepData.success
73
+ * @param {Object} [stepData.result]
74
+ * @param {number} [stepData.consecutiveFailures=0]
75
+ * @param {boolean} [stepData.isThrashing=false]
76
+ * @returns {number} VFE score in [0.0, 1.0]
77
+ */
78
+ computeStepVFE({ success, result, consecutiveFailures = 0, isThrashing = false }) {
79
+ if (success) {
80
+ // Nominal observation matches expected state: minimal free energy
81
+ return 0.05;
82
+ }
83
+
84
+ // Base prediction error for an unexpected negative outcome
85
+ let vfe = 0.65;
86
+
87
+ // Consecutive repetitions of failure increase prediction mismatch
88
+ if (consecutiveFailures > 1) {
89
+ vfe += Math.min(0.20, (consecutiveFailures - 1) * 0.10);
90
+ }
91
+
92
+ // Hard route errors (missing file, invalid syntax) mean mental model is wrong
93
+ if (result) {
94
+ const fClass = failureClass(result);
95
+ if (fClass && ROUTE_BREAKING_FAILURES.has(fClass)) {
96
+ vfe += 0.15;
97
+ }
98
+ }
99
+
100
+ // Thrashing tool calls mean cyclic un-converging belief state
101
+ if (isThrashing) {
102
+ vfe += 0.15;
103
+ }
104
+
105
+ return Math.min(1.0, Math.max(0.0, vfe));
106
+ }
107
+
108
+ /**
109
+ * Record a completed tool step and compute rolling window statistics.
110
+ *
111
+ * @param {Object} params
112
+ * @param {string} params.tool
113
+ * @param {boolean} params.success
114
+ * @param {Object} [params.result]
115
+ * @param {number} [params.consecutiveFailures=0]
116
+ * @param {boolean} [params.isThrashing=false]
117
+ * @returns {{
118
+ * vfe: number,
119
+ * mean: number,
120
+ * variance: number,
121
+ * isPlateau: boolean,
122
+ * paradigmShift: boolean
123
+ * }}
124
+ */
125
+ recordStep({ tool, success, result, consecutiveFailures = 0, isThrashing = false }) {
126
+ this.totalSteps += 1;
127
+ const currentStep = this.totalSteps;
128
+
129
+ const vfe = this.computeStepVFE({ success, result, consecutiveFailures, isThrashing });
130
+
131
+ this.history.push({ step: currentStep, vfe, tool, success });
132
+ if (this.history.length > this.windowSize) {
133
+ this.history.shift();
134
+ }
135
+
136
+ const stats = this.computeWindowStats();
137
+ const isPlateau = (
138
+ this.history.length >= MIN_SAMPLES_FOR_PLATEAU &&
139
+ stats.mean >= this.meanThreshold &&
140
+ stats.variance <= this.varianceEpsilon
141
+ );
142
+
143
+ const canShift = (currentStep - this.lastShiftStep) >= SHIFT_COOLDOWN_STEPS;
144
+ const paradigmShift = isPlateau && canShift;
145
+
146
+ if (paradigmShift) {
147
+ this.lastShiftStep = currentStep;
148
+ }
149
+
150
+ return {
151
+ vfe,
152
+ mean: stats.mean,
153
+ variance: stats.variance,
154
+ isPlateau,
155
+ paradigmShift
156
+ };
157
+ }
158
+
159
+ /**
160
+ * Calculate mean and sample variance over the current sliding window.
161
+ * @returns {{ mean: number, variance: number, count: number }}
162
+ */
163
+ computeWindowStats() {
164
+ const n = this.history.length;
165
+ if (n === 0) return { mean: 0, variance: 0, count: 0 };
166
+ if (n === 1) return { mean: this.history[0].vfe, variance: 0, count: 1 };
167
+
168
+ const sum = this.history.reduce((acc, item) => acc + item.vfe, 0);
169
+ const mean = sum / n;
170
+
171
+ const sumSqDiff = this.history.reduce((acc, item) => {
172
+ const diff = item.vfe - mean;
173
+ return acc + (diff * diff);
174
+ }, 0);
175
+
176
+ const variance = sumSqDiff / (n - 1);
177
+
178
+ return {
179
+ mean: Number(mean.toFixed(4)),
180
+ variance: Number(variance.toFixed(6)),
181
+ count: n
182
+ };
183
+ }
184
+
185
+ /**
186
+ * Get the current status for telemetry or debugging.
187
+ */
188
+ getStatus() {
189
+ const stats = this.computeWindowStats();
190
+ const isPlateau = (
191
+ this.history.length >= MIN_SAMPLES_FOR_PLATEAU &&
192
+ stats.mean >= this.meanThreshold &&
193
+ stats.variance <= this.varianceEpsilon
194
+ );
195
+ return {
196
+ totalSteps: this.totalSteps,
197
+ windowCount: this.history.length,
198
+ mean: stats.mean,
199
+ variance: stats.variance,
200
+ isPlateau
201
+ };
202
+ }
203
+
204
+ /**
205
+ * Format the high-priority paradigm shift prompt directive.
206
+ *
207
+ * @returns {string}
208
+ */
209
+ getParadigmShiftDirective() {
210
+ return (
211
+ `\n\n🚨 [PARADIGM SHIFT REQUIRED — ACTIVE INFERENCE DEADLOCK DETECTED]\n` +
212
+ `Variational Free Energy tracking detected a persistent error plateau with zero convergence.\n` +
213
+ `Your current mental model and execution route are trapped in a local minimum.\n` +
214
+ `DO NOT retry previous variations, tweak parameters, or repeat failed commands.\n` +
215
+ `1. Explicitly identify which core assumption failed.\n` +
216
+ `2. State your revised hypothesis about the environment/codebase.\n` +
217
+ `3. Choose a fundamentally different tool, strategy, or alternative path.\n`
218
+ );
219
+ }
220
+ }