keating 0.3.9 → 0.3.10

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 (404) hide show
  1. package/dist/src/core/benchmark.js +37 -31
  2. package/dist/src/core/pi-agent.js +1 -1
  3. package/dist/src/pi/hyperteacher-extension.js +30 -4
  4. package/dist/src/runtime/pi.js +4 -3
  5. package/package.json +4 -3
  6. package/web/.output/nitro.json +17 -0
  7. package/web/.output/public/.well-known/llms.txt +44 -0
  8. package/web/.output/public/apple-touch-icon.svg +10 -0
  9. package/web/.output/public/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  10. package/web/.output/public/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  11. package/web/.output/public/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  12. package/web/.output/public/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  13. package/web/.output/public/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  14. package/web/.output/public/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  15. package/web/.output/public/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  16. package/web/.output/public/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  17. package/web/.output/public/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  18. package/web/.output/public/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  19. package/web/.output/public/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  20. package/web/.output/public/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  21. package/web/.output/public/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  22. package/web/.output/public/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  23. package/web/.output/public/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  24. package/web/.output/public/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  25. package/web/.output/public/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  26. package/web/.output/public/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  27. package/web/.output/public/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  28. package/web/.output/public/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  29. package/web/.output/public/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  30. package/web/.output/public/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  31. package/web/.output/public/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  32. package/web/.output/public/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  33. package/web/.output/public/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  34. package/web/.output/public/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  35. package/web/.output/public/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  36. package/web/.output/public/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  37. package/web/.output/public/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  38. package/web/.output/public/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  39. package/web/.output/public/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  40. package/web/.output/public/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  41. package/web/.output/public/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  42. package/web/.output/public/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  43. package/web/.output/public/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  44. package/web/.output/public/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  45. package/web/.output/public/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  46. package/web/.output/public/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  47. package/web/.output/public/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  48. package/web/.output/public/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  49. package/web/.output/public/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  50. package/web/.output/public/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  51. package/web/.output/public/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  52. package/web/.output/public/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  53. package/web/.output/public/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  54. package/web/.output/public/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  55. package/web/.output/public/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  56. package/web/.output/public/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  57. package/web/.output/public/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  58. package/web/.output/public/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  59. package/web/.output/public/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  60. package/web/.output/public/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  61. package/web/.output/public/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  62. package/web/.output/public/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  63. package/web/.output/public/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  64. package/web/.output/public/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  65. package/web/.output/public/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  66. package/web/.output/public/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  67. package/web/.output/public/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  68. package/web/.output/public/assets/anthropic-D8J8em9_.js +39 -0
  69. package/web/{dist/assets/arc-BgYOxBdg.js → .output/public/assets/arc-oTgBOc9h.js} +1 -1
  70. package/web/.output/public/assets/architecture-YZFGNWBL-DZ_Ec0kf.js +1 -0
  71. package/web/{dist/assets/architectureDiagram-Q4EWVU46-Yh6i8NsV.js → .output/public/assets/architectureDiagram-Q4EWVU46-BkX3k5GJ.js} +1 -1
  72. package/web/.output/public/assets/azure-openai-responses-BllE29wk.js +1 -0
  73. package/web/{dist/assets/band-mY0qgSES.js → .output/public/assets/band-w5KgYWOj.js} +1 -1
  74. package/web/{dist/assets/blockDiagram-DXYQGD6D-DUOEnS09.js → .output/public/assets/blockDiagram-DXYQGD6D-DQcL9Ujg.js} +1 -1
  75. package/web/{dist/assets/c4Diagram-AHTNJAMY-XzNOUnLt.js → .output/public/assets/c4Diagram-AHTNJAMY-D-IePZqI.js} +1 -1
  76. package/web/.output/public/assets/channel-CYyKOAtV.js +1 -0
  77. package/web/{dist/assets/chunk-2KRD3SAO-mLbXjVje.js → .output/public/assets/chunk-2KRD3SAO-B6zL3K_-.js} +1 -1
  78. package/web/{dist/assets/chunk-336JU56O-CQcnUKNW.js → .output/public/assets/chunk-336JU56O-c7e9XQL0.js} +2 -2
  79. package/web/.output/public/assets/chunk-426QAEUC-BjSoaXb2.js +1 -0
  80. package/web/{dist/assets/chunk-4BX2VUAB-DRZjGMDM.js → .output/public/assets/chunk-4BX2VUAB-C-QwaF8o.js} +1 -1
  81. package/web/{dist/assets/chunk-4TB4RGXK-CAwQq2uM.js → .output/public/assets/chunk-4TB4RGXK-BPHoxzPs.js} +1 -1
  82. package/web/{dist/assets/chunk-55IACEB6-C19HKnvd.js → .output/public/assets/chunk-55IACEB6-B1zv33Gi.js} +1 -1
  83. package/web/{dist/assets/chunk-5FUZZQ4R-Bw3BFJJs.js → .output/public/assets/chunk-5FUZZQ4R-Ca04rGKU.js} +1 -1
  84. package/web/{dist/assets/chunk-5PVQY5BW-Ciel-YVc.js → .output/public/assets/chunk-5PVQY5BW-B-37rcM6.js} +1 -1
  85. package/web/{dist/assets/chunk-67CJDMHE-DNZKE79k.js → .output/public/assets/chunk-67CJDMHE-HdGQv4Jx.js} +1 -1
  86. package/web/{dist/assets/chunk-7N4EOEYR-BGZXIfBD.js → .output/public/assets/chunk-7N4EOEYR-DqXAO0Gi.js} +1 -1
  87. package/web/{dist/assets/chunk-AA7GKIK3-CLWjm_Gk.js → .output/public/assets/chunk-AA7GKIK3-DDm8EH48.js} +1 -1
  88. package/web/{dist/assets/chunk-BSJP7CBP-DwT1eVSc.js → .output/public/assets/chunk-BSJP7CBP-c6iSgQvG.js} +1 -1
  89. package/web/.output/public/assets/chunk-Bj-mKKzh.js +1 -0
  90. package/web/{dist/assets/chunk-CIAEETIT-DaQsGVwH.js → .output/public/assets/chunk-CIAEETIT-CJ1fnWwS.js} +1 -1
  91. package/web/{dist/assets/chunk-EDXVE4YY-DNeRJTiS.js → .output/public/assets/chunk-EDXVE4YY-BAD3qlf8.js} +1 -1
  92. package/web/{dist/assets/chunk-ENJZ2VHE-Crfow0Ab.js → .output/public/assets/chunk-ENJZ2VHE-CygEaEHK.js} +1 -1
  93. package/web/{dist/assets/chunk-FMBD7UC4-BWSstEYx.js → .output/public/assets/chunk-FMBD7UC4-DtK74FNN.js} +1 -1
  94. package/web/{dist/assets/chunk-FOC6F5B3-BrTsf5ix.js → .output/public/assets/chunk-FOC6F5B3-B1tJYVCE.js} +1 -1
  95. package/web/{dist/assets/chunk-ICPOFSXX-C04NFfJk.js → .output/public/assets/chunk-ICPOFSXX-Cx8pjnoR.js} +3 -3
  96. package/web/{dist/assets/chunk-K5T4RW27-C6ErEFB0.js → .output/public/assets/chunk-K5T4RW27-BwFJlMGX.js} +1 -1
  97. package/web/{dist/assets/chunk-KGLVRYIC-DWgMrjZr.js → .output/public/assets/chunk-KGLVRYIC-mZuEP_SX.js} +1 -1
  98. package/web/{dist/assets/chunk-LIHQZDEY-D3DWGnJT.js → .output/public/assets/chunk-LIHQZDEY-kAIrsC_z.js} +1 -1
  99. package/web/{dist/assets/chunk-ORNJ4GCN-D0nhq27e.js → .output/public/assets/chunk-ORNJ4GCN-B5sPpxPr.js} +1 -1
  100. package/web/{dist/assets/chunk-OYMX7WX6-CQLx0cU3.js → .output/public/assets/chunk-OYMX7WX6-793CQBwp.js} +1 -1
  101. package/web/.output/public/assets/chunk-QZHKN3VN-BeLnIYwL.js +1 -0
  102. package/web/{dist/assets/chunk-U2HBQHQK-FqDOW_Dq.js → .output/public/assets/chunk-U2HBQHQK-ffKeXnV6.js} +1 -1
  103. package/web/{dist/assets/chunk-X2U36JSP-DiSftNGg.js → .output/public/assets/chunk-X2U36JSP-DntoY71A.js} +1 -1
  104. package/web/{dist/assets/chunk-XPW4576I-CTCFDURY.js → .output/public/assets/chunk-XPW4576I-DuNk6l5T.js} +1 -1
  105. package/web/{dist/assets/chunk-YZCP3GAM-BhxShnp0.js → .output/public/assets/chunk-YZCP3GAM-C6cD67UW.js} +1 -1
  106. package/web/{dist/assets/chunk-ZZ45TVLE-DMfGJuPz.js → .output/public/assets/chunk-ZZ45TVLE-C-NXiDgG.js} +1 -1
  107. package/web/.output/public/assets/classDiagram-6PBFFD2Q-B0p5BvS5.js +1 -0
  108. package/web/.output/public/assets/classDiagram-v2-HSJHXN6E-CNV1kogp.js +1 -0
  109. package/web/.output/public/assets/clone-t_jPG6Vp.js +1 -0
  110. package/web/{dist/assets/cose-bilkent-S5V4N54A-BWrDpSLZ.js → .output/public/assets/cose-bilkent-S5V4N54A-B_r8CGOq.js} +1 -1
  111. package/web/{dist/assets/custom-tts-DA7XkgNJ.js → .output/public/assets/custom-tts-6caJdeJH.js} +1 -1
  112. package/web/{dist/assets/dagre-C_Y5Jrtl.js → .output/public/assets/dagre-B6LvKZOC.js} +1 -1
  113. package/web/{dist/assets/dagre-KV5264BT-DcrvRRX1.js → .output/public/assets/dagre-KV5264BT-kmbpW2Qa.js} +1 -1
  114. package/web/.output/public/assets/diagnostics-Dir03GES.js +1 -0
  115. package/web/{dist/assets/diagram-5BDNPKRD-BsChRck6.js → .output/public/assets/diagram-5BDNPKRD-jScdzoma.js} +1 -1
  116. package/web/{dist/assets/diagram-G4DWMVQ6-raeAsgoe.js → .output/public/assets/diagram-G4DWMVQ6-DpX26eSz.js} +1 -1
  117. package/web/{dist/assets/diagram-MMDJMWI5-CuKsP84I.js → .output/public/assets/diagram-MMDJMWI5-C9dVTkG7.js} +1 -1
  118. package/web/{dist/assets/diagram-TYMM5635-T7ILcS3d.js → .output/public/assets/diagram-TYMM5635-DRTAOPO-.js} +1 -1
  119. package/web/{dist/assets/dist-oYdMaa1U.js → .output/public/assets/dist-mae6wHLp.js} +3 -3
  120. package/web/.output/public/assets/env-api-keys-7u9jMM5_.js +1 -0
  121. package/web/{dist/assets/erDiagram-SMLLAGMA-C9z6kYxH.js → .output/public/assets/erDiagram-SMLLAGMA-Coj28jXq.js} +1 -1
  122. package/web/.output/public/assets/event-stream-DcqAlaOm.js +1 -0
  123. package/web/{dist/assets/flatten-n72VCU_F.js → .output/public/assets/flatten-U6HPKYck.js} +1 -1
  124. package/web/{dist/assets/flowDiagram-DWJPFMVM-BA3HBIvp.js → .output/public/assets/flowDiagram-DWJPFMVM-CrvcpZkH.js} +1 -1
  125. package/web/{dist/assets/ganttDiagram-T4ZO3ILL-BXKKRsbk.js → .output/public/assets/ganttDiagram-T4ZO3ILL-C_IKmfo1.js} +1 -1
  126. package/web/.output/public/assets/gemini-live-yGyuxMZL.js +2 -0
  127. package/web/.output/public/assets/gitGraph-7Q5UKJZL-CqSUwktU.js +1 -0
  128. package/web/{dist/assets/gitGraphDiagram-UUTBAWPF-CfGAccI8.js → .output/public/assets/gitGraphDiagram-UUTBAWPF-BI4Z-mQ2.js} +1 -1
  129. package/web/.output/public/assets/github-copilot-headers-B6Fvsk-Y.js +1 -0
  130. package/web/.output/public/assets/google-Nkegp1GZ.js +1 -0
  131. package/web/.output/public/assets/google-shared-DGeOO0KQ.js +11 -0
  132. package/web/.output/public/assets/google-vertex-g5NuaSdk.js +1 -0
  133. package/web/{dist/assets/graphlib-sK54_wxh.js → .output/public/assets/graphlib-5VtJ2oig.js} +1 -1
  134. package/web/.output/public/assets/headers-DkHU-pcw.js +1 -0
  135. package/web/{dist/assets/index-BgWMse5j.js → .output/public/assets/index-BqQW1iWw.js} +807 -775
  136. package/web/.output/public/assets/index-CGn8E70R.css +2 -0
  137. package/web/.output/public/assets/info-OMHHGYJF-CuBqqD0E.js +1 -0
  138. package/web/{dist/assets/infoDiagram-42DDH7IO-CXoykyfr.js → .output/public/assets/infoDiagram-42DDH7IO-DJwPib2w.js} +1 -1
  139. package/web/{dist/assets/isEmpty-Lz_aOZWI.js → .output/public/assets/isEmpty-Bz-lCaCA.js} +1 -1
  140. package/web/{dist/assets/ishikawaDiagram-UXIWVN3A-BJieXVMt.js → .output/public/assets/ishikawaDiagram-UXIWVN3A-Bm0Zg0-C.js} +1 -1
  141. package/web/{dist/assets/journeyDiagram-VCZTEJTY-CwCyrnqT.js → .output/public/assets/journeyDiagram-VCZTEJTY-7KIiN_Ei.js} +1 -1
  142. package/web/{dist/assets/json-parse-C6tSeIxX.js → .output/public/assets/json-parse-MTOUHjU0.js} +2 -1
  143. package/web/{dist/assets/kanban-definition-6JOO6SKY-8ACmDHsl.js → .output/public/assets/kanban-definition-6JOO6SKY-CWSQfP5S.js} +1 -1
  144. package/web/{dist/assets/line-BqZCcbso.js → .output/public/assets/line-DrNncrSe.js} +1 -1
  145. package/web/{dist/assets/linear-CXf5Bx3D.js → .output/public/assets/linear-BwflsB10.js} +1 -1
  146. package/web/{dist/assets/mermaid-parser.core-C8ylgsWV.js → .output/public/assets/mermaid-parser.core-DMxe11ol.js} +2 -2
  147. package/web/{dist/assets/mermaid.core-BHCT6V24.js → .output/public/assets/mermaid.core-CzgDa8OF.js} +3 -3
  148. package/web/{dist/assets/mindmap-definition-QFDTVHPH-DrDAZL9Q.js → .output/public/assets/mindmap-definition-QFDTVHPH-D-lNkDnE.js} +1 -1
  149. package/web/.output/public/assets/mistral-Ba31w8rV.js +69 -0
  150. package/web/.output/public/assets/openai-codex-responses-X5oqdT0v.js +7 -0
  151. package/web/.output/public/assets/openai-completions-DYxG7eWy.js +5 -0
  152. package/web/.output/public/assets/openai-prompt-cache-9tCK10l1.js +1 -0
  153. package/web/{dist/assets/openai-realtime-BCZmIToJ.js → .output/public/assets/openai-realtime-D1gbzEEc.js} +1 -1
  154. package/web/.output/public/assets/openai-responses-BzceW3eb.js +1 -0
  155. package/web/.output/public/assets/openai-responses-shared-B9_LiyEY.js +12 -0
  156. package/web/{dist/assets/openai-tts-BRg2goic.js → .output/public/assets/openai-tts-DG5Ys3k9.js} +1 -1
  157. package/web/.output/public/assets/openrouter-C9VgLw1K.js +1 -0
  158. package/web/{dist/assets/ordinal-CHOvK70a.js → .output/public/assets/ordinal-Cw77dVkR.js} +1 -1
  159. package/web/.output/public/assets/ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm +0 -0
  160. package/web/.output/public/assets/p-retry-mEzMPax9.js +1 -0
  161. package/web/.output/public/assets/packet-4T2RLAQJ-D2x4nN0-.js +1 -0
  162. package/web/.output/public/assets/pdf.worker.min-Cpi8b8z3.mjs +28 -0
  163. package/web/.output/public/assets/pie-ZZUOXDRM-kWPr2BJV.js +1 -0
  164. package/web/{dist/assets/pieDiagram-DEJITSTG-CSnulv9o.js → .output/public/assets/pieDiagram-DEJITSTG-C7FwzQS5.js} +1 -1
  165. package/web/.output/public/assets/preload-helper-DSXbuxSR.js +1 -0
  166. package/web/{dist/assets/quadrantDiagram-34T5L4WZ-DiM-1bw4.js → .output/public/assets/quadrantDiagram-34T5L4WZ-CY7HoVD8.js} +1 -1
  167. package/web/.output/public/assets/radar-PYXPWWZC-C95fU_MN.js +1 -0
  168. package/web/{dist/assets/reduce-r7gP4wdg.js → .output/public/assets/reduce-DQIdC_mC.js} +1 -1
  169. package/web/{dist/assets/renderer-BHoCfdWO-BFpsm4dw.js → .output/public/assets/renderer-BHoCfdWO-COcEnbx-.js} +1 -1
  170. package/web/{dist/assets/requirementDiagram-MS252O5E-CunJUnIN.js → .output/public/assets/requirementDiagram-MS252O5E-paEmPBuX.js} +1 -1
  171. package/web/.output/public/assets/sanitize-unicode-BD2XKRoV.js +1 -0
  172. package/web/{dist/assets/sankeyDiagram-XADWPNL6-DaA_56zq.js → .output/public/assets/sankeyDiagram-XADWPNL6-Ext_g4Ox.js} +1 -1
  173. package/web/{dist/assets/sequenceDiagram-FGHM5R23-CG_SeqVO.js → .output/public/assets/sequenceDiagram-FGHM5R23-CTLnxFUj.js} +1 -1
  174. package/web/{dist/assets/speech-ZNExxXBR.js → .output/public/assets/speech-D3C-KRDP.js} +2 -2
  175. package/web/{dist/assets/src-BfaOho0B.js → .output/public/assets/src-BOZISNbw.js} +1 -1
  176. package/web/{dist/assets/stateDiagram-FHFEXIEX-CSUigMtP.js → .output/public/assets/stateDiagram-FHFEXIEX-B3an23Pn.js} +1 -1
  177. package/web/.output/public/assets/stateDiagram-v2-QKLJ7IA2-D_cYSwJU.js +1 -0
  178. package/web/{dist/assets/supertonic-hDdNdgtO.js → .output/public/assets/supertonic-DzwILFbx.js} +2 -2
  179. package/web/{dist/assets/time-DaCo2z7n.js → .output/public/assets/time-HnfVL2-O.js} +1 -1
  180. package/web/{dist/assets/timeline-definition-GMOUNBTQ-DcMiH-gG.js → .output/public/assets/timeline-definition-GMOUNBTQ-D_chE-0s.js} +1 -1
  181. package/web/.output/public/assets/transform-messages-BQ4ruKay.js +1 -0
  182. package/web/{dist/assets/transformers.web-R9eWI1xg.js → .output/public/assets/transformers.web-Bopumv3I.js} +1 -1
  183. package/web/.output/public/assets/treeView-SZITEDCU-BaJsJYGU.js +1 -0
  184. package/web/.output/public/assets/treemap-W4RFUUIX-CZyrM93a.js +1 -0
  185. package/web/{dist/assets/vennDiagram-DHZGUBPP-C6A75Q3q.js → .output/public/assets/vennDiagram-DHZGUBPP-CVDiEdUR.js} +1 -1
  186. package/web/.output/public/assets/wardley-RL74JXVD-CF0AcTcr.js +1 -0
  187. package/web/{dist/assets/wardleyDiagram-NUSXRM2D-XmYD0oYm.js → .output/public/assets/wardleyDiagram-NUSXRM2D-CroPrw7r.js} +1 -1
  188. package/web/.output/public/assets/web-CVLwkmjx.js +10 -0
  189. package/web/{dist/assets/xychartDiagram-5P7HB3ND-BgSoKcS9.js → .output/public/assets/xychartDiagram-5P7HB3ND-C0_hkOEJ.js} +1 -1
  190. package/web/.output/public/assets/zodToJsonSchema-CS8B3iBY.js +3 -0
  191. package/web/.output/public/favicon.svg +10 -0
  192. package/web/.output/public/index.html +118 -0
  193. package/web/.output/public/keating-metaharness.pdf +10557 -3
  194. package/web/.output/public/llms.txt +44 -0
  195. package/web/.output/public/logo.png +0 -0
  196. package/web/.output/public/manifest.webmanifest +1 -0
  197. package/web/.output/public/og-image.png +0 -0
  198. package/web/.output/public/pwa-192x192.svg +10 -0
  199. package/web/.output/public/pwa-512x512.svg +10 -0
  200. package/web/.output/public/registerSW.js +1 -0
  201. package/web/.output/public/robots.txt +8 -0
  202. package/web/.output/public/sitemap.xml +39 -0
  203. package/web/.output/public/sw.js +665 -0
  204. package/web/.output/public/tapes/doctor.mp4 +0 -0
  205. package/web/.output/public/tapes/feedback-flow.mp4 +0 -0
  206. package/web/.output/public/tapes/improve-flow.mp4 +0 -0
  207. package/web/.output/public/tapes/intro.mp4 +0 -0
  208. package/web/.output/public/tapes/learning-flow.mp4 +0 -0
  209. package/web/.output/public/tapes/session-flow.mp4 +0 -0
  210. package/web/.output/public/tapes/teacher-flow.mp4 +0 -0
  211. package/web/.output/public/tapes/tests.mp4 +0 -0
  212. package/web/.output/public/workbox-2ae722a1.js +4390 -0
  213. package/web/.output/server/_chunks/renderer-template.mjs +10 -0
  214. package/web/.output/server/_libs/h3+rou3+srvx.mjs +1383 -0
  215. package/web/.output/server/_libs/hookable.mjs +41 -0
  216. package/web/.output/server/_libs/ufo.mjs +64 -0
  217. package/web/.output/server/index.mjs +2095 -0
  218. package/web/dist/assets/_baseFor-B4pl5CmD.js +1 -0
  219. package/web/dist/assets/anthropic-D8J8em9_.js +39 -0
  220. package/web/dist/assets/arc-oTgBOc9h.js +1 -0
  221. package/web/dist/assets/architecture-YZFGNWBL-DZ_Ec0kf.js +1 -0
  222. package/web/dist/assets/architectureDiagram-Q4EWVU46-BkX3k5GJ.js +36 -0
  223. package/web/dist/assets/array-DKReyB4R.js +1 -0
  224. package/web/dist/assets/azure-openai-responses-BllE29wk.js +1 -0
  225. package/web/dist/assets/band-w5KgYWOj.js +1 -0
  226. package/web/dist/assets/blockDiagram-DXYQGD6D-DQcL9Ujg.js +132 -0
  227. package/web/dist/assets/c4Diagram-AHTNJAMY-D-IePZqI.js +10 -0
  228. package/web/dist/assets/channel-CYyKOAtV.js +1 -0
  229. package/web/dist/assets/chunk-2KRD3SAO-B6zL3K_-.js +1 -0
  230. package/web/dist/assets/chunk-336JU56O-c7e9XQL0.js +2 -0
  231. package/web/dist/assets/chunk-426QAEUC-BjSoaXb2.js +1 -0
  232. package/web/dist/assets/chunk-4BX2VUAB-C-QwaF8o.js +1 -0
  233. package/web/dist/assets/chunk-4TB4RGXK-BPHoxzPs.js +206 -0
  234. package/web/dist/assets/chunk-55IACEB6-B1zv33Gi.js +1 -0
  235. package/web/dist/assets/chunk-5FUZZQ4R-Ca04rGKU.js +62 -0
  236. package/web/dist/assets/chunk-5PVQY5BW-B-37rcM6.js +2 -0
  237. package/web/dist/assets/chunk-67CJDMHE-HdGQv4Jx.js +1 -0
  238. package/web/dist/assets/chunk-7N4EOEYR-DqXAO0Gi.js +1 -0
  239. package/web/dist/assets/chunk-AA7GKIK3-DDm8EH48.js +1 -0
  240. package/web/dist/assets/chunk-BSJP7CBP-c6iSgQvG.js +1 -0
  241. package/web/dist/assets/chunk-CIAEETIT-CJ1fnWwS.js +1 -0
  242. package/web/dist/assets/chunk-EDXVE4YY-BAD3qlf8.js +1 -0
  243. package/web/dist/assets/chunk-ENJZ2VHE-CygEaEHK.js +10 -0
  244. package/web/dist/assets/chunk-FMBD7UC4-DtK74FNN.js +15 -0
  245. package/web/dist/assets/chunk-FOC6F5B3-B1tJYVCE.js +1 -0
  246. package/web/dist/assets/chunk-ICPOFSXX-Cx8pjnoR.js +123 -0
  247. package/web/dist/assets/chunk-K5T4RW27-BwFJlMGX.js +94 -0
  248. package/web/dist/assets/chunk-KGLVRYIC-mZuEP_SX.js +1 -0
  249. package/web/dist/assets/chunk-LIHQZDEY-kAIrsC_z.js +1 -0
  250. package/web/dist/assets/chunk-ORNJ4GCN-B5sPpxPr.js +1 -0
  251. package/web/dist/assets/chunk-OYMX7WX6-793CQBwp.js +231 -0
  252. package/web/dist/assets/chunk-QZHKN3VN-BeLnIYwL.js +1 -0
  253. package/web/dist/assets/chunk-U2HBQHQK-ffKeXnV6.js +70 -0
  254. package/web/dist/assets/chunk-X2U36JSP-DntoY71A.js +1 -0
  255. package/web/dist/assets/chunk-XPW4576I-DuNk6l5T.js +32 -0
  256. package/web/dist/assets/chunk-YZCP3GAM-C6cD67UW.js +1 -0
  257. package/web/dist/assets/chunk-ZZ45TVLE-C-NXiDgG.js +1 -0
  258. package/web/dist/assets/classDiagram-6PBFFD2Q-B0p5BvS5.js +1 -0
  259. package/web/dist/assets/classDiagram-v2-HSJHXN6E-CNV1kogp.js +1 -0
  260. package/web/dist/assets/clone-t_jPG6Vp.js +1 -0
  261. package/web/dist/assets/cose-bilkent-S5V4N54A-B_r8CGOq.js +1 -0
  262. package/web/dist/assets/custom-tts-6caJdeJH.js +1 -0
  263. package/web/dist/assets/cytoscape.esm-CIAhqqev.js +321 -0
  264. package/web/dist/assets/dagre-B6LvKZOC.js +1 -0
  265. package/web/dist/assets/dagre-KV5264BT-kmbpW2Qa.js +4 -0
  266. package/web/dist/assets/defaultLocale-CzQOUpbn.js +1 -0
  267. package/web/dist/assets/diagnostics-Dir03GES.js +1 -0
  268. package/web/dist/assets/diagram-5BDNPKRD-jScdzoma.js +10 -0
  269. package/web/dist/assets/diagram-G4DWMVQ6-DpX26eSz.js +24 -0
  270. package/web/dist/assets/diagram-MMDJMWI5-C9dVTkG7.js +43 -0
  271. package/web/dist/assets/diagram-TYMM5635-DRTAOPO-.js +24 -0
  272. package/web/dist/assets/dist-DzRHszr6.js +1 -0
  273. package/web/dist/assets/dist-mae6wHLp.js +10 -0
  274. package/web/dist/assets/env-api-keys-7u9jMM5_.js +1 -0
  275. package/web/dist/assets/erDiagram-SMLLAGMA-Coj28jXq.js +85 -0
  276. package/web/dist/assets/event-stream-DcqAlaOm.js +1 -0
  277. package/web/dist/assets/flatten-U6HPKYck.js +1 -0
  278. package/web/dist/assets/flowDiagram-DWJPFMVM-CrvcpZkH.js +162 -0
  279. package/web/dist/assets/ganttDiagram-T4ZO3ILL-C_IKmfo1.js +292 -0
  280. package/web/dist/assets/gemini-live-yGyuxMZL.js +2 -0
  281. package/web/dist/assets/gitGraph-7Q5UKJZL-CqSUwktU.js +1 -0
  282. package/web/dist/assets/gitGraphDiagram-UUTBAWPF-BI4Z-mQ2.js +106 -0
  283. package/web/dist/assets/github-copilot-headers-B6Fvsk-Y.js +1 -0
  284. package/web/dist/assets/google-Nkegp1GZ.js +1 -0
  285. package/web/dist/assets/google-shared-DGeOO0KQ.js +11 -0
  286. package/web/dist/assets/google-vertex-g5NuaSdk.js +1 -0
  287. package/web/dist/assets/graphlib-5VtJ2oig.js +1 -0
  288. package/web/dist/assets/hash-K0cSe8jy.js +1 -0
  289. package/web/dist/assets/headers-DkHU-pcw.js +1 -0
  290. package/web/dist/assets/index-BqQW1iWw.js +3219 -0
  291. package/web/dist/assets/index-CGn8E70R.css +2 -0
  292. package/web/dist/assets/info-OMHHGYJF-CuBqqD0E.js +1 -0
  293. package/web/dist/assets/infoDiagram-42DDH7IO-DJwPib2w.js +2 -0
  294. package/web/dist/assets/init-BPUAOWDF.js +1 -0
  295. package/web/dist/assets/isEmpty-Bz-lCaCA.js +1 -0
  296. package/web/dist/assets/ishikawaDiagram-UXIWVN3A-Bm0Zg0-C.js +70 -0
  297. package/web/dist/assets/journeyDiagram-VCZTEJTY-7KIiN_Ei.js +139 -0
  298. package/web/dist/assets/json-parse-MTOUHjU0.js +3 -0
  299. package/web/dist/assets/kanban-definition-6JOO6SKY-CWSQfP5S.js +89 -0
  300. package/web/dist/assets/katex-C_VFEy8p.js +265 -0
  301. package/web/dist/assets/line-DrNncrSe.js +1 -0
  302. package/web/dist/assets/linear-BwflsB10.js +1 -0
  303. package/web/dist/assets/math-CqsWNv0u.js +1 -0
  304. package/web/dist/assets/mermaid-parser.core-DMxe11ol.js +4 -0
  305. package/web/dist/assets/mermaid.core-CzgDa8OF.js +11 -0
  306. package/web/dist/assets/mindmap-definition-QFDTVHPH-D-lNkDnE.js +96 -0
  307. package/web/dist/assets/mistral-Ba31w8rV.js +69 -0
  308. package/web/dist/assets/openai-DAtqabcb.js +16 -0
  309. package/web/dist/assets/openai-codex-responses-X5oqdT0v.js +7 -0
  310. package/web/dist/assets/openai-completions-DYxG7eWy.js +5 -0
  311. package/web/dist/assets/openai-prompt-cache-9tCK10l1.js +1 -0
  312. package/web/dist/assets/openai-realtime-D1gbzEEc.js +1 -0
  313. package/web/dist/assets/openai-responses-BzceW3eb.js +1 -0
  314. package/web/dist/assets/openai-responses-shared-B9_LiyEY.js +12 -0
  315. package/web/dist/assets/openai-tts-DG5Ys3k9.js +1 -0
  316. package/web/dist/assets/openrouter-C9VgLw1K.js +1 -0
  317. package/web/dist/assets/ordinal-Cw77dVkR.js +1 -0
  318. package/web/dist/assets/ort.bundle.min-CE4lKfUe.js +2805 -0
  319. package/web/dist/assets/p-retry-mEzMPax9.js +1 -0
  320. package/web/dist/assets/packet-4T2RLAQJ-D2x4nN0-.js +1 -0
  321. package/web/dist/assets/path-DceIr1s7.js +1 -0
  322. package/web/dist/assets/pie-ZZUOXDRM-kWPr2BJV.js +1 -0
  323. package/web/dist/assets/pieDiagram-DEJITSTG-C7FwzQS5.js +30 -0
  324. package/web/dist/assets/quadrantDiagram-34T5L4WZ-CY7HoVD8.js +7 -0
  325. package/web/dist/assets/radar-PYXPWWZC-C95fU_MN.js +1 -0
  326. package/web/dist/assets/reduce-DQIdC_mC.js +1 -0
  327. package/web/dist/assets/renderer-BHoCfdWO-COcEnbx-.js +1 -0
  328. package/web/dist/assets/requirementDiagram-MS252O5E-paEmPBuX.js +84 -0
  329. package/web/dist/assets/rough.esm-zabqYs6f.js +1 -0
  330. package/web/dist/assets/sanitize-unicode-BD2XKRoV.js +1 -0
  331. package/web/dist/assets/sankeyDiagram-XADWPNL6-Ext_g4Ox.js +10 -0
  332. package/web/dist/assets/sequenceDiagram-FGHM5R23-CTLnxFUj.js +157 -0
  333. package/web/dist/assets/speech-D3C-KRDP.js +2 -0
  334. package/web/dist/assets/src-BOZISNbw.js +1 -0
  335. package/web/dist/assets/state-CrA0YVPh-CbRahjhd.js +27 -0
  336. package/web/dist/assets/stateDiagram-FHFEXIEX-B3an23Pn.js +1 -0
  337. package/web/dist/assets/stateDiagram-v2-QKLJ7IA2-D_cYSwJU.js +1 -0
  338. package/web/dist/assets/step-Dm9As71j.js +1 -0
  339. package/web/dist/assets/string-DAtruGuJ.js +1 -0
  340. package/web/dist/assets/supertonic-DzwILFbx.js +2 -0
  341. package/web/dist/assets/time-HnfVL2-O.js +1 -0
  342. package/web/dist/assets/timeline-definition-GMOUNBTQ-D_chE-0s.js +120 -0
  343. package/web/dist/assets/transform-messages-BQ4ruKay.js +1 -0
  344. package/web/dist/assets/transformers.web-Bopumv3I.js +14 -0
  345. package/web/dist/assets/treeView-SZITEDCU-BaJsJYGU.js +1 -0
  346. package/web/dist/assets/treemap-W4RFUUIX-CZyrM93a.js +1 -0
  347. package/web/dist/assets/vennDiagram-DHZGUBPP-CVDiEdUR.js +34 -0
  348. package/web/dist/assets/wardley-RL74JXVD-CF0AcTcr.js +1 -0
  349. package/web/dist/assets/wardleyDiagram-NUSXRM2D-CroPrw7r.js +20 -0
  350. package/web/dist/assets/web-CVLwkmjx.js +10 -0
  351. package/web/dist/assets/xychartDiagram-5P7HB3ND-C0_hkOEJ.js +7 -0
  352. package/web/dist/assets/zodToJsonSchema-CS8B3iBY.js +3 -0
  353. package/web/dist/index.html +20 -19
  354. package/web/dist/sw.js +148 -130
  355. package/web/dist/assets/anthropic-mDOoXVZn.js +0 -36
  356. package/web/dist/assets/architecture-YZFGNWBL-MLoSDt-a.js +0 -1
  357. package/web/dist/assets/azure-openai-responses-lDjfaDoj.js +0 -1
  358. package/web/dist/assets/channel-BumC_1wb.js +0 -1
  359. package/web/dist/assets/chunk-426QAEUC-AjoT_j_q.js +0 -1
  360. package/web/dist/assets/chunk-QZHKN3VN-X2zPgEFk.js +0 -1
  361. package/web/dist/assets/classDiagram-6PBFFD2Q-qESk_xyE.js +0 -1
  362. package/web/dist/assets/classDiagram-v2-HSJHXN6E-BM1nmtfm.js +0 -1
  363. package/web/dist/assets/clone-CVy2b825.js +0 -1
  364. package/web/dist/assets/env-api-keys-BNlMKqxw.js +0 -1
  365. package/web/dist/assets/event-stream-D33K9rpL.js +0 -1
  366. package/web/dist/assets/gemini-live-dK40vCc5.js +0 -2
  367. package/web/dist/assets/gitGraph-7Q5UKJZL-Cy0KloCM.js +0 -1
  368. package/web/dist/assets/github-copilot-headers-BuUn5v2j.js +0 -1
  369. package/web/dist/assets/google-BdS4iTyC.js +0 -1
  370. package/web/dist/assets/google-gemini-cli-ECA0sP3z.js +0 -2
  371. package/web/dist/assets/google-shared-DFv4ubOG.js +0 -2
  372. package/web/dist/assets/google-vertex-Duei77qD.js +0 -1
  373. package/web/dist/assets/index-C_k9n6xi.css +0 -2
  374. package/web/dist/assets/info-OMHHGYJF-DiTlPM51.js +0 -1
  375. package/web/dist/assets/mistral-BCIirCkW.js +0 -7
  376. package/web/dist/assets/openai-codex-responses-BgRTWVD_.js +0 -7
  377. package/web/dist/assets/openai-completions-D5AUQEua.js +0 -5
  378. package/web/dist/assets/openai-responses-CTlQ1a-G.js +0 -1
  379. package/web/dist/assets/openai-responses-shared-CLzQyVyy.js +0 -10
  380. package/web/dist/assets/packet-4T2RLAQJ-EXgAtQjm.js +0 -1
  381. package/web/dist/assets/pie-ZZUOXDRM-dKU8mzlj.js +0 -1
  382. package/web/dist/assets/radar-PYXPWWZC-B4d2wh2H.js +0 -1
  383. package/web/dist/assets/stateDiagram-v2-QKLJ7IA2-CgpYzp7D.js +0 -1
  384. package/web/dist/assets/transform-messages-DXDWLrnO.js +0 -1
  385. package/web/dist/assets/treeView-SZITEDCU-V29H5f16.js +0 -1
  386. package/web/dist/assets/treemap-W4RFUUIX-DsAU74TP.js +0 -1
  387. package/web/dist/assets/wardley-RL74JXVD-lGAI4Cps.js +0 -1
  388. package/web/dist/assets/web-jLdm8a1-.js +0 -10
  389. /package/web/{dist/assets/_baseFor-2QgQJAzW.js → .output/public/assets/_baseFor-B4pl5CmD.js} +0 -0
  390. /package/web/{dist/assets/array-B4O_ir3H.js → .output/public/assets/array-DKReyB4R.js} +0 -0
  391. /package/web/{dist/assets/cytoscape.esm-CdzdaUMP.js → .output/public/assets/cytoscape.esm-CIAhqqev.js} +0 -0
  392. /package/web/{dist/assets/defaultLocale-Bhb3osZR.js → .output/public/assets/defaultLocale-CzQOUpbn.js} +0 -0
  393. /package/web/{dist/assets/dist-DQ41Rxbw.js → .output/public/assets/dist-DzRHszr6.js} +0 -0
  394. /package/web/{dist/assets/hash-CQjDwcjR.js → .output/public/assets/hash-K0cSe8jy.js} +0 -0
  395. /package/web/{dist/assets/init-DugVGdkd.js → .output/public/assets/init-BPUAOWDF.js} +0 -0
  396. /package/web/{dist/assets/katex-CyM-5LlM.js → .output/public/assets/katex-C_VFEy8p.js} +0 -0
  397. /package/web/{dist/assets/math-Csj_9zpx.js → .output/public/assets/math-CqsWNv0u.js} +0 -0
  398. /package/web/{dist/assets/openai-CRGaNv9i.js → .output/public/assets/openai-DAtqabcb.js} +0 -0
  399. /package/web/{dist/assets/ort.bundle.min-Drf2fDrC.js → .output/public/assets/ort.bundle.min-CE4lKfUe.js} +0 -0
  400. /package/web/{dist/assets/path-BVVvcbiy.js → .output/public/assets/path-DceIr1s7.js} +0 -0
  401. /package/web/{dist/assets/rough.esm-D5NinLFK.js → .output/public/assets/rough.esm-zabqYs6f.js} +0 -0
  402. /package/web/{dist/assets/state-CrA0YVPh-wJ4Rmm6M.js → .output/public/assets/state-CrA0YVPh-CbRahjhd.js} +0 -0
  403. /package/web/{dist/assets/step-qalMyYGy.js → .output/public/assets/step-Dm9As71j.js} +0 -0
  404. /package/web/{dist/assets/string-DPssBiak.js → .output/public/assets/string-DAtruGuJ.js} +0 -0
@@ -2,6 +2,7 @@ import { Prng } from "./random.js";
2
2
  import { benchmarkTopics } from "./topics.js";
3
3
  import { clamp, mean } from "./util.js";
4
4
  import { DEFAULT_WEIGHTS, clampWeights } from "./policy.js";
5
+ import { piCompleteJson } from "./pi-agent.js";
5
6
  function buildLearnerPopulation(seed, count) {
6
7
  const prng = new Prng(seed);
7
8
  const learners = [];
@@ -20,7 +21,6 @@ function buildLearnerPopulation(seed, count) {
20
21
  }
21
22
  return learners;
22
23
  }
23
- import { piCompleteJson } from "./pi-agent.js";
24
24
  export async function simulateTeaching(cwd, policy, topic, learner, weights = DEFAULT_WEIGHTS) {
25
25
  // Use pure math to calculate initial constraints as baseline context
26
26
  const intuitionFit = 1 - Math.abs(policy.analogyDensity - learner.analogyNeed);
@@ -38,6 +38,41 @@ export async function simulateTeaching(cwd, policy, topic, learner, weights = DE
38
38
  learner.persistence * 0.2 +
39
39
  learner.anxiety * 0.25 -
40
40
  learner.priorKnowledge * 0.15);
41
+ const deterministicBaseline = () => {
42
+ const masteryGain = clamp(0.14 + intuitionFit * 0.18 + rigorFit * 0.2 + dialogueFit * 0.12 + diagramFit * 0.09 + practiceFit * 0.12 + (1 - overload) * 0.18);
43
+ const retention = clamp(masteryGain * (0.55 + policy.retrievalPractice * 0.45));
44
+ const engagement = clamp(0.12 + intuitionFit * 0.16 + dialogueFit * 0.16 + diagramFit * 0.1 + reflectionFit * 0.14 + (1 - overload) * 0.18);
45
+ const transfer = clamp(masteryGain * (0.55 + policy.interdisciplinaryBias * 0.25 + learner.transferDesire * 0.2));
46
+ const confusion = clamp(0.04 + overload * 0.55 + Math.abs(policy.formalism - learner.abstractionComfort) * 0.18 + Math.abs(policy.challengeRate - learner.persistence) * 0.12);
47
+ const score = clamp(masteryGain * weights.masteryGain +
48
+ retention * weights.retention +
49
+ engagement * weights.engagement +
50
+ transfer * weights.transfer -
51
+ confusion * weights.confusion, 0, 1);
52
+ return {
53
+ learner,
54
+ topic,
55
+ masteryGain,
56
+ retention,
57
+ engagement,
58
+ transfer,
59
+ confusion,
60
+ score,
61
+ breakdown: {
62
+ intuitionFit,
63
+ rigorFit,
64
+ dialogueFit,
65
+ diagramFit,
66
+ practiceFit,
67
+ reflectionFit,
68
+ overload
69
+ },
70
+ explanation: ["Deterministic algebraic baseline."]
71
+ };
72
+ };
73
+ if (process.env.KEATING_LLM_BENCHMARK !== "1") {
74
+ return deterministicBaseline();
75
+ }
41
76
  const prompt = `Simulate an educational interaction based on the following context.
42
77
  Teacher Policy: ${JSON.stringify(policy, null, 2)}
43
78
  Topic: ${topic.title} (${topic.domain}) - ${topic.summary}
@@ -83,36 +118,7 @@ Respond ONLY as a JSON matching:
83
118
  }
84
119
  catch (error) {
85
120
  console.error("LLM simulation failed, falling back to algebraic baseline", error);
86
- const masteryGain = clamp(0.14 + intuitionFit * 0.18 + rigorFit * 0.2 + dialogueFit * 0.12 + diagramFit * 0.09 + practiceFit * 0.12 + (1 - overload) * 0.18);
87
- const retention = clamp(masteryGain * (0.55 + policy.retrievalPractice * 0.45));
88
- const engagement = clamp(0.12 + intuitionFit * 0.16 + dialogueFit * 0.16 + diagramFit * 0.1 + reflectionFit * 0.14 + (1 - overload) * 0.18);
89
- const transfer = clamp(masteryGain * (0.55 + policy.interdisciplinaryBias * 0.25 + learner.transferDesire * 0.2));
90
- const confusion = clamp(0.04 + overload * 0.55 + Math.abs(policy.formalism - learner.abstractionComfort) * 0.18 + Math.abs(policy.challengeRate - learner.persistence) * 0.12);
91
- const score = clamp(masteryGain * weights.masteryGain +
92
- retention * weights.retention +
93
- engagement * weights.engagement +
94
- transfer * weights.transfer -
95
- confusion * weights.confusion, 0, 1);
96
- return {
97
- learner,
98
- topic,
99
- masteryGain,
100
- retention,
101
- engagement,
102
- transfer,
103
- confusion,
104
- score,
105
- breakdown: {
106
- intuitionFit,
107
- rigorFit,
108
- dialogueFit,
109
- diagramFit,
110
- practiceFit,
111
- reflectionFit,
112
- overload
113
- },
114
- explanation: ["Fallback deterministic explanation."]
115
- };
121
+ return deterministicBaseline();
116
122
  }
117
123
  }
118
124
  function classifyDominantSignal(simulations, kind) {
@@ -10,7 +10,7 @@ export async function piComplete(cwd, prompt, options = {}) {
10
10
  const config = await loadKeatingConfig(cwd);
11
11
  const runtime = await detectAiRuntime(cwd);
12
12
  if (!runtime.selected) {
13
- throw new Error("No AI runtime found. Install `pi` with `npm install -g @mariozechner/pi-coding-agent`, or reinstall Keating so its embedded runtime dependency is present.");
13
+ throw new Error("No AI runtime found. Install `pi` with `npm install -g @earendil-works/pi-coding-agent`, or reinstall Keating so its embedded runtime dependency is present.");
14
14
  }
15
15
  const args = ["-p", "--no-session", "--no-tools", "--no-extensions", "--no-skills"];
16
16
  if (options.systemPrompt) {
@@ -7,14 +7,40 @@ import { loadKeatingConfig } from "../core/config.js";
7
7
  import { shellCommandSections } from "../core/commands.js";
8
8
  import { KEATING_VOICE_TOOL_NAME, VOICE_TAGS, normalizeVoiceUtterance, speechStrategySummary, voiceTagLine } from "../core/speech.js";
9
9
  import { KEATING_ASCII_LOGO, KEATING_SUBTITLE_LINES } from "../core/terminal.js";
10
- const KEATING_VERSION = "0.3.9";
10
+ const KEATING_VERSION = "0.3.10";
11
11
  const ANSI_RE = /\x1b\[[0-9;]*[a-zA-Z]/g;
12
12
  function visibleWidth(text) {
13
13
  return text.replace(ANSI_RE, "").length;
14
14
  }
15
+ function truncateVisible(text, width) {
16
+ const limit = Math.max(0, width);
17
+ if (visibleWidth(text) <= limit)
18
+ return text;
19
+ if (limit === 0)
20
+ return "";
21
+ const suffix = limit > 1 ? "…" : "";
22
+ const contentLimit = Math.max(0, limit - visibleWidth(suffix));
23
+ let visible = 0;
24
+ let output = "";
25
+ for (let index = 0; index < text.length;) {
26
+ const ansi = text.slice(index).match(/^\x1b\[[0-9;]*[a-zA-Z]/);
27
+ if (ansi) {
28
+ output += ansi[0];
29
+ index += ansi[0].length;
30
+ continue;
31
+ }
32
+ if (visible >= contentLimit)
33
+ break;
34
+ output += text[index];
35
+ visible += 1;
36
+ index += 1;
37
+ }
38
+ return `${output}${suffix}`;
39
+ }
15
40
  function padVisible(text, width) {
16
- const vw = visibleWidth(text);
17
- return vw >= width ? text : text + " ".repeat(width - vw);
41
+ const fitted = truncateVisible(text, width);
42
+ const vw = visibleWidth(fitted);
43
+ return vw >= width ? fitted : fitted + " ".repeat(width - vw);
18
44
  }
19
45
  function truncatePlain(text, width) {
20
46
  if (text.length <= width)
@@ -101,7 +127,7 @@ function topicFromArgs(args) {
101
127
  function info(ctx, message) {
102
128
  ctx.ui.notify(message, "info");
103
129
  }
104
- function createKeatingHeaderComponent(pi, ctx) {
130
+ export function createKeatingHeaderComponent(pi, ctx) {
105
131
  const sections = shellCommandSections();
106
132
  const commandCount = sections.reduce((sum, section) => sum + section.commands.length, 0);
107
133
  return (_tui, theme) => {
@@ -23,7 +23,7 @@ function missingRuntimeMessage(report) {
23
23
  "Keating is configured for standalone-only but no `pi` AI agent binary was found on PATH.",
24
24
  "",
25
25
  "Recover with one of:",
26
- " npm install -g @mariozechner/pi-coding-agent",
26
+ " npm install -g @earendil-works/pi-coding-agent",
27
27
  " keating setup",
28
28
  " edit keating.config.json and set pi.runtimePreference to prefer-standalone"
29
29
  ].join("\n");
@@ -33,7 +33,7 @@ function missingRuntimeMessage(report) {
33
33
  "Keating is configured for embedded-only but no embedded AI agent was found.",
34
34
  "",
35
35
  "Recover with one of:",
36
- " npm install -g @mariozechner/pi-coding-agent",
36
+ " npm install -g @earendil-works/pi-coding-agent",
37
37
  " keating setup",
38
38
  " npm install -g keating"
39
39
  ].join("\n");
@@ -42,7 +42,7 @@ function missingRuntimeMessage(report) {
42
42
  "Could not find an AI runtime.",
43
43
  "",
44
44
  "Recover with one of:",
45
- " npm install -g @mariozechner/pi-coding-agent",
45
+ " npm install -g @earendil-works/pi-coding-agent",
46
46
  " npm install -g keating",
47
47
  " curl -fsSL https://raw.githubusercontent.com/Diogenesoftoronto/keating/main/scripts/install/install.sh | bash"
48
48
  ].join("\n");
@@ -62,6 +62,7 @@ function resolveStandaloneAgent() {
62
62
  return null;
63
63
  }
64
64
  const CLI_AGENT_PACKAGES = [
65
+ ["@earendil-works", "pi-coding-agent"],
65
66
  ["@interleavelove", "keating-coding-agent"],
66
67
  ["@mariozechner", "pi-coding-agent"],
67
68
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keating",
3
- "version": "0.3.9",
3
+ "version": "0.3.10",
4
4
  "type": "module",
5
5
  "description": "A Pi-powered hyperteacher package with self-improving teaching policies, lesson maps, and animated visual teaching artifacts.",
6
6
  "keywords": [
@@ -34,7 +34,8 @@
34
34
  "pi/",
35
35
  "scripts/install/",
36
36
  "SYSTEM.md",
37
- "web/dist/"
37
+ "web/dist/",
38
+ "web/.output/"
38
39
  ],
39
40
  "pi": {
40
41
  "extensions": [
@@ -56,7 +57,7 @@
56
57
  "dependencies": {
57
58
  "@ax-llm/ax": "^19.0.43",
58
59
  "@google/generative-ai": "^0.24.1",
59
- "@mariozechner/pi-coding-agent": "^0.73.1",
60
+ "@earendil-works/pi-coding-agent": "^0.75.4",
60
61
  "dotenv": "^17.4.0",
61
62
  "h3": "^2.0.1-rc.20",
62
63
  "ink": "^7.0.3",
@@ -0,0 +1,17 @@
1
+ {
2
+ "date": "2026-05-21T19:05:26.549Z",
3
+ "preset": "node-server",
4
+ "framework": {
5
+ "name": "nitro",
6
+ "version": "3.0.260311-beta"
7
+ },
8
+ "versions": {
9
+ "nitro": "3.0.260311-beta"
10
+ },
11
+ "serverEntry": "server/index.mjs",
12
+ "publicDir": "public",
13
+ "commands": {
14
+ "preview": "node ./server/index.mjs"
15
+ },
16
+ "config": {}
17
+ }
@@ -0,0 +1,44 @@
1
+ # Keating
2
+
3
+ > A Pi-powered hyperteacher scaffold designed to ensure that humans remain the authors of their own understanding. Keating uses the most advanced AI models not to provide answers, but to force the rigorous reconstruction of ideas within the learner's own identity — Socratic method, powered by silicon.
4
+
5
+ ## Overview
6
+
7
+ Open source (MIT), runs in the browser or CLI. Supports local inference via WebGPU (Gemma 4 E4B), cloud providers (Google, Anthropic, OpenAI), and custom endpoints (Ollama, llama.cpp, LiteLLM). Includes speech, automated lesson planning, concept maps, animations, quizzes, flashcards, benchmarked self-improvement, and a persistent engagement timeline.
8
+
9
+ ## Get Started
10
+
11
+ - Website: https://keating.help
12
+ - GitHub: https://github.com/Diogenesoftoronto/keating
13
+ - Paper PDF: https://keating.help/keating-metaharness.pdf
14
+ - Install: https://keating.help/#install
15
+
16
+ ## Documentation
17
+
18
+ - Architecture: https://github.com/Diogenesoftoronto/keating/blob/main/docs/ARCHITECTURE.md
19
+ - Visual Architecture: https://github.com/Diogenesoftoronto/keating/blob/main/docs/VISUAL-ARCHITECTURE.md
20
+ - Testing Strategy: https://github.com/Diogenesoftoronto/keating/blob/main/docs/TESTING.md
21
+ - Oxdraw Tutorial: https://github.com/Diogenesoftoronto/keating/blob/main/docs/OXDRAW-TUTORIAL.md
22
+ - Changelog: https://github.com/Diogenesoftoronto/keating/blob/main/CHANGELOG.md
23
+
24
+ ## Core Prompts
25
+
26
+ - Learn workflow: https://github.com/Diogenesoftoronto/keating/blob/main/pi/prompts/learn.md
27
+ - Diagnose workflow: https://github.com/Diogenesoftoronto/keating/blob/main/pi/prompts/diagnose.md
28
+ - Quiz workflow: https://github.com/Diogenesoftoronto/keating/blob/main/pi/prompts/quiz.md
29
+ - Bridge workflow: https://github.com/Diogenesoftoronto/keating/blob/main/pi/prompts/bridge.md
30
+ - Improve workflow: https://github.com/Diogenesoftoronto/keating/blob/main/pi/prompts/improve.md
31
+
32
+ ## Key Modules
33
+
34
+ - Core types and domain model: `src/core/types.ts`
35
+ - Teaching policy and benchmark simulation: `src/core/benchmark.ts`
36
+ - Policy evolution with safety gates: `src/core/evolution.ts`
37
+ - Prompt evolution with multi-objective selection: `src/core/prompt-evolution.ts`
38
+ - Lesson plan generator: `src/core/lesson-plan.ts`
39
+ - Animation bundle generator (manim-web): `src/core/animation.ts`
40
+ - Concept map generator (Mermaid / oxdraw): `src/core/map.ts`
41
+ - CLI shell and commands: `src/cli/main.ts`
42
+ - Pi extension entrypoint: `src/pi/hyperteacher-extension.ts`
43
+ - Web chat runtime: `web/src/hooks/useKeatingAgent.ts`
44
+ - Web app entry: `web/src/App.tsx`
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 180 180">
2
+ <defs>
3
+ <linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#6366f1"/>
5
+ <stop offset="100%" style="stop-color:#8b5cf6"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect width="180" height="180" rx="32" fill="url(#grad)"/>
9
+ <text x="90" y="125" font-family="Georgia, serif" font-size="90" font-weight="bold" fill="white" text-anchor="middle">K</text>
10
+ </svg>