@shareai-lab/kode 2.0.1 → 2.0.3
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/LICENSE +201 -0
- package/README.md +649 -25
- package/README.zh-CN.md +579 -0
- package/cli-acp.js +3 -17
- package/cli.js +5 -7
- package/dist/chunks/Doctor-M3J7GRTJ.js +12 -0
- package/dist/chunks/LogList-ISWZ6DDD.js +121 -0
- package/dist/chunks/LogList-ISWZ6DDD.js.map +7 -0
- package/dist/chunks/REPL-RQ6LO6S7.js +56 -0
- package/dist/chunks/ResumeConversation-6DMVBEGH.js +56 -0
- package/dist/chunks/agentLoader-FCRG3TFJ.js +31 -0
- package/dist/{agentsValidate-7LH4HTNR.js → chunks/agentsValidate-PEWMYN4Q.js} +97 -69
- package/dist/chunks/agentsValidate-PEWMYN4Q.js.map +7 -0
- package/dist/{ask-3NHFFUQG.js → chunks/ask-D7SOHJ6Z.js} +36 -44
- package/dist/chunks/ask-D7SOHJ6Z.js.map +7 -0
- package/dist/chunks/autoUpdater-CNESBOKO.js +19 -0
- package/dist/{chunk-AFFSCMYS.js → chunks/chunk-2JN5MY67.js} +12 -14
- package/dist/chunks/chunk-2JN5MY67.js.map +7 -0
- package/dist/chunks/chunk-2QONJ5MG.js +14 -0
- package/dist/chunks/chunk-2QONJ5MG.js.map +7 -0
- package/dist/chunks/chunk-2WEXPKHH.js +903 -0
- package/dist/chunks/chunk-2WEXPKHH.js.map +7 -0
- package/dist/{chunk-ARZSBOAO.js → chunks/chunk-3BYE3ME6.js} +717 -792
- package/dist/chunks/chunk-3BYE3ME6.js.map +7 -0
- package/dist/chunks/chunk-3JDNWX7W.js +1264 -0
- package/dist/chunks/chunk-3JDNWX7W.js.map +7 -0
- package/dist/chunks/chunk-3OEJVB5A.js +906 -0
- package/dist/chunks/chunk-3OEJVB5A.js.map +7 -0
- package/dist/chunks/chunk-3TNIOEBO.js +369 -0
- package/dist/chunks/chunk-3TNIOEBO.js.map +7 -0
- package/dist/chunks/chunk-4A46ZXMJ.js +67 -0
- package/dist/chunks/chunk-4A46ZXMJ.js.map +7 -0
- package/dist/{chunk-UHYRLID6.js → chunks/chunk-4ATBQOFO.js} +107 -55
- package/dist/chunks/chunk-4ATBQOFO.js.map +7 -0
- package/dist/chunks/chunk-4CRUCZR4.js +0 -0
- package/dist/{chunk-YC6LJCDE.js → chunks/chunk-4EO6SIQY.js} +32 -75
- package/dist/chunks/chunk-4EO6SIQY.js.map +7 -0
- package/dist/chunks/chunk-53M46S5I.js +64 -0
- package/dist/chunks/chunk-53M46S5I.js.map +7 -0
- package/dist/{chunk-JC6NCUG5.js → chunks/chunk-54KOYG5C.js} +0 -2
- package/dist/{chunk-EZXMVTDU.js → chunks/chunk-6BAS4WY6.js} +29 -45
- package/dist/chunks/chunk-6BAS4WY6.js.map +7 -0
- package/dist/{chunk-3IN27HA5.js → chunks/chunk-6KRRFSDN.js} +4 -6
- package/dist/chunks/chunk-6KRRFSDN.js.map +7 -0
- package/dist/chunks/chunk-6LJNZK4K.js +39 -0
- package/dist/chunks/chunk-6LJNZK4K.js.map +7 -0
- package/dist/chunks/chunk-6ZWEOSEI.js +666 -0
- package/dist/chunks/chunk-6ZWEOSEI.js.map +7 -0
- package/dist/chunks/chunk-77XDJMBP.js +3326 -0
- package/dist/chunks/chunk-77XDJMBP.js.map +7 -0
- package/dist/chunks/chunk-7RRW4NTB.js +6454 -0
- package/dist/chunks/chunk-7RRW4NTB.js.map +7 -0
- package/dist/chunks/chunk-7X3TW4JB.js +4520 -0
- package/dist/chunks/chunk-7X3TW4JB.js.map +7 -0
- package/dist/chunks/chunk-B3MW3YGY.js +1409 -0
- package/dist/chunks/chunk-B3MW3YGY.js.map +7 -0
- package/dist/chunks/chunk-BBJFHTBC.js +28 -0
- package/dist/chunks/chunk-BBJFHTBC.js.map +7 -0
- package/dist/chunks/chunk-BHDHXOXB.js +24 -0
- package/dist/chunks/chunk-BHDHXOXB.js.map +7 -0
- package/dist/{chunk-73WGVYLQ.js → chunks/chunk-BTA7SZ26.js} +152 -223
- package/dist/chunks/chunk-BTA7SZ26.js.map +7 -0
- package/dist/chunks/chunk-CDGRYGPZ.js +103 -0
- package/dist/chunks/chunk-CDGRYGPZ.js.map +7 -0
- package/dist/{chunk-S6HRABTA.js → chunks/chunk-CP6E5UG6.js} +1 -4
- package/dist/chunks/chunk-CP6E5UG6.js.map +7 -0
- package/dist/{chunk-QVLYOPO5.js → chunks/chunk-DQ4JHXMT.js} +462 -424
- package/dist/chunks/chunk-DQ4JHXMT.js.map +7 -0
- package/dist/chunks/chunk-DXD76CMV.js +208 -0
- package/dist/chunks/chunk-DXD76CMV.js.map +7 -0
- package/dist/chunks/chunk-GCQCAXJZ.js +0 -0
- package/dist/chunks/chunk-GELCZWMB.js +42 -0
- package/dist/chunks/chunk-GELCZWMB.js.map +7 -0
- package/dist/{chunk-K2CWOTI2.js → chunks/chunk-HJYOH4HC.js} +23 -18
- package/dist/chunks/chunk-HJYOH4HC.js.map +7 -0
- package/dist/chunks/chunk-HPYNW6TT.js +744 -0
- package/dist/chunks/chunk-HPYNW6TT.js.map +7 -0
- package/dist/{chunk-RZWOUA25.js → chunks/chunk-HRJ3ICQK.js} +59 -55
- package/dist/chunks/chunk-HRJ3ICQK.js.map +7 -0
- package/dist/{chunk-DZE5YA7L.js → chunks/chunk-IFCIADS3.js} +571 -573
- package/dist/chunks/chunk-IFCIADS3.js.map +7 -0
- package/dist/chunks/chunk-IN7XZ7BC.js +27 -0
- package/dist/chunks/chunk-IN7XZ7BC.js.map +7 -0
- package/dist/chunks/chunk-L7P4M4KW.js +193 -0
- package/dist/chunks/chunk-L7P4M4KW.js.map +7 -0
- package/dist/chunks/chunk-LB6TCPDI.js +0 -0
- package/dist/{chunk-3RUXVV4S.js → chunks/chunk-LOCXPQNJ.js} +1 -4
- package/dist/{chunk-3RUXVV4S.js.map → chunks/chunk-LOCXPQNJ.js.map} +2 -2
- package/dist/{chunk-7M2YN6TU.js → chunks/chunk-LOD5ZHCI.js} +213 -208
- package/dist/chunks/chunk-LOD5ZHCI.js.map +7 -0
- package/dist/{chunk-S3J2TLV6.js → chunks/chunk-M7P3QNRU.js} +1 -4
- package/dist/{chunk-S3J2TLV6.js.map → chunks/chunk-M7P3QNRU.js.map} +2 -2
- package/dist/chunks/chunk-PPHLQVL7.js +4234 -0
- package/dist/chunks/chunk-PPHLQVL7.js.map +7 -0
- package/dist/{chunk-ABLVTESJ.js → chunks/chunk-QAXE37B5.js} +1 -4
- package/dist/chunks/chunk-QAXE37B5.js.map +7 -0
- package/dist/chunks/chunk-QHQOBUF6.js +60 -0
- package/dist/chunks/chunk-QHQOBUF6.js.map +7 -0
- package/dist/{chunk-W7GRKO7Q.js → chunks/chunk-RPJXO7GG.js} +241 -214
- package/dist/chunks/chunk-RPJXO7GG.js.map +7 -0
- package/dist/{chunk-NPFOMITO.js → chunks/chunk-SWQV4KSY.js} +1 -4
- package/dist/{chunk-NPFOMITO.js.map → chunks/chunk-SWQV4KSY.js.map} +2 -2
- package/dist/chunks/chunk-SZLAPULP.js +28 -0
- package/dist/chunks/chunk-SZLAPULP.js.map +7 -0
- package/dist/{chunk-7U7L4NMD.js → chunks/chunk-T7RB5V5J.js} +23 -25
- package/dist/chunks/chunk-T7RB5V5J.js.map +7 -0
- package/dist/{chunk-HN4E4UUQ.js → chunks/chunk-TI2CTTMA.js} +25 -17
- package/dist/chunks/chunk-TI2CTTMA.js.map +7 -0
- package/dist/{chunk-ZVDRDPII.js → chunks/chunk-TNGVRTO5.js} +45 -20
- package/dist/chunks/chunk-TNGVRTO5.js.map +7 -0
- package/dist/chunks/chunk-TNWB3U5Y.js +2077 -0
- package/dist/chunks/chunk-TNWB3U5Y.js.map +7 -0
- package/dist/chunks/chunk-U2IHWPCU.js +12 -0
- package/dist/chunks/chunk-U2IHWPCU.js.map +7 -0
- package/dist/{chunk-KAA5BGMQ.js → chunks/chunk-UNOY3VJ2.js} +1 -4
- package/dist/{chunk-KAA5BGMQ.js.map → chunks/chunk-UNOY3VJ2.js.map} +2 -2
- package/dist/{chunk-MWRSY4X6.js → chunks/chunk-UVDJL6ZZ.js} +97 -58
- package/dist/chunks/chunk-UVDJL6ZZ.js.map +7 -0
- package/dist/chunks/chunk-VNCW4C2Z.js +13452 -0
- package/dist/chunks/chunk-VNCW4C2Z.js.map +7 -0
- package/dist/chunks/chunk-W5EGGA44.js +15 -0
- package/dist/chunks/chunk-W5EGGA44.js.map +7 -0
- package/dist/chunks/chunk-XR2W3MAM.js +1533 -0
- package/dist/chunks/chunk-XR2W3MAM.js.map +7 -0
- package/dist/{chunk-STSX7GIX.js → chunks/chunk-YIO5EBMQ.js} +423 -377
- package/dist/chunks/chunk-YIO5EBMQ.js.map +7 -0
- package/dist/chunks/chunk-ZBVLKZ5V.js +1062 -0
- package/dist/chunks/chunk-ZBVLKZ5V.js.map +7 -0
- package/dist/{chunk-E6YNABER.js → chunks/chunk-ZCLTZIVP.js} +1 -4
- package/dist/chunks/chunk-ZCLTZIVP.js.map +7 -0
- package/dist/chunks/client-SILZNM5N.js +42 -0
- package/dist/{config-RUSD6G5Y.js → chunks/config-25HRTPSP.js} +48 -10
- package/dist/chunks/cost-tracker-Z2UZT2J5.js +28 -0
- package/dist/{customCommands-TOIJFZAL.js → chunks/customCommands-TYMYZRG5.js} +11 -8
- package/dist/chunks/engine-MRVF6FK6.js +39 -0
- package/dist/{env-XGKBLU3D.js → chunks/env-TJ5NOBEB.js} +7 -5
- package/dist/{kodeAgentSessionId-X6XWQW7B.js → chunks/kodeAgentSessionId-VTNISJ2L.js} +2 -4
- package/dist/chunks/kodeAgentSessionLoad-YB2RKBGJ.js +15 -0
- package/dist/chunks/kodeAgentSessionResume-DZSIVKVA.js +13 -0
- package/dist/chunks/kodeAgentStreamJson-X5PLS2S6.js +11 -0
- package/dist/{kodeAgentStreamJsonSession-UGEZJJEB.js → chunks/kodeAgentStreamJsonSession-RDXM4XYF.js} +38 -24
- package/dist/chunks/kodeAgentStreamJsonSession-RDXM4XYF.js.map +7 -0
- package/dist/{chunk-4RTX4AG4.js → chunks/kodeAgentStructuredStdio-SVGDSB4P.js} +14 -9
- package/dist/chunks/kodeAgentStructuredStdio-SVGDSB4P.js.map +7 -0
- package/dist/{kodeHooks-QWM36A3D.js → chunks/kodeHooks-RVKYRJHG.js} +11 -9
- package/dist/{llm-ZUQC4WYM.js → chunks/llm-62N6T5ZT.js} +1734 -1526
- package/dist/chunks/llm-62N6T5ZT.js.map +7 -0
- package/dist/chunks/llmLazy-ZUSSE3ZA.js +13 -0
- package/dist/{mentionProcessor-EE3XFHCJ.js → chunks/mentionProcessor-RJW5UPJD.js} +46 -16
- package/dist/chunks/mentionProcessor-RJW5UPJD.js.map +7 -0
- package/dist/{messages-EOYQKPGM.js → chunks/messages-EEWWLPHN.js} +2 -6
- package/dist/chunks/model-5TIEKQPD.js +37 -0
- package/dist/{openai-RRCWW33N.js → chunks/openai-XXK3YZG4.js} +13 -10
- package/dist/{outputStyles-62Q3VH2J.js → chunks/outputStyles-FAJTXN2A.js} +6 -9
- package/dist/chunks/permissions-HO7INPWM.js +27 -0
- package/dist/{pluginRuntime-6ETCZ2LL.js → chunks/pluginRuntime-C7K5ULK2.js} +31 -48
- package/dist/chunks/pluginRuntime-C7K5ULK2.js.map +7 -0
- package/dist/chunks/pluginValidation-DAM7WRTC.js +20 -0
- package/dist/chunks/registry-XYJXMOA5.js +60 -0
- package/dist/chunks/responsesStreaming-JNGE2P3D.js +8 -0
- package/dist/chunks/runNonTextPrintMode-SVBLCZQX.js +577 -0
- package/dist/chunks/runNonTextPrintMode-SVBLCZQX.js.map +7 -0
- package/dist/chunks/server-REXXF5IK.js +46 -0
- package/dist/{skillMarketplace-3RXQBVOL.js → chunks/skillMarketplace-N4HVHNST.js} +8 -6
- package/dist/chunks/src-OROQIWP3.js +44 -0
- package/dist/chunks/src-QXLGGMUW.js +1647 -0
- package/dist/chunks/src-QXLGGMUW.js.map +7 -0
- package/dist/{cli-DOPVY2CW.js → chunks/src-SSDT6MVP.js} +2659 -3384
- package/dist/chunks/src-SSDT6MVP.js.map +7 -0
- package/dist/chunks/theme-YBJUIMWK.js +10 -0
- package/dist/{toolPermissionContext-65L65VEZ.js → chunks/toolPermissionContext-MOCTRR7N.js} +2 -4
- package/dist/chunks/toolPermissionSettings-EV2EJAXL.js +18 -0
- package/dist/chunks/toolPermissionSettings-EV2EJAXL.js.map +7 -0
- package/dist/chunks/uuid-6577SO6X.js +7 -0
- package/dist/chunks/uuid-6577SO6X.js.map +7 -0
- package/dist/chunks/webOnlyMode-ALXX7UQY.js +66 -0
- package/dist/chunks/webOnlyMode-ALXX7UQY.js.map +7 -0
- package/dist/entrypoints/cli.js +10 -0
- package/dist/entrypoints/cli.js.map +7 -0
- package/dist/entrypoints/daemon.js +10 -0
- package/dist/entrypoints/daemon.js.map +7 -0
- package/dist/entrypoints/mcp.js +71 -0
- package/dist/entrypoints/mcp.js.map +7 -0
- package/dist/index.js +6 -7
- package/dist/index.js.map +3 -3
- package/dist/sdk/client.cjs +391 -0
- package/dist/sdk/client.cjs.map +7 -0
- package/dist/sdk/client.js +364 -0
- package/dist/sdk/client.js.map +7 -0
- package/dist/sdk/core.cjs +19932 -0
- package/dist/sdk/core.cjs.map +7 -0
- package/dist/sdk/core.js +19893 -0
- package/dist/sdk/core.js.map +7 -0
- package/dist/sdk/daemon-client.cjs +257 -0
- package/dist/sdk/daemon-client.cjs.map +7 -0
- package/dist/sdk/daemon-client.js +221 -0
- package/dist/sdk/daemon-client.js.map +7 -0
- package/dist/sdk/protocol.cjs +170 -0
- package/dist/sdk/protocol.cjs.map +7 -0
- package/dist/sdk/protocol.js +140 -0
- package/dist/sdk/protocol.js.map +7 -0
- package/dist/sdk/runtime-node.cjs +236 -0
- package/dist/sdk/runtime-node.cjs.map +7 -0
- package/dist/sdk/runtime-node.js +222 -0
- package/dist/sdk/runtime-node.js.map +7 -0
- package/dist/sdk/runtime.cjs +17 -0
- package/dist/sdk/runtime.cjs.map +7 -0
- package/dist/sdk/runtime.js +0 -0
- package/dist/sdk/runtime.js.map +7 -0
- package/dist/sdk/tools.cjs +30300 -0
- package/dist/sdk/tools.cjs.map +7 -0
- package/dist/sdk/tools.js +30282 -0
- package/dist/sdk/tools.js.map +7 -0
- package/dist/webui/assets/index-5hlfByVS.css +1 -0
- package/dist/webui/assets/index-BR9lm1lA.js +82 -0
- package/dist/webui/index.html +28 -0
- package/package.json +93 -22
- package/scripts/binary-utils.cjs +12 -4
- package/scripts/cli-acp-wrapper.cjs +3 -17
- package/scripts/cli-wrapper.cjs +5 -7
- package/scripts/postinstall.js +8 -4
- package/dist/REPL-CW7AYLVL.js +0 -42
- package/dist/acp-VEPJ74LT.js +0 -1357
- package/dist/acp-VEPJ74LT.js.map +0 -7
- package/dist/agentsValidate-7LH4HTNR.js.map +0 -7
- package/dist/ask-3NHFFUQG.js.map +0 -7
- package/dist/autoUpdater-ITPIHCOI.js +0 -17
- package/dist/chunk-3IN27HA5.js.map +0 -7
- package/dist/chunk-4FX3IVPT.js +0 -164
- package/dist/chunk-4FX3IVPT.js.map +0 -7
- package/dist/chunk-4RTX4AG4.js.map +0 -7
- package/dist/chunk-5PDP7R6N.js +0 -515
- package/dist/chunk-5PDP7R6N.js.map +0 -7
- package/dist/chunk-73WGVYLQ.js.map +0 -7
- package/dist/chunk-7M2YN6TU.js.map +0 -7
- package/dist/chunk-7U7L4NMD.js.map +0 -7
- package/dist/chunk-ABLVTESJ.js.map +0 -7
- package/dist/chunk-AFFSCMYS.js.map +0 -7
- package/dist/chunk-ARZSBOAO.js.map +0 -7
- package/dist/chunk-CIG63V4E.js +0 -72
- package/dist/chunk-CIG63V4E.js.map +0 -7
- package/dist/chunk-CM3EGTG6.js +0 -1609
- package/dist/chunk-CM3EGTG6.js.map +0 -7
- package/dist/chunk-DZE5YA7L.js.map +0 -7
- package/dist/chunk-E6YNABER.js.map +0 -7
- package/dist/chunk-EZXMVTDU.js.map +0 -7
- package/dist/chunk-F2SJXUDI.js +0 -148
- package/dist/chunk-F2SJXUDI.js.map +0 -7
- package/dist/chunk-FC5ZCKBI.js +0 -30167
- package/dist/chunk-FC5ZCKBI.js.map +0 -7
- package/dist/chunk-HCBELH4J.js +0 -145
- package/dist/chunk-HCBELH4J.js.map +0 -7
- package/dist/chunk-HN4E4UUQ.js.map +0 -7
- package/dist/chunk-IZVMU4S2.js +0 -654
- package/dist/chunk-IZVMU4S2.js.map +0 -7
- package/dist/chunk-K2CWOTI2.js.map +0 -7
- package/dist/chunk-LC4TVOCZ.js +0 -835
- package/dist/chunk-LC4TVOCZ.js.map +0 -7
- package/dist/chunk-MIW7N2MY.js +0 -2613
- package/dist/chunk-MIW7N2MY.js.map +0 -7
- package/dist/chunk-MWRSY4X6.js.map +0 -7
- package/dist/chunk-ND3XWFO6.js +0 -34
- package/dist/chunk-ND3XWFO6.js.map +0 -7
- package/dist/chunk-QVLYOPO5.js.map +0 -7
- package/dist/chunk-RZWOUA25.js.map +0 -7
- package/dist/chunk-S6HRABTA.js.map +0 -7
- package/dist/chunk-STSX7GIX.js.map +0 -7
- package/dist/chunk-UHYRLID6.js.map +0 -7
- package/dist/chunk-UKHTVRJM.js +0 -47
- package/dist/chunk-UKHTVRJM.js.map +0 -7
- package/dist/chunk-UYXEDKOZ.js +0 -24
- package/dist/chunk-UYXEDKOZ.js.map +0 -7
- package/dist/chunk-W7GRKO7Q.js.map +0 -7
- package/dist/chunk-WVHORZQ5.js +0 -17
- package/dist/chunk-WVHORZQ5.js.map +0 -7
- package/dist/chunk-WWUWDNWW.js +0 -49
- package/dist/chunk-WWUWDNWW.js.map +0 -7
- package/dist/chunk-YC6LJCDE.js.map +0 -7
- package/dist/chunk-YXYYDIMI.js +0 -2931
- package/dist/chunk-YXYYDIMI.js.map +0 -7
- package/dist/chunk-ZVDRDPII.js.map +0 -7
- package/dist/cli-DOPVY2CW.js.map +0 -7
- package/dist/commands-2BF2CJ3A.js +0 -46
- package/dist/context-6FXPETYH.js +0 -30
- package/dist/costTracker-6SL26FDB.js +0 -19
- package/dist/kodeAgentSessionLoad-MITZADPB.js +0 -18
- package/dist/kodeAgentSessionResume-GVRWB4WO.js +0 -16
- package/dist/kodeAgentStreamJson-NXFN7TXH.js +0 -13
- package/dist/kodeAgentStreamJsonSession-UGEZJJEB.js.map +0 -7
- package/dist/kodeAgentStructuredStdio-HGWJT7CU.js +0 -10
- package/dist/llm-ZUQC4WYM.js.map +0 -7
- package/dist/llmLazy-54QQHA54.js +0 -15
- package/dist/loader-FYHJQES5.js +0 -28
- package/dist/mcp-J332IKT3.js +0 -49
- package/dist/mentionProcessor-EE3XFHCJ.js.map +0 -7
- package/dist/model-FV3JDJKH.js +0 -30
- package/dist/pluginRuntime-6ETCZ2LL.js.map +0 -7
- package/dist/pluginValidation-I4YKUWGS.js +0 -17
- package/dist/prompts-ZLEKDD77.js +0 -48
- package/dist/query-VFRJPBGD.js +0 -50
- package/dist/responsesStreaming-AW344PQO.js +0 -10
- package/dist/ripgrep-3NTIKQYW.js +0 -17
- package/dist/state-P5G6CO5V.js +0 -16
- package/dist/theme-3LWP3BG7.js +0 -14
- package/dist/toolPermissionSettings-3ROBVTUK.js +0 -18
- package/dist/tools-RO7HSSE5.js +0 -47
- package/dist/userInput-JSBJRFSK.js +0 -311
- package/dist/userInput-JSBJRFSK.js.map +0 -7
- package/dist/uuid-QN2CNKKN.js +0 -9
- /package/dist/{REPL-CW7AYLVL.js.map → chunks/Doctor-M3J7GRTJ.js.map} +0 -0
- /package/dist/{autoUpdater-ITPIHCOI.js.map → chunks/REPL-RQ6LO6S7.js.map} +0 -0
- /package/dist/{chunk-JC6NCUG5.js.map → chunks/ResumeConversation-6DMVBEGH.js.map} +0 -0
- /package/dist/{commands-2BF2CJ3A.js.map → chunks/agentLoader-FCRG3TFJ.js.map} +0 -0
- /package/dist/{config-RUSD6G5Y.js.map → chunks/autoUpdater-CNESBOKO.js.map} +0 -0
- /package/dist/{context-6FXPETYH.js.map → chunks/chunk-4CRUCZR4.js.map} +0 -0
- /package/dist/{costTracker-6SL26FDB.js.map → chunks/chunk-54KOYG5C.js.map} +0 -0
- /package/dist/{customCommands-TOIJFZAL.js.map → chunks/chunk-GCQCAXJZ.js.map} +0 -0
- /package/dist/{env-XGKBLU3D.js.map → chunks/chunk-LB6TCPDI.js.map} +0 -0
- /package/dist/{kodeAgentSessionId-X6XWQW7B.js.map → chunks/client-SILZNM5N.js.map} +0 -0
- /package/dist/{kodeAgentSessionLoad-MITZADPB.js.map → chunks/config-25HRTPSP.js.map} +0 -0
- /package/dist/{kodeAgentSessionResume-GVRWB4WO.js.map → chunks/cost-tracker-Z2UZT2J5.js.map} +0 -0
- /package/dist/{kodeAgentStreamJson-NXFN7TXH.js.map → chunks/customCommands-TYMYZRG5.js.map} +0 -0
- /package/dist/{kodeAgentStructuredStdio-HGWJT7CU.js.map → chunks/engine-MRVF6FK6.js.map} +0 -0
- /package/dist/{kodeHooks-QWM36A3D.js.map → chunks/env-TJ5NOBEB.js.map} +0 -0
- /package/dist/{llmLazy-54QQHA54.js.map → chunks/kodeAgentSessionId-VTNISJ2L.js.map} +0 -0
- /package/dist/{loader-FYHJQES5.js.map → chunks/kodeAgentSessionLoad-YB2RKBGJ.js.map} +0 -0
- /package/dist/{mcp-J332IKT3.js.map → chunks/kodeAgentSessionResume-DZSIVKVA.js.map} +0 -0
- /package/dist/{messages-EOYQKPGM.js.map → chunks/kodeAgentStreamJson-X5PLS2S6.js.map} +0 -0
- /package/dist/{model-FV3JDJKH.js.map → chunks/kodeHooks-RVKYRJHG.js.map} +0 -0
- /package/dist/{openai-RRCWW33N.js.map → chunks/llmLazy-ZUSSE3ZA.js.map} +0 -0
- /package/dist/{outputStyles-62Q3VH2J.js.map → chunks/messages-EEWWLPHN.js.map} +0 -0
- /package/dist/{pluginValidation-I4YKUWGS.js.map → chunks/model-5TIEKQPD.js.map} +0 -0
- /package/dist/{prompts-ZLEKDD77.js.map → chunks/openai-XXK3YZG4.js.map} +0 -0
- /package/dist/{query-VFRJPBGD.js.map → chunks/outputStyles-FAJTXN2A.js.map} +0 -0
- /package/dist/{responsesStreaming-AW344PQO.js.map → chunks/permissions-HO7INPWM.js.map} +0 -0
- /package/dist/{ripgrep-3NTIKQYW.js.map → chunks/pluginValidation-DAM7WRTC.js.map} +0 -0
- /package/dist/{skillMarketplace-3RXQBVOL.js.map → chunks/registry-XYJXMOA5.js.map} +0 -0
- /package/dist/{state-P5G6CO5V.js.map → chunks/responsesStreaming-JNGE2P3D.js.map} +0 -0
- /package/dist/{theme-3LWP3BG7.js.map → chunks/server-REXXF5IK.js.map} +0 -0
- /package/dist/{toolPermissionContext-65L65VEZ.js.map → chunks/skillMarketplace-N4HVHNST.js.map} +0 -0
- /package/dist/{toolPermissionSettings-3ROBVTUK.js.map → chunks/src-OROQIWP3.js.map} +0 -0
- /package/dist/{tools-RO7HSSE5.js.map → chunks/theme-YBJUIMWK.js.map} +0 -0
- /package/dist/{uuid-QN2CNKKN.js.map → chunks/toolPermissionContext-MOCTRR7N.js.map} +0 -0
package/dist/chunk-LC4TVOCZ.js
DELETED
|
@@ -1,835 +0,0 @@
|
|
|
1
|
-
import { createRequire as __kodeCreateRequire } from "node:module";
|
|
2
|
-
const require = __kodeCreateRequire(import.meta.url);
|
|
3
|
-
import {
|
|
4
|
-
ConfigParseError
|
|
5
|
-
} from "./chunk-UYXEDKOZ.js";
|
|
6
|
-
import {
|
|
7
|
-
debug
|
|
8
|
-
} from "./chunk-STSX7GIX.js";
|
|
9
|
-
import {
|
|
10
|
-
getCwd,
|
|
11
|
-
getGlobalConfigFilePath,
|
|
12
|
-
logError
|
|
13
|
-
} from "./chunk-YXYYDIMI.js";
|
|
14
|
-
|
|
15
|
-
// src/core/config/schema.ts
|
|
16
|
-
function isAutoUpdaterStatus(value) {
|
|
17
|
-
return ["disabled", "enabled", "no_permissions", "not_configured"].includes(
|
|
18
|
-
value
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
var GLOBAL_CONFIG_KEYS = [
|
|
22
|
-
"autoUpdaterStatus",
|
|
23
|
-
"theme",
|
|
24
|
-
"hasCompletedOnboarding",
|
|
25
|
-
"lastOnboardingVersion",
|
|
26
|
-
"lastReleaseNotesSeen",
|
|
27
|
-
"verbose",
|
|
28
|
-
"customApiKeyResponses",
|
|
29
|
-
"primaryProvider",
|
|
30
|
-
"preferredNotifChannel",
|
|
31
|
-
"maxTokens"
|
|
32
|
-
];
|
|
33
|
-
function isGlobalConfigKey(key) {
|
|
34
|
-
return GLOBAL_CONFIG_KEYS.includes(key);
|
|
35
|
-
}
|
|
36
|
-
var PROJECT_CONFIG_KEYS = [
|
|
37
|
-
"dontCrawlDirectory",
|
|
38
|
-
"enableArchitectTool",
|
|
39
|
-
"hasTrustDialogAccepted",
|
|
40
|
-
"hasCompletedProjectOnboarding"
|
|
41
|
-
];
|
|
42
|
-
function isProjectConfigKey(key) {
|
|
43
|
-
return PROJECT_CONFIG_KEYS.includes(key);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// src/core/config/defaults.ts
|
|
47
|
-
import { homedir } from "os";
|
|
48
|
-
var DEFAULT_PROJECT_CONFIG = {
|
|
49
|
-
allowedTools: [],
|
|
50
|
-
deniedTools: [],
|
|
51
|
-
askedTools: [],
|
|
52
|
-
context: {},
|
|
53
|
-
history: [],
|
|
54
|
-
dontCrawlDirectory: false,
|
|
55
|
-
enableArchitectTool: false,
|
|
56
|
-
mcpContextUris: [],
|
|
57
|
-
mcpServers: {},
|
|
58
|
-
approvedMcprcServers: [],
|
|
59
|
-
rejectedMcprcServers: [],
|
|
60
|
-
hasTrustDialogAccepted: false
|
|
61
|
-
};
|
|
62
|
-
function defaultConfigForProject(projectPath) {
|
|
63
|
-
const config = { ...DEFAULT_PROJECT_CONFIG };
|
|
64
|
-
if (projectPath === homedir()) {
|
|
65
|
-
config.dontCrawlDirectory = true;
|
|
66
|
-
}
|
|
67
|
-
return config;
|
|
68
|
-
}
|
|
69
|
-
var DEFAULT_GLOBAL_CONFIG = {
|
|
70
|
-
numStartups: 0,
|
|
71
|
-
autoUpdaterStatus: "not_configured",
|
|
72
|
-
theme: "dark",
|
|
73
|
-
preferredNotifChannel: "iterm2",
|
|
74
|
-
verbose: false,
|
|
75
|
-
primaryProvider: "anthropic",
|
|
76
|
-
customApiKeyResponses: {
|
|
77
|
-
approved: [],
|
|
78
|
-
rejected: []
|
|
79
|
-
},
|
|
80
|
-
stream: true,
|
|
81
|
-
modelProfiles: [],
|
|
82
|
-
modelPointers: {
|
|
83
|
-
main: "",
|
|
84
|
-
task: "",
|
|
85
|
-
compact: "",
|
|
86
|
-
quick: ""
|
|
87
|
-
},
|
|
88
|
-
lastDismissedUpdateVersion: void 0
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
// src/core/config/loader.ts
|
|
92
|
-
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
93
|
-
import { join, posix, resolve, win32 } from "path";
|
|
94
|
-
import { cloneDeep, memoize, pick } from "lodash-es";
|
|
95
|
-
import { homedir as homedir2 } from "os";
|
|
96
|
-
import { randomBytes } from "crypto";
|
|
97
|
-
|
|
98
|
-
// src/utils/text/json.ts
|
|
99
|
-
function safeParseJSON(json) {
|
|
100
|
-
if (!json) {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
try {
|
|
104
|
-
return JSON.parse(json);
|
|
105
|
-
} catch (e) {
|
|
106
|
-
logError(e);
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// src/core/config/migrations.ts
|
|
112
|
-
function migrateModelProfilesRemoveId(config) {
|
|
113
|
-
if (!config.modelProfiles) return config;
|
|
114
|
-
const idToModelNameMap = /* @__PURE__ */ new Map();
|
|
115
|
-
const migratedProfiles = config.modelProfiles.map((profile) => {
|
|
116
|
-
if (profile.id && profile.modelName) {
|
|
117
|
-
idToModelNameMap.set(profile.id, profile.modelName);
|
|
118
|
-
}
|
|
119
|
-
const { id, ...profileWithoutId } = profile;
|
|
120
|
-
return profileWithoutId;
|
|
121
|
-
});
|
|
122
|
-
const migratedPointers = {
|
|
123
|
-
main: "",
|
|
124
|
-
task: "",
|
|
125
|
-
compact: "",
|
|
126
|
-
quick: ""
|
|
127
|
-
};
|
|
128
|
-
const rawPointers = config.modelPointers;
|
|
129
|
-
const rawMain = typeof rawPointers?.main === "string" ? rawPointers.main : "";
|
|
130
|
-
const rawTask = typeof rawPointers?.task === "string" ? rawPointers.task : "";
|
|
131
|
-
const rawQuick = typeof rawPointers?.quick === "string" ? rawPointers.quick : "";
|
|
132
|
-
const rawCompact = typeof rawPointers?.compact === "string" ? rawPointers.compact : typeof rawPointers?.reasoning === "string" ? rawPointers.reasoning : "";
|
|
133
|
-
if (rawMain) migratedPointers.main = idToModelNameMap.get(rawMain) || rawMain;
|
|
134
|
-
if (rawTask) migratedPointers.task = idToModelNameMap.get(rawTask) || rawTask;
|
|
135
|
-
if (rawCompact)
|
|
136
|
-
migratedPointers.compact = idToModelNameMap.get(rawCompact) || rawCompact;
|
|
137
|
-
if (rawQuick)
|
|
138
|
-
migratedPointers.quick = idToModelNameMap.get(rawQuick) || rawQuick;
|
|
139
|
-
let defaultModelName;
|
|
140
|
-
if (config.defaultModelId) {
|
|
141
|
-
defaultModelName = idToModelNameMap.get(config.defaultModelId) || config.defaultModelId;
|
|
142
|
-
} else if (config.defaultModelName) {
|
|
143
|
-
defaultModelName = config.defaultModelName;
|
|
144
|
-
}
|
|
145
|
-
const migratedConfig = { ...config };
|
|
146
|
-
delete migratedConfig.defaultModelId;
|
|
147
|
-
delete migratedConfig.currentSelectedModelId;
|
|
148
|
-
delete migratedConfig.mainAgentModelId;
|
|
149
|
-
delete migratedConfig.taskToolModelId;
|
|
150
|
-
return {
|
|
151
|
-
...migratedConfig,
|
|
152
|
-
modelProfiles: migratedProfiles,
|
|
153
|
-
modelPointers: migratedPointers,
|
|
154
|
-
defaultModelName
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// src/core/config/loader.ts
|
|
159
|
-
function expandHomeDirForPlatform(input, homeDirPath, platform) {
|
|
160
|
-
const trimmed = input.trim();
|
|
161
|
-
if (!trimmed) return trimmed;
|
|
162
|
-
if (trimmed === "~") return homeDirPath;
|
|
163
|
-
if (trimmed.startsWith("~/") || trimmed.startsWith("~\\")) {
|
|
164
|
-
const rest = trimmed.slice(2);
|
|
165
|
-
return platform === "win32" ? win32.join(homeDirPath, rest) : posix.join(homeDirPath, rest);
|
|
166
|
-
}
|
|
167
|
-
return trimmed;
|
|
168
|
-
}
|
|
169
|
-
function normalizeProjectPathForComparison(projectPath, baseDir, opts) {
|
|
170
|
-
const platform = opts?.platform ?? process.platform;
|
|
171
|
-
const homeDirPath = opts?.homeDir ?? homedir2();
|
|
172
|
-
const expanded = expandHomeDirForPlatform(projectPath, homeDirPath, platform);
|
|
173
|
-
if (!expanded) return "";
|
|
174
|
-
if (platform === "win32") {
|
|
175
|
-
const resolved2 = win32.isAbsolute(expanded) ? win32.resolve(expanded) : win32.resolve(baseDir, expanded);
|
|
176
|
-
return resolved2.toLowerCase();
|
|
177
|
-
}
|
|
178
|
-
const resolved = posix.isAbsolute(expanded) ? posix.resolve(expanded) : posix.resolve(baseDir, expanded);
|
|
179
|
-
return resolved;
|
|
180
|
-
}
|
|
181
|
-
function findMatchingProjectKey(projects, absolutePath) {
|
|
182
|
-
if (!projects) return void 0;
|
|
183
|
-
if (projects[absolutePath]) return absolutePath;
|
|
184
|
-
const normalizedTarget = normalizeProjectPathForComparison(
|
|
185
|
-
absolutePath,
|
|
186
|
-
absolutePath
|
|
187
|
-
);
|
|
188
|
-
for (const key of Object.keys(projects)) {
|
|
189
|
-
if (normalizeProjectPathForComparison(key, absolutePath) === normalizedTarget) {
|
|
190
|
-
return key;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
return void 0;
|
|
194
|
-
}
|
|
195
|
-
function checkHasTrustDialogAccepted() {
|
|
196
|
-
let currentPath = getCwd();
|
|
197
|
-
const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG);
|
|
198
|
-
while (true) {
|
|
199
|
-
const projectKey = findMatchingProjectKey(config.projects, currentPath);
|
|
200
|
-
const projectConfig = projectKey ? config.projects?.[projectKey] : void 0;
|
|
201
|
-
if (projectConfig?.hasTrustDialogAccepted) {
|
|
202
|
-
return true;
|
|
203
|
-
}
|
|
204
|
-
const parentPath = resolve(currentPath, "..");
|
|
205
|
-
if (parentPath === currentPath) {
|
|
206
|
-
break;
|
|
207
|
-
}
|
|
208
|
-
currentPath = parentPath;
|
|
209
|
-
}
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
var TEST_GLOBAL_CONFIG_FOR_TESTING = {
|
|
213
|
-
...DEFAULT_GLOBAL_CONFIG,
|
|
214
|
-
autoUpdaterStatus: "disabled"
|
|
215
|
-
};
|
|
216
|
-
var TEST_PROJECT_CONFIG_FOR_TESTING = {
|
|
217
|
-
...DEFAULT_PROJECT_CONFIG
|
|
218
|
-
};
|
|
219
|
-
function saveGlobalConfig(config) {
|
|
220
|
-
if (process.env.NODE_ENV === "test") {
|
|
221
|
-
for (const key in config) {
|
|
222
|
-
TEST_GLOBAL_CONFIG_FOR_TESTING[key] = config[key];
|
|
223
|
-
}
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
saveConfig(
|
|
227
|
-
getGlobalConfigFilePath(),
|
|
228
|
-
{
|
|
229
|
-
...config,
|
|
230
|
-
projects: getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG).projects
|
|
231
|
-
},
|
|
232
|
-
DEFAULT_GLOBAL_CONFIG
|
|
233
|
-
);
|
|
234
|
-
}
|
|
235
|
-
function getGlobalConfig() {
|
|
236
|
-
if (process.env.NODE_ENV === "test") {
|
|
237
|
-
return TEST_GLOBAL_CONFIG_FOR_TESTING;
|
|
238
|
-
}
|
|
239
|
-
const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG);
|
|
240
|
-
return migrateModelProfilesRemoveId(config);
|
|
241
|
-
}
|
|
242
|
-
function normalizeApiKeyForConfig(apiKey) {
|
|
243
|
-
return apiKey?.slice(-20) ?? "";
|
|
244
|
-
}
|
|
245
|
-
function getCustomApiKeyStatus(truncatedApiKey) {
|
|
246
|
-
const config = getGlobalConfig();
|
|
247
|
-
if (config.customApiKeyResponses?.approved?.includes(truncatedApiKey)) {
|
|
248
|
-
return "approved";
|
|
249
|
-
}
|
|
250
|
-
if (config.customApiKeyResponses?.rejected?.includes(truncatedApiKey)) {
|
|
251
|
-
return "rejected";
|
|
252
|
-
}
|
|
253
|
-
return "new";
|
|
254
|
-
}
|
|
255
|
-
function saveConfig(file, config, defaultConfig) {
|
|
256
|
-
const filteredConfig = Object.fromEntries(
|
|
257
|
-
Object.entries(config).filter(
|
|
258
|
-
([key, value]) => JSON.stringify(value) !== JSON.stringify(defaultConfig[key])
|
|
259
|
-
)
|
|
260
|
-
);
|
|
261
|
-
try {
|
|
262
|
-
writeFileSync(file, JSON.stringify(filteredConfig, null, 2), "utf-8");
|
|
263
|
-
} catch (error) {
|
|
264
|
-
const err = error;
|
|
265
|
-
if (err?.code === "EACCES" || err?.code === "EPERM" || err?.code === "EROFS") {
|
|
266
|
-
debug.state("CONFIG_SAVE_SKIPPED", {
|
|
267
|
-
file,
|
|
268
|
-
reason: String(err.code)
|
|
269
|
-
});
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
throw error;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
var configReadingAllowed = false;
|
|
276
|
-
function enableConfigs() {
|
|
277
|
-
configReadingAllowed = true;
|
|
278
|
-
getConfig(
|
|
279
|
-
getGlobalConfigFilePath(),
|
|
280
|
-
DEFAULT_GLOBAL_CONFIG,
|
|
281
|
-
true
|
|
282
|
-
);
|
|
283
|
-
}
|
|
284
|
-
function getConfig(file, defaultConfig, throwOnInvalid) {
|
|
285
|
-
void configReadingAllowed;
|
|
286
|
-
debug.state("CONFIG_LOAD_START", {
|
|
287
|
-
file,
|
|
288
|
-
fileExists: String(existsSync(file)),
|
|
289
|
-
throwOnInvalid: String(!!throwOnInvalid)
|
|
290
|
-
});
|
|
291
|
-
if (!existsSync(file)) {
|
|
292
|
-
debug.state("CONFIG_LOAD_DEFAULT", {
|
|
293
|
-
file,
|
|
294
|
-
reason: "file_not_exists",
|
|
295
|
-
defaultConfigKeys: Object.keys(defaultConfig).join(", ")
|
|
296
|
-
});
|
|
297
|
-
return cloneDeep(defaultConfig);
|
|
298
|
-
}
|
|
299
|
-
try {
|
|
300
|
-
const fileContent = readFileSync(file, "utf-8");
|
|
301
|
-
debug.state("CONFIG_FILE_READ", {
|
|
302
|
-
file,
|
|
303
|
-
contentLength: String(fileContent.length),
|
|
304
|
-
contentPreview: fileContent.substring(0, 100) + (fileContent.length > 100 ? "..." : "")
|
|
305
|
-
});
|
|
306
|
-
try {
|
|
307
|
-
const parsedConfig = JSON.parse(fileContent);
|
|
308
|
-
debug.state("CONFIG_JSON_PARSED", {
|
|
309
|
-
file,
|
|
310
|
-
parsedKeys: Object.keys(parsedConfig).join(", ")
|
|
311
|
-
});
|
|
312
|
-
const finalConfig = {
|
|
313
|
-
...cloneDeep(defaultConfig),
|
|
314
|
-
...parsedConfig
|
|
315
|
-
};
|
|
316
|
-
debug.state("CONFIG_LOAD_SUCCESS", {
|
|
317
|
-
file,
|
|
318
|
-
finalConfigKeys: Object.keys(finalConfig).join(", ")
|
|
319
|
-
});
|
|
320
|
-
return finalConfig;
|
|
321
|
-
} catch (error) {
|
|
322
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
323
|
-
debug.error("CONFIG_JSON_PARSE_ERROR", {
|
|
324
|
-
file,
|
|
325
|
-
errorMessage,
|
|
326
|
-
errorType: error instanceof Error ? error.constructor.name : typeof error,
|
|
327
|
-
contentLength: String(fileContent.length)
|
|
328
|
-
});
|
|
329
|
-
throw new ConfigParseError(errorMessage, file, defaultConfig);
|
|
330
|
-
}
|
|
331
|
-
} catch (error) {
|
|
332
|
-
if (error instanceof ConfigParseError && throwOnInvalid) {
|
|
333
|
-
debug.error("CONFIG_PARSE_ERROR_RETHROWN", {
|
|
334
|
-
file,
|
|
335
|
-
throwOnInvalid: String(throwOnInvalid),
|
|
336
|
-
errorMessage: error.message
|
|
337
|
-
});
|
|
338
|
-
throw error;
|
|
339
|
-
}
|
|
340
|
-
debug.warn("CONFIG_FALLBACK_TO_DEFAULT", {
|
|
341
|
-
file,
|
|
342
|
-
errorType: error instanceof Error ? error.constructor.name : typeof error,
|
|
343
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
344
|
-
action: "using_default_config"
|
|
345
|
-
});
|
|
346
|
-
return cloneDeep(defaultConfig);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
function getCurrentProjectConfig() {
|
|
350
|
-
if (process.env.NODE_ENV === "test") {
|
|
351
|
-
return TEST_PROJECT_CONFIG_FOR_TESTING;
|
|
352
|
-
}
|
|
353
|
-
const absolutePath = resolve(getCwd());
|
|
354
|
-
const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG);
|
|
355
|
-
if (!config.projects) {
|
|
356
|
-
return defaultConfigForProject(absolutePath);
|
|
357
|
-
}
|
|
358
|
-
const projectKey = findMatchingProjectKey(config.projects, absolutePath);
|
|
359
|
-
const projectConfig = projectKey && config.projects[projectKey] ? config.projects[projectKey] : defaultConfigForProject(absolutePath);
|
|
360
|
-
if (typeof projectConfig.allowedTools === "string") {
|
|
361
|
-
projectConfig.allowedTools = safeParseJSON(projectConfig.allowedTools) ?? [];
|
|
362
|
-
}
|
|
363
|
-
if (typeof projectConfig.deniedTools === "string") {
|
|
364
|
-
;
|
|
365
|
-
projectConfig.deniedTools = safeParseJSON(projectConfig.deniedTools) ?? [];
|
|
366
|
-
}
|
|
367
|
-
if (typeof projectConfig.askedTools === "string") {
|
|
368
|
-
;
|
|
369
|
-
projectConfig.askedTools = safeParseJSON(projectConfig.askedTools) ?? [];
|
|
370
|
-
}
|
|
371
|
-
return projectConfig;
|
|
372
|
-
}
|
|
373
|
-
function saveCurrentProjectConfig(projectConfig) {
|
|
374
|
-
if (process.env.NODE_ENV === "test") {
|
|
375
|
-
for (const key in projectConfig) {
|
|
376
|
-
TEST_PROJECT_CONFIG_FOR_TESTING[key] = projectConfig[key];
|
|
377
|
-
}
|
|
378
|
-
return;
|
|
379
|
-
}
|
|
380
|
-
const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG);
|
|
381
|
-
const resolvedCwd = resolve(getCwd());
|
|
382
|
-
const existingKey = findMatchingProjectKey(config.projects, resolvedCwd);
|
|
383
|
-
const storageKey = existingKey ?? resolvedCwd;
|
|
384
|
-
saveConfig(
|
|
385
|
-
getGlobalConfigFilePath(),
|
|
386
|
-
{
|
|
387
|
-
...config,
|
|
388
|
-
projects: {
|
|
389
|
-
...config.projects,
|
|
390
|
-
[storageKey]: projectConfig
|
|
391
|
-
}
|
|
392
|
-
},
|
|
393
|
-
DEFAULT_GLOBAL_CONFIG
|
|
394
|
-
);
|
|
395
|
-
}
|
|
396
|
-
async function isAutoUpdaterDisabled() {
|
|
397
|
-
const status = getGlobalConfig().autoUpdaterStatus;
|
|
398
|
-
return status !== "enabled";
|
|
399
|
-
}
|
|
400
|
-
var TEST_MCPRC_CONFIG_FOR_TESTING = {};
|
|
401
|
-
function clearMcprcConfigForTesting() {
|
|
402
|
-
if (process.env.NODE_ENV === "test") {
|
|
403
|
-
Object.keys(TEST_MCPRC_CONFIG_FOR_TESTING).forEach((key) => {
|
|
404
|
-
delete TEST_MCPRC_CONFIG_FOR_TESTING[key];
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
function addMcprcServerForTesting(name, server) {
|
|
409
|
-
if (process.env.NODE_ENV === "test") {
|
|
410
|
-
TEST_MCPRC_CONFIG_FOR_TESTING[name] = server;
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
function removeMcprcServerForTesting(name) {
|
|
414
|
-
if (process.env.NODE_ENV === "test") {
|
|
415
|
-
if (!TEST_MCPRC_CONFIG_FOR_TESTING[name]) {
|
|
416
|
-
throw new Error(`No MCP server found with name: ${name} in .mcprc`);
|
|
417
|
-
}
|
|
418
|
-
delete TEST_MCPRC_CONFIG_FOR_TESTING[name];
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
var getMcprcConfig = memoize(
|
|
422
|
-
() => {
|
|
423
|
-
if (process.env.NODE_ENV === "test") {
|
|
424
|
-
return TEST_MCPRC_CONFIG_FOR_TESTING;
|
|
425
|
-
}
|
|
426
|
-
const mcprcPath = join(getCwd(), ".mcprc");
|
|
427
|
-
if (!existsSync(mcprcPath)) {
|
|
428
|
-
return {};
|
|
429
|
-
}
|
|
430
|
-
try {
|
|
431
|
-
const mcprcContent = readFileSync(mcprcPath, "utf-8");
|
|
432
|
-
const config = safeParseJSON(mcprcContent);
|
|
433
|
-
if (config && typeof config === "object") {
|
|
434
|
-
return config;
|
|
435
|
-
}
|
|
436
|
-
} catch {
|
|
437
|
-
}
|
|
438
|
-
return {};
|
|
439
|
-
},
|
|
440
|
-
() => {
|
|
441
|
-
const cwd = getCwd();
|
|
442
|
-
const mcprcPath = join(cwd, ".mcprc");
|
|
443
|
-
if (existsSync(mcprcPath)) {
|
|
444
|
-
try {
|
|
445
|
-
const stat = readFileSync(mcprcPath, "utf-8");
|
|
446
|
-
return `${cwd}:${stat}`;
|
|
447
|
-
} catch {
|
|
448
|
-
return cwd;
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
return cwd;
|
|
452
|
-
}
|
|
453
|
-
);
|
|
454
|
-
function parseMcpServersFromMcpJson(value) {
|
|
455
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return {};
|
|
456
|
-
const raw = value.mcpServers;
|
|
457
|
-
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return {};
|
|
458
|
-
return raw;
|
|
459
|
-
}
|
|
460
|
-
function parseMcpServersFromMcprc(value) {
|
|
461
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return {};
|
|
462
|
-
const maybeNested = value.mcpServers;
|
|
463
|
-
if (maybeNested && typeof maybeNested === "object" && !Array.isArray(maybeNested)) {
|
|
464
|
-
return maybeNested;
|
|
465
|
-
}
|
|
466
|
-
return value;
|
|
467
|
-
}
|
|
468
|
-
var getProjectMcpServerDefinitions = memoize(
|
|
469
|
-
() => {
|
|
470
|
-
if (process.env.NODE_ENV === "test") {
|
|
471
|
-
return {
|
|
472
|
-
servers: {},
|
|
473
|
-
sources: {},
|
|
474
|
-
mcpJsonPath: join(getCwd(), ".mcp.json"),
|
|
475
|
-
mcprcPath: join(getCwd(), ".mcprc")
|
|
476
|
-
};
|
|
477
|
-
}
|
|
478
|
-
const cwd = getCwd();
|
|
479
|
-
const mcpJsonPath = join(cwd, ".mcp.json");
|
|
480
|
-
const mcprcPath = join(cwd, ".mcprc");
|
|
481
|
-
let mcpJsonServers = {};
|
|
482
|
-
let mcprcServers = {};
|
|
483
|
-
if (existsSync(mcpJsonPath)) {
|
|
484
|
-
try {
|
|
485
|
-
const content = readFileSync(mcpJsonPath, "utf-8");
|
|
486
|
-
const parsed = safeParseJSON(content);
|
|
487
|
-
mcpJsonServers = parseMcpServersFromMcpJson(parsed);
|
|
488
|
-
} catch {
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
if (existsSync(mcprcPath)) {
|
|
492
|
-
try {
|
|
493
|
-
const content = readFileSync(mcprcPath, "utf-8");
|
|
494
|
-
const parsed = safeParseJSON(content);
|
|
495
|
-
mcprcServers = parseMcpServersFromMcprc(parsed);
|
|
496
|
-
} catch {
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
const sources = {};
|
|
500
|
-
for (const name of Object.keys(mcpJsonServers)) {
|
|
501
|
-
sources[name] = ".mcp.json";
|
|
502
|
-
}
|
|
503
|
-
for (const name of Object.keys(mcprcServers)) {
|
|
504
|
-
sources[name] = ".mcprc";
|
|
505
|
-
}
|
|
506
|
-
return {
|
|
507
|
-
servers: { ...mcpJsonServers, ...mcprcServers },
|
|
508
|
-
sources,
|
|
509
|
-
mcpJsonPath,
|
|
510
|
-
mcprcPath
|
|
511
|
-
};
|
|
512
|
-
},
|
|
513
|
-
() => {
|
|
514
|
-
const cwd = getCwd();
|
|
515
|
-
const mcpJsonPath = join(cwd, ".mcp.json");
|
|
516
|
-
const mcprcPath = join(cwd, ".mcprc");
|
|
517
|
-
const parts = [cwd];
|
|
518
|
-
if (existsSync(mcpJsonPath)) {
|
|
519
|
-
try {
|
|
520
|
-
parts.push("mcp.json");
|
|
521
|
-
parts.push(readFileSync(mcpJsonPath, "utf-8"));
|
|
522
|
-
} catch {
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
if (existsSync(mcprcPath)) {
|
|
526
|
-
try {
|
|
527
|
-
parts.push("mcprc");
|
|
528
|
-
parts.push(readFileSync(mcprcPath, "utf-8"));
|
|
529
|
-
} catch {
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
return parts.join(":");
|
|
533
|
-
}
|
|
534
|
-
);
|
|
535
|
-
function getOrCreateUserID() {
|
|
536
|
-
const config = getGlobalConfig();
|
|
537
|
-
if (config.userID) {
|
|
538
|
-
return config.userID;
|
|
539
|
-
}
|
|
540
|
-
const userID = randomBytes(32).toString("hex");
|
|
541
|
-
saveGlobalConfig({ ...config, userID });
|
|
542
|
-
return userID;
|
|
543
|
-
}
|
|
544
|
-
function getConfigForCLI(key, global) {
|
|
545
|
-
if (global) {
|
|
546
|
-
if (!isGlobalConfigKey(key)) {
|
|
547
|
-
console.error(
|
|
548
|
-
`Error: '${key}' is not a valid config key. Valid keys are: ${GLOBAL_CONFIG_KEYS.join(", ")}`
|
|
549
|
-
);
|
|
550
|
-
process.exit(1);
|
|
551
|
-
}
|
|
552
|
-
return getGlobalConfig()[key];
|
|
553
|
-
} else {
|
|
554
|
-
if (!isProjectConfigKey(key)) {
|
|
555
|
-
console.error(
|
|
556
|
-
`Error: '${key}' is not a valid config key. Valid keys are: ${PROJECT_CONFIG_KEYS.join(", ")}`
|
|
557
|
-
);
|
|
558
|
-
process.exit(1);
|
|
559
|
-
}
|
|
560
|
-
return getCurrentProjectConfig()[key];
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
function setConfigForCLI(key, value, global) {
|
|
564
|
-
if (global) {
|
|
565
|
-
if (!isGlobalConfigKey(key)) {
|
|
566
|
-
console.error(
|
|
567
|
-
`Error: Cannot set '${key}'. Only these keys can be modified: ${GLOBAL_CONFIG_KEYS.join(", ")}`
|
|
568
|
-
);
|
|
569
|
-
process.exit(1);
|
|
570
|
-
}
|
|
571
|
-
if (key === "autoUpdaterStatus" && !isAutoUpdaterStatus(value)) {
|
|
572
|
-
console.error(
|
|
573
|
-
`Error: Invalid value for autoUpdaterStatus. Must be one of: disabled, enabled, no_permissions, not_configured`
|
|
574
|
-
);
|
|
575
|
-
process.exit(1);
|
|
576
|
-
}
|
|
577
|
-
const currentConfig = getGlobalConfig();
|
|
578
|
-
saveGlobalConfig({
|
|
579
|
-
...currentConfig,
|
|
580
|
-
[key]: value
|
|
581
|
-
});
|
|
582
|
-
} else {
|
|
583
|
-
if (!isProjectConfigKey(key)) {
|
|
584
|
-
console.error(
|
|
585
|
-
`Error: Cannot set '${key}'. Only these keys can be modified: ${PROJECT_CONFIG_KEYS.join(", ")}. Did you mean --global?`
|
|
586
|
-
);
|
|
587
|
-
process.exit(1);
|
|
588
|
-
}
|
|
589
|
-
const currentConfig = getCurrentProjectConfig();
|
|
590
|
-
saveCurrentProjectConfig({
|
|
591
|
-
...currentConfig,
|
|
592
|
-
[key]: value
|
|
593
|
-
});
|
|
594
|
-
}
|
|
595
|
-
setTimeout(() => {
|
|
596
|
-
process.exit(0);
|
|
597
|
-
}, 100);
|
|
598
|
-
}
|
|
599
|
-
function deleteConfigForCLI(key, global) {
|
|
600
|
-
if (global) {
|
|
601
|
-
if (!isGlobalConfigKey(key)) {
|
|
602
|
-
console.error(
|
|
603
|
-
`Error: Cannot delete '${key}'. Only these keys can be modified: ${GLOBAL_CONFIG_KEYS.join(", ")}`
|
|
604
|
-
);
|
|
605
|
-
process.exit(1);
|
|
606
|
-
}
|
|
607
|
-
const currentConfig = getGlobalConfig();
|
|
608
|
-
delete currentConfig[key];
|
|
609
|
-
saveGlobalConfig(currentConfig);
|
|
610
|
-
} else {
|
|
611
|
-
if (!isProjectConfigKey(key)) {
|
|
612
|
-
console.error(
|
|
613
|
-
`Error: Cannot delete '${key}'. Only these keys can be modified: ${PROJECT_CONFIG_KEYS.join(", ")}. Did you mean --global?`
|
|
614
|
-
);
|
|
615
|
-
process.exit(1);
|
|
616
|
-
}
|
|
617
|
-
const currentConfig = getCurrentProjectConfig();
|
|
618
|
-
delete currentConfig[key];
|
|
619
|
-
saveCurrentProjectConfig(currentConfig);
|
|
620
|
-
}
|
|
621
|
-
}
|
|
622
|
-
function listConfigForCLI(global) {
|
|
623
|
-
if (global) {
|
|
624
|
-
const currentConfig = pick(getGlobalConfig(), GLOBAL_CONFIG_KEYS);
|
|
625
|
-
return currentConfig;
|
|
626
|
-
} else {
|
|
627
|
-
return pick(getCurrentProjectConfig(), PROJECT_CONFIG_KEYS);
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
function getOpenAIApiKey() {
|
|
631
|
-
return process.env.OPENAI_API_KEY;
|
|
632
|
-
}
|
|
633
|
-
function getAnthropicApiKey() {
|
|
634
|
-
return process.env.ANTHROPIC_API_KEY || "";
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
// src/core/config/validator.ts
|
|
638
|
-
function setAllPointersToModel(modelName) {
|
|
639
|
-
const config = getGlobalConfig();
|
|
640
|
-
const updatedConfig = {
|
|
641
|
-
...config,
|
|
642
|
-
modelPointers: {
|
|
643
|
-
main: modelName,
|
|
644
|
-
task: modelName,
|
|
645
|
-
compact: modelName,
|
|
646
|
-
quick: modelName
|
|
647
|
-
},
|
|
648
|
-
defaultModelName: modelName
|
|
649
|
-
};
|
|
650
|
-
saveGlobalConfig(updatedConfig);
|
|
651
|
-
}
|
|
652
|
-
function setModelPointer(pointer, modelName) {
|
|
653
|
-
const config = getGlobalConfig();
|
|
654
|
-
const updatedConfig = {
|
|
655
|
-
...config,
|
|
656
|
-
modelPointers: {
|
|
657
|
-
...config.modelPointers,
|
|
658
|
-
[pointer]: modelName
|
|
659
|
-
}
|
|
660
|
-
};
|
|
661
|
-
saveGlobalConfig(updatedConfig);
|
|
662
|
-
import("./model-FV3JDJKH.js").then(({ reloadModelManager }) => {
|
|
663
|
-
reloadModelManager();
|
|
664
|
-
});
|
|
665
|
-
}
|
|
666
|
-
function isGPT5ModelName(modelName) {
|
|
667
|
-
if (!modelName || typeof modelName !== "string") return false;
|
|
668
|
-
const lowerName = modelName.toLowerCase();
|
|
669
|
-
return lowerName.startsWith("gpt-5") || lowerName.includes("gpt-5");
|
|
670
|
-
}
|
|
671
|
-
function validateAndRepairGPT5Profile(profile) {
|
|
672
|
-
const isGPT5 = isGPT5ModelName(profile.modelName);
|
|
673
|
-
const now = Date.now();
|
|
674
|
-
const repairedProfile = { ...profile };
|
|
675
|
-
let wasRepaired = false;
|
|
676
|
-
if (isGPT5 !== profile.isGPT5) {
|
|
677
|
-
repairedProfile.isGPT5 = isGPT5;
|
|
678
|
-
wasRepaired = true;
|
|
679
|
-
}
|
|
680
|
-
if (isGPT5) {
|
|
681
|
-
const validReasoningEfforts = ["minimal", "low", "medium", "high"];
|
|
682
|
-
if (!profile.reasoningEffort || !validReasoningEfforts.includes(profile.reasoningEffort)) {
|
|
683
|
-
repairedProfile.reasoningEffort = "medium";
|
|
684
|
-
wasRepaired = true;
|
|
685
|
-
debug.state("GPT5_CONFIG_AUTO_REPAIR", {
|
|
686
|
-
model: profile.modelName,
|
|
687
|
-
field: "reasoningEffort",
|
|
688
|
-
value: "medium"
|
|
689
|
-
});
|
|
690
|
-
}
|
|
691
|
-
if (profile.contextLength < 128e3) {
|
|
692
|
-
repairedProfile.contextLength = 128e3;
|
|
693
|
-
wasRepaired = true;
|
|
694
|
-
debug.state("GPT5_CONFIG_AUTO_REPAIR", {
|
|
695
|
-
model: profile.modelName,
|
|
696
|
-
field: "contextLength",
|
|
697
|
-
value: 128e3
|
|
698
|
-
});
|
|
699
|
-
}
|
|
700
|
-
if (profile.maxTokens < 4e3) {
|
|
701
|
-
repairedProfile.maxTokens = 8192;
|
|
702
|
-
wasRepaired = true;
|
|
703
|
-
debug.state("GPT5_CONFIG_AUTO_REPAIR", {
|
|
704
|
-
model: profile.modelName,
|
|
705
|
-
field: "maxTokens",
|
|
706
|
-
value: 8192
|
|
707
|
-
});
|
|
708
|
-
}
|
|
709
|
-
if (profile.provider !== "openai" && profile.provider !== "custom-openai" && profile.provider !== "azure") {
|
|
710
|
-
debug.warn("GPT5_CONFIG_UNEXPECTED_PROVIDER", {
|
|
711
|
-
model: profile.modelName,
|
|
712
|
-
provider: profile.provider,
|
|
713
|
-
expectedProviders: ["openai", "custom-openai", "azure"]
|
|
714
|
-
});
|
|
715
|
-
}
|
|
716
|
-
if (profile.modelName.includes("gpt-5") && !profile.baseURL) {
|
|
717
|
-
repairedProfile.baseURL = "https://api.openai.com/v1";
|
|
718
|
-
wasRepaired = true;
|
|
719
|
-
debug.state("GPT5_CONFIG_AUTO_REPAIR", {
|
|
720
|
-
model: profile.modelName,
|
|
721
|
-
field: "baseURL",
|
|
722
|
-
value: "https://api.openai.com/v1"
|
|
723
|
-
});
|
|
724
|
-
}
|
|
725
|
-
}
|
|
726
|
-
repairedProfile.validationStatus = wasRepaired ? "auto_repaired" : "valid";
|
|
727
|
-
repairedProfile.lastValidation = now;
|
|
728
|
-
if (wasRepaired) {
|
|
729
|
-
debug.info("GPT5_CONFIG_AUTO_REPAIRED", { model: profile.modelName });
|
|
730
|
-
}
|
|
731
|
-
return repairedProfile;
|
|
732
|
-
}
|
|
733
|
-
function validateAndRepairAllGPT5Profiles() {
|
|
734
|
-
const config = getGlobalConfig();
|
|
735
|
-
if (!config.modelProfiles) {
|
|
736
|
-
return { repaired: 0, total: 0 };
|
|
737
|
-
}
|
|
738
|
-
let repairCount = 0;
|
|
739
|
-
const repairedProfiles = config.modelProfiles.map((profile) => {
|
|
740
|
-
const repairedProfile = validateAndRepairGPT5Profile(profile);
|
|
741
|
-
if (repairedProfile.validationStatus === "auto_repaired") {
|
|
742
|
-
repairCount++;
|
|
743
|
-
}
|
|
744
|
-
return repairedProfile;
|
|
745
|
-
});
|
|
746
|
-
if (repairCount > 0) {
|
|
747
|
-
const updatedConfig = {
|
|
748
|
-
...config,
|
|
749
|
-
modelProfiles: repairedProfiles
|
|
750
|
-
};
|
|
751
|
-
saveGlobalConfig(updatedConfig);
|
|
752
|
-
debug.info("GPT5_CONFIG_AUTO_REPAIR_SUMMARY", {
|
|
753
|
-
repaired: repairCount,
|
|
754
|
-
total: config.modelProfiles.length
|
|
755
|
-
});
|
|
756
|
-
}
|
|
757
|
-
return { repaired: repairCount, total: config.modelProfiles.length };
|
|
758
|
-
}
|
|
759
|
-
function getGPT5ConfigRecommendations(modelName) {
|
|
760
|
-
if (!isGPT5ModelName(modelName)) {
|
|
761
|
-
return {};
|
|
762
|
-
}
|
|
763
|
-
const recommendations = {
|
|
764
|
-
contextLength: 128e3,
|
|
765
|
-
maxTokens: 8192,
|
|
766
|
-
reasoningEffort: "medium",
|
|
767
|
-
isGPT5: true
|
|
768
|
-
};
|
|
769
|
-
if (modelName.includes("gpt-5-mini")) {
|
|
770
|
-
recommendations.maxTokens = 4096;
|
|
771
|
-
recommendations.reasoningEffort = "low";
|
|
772
|
-
} else if (modelName.includes("gpt-5-nano")) {
|
|
773
|
-
recommendations.maxTokens = 2048;
|
|
774
|
-
recommendations.reasoningEffort = "minimal";
|
|
775
|
-
}
|
|
776
|
-
return recommendations;
|
|
777
|
-
}
|
|
778
|
-
function createGPT5ModelProfile(name, modelName, apiKey, baseURL, provider = "openai") {
|
|
779
|
-
const recommendations = getGPT5ConfigRecommendations(modelName);
|
|
780
|
-
const profile = {
|
|
781
|
-
name,
|
|
782
|
-
provider,
|
|
783
|
-
modelName,
|
|
784
|
-
baseURL: baseURL || "https://api.openai.com/v1",
|
|
785
|
-
apiKey,
|
|
786
|
-
maxTokens: recommendations.maxTokens || 8192,
|
|
787
|
-
contextLength: recommendations.contextLength || 128e3,
|
|
788
|
-
reasoningEffort: recommendations.reasoningEffort || "medium",
|
|
789
|
-
isActive: true,
|
|
790
|
-
createdAt: Date.now(),
|
|
791
|
-
isGPT5: true,
|
|
792
|
-
validationStatus: "valid",
|
|
793
|
-
lastValidation: Date.now()
|
|
794
|
-
};
|
|
795
|
-
return profile;
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
export {
|
|
799
|
-
isAutoUpdaterStatus,
|
|
800
|
-
GLOBAL_CONFIG_KEYS,
|
|
801
|
-
isGlobalConfigKey,
|
|
802
|
-
PROJECT_CONFIG_KEYS,
|
|
803
|
-
isProjectConfigKey,
|
|
804
|
-
DEFAULT_GLOBAL_CONFIG,
|
|
805
|
-
safeParseJSON,
|
|
806
|
-
checkHasTrustDialogAccepted,
|
|
807
|
-
saveGlobalConfig,
|
|
808
|
-
getGlobalConfig,
|
|
809
|
-
normalizeApiKeyForConfig,
|
|
810
|
-
getCustomApiKeyStatus,
|
|
811
|
-
enableConfigs,
|
|
812
|
-
getCurrentProjectConfig,
|
|
813
|
-
saveCurrentProjectConfig,
|
|
814
|
-
isAutoUpdaterDisabled,
|
|
815
|
-
TEST_MCPRC_CONFIG_FOR_TESTING,
|
|
816
|
-
clearMcprcConfigForTesting,
|
|
817
|
-
addMcprcServerForTesting,
|
|
818
|
-
removeMcprcServerForTesting,
|
|
819
|
-
getMcprcConfig,
|
|
820
|
-
getProjectMcpServerDefinitions,
|
|
821
|
-
getOrCreateUserID,
|
|
822
|
-
getConfigForCLI,
|
|
823
|
-
setConfigForCLI,
|
|
824
|
-
deleteConfigForCLI,
|
|
825
|
-
listConfigForCLI,
|
|
826
|
-
getOpenAIApiKey,
|
|
827
|
-
getAnthropicApiKey,
|
|
828
|
-
setAllPointersToModel,
|
|
829
|
-
setModelPointer,
|
|
830
|
-
isGPT5ModelName,
|
|
831
|
-
validateAndRepairGPT5Profile,
|
|
832
|
-
validateAndRepairAllGPT5Profiles,
|
|
833
|
-
getGPT5ConfigRecommendations,
|
|
834
|
-
createGPT5ModelProfile
|
|
835
|
-
};
|