keating 0.3.6 → 0.3.8
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/dist/src/cli/main.js +3 -0
- package/dist/src/core/config.js +4 -1
- package/dist/src/core/evolution.js +3 -31
- package/dist/src/core/map-elites.js +2 -29
- package/dist/src/core/map.js +3 -1
- package/dist/src/core/mutation.js +29 -0
- package/dist/src/core/policy.js +40 -14
- package/dist/src/core/project.js +21 -23
- package/dist/src/core/topics.js +6 -1
- package/dist/src/pi/hyperteacher-extension.js +1 -1
- package/dist/src/runtime/pi.js +6 -1
- package/package.json +1 -1
- package/web/dist/assets/{anthropic-BT6Vfzb1.js → anthropic-mDOoXVZn.js} +1 -1
- package/web/dist/assets/arc-BgYOxBdg.js +1 -0
- package/web/dist/assets/architecture-YZFGNWBL-MLoSDt-a.js +1 -0
- package/web/dist/assets/architectureDiagram-Q4EWVU46-Yh6i8NsV.js +36 -0
- package/web/dist/assets/{azure-openai-responses-CommX3YJ.js → azure-openai-responses-lDjfaDoj.js} +1 -1
- package/web/dist/assets/band-mY0qgSES.js +1 -0
- package/web/dist/assets/blockDiagram-DXYQGD6D-DUOEnS09.js +132 -0
- package/web/dist/assets/{c4Diagram-AHTNJAMY-VFfRZWWA.js → c4Diagram-AHTNJAMY-XzNOUnLt.js} +6 -6
- package/web/dist/assets/channel-BumC_1wb.js +1 -0
- package/web/dist/assets/{chunk-2KRD3SAO-B-AqvS0u.js → chunk-2KRD3SAO-mLbXjVje.js} +1 -1
- package/web/dist/assets/chunk-336JU56O-CQcnUKNW.js +2 -0
- package/web/dist/assets/chunk-426QAEUC-AjoT_j_q.js +1 -0
- package/web/dist/assets/{chunk-4BX2VUAB-0Z13aFAn.js → chunk-4BX2VUAB-DRZjGMDM.js} +1 -1
- package/web/dist/assets/{chunk-4TB4RGXK-DqC0Zwm7.js → chunk-4TB4RGXK-CAwQq2uM.js} +6 -6
- package/web/dist/assets/chunk-55IACEB6-C19HKnvd.js +1 -0
- package/web/dist/assets/{chunk-5FUZZQ4R-CApli0xX.js → chunk-5FUZZQ4R-Bw3BFJJs.js} +31 -31
- package/web/dist/assets/chunk-5PVQY5BW-Ciel-YVc.js +2 -0
- package/web/dist/assets/{chunk-67CJDMHE-Cx7uJS4d.js → chunk-67CJDMHE-DNZKE79k.js} +1 -1
- package/web/dist/assets/{chunk-7N4EOEYR-CYPNsFus.js → chunk-7N4EOEYR-BGZXIfBD.js} +1 -1
- package/web/dist/assets/{chunk-AA7GKIK3-rU0uhR_u.js → chunk-AA7GKIK3-CLWjm_Gk.js} +1 -1
- package/web/dist/assets/{chunk-BSJP7CBP-5VmcfR4-.js → chunk-BSJP7CBP-DwT1eVSc.js} +1 -1
- package/web/dist/assets/{chunk-CIAEETIT-CHJ-L8H1.js → chunk-CIAEETIT-DaQsGVwH.js} +1 -1
- package/web/dist/assets/{chunk-EDXVE4YY-DZHAJjMI.js → chunk-EDXVE4YY-DNeRJTiS.js} +1 -1
- package/web/dist/assets/{chunk-ENJZ2VHE-DbUDFa7w.js → chunk-ENJZ2VHE-Crfow0Ab.js} +6 -6
- package/web/dist/assets/{chunk-FMBD7UC4-BsYE5e_h.js → chunk-FMBD7UC4-BWSstEYx.js} +1 -1
- package/web/dist/assets/{chunk-FOC6F5B3-Cm6aoTv7.js → chunk-FOC6F5B3-BrTsf5ix.js} +1 -1
- package/web/dist/assets/{chunk-ICPOFSXX-C5eNZ4L6.js → chunk-ICPOFSXX-C04NFfJk.js} +5 -5
- package/web/dist/assets/{chunk-K5T4RW27-R7dAJ4rq.js → chunk-K5T4RW27-C6ErEFB0.js} +1 -1
- package/web/dist/assets/{chunk-KGLVRYIC-MO99YZXL.js → chunk-KGLVRYIC-DWgMrjZr.js} +1 -1
- package/web/dist/assets/{chunk-LIHQZDEY-DUJ656sT.js → chunk-LIHQZDEY-D3DWGnJT.js} +1 -1
- package/web/dist/assets/{chunk-ORNJ4GCN-DXuuEC1n.js → chunk-ORNJ4GCN-D0nhq27e.js} +1 -1
- package/web/dist/assets/{chunk-OYMX7WX6-pJlEprWq.js → chunk-OYMX7WX6-CQLx0cU3.js} +5 -5
- package/web/dist/assets/chunk-QZHKN3VN-X2zPgEFk.js +1 -0
- package/web/dist/assets/{chunk-U2HBQHQK-Mh_l9PLe.js → chunk-U2HBQHQK-FqDOW_Dq.js} +6 -6
- package/web/dist/assets/{chunk-X2U36JSP-BOeiJW0w.js → chunk-X2U36JSP-DiSftNGg.js} +1 -1
- package/web/dist/assets/{chunk-XPW4576I-fQ9SDvr_.js → chunk-XPW4576I-CTCFDURY.js} +1 -1
- package/web/dist/assets/chunk-YZCP3GAM-BhxShnp0.js +1 -0
- package/web/dist/assets/chunk-ZZ45TVLE-DMfGJuPz.js +1 -0
- package/web/dist/assets/classDiagram-6PBFFD2Q-qESk_xyE.js +1 -0
- package/web/dist/assets/classDiagram-v2-HSJHXN6E-BM1nmtfm.js +1 -0
- package/web/dist/assets/clone-CVy2b825.js +1 -0
- package/web/dist/assets/cose-bilkent-S5V4N54A-BWrDpSLZ.js +1 -0
- package/web/dist/assets/custom-tts-DA7XkgNJ.js +1 -0
- package/web/dist/assets/dagre-C_Y5Jrtl.js +1 -0
- package/web/dist/assets/dagre-KV5264BT-DcrvRRX1.js +4 -0
- package/web/dist/assets/diagram-5BDNPKRD-BsChRck6.js +10 -0
- package/web/dist/assets/{diagram-G4DWMVQ6-CtICKUFi.js → diagram-G4DWMVQ6-raeAsgoe.js} +12 -12
- package/web/dist/assets/diagram-MMDJMWI5-CuKsP84I.js +43 -0
- package/web/dist/assets/diagram-TYMM5635-T7ILcS3d.js +24 -0
- package/web/dist/assets/dist-DQ41Rxbw.js +1 -0
- package/web/dist/assets/dist-oYdMaa1U.js +10 -0
- package/web/dist/assets/{erDiagram-SMLLAGMA-uT88sBlT.js → erDiagram-SMLLAGMA-C9z6kYxH.js} +6 -6
- package/web/dist/assets/{flatten-C-u5nd5-.js → flatten-n72VCU_F.js} +1 -1
- package/web/dist/assets/flowDiagram-DWJPFMVM-BA3HBIvp.js +162 -0
- package/web/dist/assets/ganttDiagram-T4ZO3ILL-BXKKRsbk.js +292 -0
- package/web/dist/assets/gemini-live-dK40vCc5.js +2 -0
- package/web/dist/assets/gitGraph-7Q5UKJZL-Cy0KloCM.js +1 -0
- package/web/dist/assets/gitGraphDiagram-UUTBAWPF-CfGAccI8.js +106 -0
- package/web/dist/assets/{google-BdYNeCP_.js → google-BdS4iTyC.js} +1 -1
- package/web/dist/assets/{google-gemini-cli-DpxAL3K4.js → google-gemini-cli-ECA0sP3z.js} +1 -1
- package/web/dist/assets/{google-shared-DyQdgtsI.js → google-shared-DFv4ubOG.js} +1 -1
- package/web/dist/assets/{google-vertex-CKRybaXj.js → google-vertex-Duei77qD.js} +1 -1
- package/web/dist/assets/graphlib-sK54_wxh.js +1 -0
- package/web/dist/assets/index-B_MGHHww.js +3187 -0
- package/web/dist/assets/index-C_k9n6xi.css +2 -0
- package/web/dist/assets/info-OMHHGYJF-DiTlPM51.js +1 -0
- package/web/dist/assets/{infoDiagram-42DDH7IO-BbES7X_c.js → infoDiagram-42DDH7IO-CXoykyfr.js} +1 -1
- package/web/dist/assets/init-DugVGdkd.js +1 -0
- package/web/dist/assets/{isEmpty-DssUW35f.js → isEmpty-Lz_aOZWI.js} +1 -1
- package/web/dist/assets/{ishikawaDiagram-UXIWVN3A-DxQ28rho.js → ishikawaDiagram-UXIWVN3A-BJieXVMt.js} +6 -6
- package/web/dist/assets/{journeyDiagram-VCZTEJTY-D0X8qQ0P.js → journeyDiagram-VCZTEJTY-CwCyrnqT.js} +6 -6
- package/web/dist/assets/{kanban-definition-6JOO6SKY-DWYfSlpl.js → kanban-definition-6JOO6SKY-8ACmDHsl.js} +1 -1
- package/web/dist/assets/line-BqZCcbso.js +1 -0
- package/web/dist/assets/linear-CXf5Bx3D.js +1 -0
- package/web/dist/assets/math-Csj_9zpx.js +1 -0
- package/web/dist/assets/{mermaid-parser.core-Cy4iY_Dy.js → mermaid-parser.core-C8ylgsWV.js} +2 -2
- package/web/dist/assets/mermaid.core-BHCT6V24.js +11 -0
- package/web/dist/assets/{mindmap-definition-QFDTVHPH-BBnKdtQh.js → mindmap-definition-QFDTVHPH-DrDAZL9Q.js} +1 -1
- package/web/dist/assets/{mistral-BWaUMIgd.js → mistral-BCIirCkW.js} +1 -1
- package/web/dist/assets/{openai-codex-responses-CHBgKhmb.js → openai-codex-responses-BgRTWVD_.js} +1 -1
- package/web/dist/assets/{openai-completions-kcXmmaHI.js → openai-completions-D5AUQEua.js} +1 -1
- package/web/dist/assets/openai-realtime-BCZmIToJ.js +1 -0
- package/web/dist/assets/{openai-responses-Cqq3H3p3.js → openai-responses-CTlQ1a-G.js} +1 -1
- package/web/dist/assets/{openai-responses-shared-CTNuo9ci.js → openai-responses-shared-CLzQyVyy.js} +1 -1
- package/web/dist/assets/openai-tts-BRg2goic.js +1 -0
- package/web/dist/assets/{ordinal-_K3x1fkz.js → ordinal-CHOvK70a.js} +1 -1
- package/web/dist/assets/ort.bundle.min-Drf2fDrC.js +2805 -0
- package/web/dist/assets/packet-4T2RLAQJ-EXgAtQjm.js +1 -0
- package/web/dist/assets/path-BVVvcbiy.js +1 -0
- package/web/dist/assets/pie-ZZUOXDRM-dKU8mzlj.js +1 -0
- package/web/dist/assets/pieDiagram-DEJITSTG-CSnulv9o.js +30 -0
- package/web/dist/assets/{quadrantDiagram-34T5L4WZ-DfBSEept.js → quadrantDiagram-34T5L4WZ-DiM-1bw4.js} +6 -6
- package/web/dist/assets/radar-PYXPWWZC-B4d2wh2H.js +1 -0
- package/web/dist/assets/{reduce-836A2NiQ.js → reduce-r7gP4wdg.js} +1 -1
- package/web/dist/assets/renderer-BHoCfdWO-BFpsm4dw.js +1 -0
- package/web/dist/assets/requirementDiagram-MS252O5E-CunJUnIN.js +84 -0
- package/web/dist/assets/{sankeyDiagram-XADWPNL6-He3x9tNT.js → sankeyDiagram-XADWPNL6-DaA_56zq.js} +7 -7
- package/web/dist/assets/{sequenceDiagram-FGHM5R23-DfCDpvrT.js → sequenceDiagram-FGHM5R23-CG_SeqVO.js} +13 -13
- package/web/dist/assets/speech-ZNExxXBR.js +2 -0
- package/web/dist/assets/src-BfaOho0B.js +1 -0
- package/web/dist/assets/state-CrA0YVPh-wJ4Rmm6M.js +27 -0
- package/web/dist/assets/stateDiagram-FHFEXIEX-CSUigMtP.js +1 -0
- package/web/dist/assets/stateDiagram-v2-QKLJ7IA2-CgpYzp7D.js +1 -0
- package/web/dist/assets/step-qalMyYGy.js +1 -0
- package/web/dist/assets/string-DPssBiak.js +1 -0
- package/web/dist/assets/supertonic-hDdNdgtO.js +2 -0
- package/web/dist/assets/time-DaCo2z7n.js +1 -0
- package/web/dist/assets/{timeline-definition-GMOUNBTQ-BWunHgBC.js → timeline-definition-GMOUNBTQ-DcMiH-gG.js} +7 -7
- package/web/dist/assets/transformers.web-R9eWI1xg.js +14 -0
- package/web/dist/assets/treeView-SZITEDCU-V29H5f16.js +1 -0
- package/web/dist/assets/treemap-W4RFUUIX-DsAU74TP.js +1 -0
- package/web/dist/assets/vennDiagram-DHZGUBPP-C6A75Q3q.js +34 -0
- package/web/dist/assets/wardley-RL74JXVD-lGAI4Cps.js +1 -0
- package/web/dist/assets/{wardleyDiagram-NUSXRM2D-DTcVscPH.js → wardleyDiagram-NUSXRM2D-XmYD0oYm.js} +1 -1
- package/web/dist/assets/xychartDiagram-5P7HB3ND-BgSoKcS9.js +7 -0
- package/web/dist/index.html +16 -3
- package/web/dist/sw.js +647 -1
- package/web/dist/workbox-2ae722a1.js +4390 -0
- package/web/dist/assets/arc-x2nTilpc.js +0 -1
- package/web/dist/assets/architecture-YZFGNWBL-B1hlUWjX.js +0 -1
- package/web/dist/assets/architectureDiagram-Q4EWVU46-CMApWFyw.js +0 -36
- package/web/dist/assets/blockDiagram-DXYQGD6D-DOQbsNRY.js +0 -132
- package/web/dist/assets/channel-KY2Tg8Ba.js +0 -1
- package/web/dist/assets/chunk-336JU56O-DlYgPyl6.js +0 -2
- package/web/dist/assets/chunk-426QAEUC-CsVoBkfR.js +0 -1
- package/web/dist/assets/chunk-55IACEB6-CWE_u-IY.js +0 -1
- package/web/dist/assets/chunk-5PVQY5BW-Cbzhfhln.js +0 -2
- package/web/dist/assets/chunk-QZHKN3VN-_pQxbbiW.js +0 -1
- package/web/dist/assets/chunk-YZCP3GAM-eboO4P5S.js +0 -1
- package/web/dist/assets/chunk-ZZ45TVLE-Cky0eqlr.js +0 -1
- package/web/dist/assets/classDiagram-6PBFFD2Q-DEPsZSU3.js +0 -1
- package/web/dist/assets/classDiagram-v2-HSJHXN6E-DhmIOEpX.js +0 -1
- package/web/dist/assets/clone-DeTzYqo8.js +0 -1
- package/web/dist/assets/cose-bilkent-S5V4N54A-N4zWUJ7C.js +0 -1
- package/web/dist/assets/dagre-IpK1aoMm.js +0 -1
- package/web/dist/assets/dagre-KV5264BT-DCytJuju.js +0 -4
- package/web/dist/assets/diagram-5BDNPKRD-Cv4miBae.js +0 -10
- package/web/dist/assets/diagram-MMDJMWI5-Cn7aGorh.js +0 -43
- package/web/dist/assets/diagram-TYMM5635-CCUWDPsC.js +0 -24
- package/web/dist/assets/dist-Dm98VvTW.js +0 -1
- package/web/dist/assets/flowDiagram-DWJPFMVM-Bl3O7S1m.js +0 -162
- package/web/dist/assets/ganttDiagram-T4ZO3ILL-B1FhwV45.js +0 -292
- package/web/dist/assets/gitGraph-7Q5UKJZL-Bc_7vzer.js +0 -1
- package/web/dist/assets/gitGraphDiagram-UUTBAWPF-DfW6svMS.js +0 -106
- package/web/dist/assets/graphlib-CMTVFyOZ.js +0 -1
- package/web/dist/assets/index-Bdb7P7gx.css +0 -2
- package/web/dist/assets/index-DNxepp8B.js +0 -2891
- package/web/dist/assets/info-OMHHGYJF-BGcxeaZt.js +0 -1
- package/web/dist/assets/init-DlZdxViB.js +0 -1
- package/web/dist/assets/line-CuHce5JG.js +0 -1
- package/web/dist/assets/linear-Ca0Vkwuj.js +0 -1
- package/web/dist/assets/mermaid.core-6PGkQdYc.js +0 -11
- package/web/dist/assets/packet-4T2RLAQJ-D35ZLSBH.js +0 -1
- package/web/dist/assets/path-6uRLdFF7.js +0 -1
- package/web/dist/assets/pie-ZZUOXDRM-DRoETpJX.js +0 -1
- package/web/dist/assets/pieDiagram-DEJITSTG-DfMjfTQz.js +0 -30
- package/web/dist/assets/radar-PYXPWWZC-DLKxRJ0V.js +0 -1
- package/web/dist/assets/requirementDiagram-MS252O5E-BPkxJQkz.js +0 -84
- package/web/dist/assets/src-DdOdIreR.js +0 -1
- package/web/dist/assets/stateDiagram-FHFEXIEX-fuww6347.js +0 -1
- package/web/dist/assets/stateDiagram-v2-QKLJ7IA2-U6voafO3.js +0 -1
- package/web/dist/assets/transformers.web-DKUtmSAi.js +0 -2818
- package/web/dist/assets/treeView-SZITEDCU-BCx0xSAm.js +0 -1
- package/web/dist/assets/treemap-W4RFUUIX-2CvghWJK.js +0 -1
- package/web/dist/assets/vennDiagram-DHZGUBPP-CBXRutSP.js +0 -34
- package/web/dist/assets/wardley-RL74JXVD-BkPL_mhd.js +0 -1
- package/web/dist/assets/xychartDiagram-5P7HB3ND-CZLgX9Fe.js +0 -7
- package/web/dist/workbox-66610c77.js +0 -1
- /package/web/dist/assets/{_baseFor-B_cjfMB6.js → _baseFor-2QgQJAzW.js} +0 -0
- /package/web/dist/assets/{array-B9UHiPd-.js → array-B4O_ir3H.js} +0 -0
- /package/web/dist/assets/{cytoscape.esm-BBMd0vGm.js → cytoscape.esm-CdzdaUMP.js} +0 -0
- /package/web/dist/assets/{defaultLocale-5eAKkKJC.js → defaultLocale-Bhb3osZR.js} +0 -0
- /package/web/dist/assets/{github-copilot-headers-L39QqneT.js → github-copilot-headers-BuUn5v2j.js} +0 -0
- /package/web/dist/assets/{hash-kZ2KD_no.js → hash-CQjDwcjR.js} +0 -0
- /package/web/dist/assets/{openai-D4NSaQIs.js → openai-CRGaNv9i.js} +0 -0
- /package/web/dist/assets/{rough.esm-Djo4Abte.js → rough.esm-D5NinLFK.js} +0 -0
- /package/web/dist/assets/{transform-messages-CqKEdRVp.js → transform-messages-DXDWLrnO.js} +0 -0
- /package/web/dist/assets/{web-CMKYLKbT.js → web-jLdm8a1-.js} +0 -0
package/dist/src/cli/main.js
CHANGED
|
@@ -125,6 +125,9 @@ async function run() {
|
|
|
125
125
|
}
|
|
126
126
|
case "web": {
|
|
127
127
|
const port = args[0] ? parseInt(args[0], 10) : 3000;
|
|
128
|
+
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
129
|
+
throw new Error(`Invalid port: "${args[0]}". Must be an integer between 1 and 65535.`);
|
|
130
|
+
}
|
|
128
131
|
await serveWeb(port);
|
|
129
132
|
return;
|
|
130
133
|
}
|
package/dist/src/core/config.js
CHANGED
|
@@ -76,7 +76,10 @@ export async function loadKeatingConfig(cwd) {
|
|
|
76
76
|
}
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
|
-
catch {
|
|
79
|
+
catch (err) {
|
|
80
|
+
if (existsSync(path)) {
|
|
81
|
+
console.error(`Warning: keating.config.json is invalid and will be ignored. Falling back to defaults. Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
82
|
+
}
|
|
80
83
|
return DEFAULT_KEATING_CONFIG;
|
|
81
84
|
}
|
|
82
85
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import { Prng } from "./random.js";
|
|
3
|
-
import {
|
|
4
|
-
import { DEFAULT_POLICY, DEFAULT_WEIGHTS, clampPolicy, clampWeights } from "./policy.js";
|
|
3
|
+
import { DEFAULT_POLICY, DEFAULT_WEIGHTS } from "./policy.js";
|
|
5
4
|
import { benchmarkToMarkdown, runBenchmarkSuite } from "./benchmark.js";
|
|
5
|
+
import { mutatePolicy, mutateWeights } from "./mutation.js";
|
|
6
6
|
function diffPolicy(before, after) {
|
|
7
7
|
const keys = [
|
|
8
8
|
"analogyDensity",
|
|
@@ -24,34 +24,6 @@ function diffPolicy(before, after) {
|
|
|
24
24
|
})
|
|
25
25
|
.filter((entry) => entry.delta !== 0);
|
|
26
26
|
}
|
|
27
|
-
function mutateScalar(prng, value, amplitude = 0.18) {
|
|
28
|
-
return clamp(value + (prng.next() * 2 - 1) * amplitude);
|
|
29
|
-
}
|
|
30
|
-
function mutateWeights(parent, prng, amplitude = 0.12) {
|
|
31
|
-
return clampWeights({
|
|
32
|
-
masteryGain: mutateScalar(prng, parent.masteryGain, amplitude),
|
|
33
|
-
retention: mutateScalar(prng, parent.retention, amplitude),
|
|
34
|
-
engagement: mutateScalar(prng, parent.engagement, amplitude),
|
|
35
|
-
transfer: mutateScalar(prng, parent.transfer, amplitude),
|
|
36
|
-
confusion: mutateScalar(prng, parent.confusion, amplitude)
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
function mutatePolicy(parent, prng, iteration) {
|
|
40
|
-
const mutated = clampPolicy({
|
|
41
|
-
...parent,
|
|
42
|
-
name: `keating-candidate-${iteration}`,
|
|
43
|
-
analogyDensity: mutateScalar(prng, parent.analogyDensity),
|
|
44
|
-
socraticRatio: mutateScalar(prng, parent.socraticRatio),
|
|
45
|
-
formalism: mutateScalar(prng, parent.formalism),
|
|
46
|
-
retrievalPractice: mutateScalar(prng, parent.retrievalPractice),
|
|
47
|
-
exerciseCount: parent.exerciseCount + prng.int(-1, 1),
|
|
48
|
-
diagramBias: mutateScalar(prng, parent.diagramBias),
|
|
49
|
-
reflectionBias: mutateScalar(prng, parent.reflectionBias),
|
|
50
|
-
interdisciplinaryBias: mutateScalar(prng, parent.interdisciplinaryBias),
|
|
51
|
-
challengeRate: mutateScalar(prng, parent.challengeRate)
|
|
52
|
-
});
|
|
53
|
-
return mutated;
|
|
54
|
-
}
|
|
55
27
|
function policyVector(policy) {
|
|
56
28
|
return [
|
|
57
29
|
policy.analogyDensity,
|
|
@@ -109,7 +81,7 @@ export async function evolvePolicy(archivePath, basePolicy, focusTopic, iteratio
|
|
|
109
81
|
const prng = new Prng(seed + 17);
|
|
110
82
|
const seen = [...archive.candidates.map((entry) => entry.policy), basePolicy];
|
|
111
83
|
for (let iteration = 1; iteration <= iterations; iteration += 1) {
|
|
112
|
-
const candidatePolicy = mutatePolicy(best.policy, prng, iteration);
|
|
84
|
+
const candidatePolicy = mutatePolicy(best.policy, prng, iteration, "keating-candidate");
|
|
113
85
|
const candidateWeights = mutateWeights(bestWeights, prng);
|
|
114
86
|
const novelty = noveltyScore(seen, candidatePolicy);
|
|
115
87
|
const candidateBenchmark = await runBenchmarkSuite(process.cwd(), candidatePolicy, focusTopic, seed + iteration * 11, 3, candidateWeights);
|
|
@@ -1,37 +1,10 @@
|
|
|
1
1
|
import { readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import { Prng } from "./random.js";
|
|
3
|
-
import { clamp } from "./util.js";
|
|
4
3
|
import { DEFAULT_POLICY, DEFAULT_WEIGHTS, clampPolicy, clampWeights } from "./policy.js";
|
|
5
4
|
import { benchmarkToMarkdown, runBenchmarkSuite } from "./benchmark.js";
|
|
5
|
+
import { mutatePolicy, mutateWeights } from "./mutation.js";
|
|
6
6
|
export const DEFAULT_DESCRIPTORS = ["formalism", "socraticRatio"];
|
|
7
7
|
export const DEFAULT_RESOLUTION = 10;
|
|
8
|
-
function mutateScalar(prng, value, amplitude = 0.18) {
|
|
9
|
-
return clamp(value + (prng.next() * 2 - 1) * amplitude);
|
|
10
|
-
}
|
|
11
|
-
function mutatePolicy(parent, prng, iteration) {
|
|
12
|
-
return clampPolicy({
|
|
13
|
-
...parent,
|
|
14
|
-
name: `me-candidate-${iteration}`,
|
|
15
|
-
analogyDensity: mutateScalar(prng, parent.analogyDensity),
|
|
16
|
-
socraticRatio: mutateScalar(prng, parent.socraticRatio),
|
|
17
|
-
formalism: mutateScalar(prng, parent.formalism),
|
|
18
|
-
retrievalPractice: mutateScalar(prng, parent.retrievalPractice),
|
|
19
|
-
exerciseCount: parent.exerciseCount + prng.int(-1, 1),
|
|
20
|
-
diagramBias: mutateScalar(prng, parent.diagramBias),
|
|
21
|
-
reflectionBias: mutateScalar(prng, parent.reflectionBias),
|
|
22
|
-
interdisciplinaryBias: mutateScalar(prng, parent.interdisciplinaryBias),
|
|
23
|
-
challengeRate: mutateScalar(prng, parent.challengeRate)
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
function mutateWeights(parent, prng, amplitude = 0.12) {
|
|
27
|
-
return clampWeights({
|
|
28
|
-
masteryGain: mutateScalar(prng, parent.masteryGain, amplitude),
|
|
29
|
-
retention: mutateScalar(prng, parent.retention, amplitude),
|
|
30
|
-
engagement: mutateScalar(prng, parent.engagement, amplitude),
|
|
31
|
-
transfer: mutateScalar(prng, parent.transfer, amplitude),
|
|
32
|
-
confusion: mutateScalar(prng, parent.confusion, amplitude)
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
8
|
function getDescriptorValues(policy, descriptors) {
|
|
36
9
|
return descriptors.map((d) => {
|
|
37
10
|
const val = policy[d];
|
|
@@ -108,7 +81,7 @@ export async function mapElitesEvolve(cwd, basePolicy, options = {}) {
|
|
|
108
81
|
}
|
|
109
82
|
else {
|
|
110
83
|
const parent = selectParent(grid, prng);
|
|
111
|
-
candidatePolicy = mutatePolicy(parent.policy, prng, i);
|
|
84
|
+
candidatePolicy = mutatePolicy(parent.policy, prng, i, "me-candidate");
|
|
112
85
|
candidateWeights = mutateWeights(parent.weights, prng);
|
|
113
86
|
}
|
|
114
87
|
const candidateBenchmark = await runBenchmarkSuite(cwd, candidatePolicy, focusTopic, seed + i * 11, 3, candidateWeights);
|
package/dist/src/core/map.js
CHANGED
|
@@ -56,7 +56,9 @@ export function lessonPlanToMermaid(topicName, policy) {
|
|
|
56
56
|
lines.push(" end");
|
|
57
57
|
lines.push(" learner --> orient");
|
|
58
58
|
lines.push(" thesis --> orient");
|
|
59
|
-
|
|
59
|
+
if (plan.topic.interdisciplinaryHooks.length > 0) {
|
|
60
|
+
lines.push(` ${plan.phases.at(-1).id} --> ${topicId}_hook_0`);
|
|
61
|
+
}
|
|
60
62
|
lines.push(` ${plan.phases.find((phase) => phase.id === "diagram")?.id ?? "examples"} --> ${topicId}_core`);
|
|
61
63
|
lines.push(` class ${plan.phases.map((phase) => phase.id).join(",")} phase;`);
|
|
62
64
|
lines.push(` class ${topicId}_core,${plan.topic.diagramNodes.map((_, index) => `${topicId}_concept_${index}`).join(",")},${plan.topic.prerequisites.slice(0, 3).map((_, index) => `${topicId}_prereq_${index}`).join(",")} concept;`);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { clamp } from "./util.js";
|
|
2
|
+
import { clampPolicy, clampWeights } from "./policy.js";
|
|
3
|
+
export function mutateScalar(prng, value, amplitude = 0.18) {
|
|
4
|
+
return clamp(value + (prng.next() * 2 - 1) * amplitude);
|
|
5
|
+
}
|
|
6
|
+
export function mutatePolicy(parent, prng, iteration, namePrefix = "candidate") {
|
|
7
|
+
return clampPolicy({
|
|
8
|
+
...parent,
|
|
9
|
+
name: `${namePrefix}-${iteration}`,
|
|
10
|
+
analogyDensity: mutateScalar(prng, parent.analogyDensity),
|
|
11
|
+
socraticRatio: mutateScalar(prng, parent.socraticRatio),
|
|
12
|
+
formalism: mutateScalar(prng, parent.formalism),
|
|
13
|
+
retrievalPractice: mutateScalar(prng, parent.retrievalPractice),
|
|
14
|
+
exerciseCount: parent.exerciseCount + prng.int(-1, 1),
|
|
15
|
+
diagramBias: mutateScalar(prng, parent.diagramBias),
|
|
16
|
+
reflectionBias: mutateScalar(prng, parent.reflectionBias),
|
|
17
|
+
interdisciplinaryBias: mutateScalar(prng, parent.interdisciplinaryBias),
|
|
18
|
+
challengeRate: mutateScalar(prng, parent.challengeRate)
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export function mutateWeights(parent, prng, amplitude = 0.12) {
|
|
22
|
+
return clampWeights({
|
|
23
|
+
masteryGain: mutateScalar(prng, parent.masteryGain, amplitude),
|
|
24
|
+
retention: mutateScalar(prng, parent.retention, amplitude),
|
|
25
|
+
engagement: mutateScalar(prng, parent.engagement, amplitude),
|
|
26
|
+
transfer: mutateScalar(prng, parent.transfer, amplitude),
|
|
27
|
+
confusion: mutateScalar(prng, parent.confusion, amplitude)
|
|
28
|
+
});
|
|
29
|
+
}
|
package/dist/src/core/policy.js
CHANGED
|
@@ -16,28 +16,54 @@ export const DEFAULT_WEIGHTS = {
|
|
|
16
16
|
masteryGain: 0.34,
|
|
17
17
|
retention: 0.20,
|
|
18
18
|
engagement: 0.16,
|
|
19
|
-
transfer: 0.
|
|
20
|
-
confusion: 0.
|
|
19
|
+
transfer: 0.16,
|
|
20
|
+
confusion: 0.14
|
|
21
21
|
};
|
|
22
22
|
export function clampWeights(weights) {
|
|
23
|
+
if (weightsAreBounded(weights) && weightsAreNormalized(weights))
|
|
24
|
+
return { ...weights };
|
|
25
|
+
const sum = weights.masteryGain + weights.retention + weights.engagement + weights.transfer + weights.confusion;
|
|
26
|
+
if (sum === 0)
|
|
27
|
+
return DEFAULT_WEIGHTS;
|
|
28
|
+
const normalized = {
|
|
29
|
+
masteryGain: weights.masteryGain / sum,
|
|
30
|
+
retention: weights.retention / sum,
|
|
31
|
+
engagement: weights.engagement / sum,
|
|
32
|
+
transfer: weights.transfer / sum,
|
|
33
|
+
confusion: weights.confusion / sum
|
|
34
|
+
};
|
|
35
|
+
const needsClamp = Object.values(normalized).some(v => v < 0.01 || v > 1);
|
|
36
|
+
if (!needsClamp)
|
|
37
|
+
return normalized;
|
|
23
38
|
const clamped = {
|
|
24
|
-
masteryGain: clamp(
|
|
25
|
-
retention: clamp(
|
|
26
|
-
engagement: clamp(
|
|
27
|
-
transfer: clamp(
|
|
28
|
-
confusion: clamp(
|
|
39
|
+
masteryGain: clamp(normalized.masteryGain, 0.01, 1),
|
|
40
|
+
retention: clamp(normalized.retention, 0.01, 1),
|
|
41
|
+
engagement: clamp(normalized.engagement, 0.01, 1),
|
|
42
|
+
transfer: clamp(normalized.transfer, 0.01, 1),
|
|
43
|
+
confusion: clamp(normalized.confusion, 0.01, 1)
|
|
29
44
|
};
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
45
|
+
const clampedSum = clamped.masteryGain + clamped.retention + clamped.engagement + clamped.transfer + clamped.confusion;
|
|
46
|
+
if (clampedSum === 0)
|
|
32
47
|
return DEFAULT_WEIGHTS;
|
|
33
48
|
return {
|
|
34
|
-
masteryGain: clamped.masteryGain /
|
|
35
|
-
retention: clamped.retention /
|
|
36
|
-
engagement: clamped.engagement /
|
|
37
|
-
transfer: clamped.transfer /
|
|
38
|
-
confusion: clamped.confusion /
|
|
49
|
+
masteryGain: clamped.masteryGain / clampedSum,
|
|
50
|
+
retention: clamped.retention / clampedSum,
|
|
51
|
+
engagement: clamped.engagement / clampedSum,
|
|
52
|
+
transfer: clamped.transfer / clampedSum,
|
|
53
|
+
confusion: clamped.confusion / clampedSum
|
|
39
54
|
};
|
|
40
55
|
}
|
|
56
|
+
function weightsAreBounded(weights) {
|
|
57
|
+
for (const v of Object.values(weights)) {
|
|
58
|
+
if (typeof v !== "number" || !Number.isFinite(v) || v < 0 || v > 1)
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
function weightsAreNormalized(weights) {
|
|
64
|
+
const sum = weights.masteryGain + weights.retention + weights.engagement + weights.transfer + weights.confusion;
|
|
65
|
+
return Math.abs(sum - 1) < 0.001;
|
|
66
|
+
}
|
|
41
67
|
export function clampPolicy(policy) {
|
|
42
68
|
return {
|
|
43
69
|
...policy,
|
package/dist/src/core/project.js
CHANGED
|
@@ -44,39 +44,35 @@ export async function animateTopicArtifact(cwd, topicName) {
|
|
|
44
44
|
const policy = await loadPolicy(currentPolicyPath(cwd));
|
|
45
45
|
return writeLessonAnimation(cwd, topicName, policy);
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
await ensureProjectScaffold(cwd);
|
|
47
|
+
async function writeArtifactWithTrace(cwd, outputDir, slug, markdownContent, traceSuffix, traceData) {
|
|
49
48
|
const config = await loadKeatingConfig(cwd);
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
const fileName = focusTopic ? `${slugify(focusTopic)}.md` : "core-suite.md";
|
|
53
|
-
const reportPath = join(benchmarksDir(cwd), fileName);
|
|
54
|
-
await writeFile(reportPath, benchmarkToMarkdown(result), "utf8");
|
|
49
|
+
const reportPath = join(outputDir, `${slug}.md`);
|
|
50
|
+
await writeFile(reportPath, markdownContent, "utf8");
|
|
55
51
|
const tracePath = config.debug.persistTraces
|
|
56
|
-
? join(tracesDir(cwd), `${
|
|
52
|
+
? join(tracesDir(cwd), `${slug}-${traceSuffix}.json`)
|
|
57
53
|
: null;
|
|
58
54
|
if (tracePath) {
|
|
59
|
-
await writeFile(tracePath, `${JSON.stringify(
|
|
55
|
+
await writeFile(tracePath, `${JSON.stringify(traceData, null, 2)}\n`, "utf8");
|
|
60
56
|
}
|
|
57
|
+
return { reportPath, tracePath };
|
|
58
|
+
}
|
|
59
|
+
export async function benchPolicyArtifact(cwd, focusTopic) {
|
|
60
|
+
await ensureProjectScaffold(cwd);
|
|
61
|
+
const policy = await loadPolicy(currentPolicyPath(cwd));
|
|
62
|
+
const result = await runBenchmarkSuite(cwd, policy, focusTopic, 20260401);
|
|
63
|
+
const slug = focusTopic ? slugify(focusTopic) : "core-suite";
|
|
64
|
+
const { reportPath, tracePath } = await writeArtifactWithTrace(cwd, benchmarksDir(cwd), slug, benchmarkToMarkdown(result), "benchmark", result);
|
|
61
65
|
return { reportPath, tracePath, overallScore: result.overallScore };
|
|
62
66
|
}
|
|
63
67
|
export async function evolvePolicyArtifact(cwd, focusTopic) {
|
|
64
68
|
await ensureProjectScaffold(cwd);
|
|
65
|
-
const config = await loadKeatingConfig(cwd);
|
|
66
69
|
const policyPath = currentPolicyPath(cwd);
|
|
67
70
|
const basePolicy = await loadPolicy(policyPath);
|
|
68
71
|
const meRun = await mapElitesEvolve(cwd, basePolicy, { focusTopic });
|
|
69
72
|
const run = mapElitesToEvolutionRun(meRun);
|
|
70
73
|
await savePolicy(policyPath, run.best.policy);
|
|
71
|
-
const
|
|
72
|
-
const reportPath =
|
|
73
|
-
await writeFile(reportPath, mapElitesToMarkdown(meRun), "utf8");
|
|
74
|
-
const tracePath = config.debug.persistTraces
|
|
75
|
-
? join(tracesDir(cwd), `${focusTopic ? slugify(focusTopic) : "latest"}-evolution.json`)
|
|
76
|
-
: null;
|
|
77
|
-
if (tracePath) {
|
|
78
|
-
await writeFile(tracePath, `${JSON.stringify(run, null, 2)}\n`, "utf8");
|
|
79
|
-
}
|
|
74
|
+
const slug = focusTopic ? slugify(focusTopic) : "latest";
|
|
75
|
+
const { reportPath, tracePath } = await writeArtifactWithTrace(cwd, evolutionDir(cwd), slug, mapElitesToMarkdown(meRun), "evolution", run);
|
|
80
76
|
return { reportPath, tracePath, bestScore: run.best.overallScore, policyPath };
|
|
81
77
|
}
|
|
82
78
|
export async function evolvePromptArtifact(cwd, promptName = "learn") {
|
|
@@ -187,10 +183,14 @@ export async function promptEvalArtifact(cwd, promptContent) {
|
|
|
187
183
|
await writeFile(reportPath, lines.join("\n"), "utf8");
|
|
188
184
|
return { reportPath, score: result.score, objectives: result.objectives, feedback: result.feedback };
|
|
189
185
|
}
|
|
190
|
-
|
|
186
|
+
async function loadEngagementContext(cwd) {
|
|
191
187
|
await ensureProjectScaffold(cwd);
|
|
192
188
|
const state = await loadLearnerState(learnerStatePath(cwd));
|
|
193
189
|
const policy = await loadEngagementPolicy(engagementPolicyPath(cwd));
|
|
190
|
+
return { state, policy };
|
|
191
|
+
}
|
|
192
|
+
export async function timelineArtifact(cwd) {
|
|
193
|
+
const { state, policy } = await loadEngagementContext(cwd);
|
|
194
194
|
const timeline = buildEngagementTimeline(state, policy);
|
|
195
195
|
const markdown = engagementTimelineToMarkdown(timeline);
|
|
196
196
|
const reportPath = join(timelineDir(cwd), "latest.md");
|
|
@@ -198,9 +198,7 @@ export async function timelineArtifact(cwd) {
|
|
|
198
198
|
return { reportPath, markdown };
|
|
199
199
|
}
|
|
200
200
|
export async function dueTopicsArtifact(cwd) {
|
|
201
|
-
await
|
|
202
|
-
const state = await loadLearnerState(learnerStatePath(cwd));
|
|
203
|
-
const policy = await loadEngagementPolicy(engagementPolicyPath(cwd));
|
|
201
|
+
const { state, policy } = await loadEngagementContext(cwd);
|
|
204
202
|
const due = dueTopics(state, policy);
|
|
205
203
|
const markdown = dueTopicsToMarkdown(due);
|
|
206
204
|
const reportPath = join(timelineDir(cwd), "due.md");
|
package/dist/src/core/topics.js
CHANGED
|
@@ -611,7 +611,12 @@ function buildFallbackTopic(rawTopic) {
|
|
|
611
611
|
}
|
|
612
612
|
export function resolveTopic(query) {
|
|
613
613
|
const normalized = slugify(query);
|
|
614
|
-
|
|
614
|
+
if (Object.hasOwn(TOPICS, normalized))
|
|
615
|
+
return TOPICS[normalized];
|
|
616
|
+
const withoutRule = normalized.replace(/-rule$/, "");
|
|
617
|
+
if (Object.hasOwn(TOPICS, withoutRule))
|
|
618
|
+
return TOPICS[withoutRule];
|
|
619
|
+
return buildFallbackTopic(query);
|
|
615
620
|
}
|
|
616
621
|
export function benchmarkTopics(focusTopic) {
|
|
617
622
|
if (focusTopic?.trim())
|
|
@@ -7,7 +7,7 @@ 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.
|
|
10
|
+
const KEATING_VERSION = "0.3.8";
|
|
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;
|
package/dist/src/runtime/pi.js
CHANGED
|
@@ -229,7 +229,12 @@ async function resolveEmbeddedAgent(packageRoot = resolvePackageRoot()) {
|
|
|
229
229
|
}
|
|
230
230
|
const nmDir = join(globalPrefix, ver, "lib", "node_modules");
|
|
231
231
|
const nmEntries = await readdir(nmDir, { withFileTypes: true }).catch(() => []);
|
|
232
|
-
const nmDirs = nmEntries.filter((e) => e.isDirectory() || (e.isSymbolicLink() &&
|
|
232
|
+
const nmDirs = nmEntries.filter((e) => e.isDirectory() || (e.isSymbolicLink() && (() => { try {
|
|
233
|
+
return statSync(join(nmDir, e.name)).isDirectory();
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return false;
|
|
237
|
+
} })()));
|
|
233
238
|
for (const nmEntry of nmDirs) {
|
|
234
239
|
const nested = join(nmDir, nmEntry.name, "node_modules", scope, pkg, "dist", "cli.js");
|
|
235
240
|
if (existsSync(nested)) {
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./env-api-keys-BNlMKqxw.js";import{r as t,t as n}from"./event-stream-D33K9rpL.js";import{t as r}from"./json-parse-C6tSeIxX.js";import{a as i,n as a,r as o,t as s}from"./transform-messages-
|
|
1
|
+
import{t as e}from"./env-api-keys-BNlMKqxw.js";import{r as t,t as n}from"./event-stream-D33K9rpL.js";import{t as r}from"./json-parse-C6tSeIxX.js";import{a as i,n as a,r as o,t as s}from"./transform-messages-DXDWLrnO.js";import{n as c,t as l}from"./github-copilot-headers-BuUn5v2j.js";function u(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}function d(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}var f=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return f=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),n=e?()=>e.getRandomValues(t)[0]:()=>Math.random()*255&255;return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(e^n()&15>>e/4).toString(16))};function p(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===`AbortError`||`message`in e&&String(e.message).includes(`FetchRequestCanceledException`))}var ee=e=>{if(e instanceof Error)return e;if(typeof e==`object`&&e){try{if(Object.prototype.toString.call(e)===`[object Error]`){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)},m=class extends Error{},h=class e extends m{constructor(t,n,r,i){super(`${e.makeMessage(t,n,r)}`),this.status=t,this.headers=i,this.requestID=i?.get(`request-id`),this.error=n}static makeMessage(e,t,n){let r=t?.message?typeof t.message==`string`?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||`(no status code or body)`}static generate(t,n,r,i){if(!t||!i)return new te({message:r,cause:ee(n)});let a=n;return t===400?new re(t,a,r,i):t===401?new ie(t,a,r,i):t===403?new ae(t,a,r,i):t===404?new oe(t,a,r,i):t===409?new se(t,a,r,i):t===422?new ce(t,a,r,i):t===429?new le(t,a,r,i):t>=500?new ue(t,a,r,i):new e(t,a,r,i)}},g=class extends h{constructor({message:e}={}){super(void 0,void 0,e||`Request was aborted.`,void 0)}},te=class extends h{constructor({message:e,cause:t}){super(void 0,void 0,e||`Connection error.`,void 0),t&&(this.cause=t)}},ne=class extends te{constructor({message:e}={}){super({message:e??`Request timed out.`})}},re=class extends h{},ie=class extends h{},ae=class extends h{},oe=class extends h{},se=class extends h{},ce=class extends h{},le=class extends h{},ue=class extends h{},de=/^[a-z][a-z0-9+.-]*:/i,fe=e=>de.test(e),pe=e=>(pe=Array.isArray,pe(e)),me=pe;function he(e){return typeof e==`object`?e??{}:{}}function ge(e){if(!e)return!0;for(let t in e)return!1;return!0}function _e(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var ve=(e,t)=>{if(typeof t!=`number`||!Number.isInteger(t))throw new m(`${e} must be an integer`);if(t<0)throw new m(`${e} must be a positive integer`);return t},ye=e=>{try{return JSON.parse(e)}catch{return}},be=e=>new Promise(t=>setTimeout(t,e)),_=`0.73.0`,xe=()=>typeof window<`u`&&window.document!==void 0&&typeof navigator<`u`;function Se(){return typeof Deno<`u`&&Deno.build!=null?`deno`:typeof EdgeRuntime<`u`?`edge`:Object.prototype.toString.call(globalThis.process===void 0?0:globalThis.process)===`[object process]`?`node`:`unknown`}var Ce=()=>{let e=Se();if(e===`deno`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":Ee(Deno.build.os),"X-Stainless-Arch":Te(Deno.build.arch),"X-Stainless-Runtime":`deno`,"X-Stainless-Runtime-Version":typeof Deno.version==`string`?Deno.version:Deno.version?.deno??`unknown`};if(typeof EdgeRuntime<`u`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":`edge`,"X-Stainless-Runtime-Version":globalThis.process.version};if(e===`node`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":Ee(globalThis.process.platform??`unknown`),"X-Stainless-Arch":Te(globalThis.process.arch??`unknown`),"X-Stainless-Runtime":`node`,"X-Stainless-Runtime-Version":globalThis.process.version??`unknown`};let t=we();return t?{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`browser:${t.browser}`,"X-Stainless-Runtime-Version":t.version}:{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`unknown`,"X-Stainless-Runtime-Version":`unknown`}};function we(){if(typeof navigator>`u`||!navigator)return null;for(let{key:e,pattern:t}of[{key:`edge`,pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`chrome`,pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`firefox`,pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`safari`,pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}]){let n=t.exec(navigator.userAgent);if(n)return{browser:e,version:`${n[1]||0}.${n[2]||0}.${n[3]||0}`}}return null}var Te=e=>e===`x32`?`x32`:e===`x86_64`||e===`x64`?`x64`:e===`arm`?`arm`:e===`aarch64`||e===`arm64`?`arm64`:e?`other:${e}`:`unknown`,Ee=e=>(e=e.toLowerCase(),e.includes(`ios`)?`iOS`:e===`android`?`Android`:e===`darwin`?`MacOS`:e===`win32`?`Windows`:e===`freebsd`?`FreeBSD`:e===`openbsd`?`OpenBSD`:e===`linux`?`Linux`:e?`Other:${e}`:`Unknown`),De,Oe=()=>De??=Ce();function ke(){if(typeof fetch<`u`)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function Ae(...e){let t=globalThis.ReadableStream;if(t===void 0)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function je(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return Ae({start(){},async pull(e){let{done:n,value:r}=await t.next();n?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function Me(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function Ne(e){if(typeof e!=`object`||!e)return;if(e[Symbol.asyncIterator]){await e[Symbol.asyncIterator]().return?.();return}let t=e.getReader(),n=t.cancel();t.releaseLock(),await n}var Pe=({headers:e,body:t})=>({bodyHeaders:{"content-type":`application/json`},body:JSON.stringify(t)});function Fe(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Ie;function Le(e){let t;return(Ie??=(t=new globalThis.TextEncoder,t.encode.bind(t)))(e)}var Re;function ze(e){let t;return(Re??=(t=new globalThis.TextDecoder,t.decode.bind(t)))(e)}var v,y,b=class{constructor(){v.set(this,void 0),y.set(this,void 0),u(this,v,new Uint8Array,`f`),u(this,y,null,`f`)}decode(e){if(e==null)return[];let t=e instanceof ArrayBuffer?new Uint8Array(e):typeof e==`string`?Le(e):e;u(this,v,Fe([d(this,v,`f`),t]),`f`);let n=[],r;for(;(r=Be(d(this,v,`f`),d(this,y,`f`)))!=null;){if(r.carriage&&d(this,y,`f`)==null){u(this,y,r.index,`f`);continue}if(d(this,y,`f`)!=null&&(r.index!==d(this,y,`f`)+1||r.carriage)){n.push(ze(d(this,v,`f`).subarray(0,d(this,y,`f`)-1))),u(this,v,d(this,v,`f`).subarray(d(this,y,`f`)),`f`),u(this,y,null,`f`);continue}let e=d(this,y,`f`)===null?r.preceding:r.preceding-1,t=ze(d(this,v,`f`).subarray(0,e));n.push(t),u(this,v,d(this,v,`f`).subarray(r.index),`f`),u(this,y,null,`f`)}return n}flush(){return d(this,v,`f`).length?this.decode(`
|
|
2
2
|
`):[]}};v=new WeakMap,y=new WeakMap,b.NEWLINE_CHARS=new Set([`
|
|
3
3
|
`,`\r`]),b.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function Be(e,t){for(let n=t??0;n<e.length;n++){if(e[n]===10)return{preceding:n,index:n+1,carriage:!1};if(e[n]===13)return{preceding:n,index:n+1,carriage:!0}}return null}function Ve(e){for(let t=0;t<e.length-1;t++){if(e[t]===10&&e[t+1]===10||e[t]===13&&e[t+1]===13)return t+2;if(e[t]===13&&e[t+1]===10&&t+3<e.length&&e[t+2]===13&&e[t+3]===10)return t+4}return-1}var He={off:0,error:200,warn:300,info:400,debug:500},Ue=(e,t,n)=>{if(e){if(_e(He,e))return e;S(n).warn(`${t} was set to ${JSON.stringify(e)}, expected one of ${JSON.stringify(Object.keys(He))}`)}};function x(){}function We(e,t,n){return!t||He[e]>He[n]?x:t[e].bind(t)}var Ge={error:x,warn:x,info:x,debug:x},Ke=new WeakMap;function S(e){let t=e.logger,n=e.logLevel??`off`;if(!t)return Ge;let r=Ke.get(t);if(r&&r[0]===n)return r[1];let i={error:We(`error`,t,n),warn:We(`warn`,t,n),info:We(`info`,t,n),debug:We(`debug`,t,n)};return Ke.set(t,[n,i]),i}var C=e=>(e.options&&(e.options={...e.options},delete e.options.headers),e.headers&&=Object.fromEntries((e.headers instanceof Headers?[...e.headers]:Object.entries(e.headers)).map(([e,t])=>[e,e.toLowerCase()===`x-api-key`||e.toLowerCase()===`authorization`||e.toLowerCase()===`cookie`||e.toLowerCase()===`set-cookie`?`***`:t])),`retryOfRequestLogID`in e&&(e.retryOfRequestLogID&&(e.retryOf=e.retryOfRequestLogID),delete e.retryOfRequestLogID),e),qe,Je=class e{constructor(e,t,n){this.iterator=e,qe.set(this,void 0),this.controller=t,u(this,qe,n,`f`)}static fromSSEResponse(t,n,r){let i=!1,a=r?S(r):console;async function*o(){if(i)throw new m("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");i=!0;let e=!1;try{for await(let e of Ye(t,n)){if(e.event===`completion`)try{yield JSON.parse(e.data)}catch(t){throw a.error(`Could not parse message into JSON:`,e.data),a.error(`From chunk:`,e.raw),t}if(e.event===`message_start`||e.event===`message_delta`||e.event===`message_stop`||e.event===`content_block_start`||e.event===`content_block_delta`||e.event===`content_block_stop`)try{yield JSON.parse(e.data)}catch(t){throw a.error(`Could not parse message into JSON:`,e.data),a.error(`From chunk:`,e.raw),t}if(e.event!==`ping`&&e.event===`error`)throw new h(void 0,ye(e.data)??e.data,void 0,t.headers)}e=!0}catch(e){if(p(e))return;throw e}finally{e||n.abort()}}return new e(o,n,r)}static fromReadableStream(t,n,r){let i=!1;async function*a(){let e=new b,n=Me(t);for await(let t of n)for(let n of e.decode(t))yield n;for(let t of e.flush())yield t}async function*o(){if(i)throw new m("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");i=!0;let e=!1;try{for await(let t of a())e||t&&(yield JSON.parse(t));e=!0}catch(e){if(p(e))return;throw e}finally{e||n.abort()}}return new e(o,n,r)}[(qe=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let t=[],n=[],r=this.iterator(),i=e=>({next:()=>{if(e.length===0){let e=r.next();t.push(e),n.push(e)}return e.shift()}});return[new e(()=>i(t),this.controller,d(this,qe,`f`)),new e(()=>i(n),this.controller,d(this,qe,`f`))]}toReadableStream(){let e=this,t;return Ae({async start(){t=e[Symbol.asyncIterator]()},async pull(e){try{let{value:n,done:r}=await t.next();if(r)return e.close();let i=Le(JSON.stringify(n)+`
|
|
4
4
|
`);e.enqueue(i)}catch(t){e.error(t)}},async cancel(){await t.return?.()}})}};async function*Ye(e,t){if(!e.body)throw t.abort(),globalThis.navigator!==void 0&&globalThis.navigator.product===`ReactNative`?new m(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`):new m(`Attempted to iterate over a response with no body`);let n=new Ze,r=new b,i=Me(e.body);for await(let e of Xe(i))for(let t of r.decode(e)){let e=n.decode(t);e&&(yield e)}for(let e of r.flush()){let t=n.decode(e);t&&(yield t)}}async function*Xe(e){let t=new Uint8Array;for await(let n of e){if(n==null)continue;let e=n instanceof ArrayBuffer?new Uint8Array(n):typeof n==`string`?Le(n):n,r=new Uint8Array(t.length+e.length);r.set(t),r.set(e,t.length),t=r;let i;for(;(i=Ve(t))!==-1;)yield t.slice(0,i),t=t.slice(i)}t.length>0&&(yield t)}var Ze=class{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(e){if(e.endsWith(`\r`)&&(e=e.substring(0,e.length-1)),!e){if(!this.event&&!this.data.length)return null;let e={event:this.event,data:this.data.join(`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,t}from"./path-BVVvcbiy.js";import{a as n,c as r,d as i,f as a,i as o,l as s,n as c,p as l,r as u,s as d,t as f,u as p}from"./math-Csj_9zpx.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,i,o,s,c){var l=e-n,u=t-i,d=(c?s:-s)/a(l*l+u*u),f=d*u,p=-d*l,m=e+f,h=t+p,g=n+f,_=i+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=o-s,w=m*_-g*h,T=(x<0?-1:1)*a(r(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(o/C-1),y11:D*(o/C-1)}}function x(){var r=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+r.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-d,_=T.apply(this,arguments)-d,v=f(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>l-1e-12)D.moveTo(h*n(g),h*i(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*n(_),m*i(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):a(m*m+h*h)),R=s(f(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=u(L/m*i(I)),W=u(L/h*i(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*n(A),K=h*i(A),q=m*n(N),J=m*i(N);if(R>1e-12){var Y=h*n(j),X=h*i(j),Z=m*n(M),Q=m*i(M),$;if(v<p)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/i(c((ee*ne+te*re)/(a(ee*ee+te*te)*a(ne*ne+re*re)))/2),ae=a($[0]*$[0]+$[1]*$[1]);z=s(R,(m-ae)/(ie-1)),B=s(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,o(V.y01,V.x01),o(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,o(V.y01,V.x01),o(V.y11,V.x11),!k),D.arc(0,0,h,o(V.cy+V.y11,V.cx+V.x11),o(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,o(H.y11,H.x11),o(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,o(V.y01,V.x01),o(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,o(V.y01,V.x01),o(V.y11,V.x11),!k),D.arc(0,0,m,o(V.cy+V.y11,V.cx+V.x11),o(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,o(H.y11,H.x11),o(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+r.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-p/2;return[n(t)*e,i(t)*e]},k.innerRadius=function(t){return arguments.length?(r=typeof t==`function`?t:e(+t),k):r},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-K5T4RW27-C6ErEFB0.js";import{n as e}from"./chunk-7N4EOEYR-BGZXIfBD.js";export{e as createArchitectureServices};
|