keating 0.3.6
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.
- package/README.md +334 -0
- package/SYSTEM.md +33 -0
- package/bin/keating.js +31 -0
- package/dist/src/cli/main.js +357 -0
- package/dist/src/cli/setup.js +197 -0
- package/dist/src/cli/web.js +84 -0
- package/dist/src/core/animation.js +304 -0
- package/dist/src/core/ax-optimizer.js +81 -0
- package/dist/src/core/ax-prompt-learner.js +59 -0
- package/dist/src/core/ax-trial.js +181 -0
- package/dist/src/core/benchmark.js +253 -0
- package/dist/src/core/commands.js +57 -0
- package/dist/src/core/config.js +120 -0
- package/dist/src/core/engagement.js +235 -0
- package/dist/src/core/env.js +9 -0
- package/dist/src/core/evolution.js +242 -0
- package/dist/src/core/flashcards.js +133 -0
- package/dist/src/core/learner-state.js +108 -0
- package/dist/src/core/lesson-plan.js +155 -0
- package/dist/src/core/map-elites.js +228 -0
- package/dist/src/core/map.js +89 -0
- package/dist/src/core/mastery.js +207 -0
- package/dist/src/core/paths.js +100 -0
- package/dist/src/core/pi-agent.js +82 -0
- package/dist/src/core/policy.js +79 -0
- package/dist/src/core/project.js +337 -0
- package/dist/src/core/projects.js +281 -0
- package/dist/src/core/prompt-evolution.js +344 -0
- package/dist/src/core/quiz.js +194 -0
- package/dist/src/core/random.js +19 -0
- package/dist/src/core/self-improve.js +425 -0
- package/dist/src/core/speech.js +54 -0
- package/dist/src/core/terminal.js +117 -0
- package/dist/src/core/theme.js +101 -0
- package/dist/src/core/topics.js +620 -0
- package/dist/src/core/types.js +1 -0
- package/dist/src/core/util.js +30 -0
- package/dist/src/core/verification.js +162 -0
- package/dist/src/pi/hyperteacher-extension.js +573 -0
- package/dist/src/runtime/pi.js +343 -0
- package/package.json +78 -0
- package/pi/prompts/bridge.md +14 -0
- package/pi/prompts/diagnose.md +15 -0
- package/pi/prompts/improve.md +39 -0
- package/pi/prompts/learn.md +21 -0
- package/pi/prompts/quiz.md +14 -0
- package/pi/skills/adaptive-teaching/SKILL.md +33 -0
- package/scripts/install/install.sh +308 -0
- package/web/dist/.well-known/llms.txt +44 -0
- package/web/dist/apple-touch-icon.svg +10 -0
- package/web/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/web/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/web/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/web/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/web/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/web/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/web/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/web/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/web/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/web/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/web/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/web/dist/assets/_baseFor-B_cjfMB6.js +1 -0
- package/web/dist/assets/anthropic-BT6Vfzb1.js +36 -0
- package/web/dist/assets/arc-x2nTilpc.js +1 -0
- package/web/dist/assets/architecture-YZFGNWBL-B1hlUWjX.js +1 -0
- package/web/dist/assets/architectureDiagram-Q4EWVU46-CMApWFyw.js +36 -0
- package/web/dist/assets/array-B9UHiPd-.js +1 -0
- package/web/dist/assets/azure-openai-responses-CommX3YJ.js +1 -0
- package/web/dist/assets/blockDiagram-DXYQGD6D-DOQbsNRY.js +132 -0
- package/web/dist/assets/c4Diagram-AHTNJAMY-VFfRZWWA.js +10 -0
- package/web/dist/assets/channel-KY2Tg8Ba.js +1 -0
- package/web/dist/assets/chunk-2KRD3SAO-B-AqvS0u.js +1 -0
- package/web/dist/assets/chunk-336JU56O-DlYgPyl6.js +2 -0
- package/web/dist/assets/chunk-426QAEUC-CsVoBkfR.js +1 -0
- package/web/dist/assets/chunk-4BX2VUAB-0Z13aFAn.js +1 -0
- package/web/dist/assets/chunk-4TB4RGXK-DqC0Zwm7.js +206 -0
- package/web/dist/assets/chunk-55IACEB6-CWE_u-IY.js +1 -0
- package/web/dist/assets/chunk-5FUZZQ4R-CApli0xX.js +62 -0
- package/web/dist/assets/chunk-5PVQY5BW-Cbzhfhln.js +2 -0
- package/web/dist/assets/chunk-67CJDMHE-Cx7uJS4d.js +1 -0
- package/web/dist/assets/chunk-7N4EOEYR-CYPNsFus.js +1 -0
- package/web/dist/assets/chunk-AA7GKIK3-rU0uhR_u.js +1 -0
- package/web/dist/assets/chunk-BSJP7CBP-5VmcfR4-.js +1 -0
- package/web/dist/assets/chunk-Bj-mKKzh.js +1 -0
- package/web/dist/assets/chunk-CIAEETIT-CHJ-L8H1.js +1 -0
- package/web/dist/assets/chunk-EDXVE4YY-DZHAJjMI.js +1 -0
- package/web/dist/assets/chunk-ENJZ2VHE-DbUDFa7w.js +10 -0
- package/web/dist/assets/chunk-FMBD7UC4-BsYE5e_h.js +15 -0
- package/web/dist/assets/chunk-FOC6F5B3-Cm6aoTv7.js +1 -0
- package/web/dist/assets/chunk-ICPOFSXX-C5eNZ4L6.js +123 -0
- package/web/dist/assets/chunk-K5T4RW27-R7dAJ4rq.js +94 -0
- package/web/dist/assets/chunk-KGLVRYIC-MO99YZXL.js +1 -0
- package/web/dist/assets/chunk-LIHQZDEY-DUJ656sT.js +1 -0
- package/web/dist/assets/chunk-ORNJ4GCN-DXuuEC1n.js +1 -0
- package/web/dist/assets/chunk-OYMX7WX6-pJlEprWq.js +231 -0
- package/web/dist/assets/chunk-QZHKN3VN-_pQxbbiW.js +1 -0
- package/web/dist/assets/chunk-U2HBQHQK-Mh_l9PLe.js +70 -0
- package/web/dist/assets/chunk-X2U36JSP-BOeiJW0w.js +1 -0
- package/web/dist/assets/chunk-XPW4576I-fQ9SDvr_.js +32 -0
- package/web/dist/assets/chunk-YZCP3GAM-eboO4P5S.js +1 -0
- package/web/dist/assets/chunk-ZZ45TVLE-Cky0eqlr.js +1 -0
- package/web/dist/assets/classDiagram-6PBFFD2Q-DEPsZSU3.js +1 -0
- package/web/dist/assets/classDiagram-v2-HSJHXN6E-DhmIOEpX.js +1 -0
- package/web/dist/assets/clone-DeTzYqo8.js +1 -0
- package/web/dist/assets/cose-bilkent-S5V4N54A-N4zWUJ7C.js +1 -0
- package/web/dist/assets/cytoscape.esm-BBMd0vGm.js +321 -0
- package/web/dist/assets/dagre-IpK1aoMm.js +1 -0
- package/web/dist/assets/dagre-KV5264BT-DCytJuju.js +4 -0
- package/web/dist/assets/defaultLocale-5eAKkKJC.js +1 -0
- package/web/dist/assets/diagram-5BDNPKRD-Cv4miBae.js +10 -0
- package/web/dist/assets/diagram-G4DWMVQ6-CtICKUFi.js +24 -0
- package/web/dist/assets/diagram-MMDJMWI5-Cn7aGorh.js +43 -0
- package/web/dist/assets/diagram-TYMM5635-CCUWDPsC.js +24 -0
- package/web/dist/assets/dist-Dm98VvTW.js +1 -0
- package/web/dist/assets/env-api-keys-BNlMKqxw.js +1 -0
- package/web/dist/assets/erDiagram-SMLLAGMA-uT88sBlT.js +85 -0
- package/web/dist/assets/event-stream-D33K9rpL.js +1 -0
- package/web/dist/assets/flatten-C-u5nd5-.js +1 -0
- package/web/dist/assets/flowDiagram-DWJPFMVM-Bl3O7S1m.js +162 -0
- package/web/dist/assets/ganttDiagram-T4ZO3ILL-B1FhwV45.js +292 -0
- package/web/dist/assets/gitGraph-7Q5UKJZL-Bc_7vzer.js +1 -0
- package/web/dist/assets/gitGraphDiagram-UUTBAWPF-DfW6svMS.js +106 -0
- package/web/dist/assets/github-copilot-headers-L39QqneT.js +1 -0
- package/web/dist/assets/google-BdYNeCP_.js +1 -0
- package/web/dist/assets/google-gemini-cli-DpxAL3K4.js +2 -0
- package/web/dist/assets/google-shared-DyQdgtsI.js +2 -0
- package/web/dist/assets/google-vertex-CKRybaXj.js +1 -0
- package/web/dist/assets/graphlib-CMTVFyOZ.js +1 -0
- package/web/dist/assets/hash-kZ2KD_no.js +1 -0
- package/web/dist/assets/index-Bdb7P7gx.css +2 -0
- package/web/dist/assets/index-DNxepp8B.js +2891 -0
- package/web/dist/assets/info-OMHHGYJF-BGcxeaZt.js +1 -0
- package/web/dist/assets/infoDiagram-42DDH7IO-BbES7X_c.js +2 -0
- package/web/dist/assets/init-DlZdxViB.js +1 -0
- package/web/dist/assets/isEmpty-DssUW35f.js +1 -0
- package/web/dist/assets/ishikawaDiagram-UXIWVN3A-DxQ28rho.js +70 -0
- package/web/dist/assets/journeyDiagram-VCZTEJTY-D0X8qQ0P.js +139 -0
- package/web/dist/assets/json-parse-C6tSeIxX.js +2 -0
- package/web/dist/assets/kanban-definition-6JOO6SKY-DWYfSlpl.js +89 -0
- package/web/dist/assets/katex-CyM-5LlM.js +265 -0
- package/web/dist/assets/line-CuHce5JG.js +1 -0
- package/web/dist/assets/linear-Ca0Vkwuj.js +1 -0
- package/web/dist/assets/mermaid-parser.core-Cy4iY_Dy.js +4 -0
- package/web/dist/assets/mermaid.core-6PGkQdYc.js +11 -0
- package/web/dist/assets/mindmap-definition-QFDTVHPH-BBnKdtQh.js +96 -0
- package/web/dist/assets/mistral-BWaUMIgd.js +7 -0
- package/web/dist/assets/openai-D4NSaQIs.js +16 -0
- package/web/dist/assets/openai-codex-responses-CHBgKhmb.js +7 -0
- package/web/dist/assets/openai-completions-kcXmmaHI.js +5 -0
- package/web/dist/assets/openai-responses-Cqq3H3p3.js +1 -0
- package/web/dist/assets/openai-responses-shared-CTNuo9ci.js +10 -0
- package/web/dist/assets/ordinal-_K3x1fkz.js +1 -0
- package/web/dist/assets/ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm +0 -0
- package/web/dist/assets/packet-4T2RLAQJ-D35ZLSBH.js +1 -0
- package/web/dist/assets/path-6uRLdFF7.js +1 -0
- package/web/dist/assets/pdf.worker.min-Cpi8b8z3.mjs +28 -0
- package/web/dist/assets/pie-ZZUOXDRM-DRoETpJX.js +1 -0
- package/web/dist/assets/pieDiagram-DEJITSTG-DfMjfTQz.js +30 -0
- package/web/dist/assets/preload-helper-DSXbuxSR.js +1 -0
- package/web/dist/assets/quadrantDiagram-34T5L4WZ-DfBSEept.js +7 -0
- package/web/dist/assets/radar-PYXPWWZC-DLKxRJ0V.js +1 -0
- package/web/dist/assets/reduce-836A2NiQ.js +1 -0
- package/web/dist/assets/requirementDiagram-MS252O5E-BPkxJQkz.js +84 -0
- package/web/dist/assets/rough.esm-Djo4Abte.js +1 -0
- package/web/dist/assets/sankeyDiagram-XADWPNL6-He3x9tNT.js +10 -0
- package/web/dist/assets/sequenceDiagram-FGHM5R23-DfCDpvrT.js +157 -0
- package/web/dist/assets/src-DdOdIreR.js +1 -0
- package/web/dist/assets/stateDiagram-FHFEXIEX-fuww6347.js +1 -0
- package/web/dist/assets/stateDiagram-v2-QKLJ7IA2-U6voafO3.js +1 -0
- package/web/dist/assets/timeline-definition-GMOUNBTQ-BWunHgBC.js +120 -0
- package/web/dist/assets/transform-messages-CqKEdRVp.js +1 -0
- package/web/dist/assets/transformers.web-DKUtmSAi.js +2818 -0
- package/web/dist/assets/treeView-SZITEDCU-BCx0xSAm.js +1 -0
- package/web/dist/assets/treemap-W4RFUUIX-2CvghWJK.js +1 -0
- package/web/dist/assets/vennDiagram-DHZGUBPP-CBXRutSP.js +34 -0
- package/web/dist/assets/wardley-RL74JXVD-BkPL_mhd.js +1 -0
- package/web/dist/assets/wardleyDiagram-NUSXRM2D-DTcVscPH.js +20 -0
- package/web/dist/assets/web-CMKYLKbT.js +10 -0
- package/web/dist/assets/xychartDiagram-5P7HB3ND-CZLgX9Fe.js +7 -0
- package/web/dist/favicon.svg +10 -0
- package/web/dist/index.html +104 -0
- package/web/dist/keating-metaharness.pdf +10557 -3
- package/web/dist/llms.txt +44 -0
- package/web/dist/logo.png +0 -0
- package/web/dist/manifest.webmanifest +1 -0
- package/web/dist/og-image.png +0 -0
- package/web/dist/pwa-192x192.svg +10 -0
- package/web/dist/pwa-512x512.svg +10 -0
- package/web/dist/registerSW.js +1 -0
- package/web/dist/robots.txt +8 -0
- package/web/dist/sitemap.xml +39 -0
- package/web/dist/sw.js +1 -0
- package/web/dist/tapes/doctor.mp4 +0 -0
- package/web/dist/tapes/feedback-flow.mp4 +0 -0
- package/web/dist/tapes/improve-flow.mp4 +0 -0
- package/web/dist/tapes/intro.mp4 +0 -0
- package/web/dist/tapes/learning-flow.mp4 +0 -0
- package/web/dist/tapes/session-flow.mp4 +0 -0
- package/web/dist/tapes/teacher-flow.mp4 +0 -0
- package/web/dist/tapes/tests.mp4 +0 -0
- package/web/dist/workbox-66610c77.js +1 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
|
|
3
|
+
set -eu
|
|
4
|
+
|
|
5
|
+
VERSION="${1:-latest}"
|
|
6
|
+
INSTALL_BIN_DIR="${KEATING_INSTALL_BIN_DIR:-$HOME/.local/bin}"
|
|
7
|
+
INSTALL_APP_DIR="${KEATING_INSTALL_APP_DIR:-$HOME/.local/sharekeating}"
|
|
8
|
+
SKIP_PATH_UPDATE="${KEATING_INSTALL_SKIP_PATH_UPDATE:-0}"
|
|
9
|
+
path_action="already"
|
|
10
|
+
path_profile=""
|
|
11
|
+
|
|
12
|
+
step() {
|
|
13
|
+
printf '==> %s\n' "$1"
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
run_with_spinner() {
|
|
17
|
+
label="$1"
|
|
18
|
+
shift
|
|
19
|
+
|
|
20
|
+
if [ ! -t 2 ]; then
|
|
21
|
+
step "$label"
|
|
22
|
+
"$@"
|
|
23
|
+
return
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
"$@" &
|
|
27
|
+
pid=$!
|
|
28
|
+
frame=0
|
|
29
|
+
|
|
30
|
+
set +e
|
|
31
|
+
while kill -0 "$pid" 2>/dev/null; do
|
|
32
|
+
case "$frame" in
|
|
33
|
+
0) spinner='|' ;;
|
|
34
|
+
1) spinner='/' ;;
|
|
35
|
+
2) spinner='-' ;;
|
|
36
|
+
*) spinner='\\' ;;
|
|
37
|
+
esac
|
|
38
|
+
printf '\r==> %s %s' "$label" "$spinner" >&2
|
|
39
|
+
frame=$(( (frame + 1) % 4 ))
|
|
40
|
+
sleep 0.1
|
|
41
|
+
done
|
|
42
|
+
wait "$pid"
|
|
43
|
+
status=$?
|
|
44
|
+
set -e
|
|
45
|
+
|
|
46
|
+
printf '\r\033[2K' >&2
|
|
47
|
+
if [ "$status" -ne 0 ]; then
|
|
48
|
+
printf '==> %s failed\n' "$label" >&2
|
|
49
|
+
return "$status"
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
step "$label"
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
normalize_version() {
|
|
56
|
+
case "$1" in
|
|
57
|
+
"")
|
|
58
|
+
printf 'latest\n'
|
|
59
|
+
;;
|
|
60
|
+
latest | stable)
|
|
61
|
+
printf 'latest\n'
|
|
62
|
+
;;
|
|
63
|
+
v*)
|
|
64
|
+
printf '%s\n' "${1#v}"
|
|
65
|
+
;;
|
|
66
|
+
*)
|
|
67
|
+
printf '%s\n' "$1"
|
|
68
|
+
;;
|
|
69
|
+
esac
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
download_file() {
|
|
73
|
+
url="$1"
|
|
74
|
+
output="$2"
|
|
75
|
+
|
|
76
|
+
if command -v curl >/dev/null 2>&1; then
|
|
77
|
+
if [ -t 2 ]; then
|
|
78
|
+
curl -fL --progress-bar "$url" -o "$output"
|
|
79
|
+
else
|
|
80
|
+
curl -fsSL "$url" -o "$output"
|
|
81
|
+
fi
|
|
82
|
+
return
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
if command -v wget >/dev/null 2>&1; then
|
|
86
|
+
if [ -t 2 ]; then
|
|
87
|
+
wget --show-progress -O "$output" "$url"
|
|
88
|
+
else
|
|
89
|
+
wget -q -O "$output" "$url"
|
|
90
|
+
fi
|
|
91
|
+
return
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
echo "curl or wget is required to install Keating." >&2
|
|
95
|
+
exit 1
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
download_text() {
|
|
99
|
+
url="$1"
|
|
100
|
+
|
|
101
|
+
if command -v curl >/dev/null 2>&1; then
|
|
102
|
+
curl -fsSL "$url"
|
|
103
|
+
return
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
if command -v wget >/dev/null 2>&1; then
|
|
107
|
+
wget -q -O - "$url"
|
|
108
|
+
return
|
|
109
|
+
fi
|
|
110
|
+
|
|
111
|
+
echo "curl or wget is required to install Keating." >&2
|
|
112
|
+
exit 1
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
add_to_path() {
|
|
116
|
+
path_action="already"
|
|
117
|
+
path_profile=""
|
|
118
|
+
|
|
119
|
+
case ":$PATH:" in
|
|
120
|
+
*":$INSTALL_BIN_DIR:"*)
|
|
121
|
+
return
|
|
122
|
+
;;
|
|
123
|
+
esac
|
|
124
|
+
|
|
125
|
+
if [ "$SKIP_PATH_UPDATE" = "1" ]; then
|
|
126
|
+
path_action="skipped"
|
|
127
|
+
return
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
profile="${KEATING_INSTALL_SHELL_PROFILE:-$HOME/.profile}"
|
|
131
|
+
if [ -z "${KEATING_INSTALL_SHELL_PROFILE:-}" ]; then
|
|
132
|
+
case "${SHELL:-}" in
|
|
133
|
+
*/zsh)
|
|
134
|
+
profile="$HOME/.zshrc"
|
|
135
|
+
;;
|
|
136
|
+
*/bash)
|
|
137
|
+
profile="$HOME/.bashrc"
|
|
138
|
+
;;
|
|
139
|
+
esac
|
|
140
|
+
fi
|
|
141
|
+
|
|
142
|
+
path_profile="$profile"
|
|
143
|
+
path_line="export PATH=\"$INSTALL_BIN_DIR:\$PATH\""
|
|
144
|
+
if [ -f "$profile" ] && grep -F "$path_line" "$profile" >/dev/null 2>&1; then
|
|
145
|
+
path_action="configured"
|
|
146
|
+
return
|
|
147
|
+
fi
|
|
148
|
+
|
|
149
|
+
{
|
|
150
|
+
printf '\n# Added by Keating installer\n'
|
|
151
|
+
printf '%s\n' "$path_line"
|
|
152
|
+
} >>"$profile"
|
|
153
|
+
path_action="added"
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
require_command() {
|
|
157
|
+
if ! command -v "$1" >/dev/null 2>&1; then
|
|
158
|
+
echo "$1 is required to install Keating." >&2
|
|
159
|
+
exit 1
|
|
160
|
+
fi
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
warn_command_conflict() {
|
|
164
|
+
expected_path="$INSTALL_BIN_DIR/keating"
|
|
165
|
+
resolved_path="$(command -v keating 2>/dev/null || true)"
|
|
166
|
+
|
|
167
|
+
if [ -z "$resolved_path" ]; then
|
|
168
|
+
return
|
|
169
|
+
fi
|
|
170
|
+
|
|
171
|
+
if [ "$resolved_path" != "$expected_path" ]; then
|
|
172
|
+
step "Warning: current shell resolves keating to $resolved_path"
|
|
173
|
+
step "Run now: export PATH=\"$INSTALL_BIN_DIR:\$PATH\" && hash -r && keating"
|
|
174
|
+
step "Or launch directly: $expected_path"
|
|
175
|
+
|
|
176
|
+
case "$resolved_path" in
|
|
177
|
+
*"/node_modules/keating/"* | *"/node_modules/.bin/keating")
|
|
178
|
+
step "If that path is an old global npm install, remove it with: npm uninstall -g keating"
|
|
179
|
+
;;
|
|
180
|
+
esac
|
|
181
|
+
fi
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
resolve_release_metadata() {
|
|
185
|
+
normalized_version="$(normalize_version "$VERSION")"
|
|
186
|
+
|
|
187
|
+
if [ "$normalized_version" = "latest" ]; then
|
|
188
|
+
release_page="$(download_text "https://github.com/Diogenesoftoronto/keating/releases/latest")"
|
|
189
|
+
resolved_version="$(printf '%s\n' "$release_page" | sed -n 's@.*releases/tag/v\([0-9][^"<>[:space:]]*\).*@\1@p' | head -n 1)"
|
|
190
|
+
|
|
191
|
+
if [ -z "$resolved_version" ]; then
|
|
192
|
+
echo "Failed to resolve the latest Keating release version." >&2
|
|
193
|
+
exit 1
|
|
194
|
+
fi
|
|
195
|
+
else
|
|
196
|
+
resolved_version="$normalized_version"
|
|
197
|
+
fi
|
|
198
|
+
|
|
199
|
+
bundle_name="keating-${resolved_version}-${asset_target}"
|
|
200
|
+
archive_name="${bundle_name}.${archive_extension}"
|
|
201
|
+
download_url="${KEATING_INSTALL_BASE_URL:-https://github.com/Diogenesoftoronto/keating/releases/download/v${resolved_version}}/${archive_name}"
|
|
202
|
+
|
|
203
|
+
printf '%s\n%s\n%s\n%s\n' "$resolved_version" "$bundle_name" "$archive_name" "$download_url"
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
case "$(uname -s)" in
|
|
207
|
+
Darwin)
|
|
208
|
+
os="darwin"
|
|
209
|
+
;;
|
|
210
|
+
Linux)
|
|
211
|
+
os="linux"
|
|
212
|
+
;;
|
|
213
|
+
*)
|
|
214
|
+
echo "install.sh supports macOS and Linux. Use install.ps1 on Windows." >&2
|
|
215
|
+
exit 1
|
|
216
|
+
;;
|
|
217
|
+
esac
|
|
218
|
+
|
|
219
|
+
case "$(uname -m)" in
|
|
220
|
+
x86_64 | amd64)
|
|
221
|
+
arch="x64"
|
|
222
|
+
;;
|
|
223
|
+
arm64 | aarch64)
|
|
224
|
+
arch="arm64"
|
|
225
|
+
;;
|
|
226
|
+
*)
|
|
227
|
+
echo "Unsupported architecture: $(uname -m)" >&2
|
|
228
|
+
exit 1
|
|
229
|
+
;;
|
|
230
|
+
esac
|
|
231
|
+
|
|
232
|
+
require_command mktemp
|
|
233
|
+
require_command tar
|
|
234
|
+
require_command node
|
|
235
|
+
|
|
236
|
+
asset_target="$os-$arch"
|
|
237
|
+
archive_extension="tar.gz"
|
|
238
|
+
release_metadata="$(resolve_release_metadata)"
|
|
239
|
+
resolved_version="$(printf '%s\n' "$release_metadata" | sed -n '1p')"
|
|
240
|
+
bundle_name="$(printf '%s\n' "$release_metadata" | sed -n '2p')"
|
|
241
|
+
archive_name="$(printf '%s\n' "$release_metadata" | sed -n '3p')"
|
|
242
|
+
download_url="$(printf '%s\n' "$release_metadata" | sed -n '4p')"
|
|
243
|
+
|
|
244
|
+
step "Installing Keating ${resolved_version} for ${asset_target}"
|
|
245
|
+
|
|
246
|
+
tmp_dir="$(mktemp -d)"
|
|
247
|
+
cleanup() {
|
|
248
|
+
rm -rf "$tmp_dir"
|
|
249
|
+
}
|
|
250
|
+
trap cleanup EXIT INT TERM
|
|
251
|
+
|
|
252
|
+
archive_path="$tmp_dir/$archive_name"
|
|
253
|
+
step "Downloading ${archive_name}"
|
|
254
|
+
if ! download_file "$download_url" "$archive_path"; then
|
|
255
|
+
cat >&2 <<EOF
|
|
256
|
+
Failed to download ${archive_name} from:
|
|
257
|
+
${download_url}
|
|
258
|
+
|
|
259
|
+
The ${asset_target} bundle is missing from the GitHub release.
|
|
260
|
+
This usually means the release exists, but not all platform bundles were uploaded.
|
|
261
|
+
|
|
262
|
+
Workarounds:
|
|
263
|
+
- try again after the release finishes publishing
|
|
264
|
+
- install via pnpm instead: pnpm add -g keating
|
|
265
|
+
- install via bun instead: bun add -g keating
|
|
266
|
+
EOF
|
|
267
|
+
exit 1
|
|
268
|
+
fi
|
|
269
|
+
|
|
270
|
+
mkdir -p "$INSTALL_APP_DIR"
|
|
271
|
+
rm -rf "$INSTALL_APP_DIR/$bundle_name"
|
|
272
|
+
run_with_spinner "Extracting ${archive_name}" tar -xzf "$archive_path" -C "$INSTALL_APP_DIR"
|
|
273
|
+
|
|
274
|
+
mkdir -p "$INSTALL_BIN_DIR"
|
|
275
|
+
step "Linking keating into $INSTALL_BIN_DIR"
|
|
276
|
+
cat >"$INSTALL_BIN_DIR/keating" <<EOF
|
|
277
|
+
#!/bin/sh
|
|
278
|
+
set -eu
|
|
279
|
+
exec node "$INSTALL_APP_DIR/$bundle_name/bin/keating.js" "\$@"
|
|
280
|
+
EOF
|
|
281
|
+
chmod 0755 "$INSTALL_BIN_DIR/keating"
|
|
282
|
+
|
|
283
|
+
add_to_path
|
|
284
|
+
|
|
285
|
+
case "$path_action" in
|
|
286
|
+
added)
|
|
287
|
+
step "PATH updated for future shells in $path_profile"
|
|
288
|
+
step "Run now: export PATH=\"$INSTALL_BIN_DIR:\$PATH\" && hash -r && keating"
|
|
289
|
+
;;
|
|
290
|
+
configured)
|
|
291
|
+
step "PATH is already configured for future shells in $path_profile"
|
|
292
|
+
step "Run now: export PATH=\"$INSTALL_BIN_DIR:\$PATH\" && hash -r && keating"
|
|
293
|
+
;;
|
|
294
|
+
skipped)
|
|
295
|
+
step "PATH update skipped"
|
|
296
|
+
step "Run now: export PATH=\"$INSTALL_BIN_DIR:\$PATH\" && hash -r && keating"
|
|
297
|
+
;;
|
|
298
|
+
*)
|
|
299
|
+
step "$INSTALL_BIN_DIR is already on PATH"
|
|
300
|
+
step "Run: hash -r && keating"
|
|
301
|
+
;;
|
|
302
|
+
esac
|
|
303
|
+
|
|
304
|
+
warn_command_conflict
|
|
305
|
+
|
|
306
|
+
printf 'Keating %s installed successfully.\n' "$resolved_version"
|
|
307
|
+
printf 'Run "keating" to start the hyperteacher shell.\n'
|
|
308
|
+
printf 'Or visit https://keating.help to use in browser.\n'
|
|
@@ -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>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(){this.__data__=[],this.size=0}function t(e,t){return e===t||e!==e&&t!==t}function n(e,n){for(var r=e.length;r--;)if(t(e[r][0],n))return r;return-1}var r=Array.prototype.splice;function i(e){var t=this.__data__,i=n(t,e);return i<0?!1:(i==t.length-1?t.pop():r.call(t,i,1),--this.size,!0)}function a(e){var t=this.__data__,r=n(t,e);return r<0?void 0:t[r][1]}function o(e){return n(this.__data__,e)>-1}function s(e,t){var r=this.__data__,i=n(r,e);return i<0?(++this.size,r.push([e,t])):r[i][1]=t,this}function c(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=e,c.prototype.delete=i,c.prototype.get=a,c.prototype.has=o,c.prototype.set=s;function l(){this.__data__=new c,this.size=0}function ee(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function te(e){return this.__data__.get(e)}function ne(e){return this.__data__.has(e)}var u=typeof global==`object`&&global&&global.Object===Object&&global,re=typeof self==`object`&&self&&self.Object===Object&&self,d=u||re||Function(`return this`)(),f=d.Symbol,p=Object.prototype,ie=p.hasOwnProperty,ae=p.toString,m=f?f.toStringTag:void 0;function oe(e){var t=ie.call(e,m),n=e[m];try{e[m]=void 0;var r=!0}catch{}var i=ae.call(e);return r&&(t?e[m]=n:delete e[m]),i}var se=Object.prototype.toString;function ce(e){return se.call(e)}var le=`[object Null]`,ue=`[object Undefined]`,h=f?f.toStringTag:void 0;function g(e){return e==null?e===void 0?ue:le:h&&h in Object(e)?oe(e):ce(e)}function _(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}var de=`[object AsyncFunction]`,fe=`[object Function]`,pe=`[object GeneratorFunction]`,me=`[object Proxy]`;function v(e){if(!_(e))return!1;var t=g(e);return t==fe||t==pe||t==de||t==me}var y=d[`__core-js_shared__`],b=function(){var e=/[^.]+$/.exec(y&&y.keys&&y.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function he(e){return!!b&&b in e}var ge=Function.prototype.toString;function x(e){if(e!=null){try{return ge.call(e)}catch{}try{return e+``}catch{}}return``}var _e=/[\\^$.*+?()[\]{}|]/g,ve=/^\[object .+?Constructor\]$/,ye=Function.prototype,be=Object.prototype,xe=ye.toString,Se=be.hasOwnProperty,Ce=RegExp(`^`+xe.call(Se).replace(_e,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function we(e){return!_(e)||he(e)?!1:(v(e)?Ce:ve).test(x(e))}function Te(e,t){return e?.[t]}function S(e,t){var n=Te(e,t);return we(n)?n:void 0}var C=S(d,`Map`),w=S(Object,`create`);function T(){this.__data__=w?w(null):{},this.size=0}function E(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=+!!t,t}var D=`__lodash_hash_undefined__`,O=Object.prototype.hasOwnProperty;function Ee(e){var t=this.__data__;if(w){var n=t[e];return n===D?void 0:n}return O.call(t,e)?t[e]:void 0}var De=Object.prototype.hasOwnProperty;function Oe(e){var t=this.__data__;return w?t[e]!==void 0:De.call(t,e)}var ke=`__lodash_hash_undefined__`;function Ae(e,t){var n=this.__data__;return this.size+=+!this.has(e),n[e]=w&&t===void 0?ke:t,this}function k(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}k.prototype.clear=T,k.prototype.delete=E,k.prototype.get=Ee,k.prototype.has=Oe,k.prototype.set=Ae;function je(){this.size=0,this.__data__={hash:new k,map:new(C||c),string:new k}}function Me(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}function A(e,t){var n=e.__data__;return Me(t)?n[typeof t==`string`?`string`:`hash`]:n.map}function Ne(e){var t=A(this,e).delete(e);return this.size-=+!!t,t}function Pe(e){return A(this,e).get(e)}function Fe(e){return A(this,e).has(e)}function Ie(e,t){var n=A(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}function j(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}j.prototype.clear=je,j.prototype.delete=Ne,j.prototype.get=Pe,j.prototype.has=Fe,j.prototype.set=Ie;var Le=200;function Re(e,t){var n=this.__data__;if(n instanceof c){var r=n.__data__;if(!C||r.length<Le-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new j(r)}return n.set(e,t),this.size=n.size,this}function M(e){this.size=(this.__data__=new c(e)).size}M.prototype.clear=l,M.prototype.delete=ee,M.prototype.get=te,M.prototype.has=ne,M.prototype.set=Re;var ze=d.Uint8Array,N=Array.isArray;function Be(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}function P(e){return typeof e==`object`&&!!e}var Ve=`[object Arguments]`;function F(e){return P(e)&&g(e)==Ve}var I=Object.prototype,He=I.hasOwnProperty,Ue=I.propertyIsEnumerable,L=F(function(){return arguments}())?F:function(e){return P(e)&&He.call(e,`callee`)&&!Ue.call(e,`callee`)};function We(){return!1}var R=typeof exports==`object`&&exports&&!exports.nodeType&&exports,z=R&&typeof module==`object`&&module&&!module.nodeType&&module,B=z&&z.exports===R?d.Buffer:void 0,V=(B?B.isBuffer:void 0)||We,Ge=9007199254740991,Ke=/^(?:0|[1-9]\d*)$/;function H(e,t){var n=typeof e;return t??=Ge,!!t&&(n==`number`||n!=`symbol`&&Ke.test(e))&&e>-1&&e%1==0&&e<t}var qe=9007199254740991;function U(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=qe}var Je=`[object Arguments]`,Ye=`[object Array]`,Xe=`[object Boolean]`,Ze=`[object Date]`,Qe=`[object Error]`,$e=`[object Function]`,et=`[object Map]`,tt=`[object Number]`,nt=`[object Object]`,rt=`[object RegExp]`,it=`[object Set]`,at=`[object String]`,ot=`[object WeakMap]`,st=`[object ArrayBuffer]`,ct=`[object DataView]`,lt=`[object Float32Array]`,ut=`[object Float64Array]`,dt=`[object Int8Array]`,ft=`[object Int16Array]`,pt=`[object Int32Array]`,mt=`[object Uint8Array]`,ht=`[object Uint8ClampedArray]`,gt=`[object Uint16Array]`,_t=`[object Uint32Array]`,W={};W[lt]=W[ut]=W[dt]=W[ft]=W[pt]=W[mt]=W[ht]=W[gt]=W[_t]=!0,W[Je]=W[Ye]=W[st]=W[Xe]=W[ct]=W[Ze]=W[Qe]=W[$e]=W[et]=W[tt]=W[nt]=W[rt]=W[it]=W[at]=W[ot]=!1;function vt(e){return P(e)&&U(e.length)&&!!W[g(e)]}function G(e){return function(t){return e(t)}}var K=typeof exports==`object`&&exports&&!exports.nodeType&&exports,q=K&&typeof module==`object`&&module&&!module.nodeType&&module,J=q&&q.exports===K&&u.process,Y=function(){try{return q&&q.require&&q.require(`util`).types||J&&J.binding&&J.binding(`util`)}catch{}}(),X=Y&&Y.isTypedArray,Z=X?G(X):vt,yt=Object.prototype.hasOwnProperty;function bt(e,t){var n=N(e),r=!n&&L(e),i=!n&&!r&&V(e),a=!n&&!r&&!i&&Z(e),o=n||r||i||a,s=o?Be(e.length,String):[],c=s.length;for(var l in e)(t||yt.call(e,l))&&!(o&&(l==`length`||i&&(l==`offset`||l==`parent`)||a&&(l==`buffer`||l==`byteLength`||l==`byteOffset`)||H(l,c)))&&s.push(l);return s}var xt=Object.prototype;function St(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||xt)}function Ct(e,t){return function(n){return e(t(n))}}function wt(e){return e!=null&&U(e.length)&&!v(e)}var Tt=`Expected a function`;function Q(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(Tt);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(Q.Cache||j),n}Q.Cache=j;function $(e){return e}function Et(e){return function(t,n,r){for(var i=-1,a=Object(t),o=r(t),s=o.length;s--;){var c=o[e?s:++i];if(n(a[c],c,a)===!1)break}return t}}var Dt=Et();export{v as C,d as D,f as E,t as O,x as S,g as T,ze as _,Ct as a,C as b,Z as c,U as d,H as f,N as g,P as h,wt as i,Y as l,L as m,$ as n,St as o,V as p,Q as r,bt as s,Dt as t,G as u,M as v,_ as w,S as x,j as y};
|