@shareai-lab/kode 2.0.2 → 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-XP3CFN6F.js → chunks/agentsValidate-PEWMYN4Q.js} +97 -69
- package/dist/chunks/agentsValidate-PEWMYN4Q.js.map +7 -0
- package/dist/{ask-3G5H5KD5.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-EH34V7CY.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-K2MI4TPB.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-4GAIJGRH.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-54DNHKOD.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-BHGTA6JQ.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-OZNRLY3E.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-2PMO2FS2.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-NQLEUHMS.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-2KWKUXLT.js → chunks/chunk-HRJ3ICQK.js} +59 -55
- package/dist/chunks/chunk-HRJ3ICQK.js.map +7 -0
- package/dist/{chunk-ZQU3TXLC.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-IE2CG2TV.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-SRZZFAS7.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-SDGKPKDK.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-G6I7XROM.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-3TXNP6HH.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-QYFKRZQC.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-6ZMBCL23.js → chunks/config-25HRTPSP.js} +48 -10
- package/dist/chunks/cost-tracker-Z2UZT2J5.js +28 -0
- package/dist/{customCommands-DNEJS3ZU.js → chunks/customCommands-TYMYZRG5.js} +11 -8
- package/dist/chunks/engine-MRVF6FK6.js +39 -0
- package/dist/{env-OFAXZ3XG.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-GRWG3SPE.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-TDMXFWSO.js → chunks/kodeHooks-RVKYRJHG.js} +11 -9
- package/dist/{llm-XVXWYOHK.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-YD7YXYGF.js → chunks/mentionProcessor-RJW5UPJD.js} +46 -16
- package/dist/chunks/mentionProcessor-RJW5UPJD.js.map +7 -0
- package/dist/{messages-OFUJSPRV.js → chunks/messages-EEWWLPHN.js} +2 -6
- package/dist/chunks/model-5TIEKQPD.js +37 -0
- package/dist/{openai-5G5D5Q4B.js → chunks/openai-XXK3YZG4.js} +13 -10
- package/dist/{outputStyles-HLDXFQK3.js → chunks/outputStyles-FAJTXN2A.js} +6 -9
- package/dist/chunks/permissions-HO7INPWM.js +27 -0
- package/dist/{pluginRuntime-FPTKK6NY.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-PSNKDINM.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-SRV2INSL.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-GIU4ZIXM.js +0 -42
- package/dist/acp-H3VJ77YG.js +0 -1357
- package/dist/acp-H3VJ77YG.js.map +0 -7
- package/dist/agentsValidate-XP3CFN6F.js.map +0 -7
- package/dist/ask-3G5H5KD5.js.map +0 -7
- package/dist/autoUpdater-DNRMJWFQ.js +0 -17
- package/dist/chunk-2KWKUXLT.js.map +0 -7
- package/dist/chunk-2PMO2FS2.js.map +0 -7
- package/dist/chunk-3TXNP6HH.js.map +0 -7
- package/dist/chunk-4GAIJGRH.js.map +0 -7
- package/dist/chunk-4RTX4AG4.js.map +0 -7
- package/dist/chunk-54DNHKOD.js.map +0 -7
- package/dist/chunk-67PY5IX6.js +0 -34
- package/dist/chunk-67PY5IX6.js.map +0 -7
- package/dist/chunk-6DRDLOLP.js +0 -2613
- package/dist/chunk-6DRDLOLP.js.map +0 -7
- package/dist/chunk-7CQVZNQV.js +0 -1609
- package/dist/chunk-7CQVZNQV.js.map +0 -7
- package/dist/chunk-ABLVTESJ.js.map +0 -7
- package/dist/chunk-AIMIPK4B.js +0 -835
- package/dist/chunk-AIMIPK4B.js.map +0 -7
- package/dist/chunk-BHGTA6JQ.js.map +0 -7
- package/dist/chunk-CIG63V4E.js +0 -72
- package/dist/chunk-CIG63V4E.js.map +0 -7
- package/dist/chunk-E6YNABER.js.map +0 -7
- package/dist/chunk-EH34V7CY.js.map +0 -7
- package/dist/chunk-EZXMVTDU.js.map +0 -7
- package/dist/chunk-FH5CHM6L.js +0 -148
- package/dist/chunk-FH5CHM6L.js.map +0 -7
- package/dist/chunk-G6I7XROM.js.map +0 -7
- package/dist/chunk-HN4E4UUQ.js.map +0 -7
- package/dist/chunk-HSPVVDIW.js +0 -30198
- package/dist/chunk-HSPVVDIW.js.map +0 -7
- package/dist/chunk-IE2CG2TV.js.map +0 -7
- package/dist/chunk-K2MI4TPB.js.map +0 -7
- package/dist/chunk-MN77D2F7.js +0 -2931
- package/dist/chunk-MN77D2F7.js.map +0 -7
- package/dist/chunk-NQLEUHMS.js.map +0 -7
- package/dist/chunk-OIFQB3S4.js +0 -515
- package/dist/chunk-OIFQB3S4.js.map +0 -7
- package/dist/chunk-OWTG2W3A.js +0 -164
- package/dist/chunk-OWTG2W3A.js.map +0 -7
- package/dist/chunk-OZNRLY3E.js.map +0 -7
- package/dist/chunk-QYFKRZQC.js.map +0 -7
- package/dist/chunk-S6HRABTA.js.map +0 -7
- package/dist/chunk-SDGKPKDK.js.map +0 -7
- package/dist/chunk-SRZZFAS7.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-VBXVYQYY.js +0 -145
- package/dist/chunk-VBXVYQYY.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-Z33T5YN5.js +0 -654
- package/dist/chunk-Z33T5YN5.js.map +0 -7
- package/dist/chunk-ZQU3TXLC.js.map +0 -7
- package/dist/cli-SRV2INSL.js.map +0 -7
- package/dist/commands-TWH6PGVG.js +0 -46
- package/dist/context-JQIOOI4W.js +0 -30
- package/dist/costTracker-6SL26FDB.js +0 -19
- package/dist/kodeAgentSessionLoad-6N27AC5K.js +0 -18
- package/dist/kodeAgentSessionResume-HUSAEO24.js +0 -16
- package/dist/kodeAgentStreamJson-NXFN7TXH.js +0 -13
- package/dist/kodeAgentStreamJsonSession-GRWG3SPE.js.map +0 -7
- package/dist/kodeAgentStructuredStdio-HGWJT7CU.js +0 -10
- package/dist/llm-XVXWYOHK.js.map +0 -7
- package/dist/llmLazy-7TD5N7XP.js +0 -15
- package/dist/loader-AUXIJTY6.js +0 -28
- package/dist/mcp-BXJ3K7NZ.js +0 -49
- package/dist/mentionProcessor-YD7YXYGF.js.map +0 -7
- package/dist/model-KPYCXWBK.js +0 -30
- package/dist/pluginRuntime-FPTKK6NY.js.map +0 -7
- package/dist/pluginValidation-DSFXZ4GF.js +0 -17
- package/dist/prompts-LWLAJRS2.js +0 -48
- package/dist/query-HVPWL27C.js +0 -50
- package/dist/responsesStreaming-AW344PQO.js +0 -10
- package/dist/ripgrep-YOPCY2GO.js +0 -17
- package/dist/state-KNRWP3FO.js +0 -16
- package/dist/theme-7S2QN2FO.js +0 -14
- package/dist/toolPermissionSettings-GPOBH4IV.js +0 -18
- package/dist/tools-FZU2FZBD.js +0 -47
- package/dist/userInput-VHNBN2MW.js +0 -311
- package/dist/userInput-VHNBN2MW.js.map +0 -7
- package/dist/uuid-QN2CNKKN.js +0 -9
- /package/dist/{REPL-GIU4ZIXM.js.map → chunks/Doctor-M3J7GRTJ.js.map} +0 -0
- /package/dist/{autoUpdater-DNRMJWFQ.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-TWH6PGVG.js.map → chunks/agentLoader-FCRG3TFJ.js.map} +0 -0
- /package/dist/{config-6ZMBCL23.js.map → chunks/autoUpdater-CNESBOKO.js.map} +0 -0
- /package/dist/{context-JQIOOI4W.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-DNEJS3ZU.js.map → chunks/chunk-GCQCAXJZ.js.map} +0 -0
- /package/dist/{env-OFAXZ3XG.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-6N27AC5K.js.map → chunks/config-25HRTPSP.js.map} +0 -0
- /package/dist/{kodeAgentSessionResume-HUSAEO24.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-TDMXFWSO.js.map → chunks/env-TJ5NOBEB.js.map} +0 -0
- /package/dist/{llmLazy-7TD5N7XP.js.map → chunks/kodeAgentSessionId-VTNISJ2L.js.map} +0 -0
- /package/dist/{loader-AUXIJTY6.js.map → chunks/kodeAgentSessionLoad-YB2RKBGJ.js.map} +0 -0
- /package/dist/{mcp-BXJ3K7NZ.js.map → chunks/kodeAgentSessionResume-DZSIVKVA.js.map} +0 -0
- /package/dist/{messages-OFUJSPRV.js.map → chunks/kodeAgentStreamJson-X5PLS2S6.js.map} +0 -0
- /package/dist/{model-KPYCXWBK.js.map → chunks/kodeHooks-RVKYRJHG.js.map} +0 -0
- /package/dist/{openai-5G5D5Q4B.js.map → chunks/llmLazy-ZUSSE3ZA.js.map} +0 -0
- /package/dist/{outputStyles-HLDXFQK3.js.map → chunks/messages-EEWWLPHN.js.map} +0 -0
- /package/dist/{pluginValidation-DSFXZ4GF.js.map → chunks/model-5TIEKQPD.js.map} +0 -0
- /package/dist/{prompts-LWLAJRS2.js.map → chunks/openai-XXK3YZG4.js.map} +0 -0
- /package/dist/{query-HVPWL27C.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-YOPCY2GO.js.map → chunks/pluginValidation-DAM7WRTC.js.map} +0 -0
- /package/dist/{skillMarketplace-PSNKDINM.js.map → chunks/registry-XYJXMOA5.js.map} +0 -0
- /package/dist/{state-KNRWP3FO.js.map → chunks/responsesStreaming-JNGE2P3D.js.map} +0 -0
- /package/dist/{theme-7S2QN2FO.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-GPOBH4IV.js.map → chunks/src-OROQIWP3.js.map} +0 -0
- /package/dist/{tools-FZU2FZBD.js.map → chunks/theme-YBJUIMWK.js.map} +0 -0
- /package/dist/{uuid-QN2CNKKN.js.map → chunks/toolPermissionContext-MOCTRR7N.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../packages/config/src/schema.ts", "../../packages/config/src/paths.ts", "../../packages/config/src/errors.ts", "../../packages/config/src/loader.ts", "../../packages/config/src/json.ts", "../../packages/config/src/debugLogger.ts", "../../packages/config/src/cwd.ts", "../../packages/config/src/models/migrations.ts", "../../packages/config/src/mcp.ts", "../../packages/config/src/cli.ts", "../../packages/config/src/connectionTest/responsesAPI.ts", "../../packages/config/src/connectionTest/chatCompletions.ts", "../../packages/config/src/connectionTest.ts", "../../packages/config/src/models/gpt5.ts", "../../packages/config/src/models/pointers.ts", "../../packages/config/src/sources.ts", "../../packages/config/src/files.ts", "../../packages/config/src/local.ts", "../../packages/config/src/modelYaml.ts"],
|
|
4
|
+
"sourcesContent": ["import { homedir } from 'node:os'\n\nexport type ThemeNames =\n | 'dark'\n | 'light'\n | 'light-daltonized'\n | 'dark-daltonized'\n\nexport type McpStdioServerConfig = {\n type?: 'stdio'\n command: string\n args: string[]\n env?: Record<string, string>\n}\n\nexport type McpSSEServerConfig = {\n type: 'sse'\n url: string\n headers?: Record<string, string>\n headersHelper?: string\n}\n\nexport type McpHttpServerConfig = {\n type: 'http'\n url: string\n headers?: Record<string, string>\n headersHelper?: string\n}\n\nexport type McpSSEIdeServerConfig = {\n type: 'sse-ide'\n url: string\n ideName: string\n ideRunningInWindows?: boolean\n headers?: Record<string, string>\n headersHelper?: string\n}\n\nexport type McpWsServerConfig = {\n type: 'ws'\n url: string\n}\n\nexport type McpWsIdeServerConfig = {\n type: 'ws-ide'\n url: string\n ideName: string\n authToken?: string\n ideRunningInWindows?: boolean\n}\n\nexport type McpServerConfig =\n | McpStdioServerConfig\n | McpSSEServerConfig\n | McpHttpServerConfig\n | McpSSEIdeServerConfig\n | McpWsServerConfig\n | McpWsIdeServerConfig\n\nexport type ProjectConfig = {\n allowedTools: string[]\n deniedTools?: string[]\n askedTools?: string[]\n context: Record<string, string>\n contextFiles?: string[]\n history: string[]\n dontCrawlDirectory?: boolean\n enableArchitectTool?: boolean\n mcpContextUris: string[]\n mcpServers?: Record<string, McpServerConfig>\n approvedMcprcServers?: string[]\n rejectedMcprcServers?: string[]\n lastAPIDuration?: number\n lastCost?: number\n lastDuration?: number\n lastSessionId?: string\n exampleFiles?: string[]\n exampleFilesGeneratedAt?: number\n hasTrustDialogAccepted?: boolean\n hasCompletedProjectOnboarding?: boolean\n}\n\nexport const DEFAULT_PROJECT_CONFIG: ProjectConfig = {\n allowedTools: [],\n deniedTools: [],\n askedTools: [],\n context: {},\n history: [],\n dontCrawlDirectory: false,\n enableArchitectTool: false,\n mcpContextUris: [],\n mcpServers: {},\n approvedMcprcServers: [],\n rejectedMcprcServers: [],\n hasTrustDialogAccepted: false,\n}\n\nexport function defaultConfigForProject(projectPath: string): ProjectConfig {\n const config = { ...DEFAULT_PROJECT_CONFIG }\n if (projectPath === homedir()) {\n config.dontCrawlDirectory = true\n }\n return config\n}\n\nexport type AutoUpdaterStatus =\n | 'disabled'\n | 'enabled'\n | 'no_permissions'\n | 'not_configured'\n\nexport function isAutoUpdaterStatus(value: string): value is AutoUpdaterStatus {\n return ['disabled', 'enabled', 'no_permissions', 'not_configured'].includes(\n value as AutoUpdaterStatus,\n )\n}\n\nexport type NotificationChannel =\n | 'iterm2'\n | 'terminal_bell'\n | 'iterm2_with_bell'\n | 'notifications_disabled'\n\nexport type ProviderType =\n | 'anthropic'\n | 'openai'\n | 'mistral'\n | 'deepseek'\n | 'kimi'\n | 'qwen'\n | 'glm'\n | 'minimax'\n | 'baidu-qianfan'\n | 'siliconflow'\n | 'bigdream'\n | 'opendev'\n | 'xai'\n | 'groq'\n | 'gemini'\n | 'ollama'\n | 'azure'\n | 'custom'\n | 'custom-openai'\n | (string & {})\n\nexport type ModelProfile = {\n name: string\n provider: ProviderType\n modelName: string\n baseURL?: string\n apiKey: string\n maxTokens: number\n contextLength: number\n reasoningEffort?: 'low' | 'medium' | 'high' | 'minimal' | string\n isActive: boolean\n createdAt: number\n lastUsed?: number\n isGPT5?: boolean\n validationStatus?: 'valid' | 'needs_repair' | 'auto_repaired'\n lastValidation?: number\n}\n\nexport type ModelPointerType = 'main' | 'task' | 'compact' | 'quick'\n\nexport type ModelPointers = {\n main: string\n task: string\n compact: string\n quick: string\n}\n\nexport type AccountInfo = {\n accountUuid: string\n emailAddress: string\n organizationUuid?: string\n}\n\nexport type GlobalConfig = {\n projects?: Record<string, ProjectConfig>\n numStartups: number\n autoUpdaterStatus?: AutoUpdaterStatus\n userID?: string\n theme: ThemeNames\n hasCompletedOnboarding?: boolean\n lastPlanModeUse?: number\n lastOnboardingVersion?: string\n lastReleaseNotesSeen?: string\n mcpServers?: Record<string, McpServerConfig>\n preferredNotifChannel: NotificationChannel\n verbose: boolean\n customApiKeyResponses?: {\n approved?: string[]\n rejected?: string[]\n }\n primaryProvider?: ProviderType\n maxTokens?: number\n hasAcknowledgedCostThreshold?: boolean\n oauthAccount?: AccountInfo\n proxy?: string\n stream?: boolean\n modelProfiles?: ModelProfile[]\n modelPointers?: ModelPointers\n defaultModelName?: string\n lastDismissedUpdateVersion?: string\n}\n\nexport const DEFAULT_GLOBAL_CONFIG: GlobalConfig = {\n numStartups: 0,\n autoUpdaterStatus: 'not_configured',\n theme: 'dark',\n preferredNotifChannel: 'iterm2',\n verbose: false,\n primaryProvider: 'anthropic',\n customApiKeyResponses: {\n approved: [],\n rejected: [],\n },\n stream: true,\n modelProfiles: [],\n modelPointers: {\n main: '',\n task: '',\n compact: '',\n quick: '',\n },\n lastDismissedUpdateVersion: undefined,\n}\n\nexport const GLOBAL_CONFIG_KEYS = [\n 'autoUpdaterStatus',\n 'theme',\n 'hasCompletedOnboarding',\n 'lastOnboardingVersion',\n 'lastReleaseNotesSeen',\n 'verbose',\n 'customApiKeyResponses',\n 'primaryProvider',\n 'preferredNotifChannel',\n 'maxTokens',\n] as const\n\nexport type GlobalConfigKey = (typeof GLOBAL_CONFIG_KEYS)[number]\n\nexport function isGlobalConfigKey(key: string): key is GlobalConfigKey {\n return GLOBAL_CONFIG_KEYS.includes(key as GlobalConfigKey)\n}\n\nexport const PROJECT_CONFIG_KEYS = [\n 'dontCrawlDirectory',\n 'enableArchitectTool',\n 'hasTrustDialogAccepted',\n 'hasCompletedProjectOnboarding',\n] as const\n\nexport type ProjectConfigKey = (typeof PROJECT_CONFIG_KEYS)[number]\n\nexport function isProjectConfigKey(key: string): key is ProjectConfigKey {\n return PROJECT_CONFIG_KEYS.includes(key as ProjectConfigKey)\n}\n", "import { join } from 'node:path'\nimport { homedir } from 'node:os'\n\nconst CONFIG_BASE_DIR = '.kode'\nconst CONFIG_FILE = '.kode.json'\n\nexport function getKodeBaseDir(): string {\n return (\n process.env.KODE_CONFIG_DIR ??\n process.env.CLAUDE_CONFIG_DIR ??\n join(homedir(), CONFIG_BASE_DIR)\n )\n}\n\nexport function getGlobalConfigFilePath(): string {\n return process.env.KODE_CONFIG_DIR || process.env.CLAUDE_CONFIG_DIR\n ? join(getKodeBaseDir(), 'config.json')\n : join(homedir(), CONFIG_FILE)\n}\n", "export class ConfigParseError extends Error {\n filePath: string\n defaultConfig: unknown\n\n constructor(message: string, filePath: string, defaultConfig: unknown) {\n super(message)\n this.name = 'ConfigParseError'\n this.filePath = filePath\n this.defaultConfig = defaultConfig\n }\n}\n", "import { randomBytes } from 'node:crypto'\nimport { existsSync, readFileSync, writeFileSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nimport { cloneDeep } from 'lodash-es'\n\nimport { getGlobalConfigFilePath } from './paths'\nimport { ConfigParseError } from './errors'\nimport { safeParseJSON } from './json'\nimport { debug as debugLogger } from './debugLogger'\nimport { getCwd } from './cwd'\n\nimport type { GlobalConfig, ProjectConfig } from './schema'\nimport { DEFAULT_GLOBAL_CONFIG, defaultConfigForProject } from './schema'\nimport { migrateModelProfilesRemoveId } from './models/migrations'\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string')\n}\n\nfunction normalizeStringArray(value: unknown): string[] | undefined {\n if (isStringArray(value)) return value\n if (typeof value === 'string') {\n const parsed = safeParseJSON(value)\n if (isStringArray(parsed)) return parsed\n }\n return undefined\n}\n\nfunction normalizeLegacyProjectConfig(\n projectConfig: ProjectConfig,\n): ProjectConfig {\n const raw: unknown = projectConfig\n if (!isRecord(raw)) return projectConfig\n\n const allowedTools =\n normalizeStringArray(raw['allowedTools']) ?? projectConfig.allowedTools\n const deniedTools =\n normalizeStringArray(raw['deniedTools']) ?? projectConfig.deniedTools\n const askedTools =\n normalizeStringArray(raw['askedTools']) ?? projectConfig.askedTools\n\n return { ...projectConfig, allowedTools, deniedTools, askedTools }\n}\n\nfunction saveConfig<A extends object>(\n file: string,\n config: A,\n defaultConfig: A,\n): void {\n const filteredConfig = Object.fromEntries(\n Object.entries(config).filter(\n ([key, value]) =>\n JSON.stringify(value) !== JSON.stringify(defaultConfig[key as keyof A]),\n ),\n )\n\n try {\n writeFileSync(file, JSON.stringify(filteredConfig, null, 2), 'utf-8')\n } catch (error) {\n const err = error as NodeJS.ErrnoException\n if (err.code === 'EACCES' || err.code === 'EPERM' || err.code === 'EROFS') {\n debugLogger.state('CONFIG_SAVE_SKIPPED', {\n file,\n reason: String(err.code),\n })\n return\n }\n throw error\n }\n}\n\nfunction getConfig<A>(\n file: string,\n defaultConfig: A,\n throwOnInvalid?: boolean,\n): A {\n debugLogger.state('CONFIG_LOAD_START', {\n file,\n fileExists: String(existsSync(file)),\n throwOnInvalid: String(Boolean(throwOnInvalid)),\n })\n\n if (!existsSync(file)) {\n debugLogger.state('CONFIG_LOAD_DEFAULT', {\n file,\n reason: 'file_not_exists',\n defaultConfigKeys: Object.keys(defaultConfig as object).join(', '),\n })\n return cloneDeep(defaultConfig)\n }\n\n try {\n const fileContent = readFileSync(file, 'utf-8')\n debugLogger.state('CONFIG_FILE_READ', {\n file,\n contentLength: String(fileContent.length),\n contentPreview:\n fileContent.substring(0, 100) + (fileContent.length > 100 ? '...' : ''),\n })\n\n try {\n const parsedConfig = JSON.parse(fileContent) as unknown\n debugLogger.state('CONFIG_JSON_PARSED', {\n file,\n parsedKeys: isRecord(parsedConfig)\n ? Object.keys(parsedConfig).join(', ')\n : '',\n })\n\n const finalConfig = {\n ...cloneDeep(defaultConfig),\n ...(isRecord(parsedConfig) ? parsedConfig : {}),\n }\n\n debugLogger.state('CONFIG_LOAD_SUCCESS', {\n file,\n finalConfigKeys: Object.keys(finalConfig as object).join(', '),\n })\n\n return finalConfig as A\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n debugLogger.error('CONFIG_JSON_PARSE_ERROR', {\n file,\n errorMessage: message,\n errorType:\n error instanceof Error ? error.constructor.name : typeof error,\n contentLength: String(fileContent.length),\n })\n throw new ConfigParseError(message, file, defaultConfig)\n }\n } catch (error: unknown) {\n if (error instanceof ConfigParseError && throwOnInvalid) {\n debugLogger.error('CONFIG_PARSE_ERROR_RETHROWN', {\n file,\n throwOnInvalid: String(Boolean(throwOnInvalid)),\n errorMessage: error.message,\n })\n throw error\n }\n\n debugLogger.warn('CONFIG_FALLBACK_TO_DEFAULT', {\n file,\n errorType: error instanceof Error ? error.constructor.name : typeof error,\n errorMessage: error instanceof Error ? error.message : String(error),\n action: 'using_default_config',\n })\n\n return cloneDeep(defaultConfig)\n }\n}\n\nconst TEST_GLOBAL_CONFIG_FOR_TESTING: GlobalConfig = {\n ...DEFAULT_GLOBAL_CONFIG,\n autoUpdaterStatus: 'disabled',\n}\nconst TEST_PROJECT_CONFIG_FOR_TESTING: ProjectConfig = {\n ...defaultConfigForProject(getCwd()),\n}\n\nexport function enableConfigs(): void {\n getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG, true)\n}\n\nexport function saveGlobalConfig(config: GlobalConfig): void {\n if (process.env.NODE_ENV === 'test') {\n Object.assign(TEST_GLOBAL_CONFIG_FOR_TESTING, config)\n return\n }\n\n saveConfig(\n getGlobalConfigFilePath(),\n {\n ...config,\n projects: getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG)\n .projects,\n },\n DEFAULT_GLOBAL_CONFIG,\n )\n}\n\nexport function getGlobalConfig(): GlobalConfig {\n if (process.env.NODE_ENV === 'test') return TEST_GLOBAL_CONFIG_FOR_TESTING\n const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG)\n return migrateModelProfilesRemoveId(config)\n}\n\nexport function checkHasTrustDialogAccepted(): boolean {\n let currentPath = getCwd()\n const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG)\n\n while (true) {\n const projectConfig = config.projects?.[currentPath]\n if (projectConfig?.hasTrustDialogAccepted) return true\n\n const parentPath = resolve(currentPath, '..')\n if (parentPath === currentPath) break\n currentPath = parentPath\n }\n\n return false\n}\n\nexport function getCurrentProjectConfig(): ProjectConfig {\n if (process.env.NODE_ENV === 'test') return TEST_PROJECT_CONFIG_FOR_TESTING\n\n const absolutePath = resolve(getCwd())\n const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG)\n if (!config.projects) return defaultConfigForProject(absolutePath)\n\n const projectConfig =\n config.projects[absolutePath] ?? defaultConfigForProject(absolutePath)\n return normalizeLegacyProjectConfig(projectConfig)\n}\n\nexport function saveCurrentProjectConfig(projectConfig: ProjectConfig): void {\n if (process.env.NODE_ENV === 'test') {\n Object.assign(TEST_PROJECT_CONFIG_FOR_TESTING, projectConfig)\n return\n }\n\n const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG)\n saveConfig(\n getGlobalConfigFilePath(),\n {\n ...config,\n projects: {\n ...config.projects,\n [resolve(getCwd())]: projectConfig,\n },\n },\n DEFAULT_GLOBAL_CONFIG,\n )\n}\n\nexport async function isAutoUpdaterDisabled(): Promise<boolean> {\n const status = getGlobalConfig().autoUpdaterStatus\n return status !== 'enabled'\n}\n\nexport function getOrCreateUserID(): string {\n const config = getGlobalConfig()\n if (config.userID) return config.userID\n\n const userID = randomBytes(32).toString('hex')\n saveGlobalConfig({ ...config, userID })\n return userID\n}\n\nexport function normalizeApiKeyForConfig(apiKey: string): string {\n return apiKey.slice(-20)\n}\n\nexport function getCustomApiKeyStatus(\n truncatedApiKey: string,\n): 'approved' | 'rejected' | 'new' {\n const config = getGlobalConfig()\n if (config.customApiKeyResponses?.approved?.includes(truncatedApiKey)) {\n return 'approved'\n }\n if (config.customApiKeyResponses?.rejected?.includes(truncatedApiKey)) {\n return 'rejected'\n }\n return 'new'\n}\n", "export function safeParseJSON(value: string): unknown {\n try {\n return JSON.parse(value)\n } catch {\n return null\n }\n}\n", "function shouldLog(): boolean {\n const enabled =\n process.env.KODE_DEBUG_CONFIG ??\n process.env.KODE_DEBUG ??\n process.env.DEBUG ??\n ''\n return ['1', 'true', 'yes', 'on'].includes(\n String(enabled).trim().toLowerCase(),\n )\n}\n\nfunction write(\n level: string,\n event: string,\n data?: Record<string, unknown>,\n): void {\n if (!shouldLog()) return\n const suffix = data ? ` ${JSON.stringify(data)}` : ''\n // eslint-disable-next-line no-console\n console.log(`[config:${level}] ${event}${suffix}`)\n}\n\nexport const debug = {\n state(event: string, data?: Record<string, unknown>): void {\n write('state', event, data)\n },\n info(event: string, data?: Record<string, unknown>): void {\n write('info', event, data)\n },\n api(event: string, data?: Record<string, unknown>): void {\n write('api', event, data)\n },\n warn(event: string, data?: Record<string, unknown>): void {\n write('warn', event, data)\n },\n error(event: string, data?: Record<string, unknown>): void {\n write('error', event, data)\n },\n}\n", "import { BunShell } from '#runtime/shell'\n\nexport function getCwd(): string {\n return BunShell.getInstance().pwd()\n}\n", "import type { GlobalConfig, ModelPointers, ModelProfile } from '../schema'\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction readString(\n record: Record<string, unknown> | null,\n key: string,\n): string {\n if (!record) return ''\n const value = record[key]\n return typeof value === 'string' ? value : ''\n}\n\nexport function migrateModelProfilesRemoveId(\n config: GlobalConfig,\n): GlobalConfig {\n if (!config.modelProfiles || config.modelProfiles.length === 0) return config\n\n const idToModelNameMap = new Map<string, string>()\n const migratedProfiles: ModelProfile[] = config.modelProfiles.map(profile => {\n const raw: unknown = profile\n if (!isRecord(raw)) return profile\n\n const maybeId = raw['id']\n if (typeof maybeId === 'string' && profile.modelName) {\n idToModelNameMap.set(maybeId, profile.modelName)\n }\n\n const { id: _ignored, ...rest } = raw\n return rest as unknown as ModelProfile\n })\n\n const migratedPointers: ModelPointers = {\n main: '',\n task: '',\n compact: '',\n quick: '',\n }\n\n const pointersRaw: unknown = config.modelPointers\n const pointers = isRecord(pointersRaw) ? pointersRaw : null\n\n const rawMain = readString(pointers, 'main')\n const rawTask = readString(pointers, 'task')\n const rawQuick = readString(pointers, 'quick')\n const rawCompact =\n readString(pointers, 'compact') || readString(pointers, 'reasoning')\n\n if (rawMain) migratedPointers.main = idToModelNameMap.get(rawMain) ?? rawMain\n if (rawTask) migratedPointers.task = idToModelNameMap.get(rawTask) ?? rawTask\n if (rawCompact)\n migratedPointers.compact = idToModelNameMap.get(rawCompact) ?? rawCompact\n if (rawQuick)\n migratedPointers.quick = idToModelNameMap.get(rawQuick) ?? rawQuick\n\n const configRaw: unknown = config\n const configRecord = isRecord(configRaw) ? configRaw : null\n\n const legacyDefaultModelId = readString(configRecord, 'defaultModelId')\n const legacyDefaultModelName = readString(configRecord, 'defaultModelName')\n\n let defaultModelName: string | undefined = config.defaultModelName\n if (legacyDefaultModelId) {\n defaultModelName =\n idToModelNameMap.get(legacyDefaultModelId) ?? legacyDefaultModelId\n } else if (legacyDefaultModelName) {\n defaultModelName = legacyDefaultModelName\n }\n\n if (!configRecord) {\n return {\n ...config,\n modelProfiles: migratedProfiles,\n modelPointers: migratedPointers,\n defaultModelName,\n }\n }\n\n const migratedConfig: Record<string, unknown> = { ...configRecord }\n delete migratedConfig['defaultModelId']\n delete migratedConfig['currentSelectedModelId']\n delete migratedConfig['mainAgentModelId']\n delete migratedConfig['taskToolModelId']\n\n return {\n ...(migratedConfig as unknown as GlobalConfig),\n modelProfiles: migratedProfiles,\n modelPointers: migratedPointers,\n defaultModelName,\n }\n}\n", "import { existsSync, readFileSync } from 'node:fs'\nimport { join } from 'node:path'\n\nimport { memoize } from 'lodash-es'\n\nimport { safeParseJSON } from './json'\nimport { getCwd } from './cwd'\n\nimport type { McpServerConfig } from './schema'\n\nexport const TEST_MCPRC_CONFIG_FOR_TESTING: Record<string, McpServerConfig> = {}\n\nexport function clearMcprcConfigForTesting(): void {\n if (process.env.NODE_ENV !== 'test') return\n for (const key of Object.keys(TEST_MCPRC_CONFIG_FOR_TESTING)) {\n delete TEST_MCPRC_CONFIG_FOR_TESTING[key]\n }\n}\n\nexport function addMcprcServerForTesting(\n name: string,\n server: McpServerConfig,\n): void {\n if (process.env.NODE_ENV === 'test') {\n TEST_MCPRC_CONFIG_FOR_TESTING[name] = server\n }\n}\n\nexport function removeMcprcServerForTesting(name: string): void {\n if (process.env.NODE_ENV !== 'test') return\n if (!TEST_MCPRC_CONFIG_FOR_TESTING[name]) {\n throw new Error(`No MCP server found with name: ${name} in .mcprc`)\n }\n delete TEST_MCPRC_CONFIG_FOR_TESTING[name]\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nexport const getMcprcConfig = memoize(\n (): Record<string, McpServerConfig> => {\n if (process.env.NODE_ENV === 'test') return TEST_MCPRC_CONFIG_FOR_TESTING\n\n const mcprcPath = join(getCwd(), '.mcprc')\n if (!existsSync(mcprcPath)) return {}\n\n try {\n const mcprcContent = readFileSync(mcprcPath, 'utf-8')\n const parsed = safeParseJSON(mcprcContent)\n if (isRecord(parsed)) return parsed as Record<string, McpServerConfig>\n } catch {\n // ignore\n }\n return {}\n },\n () => {\n const cwd = getCwd()\n const mcprcPath = join(cwd, '.mcprc')\n if (!existsSync(mcprcPath)) return cwd\n try {\n return `${cwd}:${readFileSync(mcprcPath, 'utf-8')}`\n } catch {\n return cwd\n }\n },\n)\n\nexport type ProjectMcpServerDefinitions = {\n servers: Record<string, McpServerConfig>\n sources: Record<string, '.mcp.json' | '.mcprc'>\n mcpJsonPath: string\n mcprcPath: string\n}\n\nfunction parseMcpServersFromMcpJson(\n value: unknown,\n): Record<string, McpServerConfig> {\n if (!isRecord(value)) return {}\n const raw = value['mcpServers']\n if (!isRecord(raw)) return {}\n return raw as Record<string, McpServerConfig>\n}\n\nfunction parseMcpServersFromMcprc(\n value: unknown,\n): Record<string, McpServerConfig> {\n if (!isRecord(value)) return {}\n const maybeNested = value['mcpServers']\n if (isRecord(maybeNested))\n return maybeNested as Record<string, McpServerConfig>\n return value as Record<string, McpServerConfig>\n}\n\nexport const getProjectMcpServerDefinitions = memoize(\n (): ProjectMcpServerDefinitions => {\n if (process.env.NODE_ENV === 'test') {\n return {\n servers: {},\n sources: {},\n mcpJsonPath: join(getCwd(), '.mcp.json'),\n mcprcPath: join(getCwd(), '.mcprc'),\n }\n }\n\n const cwd = getCwd()\n const mcpJsonPath = join(cwd, '.mcp.json')\n const mcprcPath = join(cwd, '.mcprc')\n\n let mcpJsonServers: Record<string, McpServerConfig> = {}\n let mcprcServers: Record<string, McpServerConfig> = {}\n\n if (existsSync(mcpJsonPath)) {\n try {\n const parsed = safeParseJSON(readFileSync(mcpJsonPath, 'utf-8'))\n mcpJsonServers = parseMcpServersFromMcpJson(parsed)\n } catch {}\n }\n\n if (existsSync(mcprcPath)) {\n try {\n const parsed = safeParseJSON(readFileSync(mcprcPath, 'utf-8'))\n mcprcServers = parseMcpServersFromMcprc(parsed)\n } catch {}\n }\n\n const sources: Record<string, '.mcp.json' | '.mcprc'> = {}\n for (const name of Object.keys(mcpJsonServers)) sources[name] = '.mcp.json'\n for (const name of Object.keys(mcprcServers)) sources[name] = '.mcprc'\n\n return {\n servers: { ...mcpJsonServers, ...mcprcServers },\n sources,\n mcpJsonPath,\n mcprcPath,\n }\n },\n () => {\n const cwd = getCwd()\n const mcpJsonPath = join(cwd, '.mcp.json')\n const mcprcPath = join(cwd, '.mcprc')\n\n const parts: string[] = [cwd]\n\n if (existsSync(mcpJsonPath)) {\n try {\n parts.push('mcp.json', readFileSync(mcpJsonPath, 'utf-8'))\n } catch {}\n }\n\n if (existsSync(mcprcPath)) {\n try {\n parts.push('mcprc', readFileSync(mcprcPath, 'utf-8'))\n } catch {}\n }\n\n return parts.join(':')\n },\n)\n", "import { pick } from 'lodash-es'\n\nimport type { GlobalConfig, ProjectConfig } from './schema'\nimport {\n GLOBAL_CONFIG_KEYS,\n PROJECT_CONFIG_KEYS,\n isAutoUpdaterStatus,\n isGlobalConfigKey,\n isProjectConfigKey,\n} from './schema'\nimport {\n getCurrentProjectConfig,\n getGlobalConfig,\n saveCurrentProjectConfig,\n saveGlobalConfig,\n} from './loader'\n\nexport function getConfigForCLI(key: string, global: boolean): unknown {\n if (global) {\n if (!isGlobalConfigKey(key)) {\n console.error(\n `Error: '${key}' is not a valid config key. Valid keys are: ${GLOBAL_CONFIG_KEYS.join(', ')}`,\n )\n process.exit(1)\n }\n return getGlobalConfig()[key]\n }\n\n if (!isProjectConfigKey(key)) {\n console.error(\n `Error: '${key}' is not a valid config key. Valid keys are: ${PROJECT_CONFIG_KEYS.join(', ')}`,\n )\n process.exit(1)\n }\n return getCurrentProjectConfig()[key]\n}\n\nexport function setConfigForCLI(\n key: string,\n value: unknown,\n global: boolean,\n): void {\n if (global) {\n if (!isGlobalConfigKey(key)) {\n console.error(\n `Error: Cannot set '${key}'. Only these keys can be modified: ${GLOBAL_CONFIG_KEYS.join(', ')}`,\n )\n process.exit(1)\n }\n\n if (key === 'autoUpdaterStatus' && !isAutoUpdaterStatus(String(value))) {\n console.error(\n `Error: Invalid value for autoUpdaterStatus. Must be one of: disabled, enabled, no_permissions, not_configured`,\n )\n process.exit(1)\n }\n\n const currentConfig = getGlobalConfig()\n saveGlobalConfig({\n ...currentConfig,\n [key]: value,\n } as unknown as GlobalConfig)\n } else {\n if (!isProjectConfigKey(key)) {\n console.error(\n `Error: Cannot set '${key}'. Only these keys can be modified: ${PROJECT_CONFIG_KEYS.join(', ')}. Did you mean --global?`,\n )\n process.exit(1)\n }\n const currentConfig = getCurrentProjectConfig()\n saveCurrentProjectConfig({\n ...currentConfig,\n [key]: value,\n } as unknown as ProjectConfig)\n }\n\n setTimeout(() => process.exit(0), 100)\n}\n\nexport function deleteConfigForCLI(key: string, global: boolean): void {\n if (global) {\n if (!isGlobalConfigKey(key)) {\n console.error(\n `Error: Cannot delete '${key}'. Only these keys can be modified: ${GLOBAL_CONFIG_KEYS.join(', ')}`,\n )\n process.exit(1)\n }\n const currentConfig = getGlobalConfig()\n const next: Record<string, unknown> = { ...currentConfig }\n delete next[key]\n saveGlobalConfig(next as unknown as GlobalConfig)\n return\n }\n\n if (!isProjectConfigKey(key)) {\n console.error(\n `Error: Cannot delete '${key}'. Only these keys can be modified: ${PROJECT_CONFIG_KEYS.join(', ')}. Did you mean --global?`,\n )\n process.exit(1)\n }\n const currentConfig = getCurrentProjectConfig()\n const next: Record<string, unknown> = { ...currentConfig }\n delete next[key]\n saveCurrentProjectConfig(next as unknown as ProjectConfig)\n}\n\nexport function listConfigForCLI(global: true): GlobalConfig\nexport function listConfigForCLI(global: false): ProjectConfig\nexport function listConfigForCLI(global: boolean): object {\n if (global) return pick(getGlobalConfig(), GLOBAL_CONFIG_KEYS)\n return pick(getCurrentProjectConfig(), PROJECT_CONFIG_KEYS)\n}\n\nexport function getOpenAIApiKey(): string | undefined {\n return process.env.OPENAI_API_KEY\n}\n\nexport function getAnthropicApiKey(): string {\n return process.env.ANTHROPIC_API_KEY || ''\n}\n", "import type { ConnectionTestResult, GPT5TestConfig } from './types'\nimport { debug as debugLogger } from '../debugLogger'\n\n/**\n * Test using GPT-5 Responses API\n */\nexport async function testResponsesAPI(\n config: GPT5TestConfig,\n baseURL: string,\n startTime: number,\n): Promise<ConnectionTestResult> {\n const testURL = `${baseURL.replace(/\\/+$/, '')}/responses`\n\n const testPayload = {\n model: config.model,\n input: [\n {\n role: 'user',\n content:\n 'Please respond with exactly \\\"YES\\\" (in capital letters) to confirm this connection is working.',\n },\n ],\n max_completion_tokens: Math.max(config.maxTokens || 8192, 8192),\n temperature: 1, // GPT-5 requirement\n reasoning: {\n effort: 'low', // Fast response for connection test\n },\n }\n\n const headers = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${config.apiKey}`,\n }\n\n debugLogger.api('GPT5_CONNECTION_TEST_RESPONSES_REQUEST', {\n model: config.model,\n url: testURL,\n })\n\n try {\n const response = await fetch(testURL, {\n method: 'POST',\n headers,\n body: JSON.stringify(testPayload),\n })\n\n const responseTime = Date.now() - startTime\n\n if (response.ok) {\n const data = await response.json()\n debugLogger.api('GPT5_CONNECTION_TEST_RESPONSES_RESPONSE', {\n model: config.model,\n status: response.status,\n })\n\n // Extract content from Responses API format\n let responseContent = ''\n if (data.output_text) {\n responseContent = data.output_text\n } else if (data.output && Array.isArray(data.output)) {\n // Extract from structured output format\n const messageOutput = data.output.find(\n (item: any) => item.type === 'message',\n )\n if (messageOutput && messageOutput.content) {\n const textContent = messageOutput.content.find(\n (c: any) => c.type === 'output_text',\n )\n responseContent = textContent?.text || ''\n }\n }\n\n const containsYes = responseContent.toLowerCase().includes('yes')\n\n if (containsYes) {\n return {\n success: true,\n message: '\u2705 GPT-5 Responses API connection successful',\n endpoint: '/responses',\n details: `Model responded correctly: \\\"${responseContent.trim()}\\\"`,\n apiUsed: 'responses',\n responseTime,\n }\n }\n\n return {\n success: false,\n message: '\u26A0\uFE0F Responses API connected but unexpected response',\n endpoint: '/responses',\n details: `Expected \\\"YES\\\" but got: \\\"${responseContent.trim() || '(empty response)'}\\\"`,\n apiUsed: 'responses',\n responseTime,\n }\n }\n\n const errorData = await response.json().catch(() => null)\n const errorMessage =\n errorData?.error?.message || errorData?.message || response.statusText\n\n debugLogger.warn('GPT5_CONNECTION_TEST_RESPONSES_ERROR', {\n model: config.model,\n status: response.status,\n error: errorMessage,\n })\n\n return {\n success: false,\n message: `\u274C Responses API failed (${response.status})`,\n endpoint: '/responses',\n details: `Error: ${errorMessage}`,\n apiUsed: 'responses',\n responseTime: Date.now() - startTime,\n }\n } catch (error) {\n debugLogger.warn('GPT5_CONNECTION_TEST_RESPONSES_NETWORK_ERROR', {\n model: config.model,\n error: error instanceof Error ? error.message : String(error),\n })\n\n return {\n success: false,\n message: '\u274C Responses API connection failed',\n endpoint: '/responses',\n details: error instanceof Error ? error.message : String(error),\n apiUsed: 'responses',\n responseTime: Date.now() - startTime,\n }\n }\n}\n", "import type { ConnectionTestResult, GPT5TestConfig } from './types'\nimport { debug as debugLogger } from '../debugLogger'\n\n/**\n * Test using Chat Completions API with GPT-5 compatibility\n */\nexport async function testChatCompletionsAPI(\n config: GPT5TestConfig,\n baseURL: string,\n startTime: number,\n): Promise<ConnectionTestResult> {\n const testURL = `${baseURL.replace(/\\/+$/, '')}/chat/completions`\n\n const isGPT5 = config.model.toLowerCase().includes('gpt-5')\n\n // Create test payload with GPT-5 compatibility\n const testPayload: any = {\n model: config.model,\n messages: [\n {\n role: 'user',\n content:\n 'Please respond with exactly \\\"YES\\\" (in capital letters) to confirm this connection is working.',\n },\n ],\n temperature: isGPT5 ? 1 : 0, // GPT-5 requires temperature=1\n stream: false,\n }\n\n // \uD83D\uDD27 Apply GPT-5 parameter transformations\n if (isGPT5) {\n testPayload.max_completion_tokens = Math.max(config.maxTokens || 8192, 8192)\n delete testPayload.max_tokens // \uD83D\uDD25 CRITICAL: Remove max_tokens for GPT-5\n debugLogger.api('GPT5_CONNECTION_TEST_MAX_COMPLETION_TOKENS', {\n model: config.model,\n max_completion_tokens: testPayload.max_completion_tokens,\n })\n } else {\n testPayload.max_tokens = Math.max(config.maxTokens || 8192, 8192)\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n }\n\n // Add provider-specific headers\n if (config.provider === 'azure') {\n headers['api-key'] = config.apiKey\n } else {\n headers['Authorization'] = `Bearer ${config.apiKey}`\n }\n\n debugLogger.api('GPT5_CONNECTION_TEST_CHAT_COMPLETIONS_REQUEST', {\n model: config.model,\n url: testURL,\n })\n\n try {\n const response = await fetch(testURL, {\n method: 'POST',\n headers,\n body: JSON.stringify(testPayload),\n })\n\n const responseTime = Date.now() - startTime\n\n if (response.ok) {\n const data = await response.json()\n debugLogger.api('GPT5_CONNECTION_TEST_CHAT_COMPLETIONS_RESPONSE', {\n model: config.model,\n status: response.status,\n })\n\n const responseContent = data.choices?.[0]?.message?.content || ''\n const containsYes = responseContent.toLowerCase().includes('yes')\n\n if (containsYes) {\n return {\n success: true,\n message: `\u2705 ${isGPT5 ? 'GPT-5' : 'Model'} Chat Completions connection successful`,\n endpoint: '/chat/completions',\n details: `Model responded correctly: \\\"${responseContent.trim()}\\\"`,\n apiUsed: 'chat_completions',\n responseTime,\n }\n }\n\n return {\n success: false,\n message: '\u26A0\uFE0F Chat Completions connected but unexpected response',\n endpoint: '/chat/completions',\n details: `Expected \\\"YES\\\" but got: \\\"${responseContent.trim() || '(empty response)'}\\\"`,\n apiUsed: 'chat_completions',\n responseTime,\n }\n }\n\n const errorData = await response.json().catch(() => null)\n const errorMessage =\n errorData?.error?.message || errorData?.message || response.statusText\n\n debugLogger.warn('GPT5_CONNECTION_TEST_CHAT_COMPLETIONS_ERROR', {\n model: config.model,\n status: response.status,\n error: errorMessage,\n })\n\n // \uD83D\uDD27 Provide specific guidance for GPT-5 errors\n let details = `Error: ${errorMessage}`\n if (\n response.status === 400 &&\n errorMessage.includes('max_tokens') &&\n isGPT5\n ) {\n details +=\n '\\n\\n\uD83D\uDD27 GPT-5 Fix Applied: This error suggests a parameter compatibility issue. Please check if the provider supports GPT-5 with max_completion_tokens.'\n }\n\n return {\n success: false,\n message: `\u274C Chat Completions failed (${response.status})`,\n endpoint: '/chat/completions',\n details: details,\n apiUsed: 'chat_completions',\n responseTime: Date.now() - startTime,\n }\n } catch (error) {\n debugLogger.warn('GPT5_CONNECTION_TEST_CHAT_COMPLETIONS_NETWORK_ERROR', {\n model: config.model,\n error: error instanceof Error ? error.message : String(error),\n })\n\n return {\n success: false,\n message: '\u274C Chat Completions connection failed',\n endpoint: '/chat/completions',\n details: error instanceof Error ? error.message : String(error),\n apiUsed: 'chat_completions',\n responseTime: Date.now() - startTime,\n }\n }\n}\n", "/**\n * \uD83D\uDD25 GPT-5 Connection Test Service\n *\n * Specialized connection testing for GPT-5 models that supports both\n * Responses API and Chat Completions API with proper fallback handling.\n */\nimport { debug as debugLogger } from './debugLogger'\n\nimport type {\n ConnectionTestResult,\n GPT5TestConfig,\n} from './connectionTest/types'\nimport { testResponsesAPI } from './connectionTest/responsesAPI'\nimport { testChatCompletionsAPI } from './connectionTest/chatCompletions'\n\nexport type {\n ConnectionTestResult,\n GPT5TestConfig,\n} from './connectionTest/types'\n\ntype ConnectionTestModelFeatures = {\n supportsResponsesAPI: boolean\n}\n\nfunction getModelFeaturesForConnectionTest(\n modelName: string,\n): ConnectionTestModelFeatures {\n const normalized = modelName.toLowerCase()\n\n // Some providers expose GPT-5 through Chat Completions only.\n if (normalized.includes('gpt-5-chat-latest')) {\n return { supportsResponsesAPI: false }\n }\n\n if (normalized.includes('gpt-5')) {\n return { supportsResponsesAPI: true }\n }\n\n return { supportsResponsesAPI: false }\n}\n\n/**\n * Test GPT-5 model connection with intelligent API selection\n */\nexport async function testGPT5Connection(\n config: GPT5TestConfig,\n): Promise<ConnectionTestResult> {\n const startTime = Date.now()\n\n // Validate configuration\n if (!config.model || !config.apiKey) {\n return {\n success: false,\n message: 'Invalid configuration',\n details: 'Model name and API key are required',\n }\n }\n\n const isGPT5 = config.model.toLowerCase().includes('gpt-5')\n const modelFeatures = getModelFeaturesForConnectionTest(config.model)\n const baseURL = config.baseURL || 'https://api.openai.com/v1'\n const isOfficialOpenAI =\n !config.baseURL || config.baseURL.includes('api.openai.com')\n\n debugLogger.api('GPT5_CONNECTION_TEST_START', {\n model: config.model,\n baseURL,\n isOfficialOpenAI,\n supportsResponsesAPI: modelFeatures.supportsResponsesAPI,\n })\n\n // Try Responses API first for official GPT-5 models\n if (isGPT5 && modelFeatures.supportsResponsesAPI && isOfficialOpenAI) {\n debugLogger.api('GPT5_CONNECTION_TEST_TRY_RESPONSES', {\n model: config.model,\n })\n const responsesResult = await testResponsesAPI(config, baseURL, startTime)\n\n if (responsesResult.success) {\n debugLogger.api('GPT5_CONNECTION_TEST_RESPONSES_OK', {\n model: config.model,\n })\n return responsesResult\n }\n\n debugLogger.warn('GPT5_CONNECTION_TEST_RESPONSES_FAILED', {\n model: config.model,\n details: responsesResult.details,\n })\n }\n\n // Fallback to Chat Completions API\n debugLogger.api('GPT5_CONNECTION_TEST_FALLBACK_CHAT_COMPLETIONS', {\n model: config.model,\n })\n return await testChatCompletionsAPI(config, baseURL, startTime)\n}\n\n/**\n * Quick validation for GPT-5 configuration\n */\nexport function validateGPT5Config(config: GPT5TestConfig): {\n valid: boolean\n errors: string[]\n} {\n debugLogger.state('GPT5_VALIDATE_CONFIG_CALLED', {\n model: config.model,\n hasApiKey: !!config.apiKey,\n baseURL: config.baseURL,\n provider: config.provider,\n })\n\n const errors: string[] = []\n\n if (!config.model) {\n errors.push('Model name is required')\n }\n\n if (!config.apiKey) {\n errors.push('API key is required')\n }\n\n const isGPT5 = config.model?.toLowerCase().includes('gpt-5')\n if (isGPT5) {\n debugLogger.state('GPT5_VALIDATE_CONFIG', {\n model: config.model,\n maxTokens: config.maxTokens,\n })\n\n if (config.maxTokens && config.maxTokens < 1000) {\n errors.push('GPT-5 models typically require at least 1000 max tokens')\n }\n\n // \u5B8C\u5168\u79FB\u9664\u7B2C\u4E09\u65B9provider\u9650\u5236\uFF0C\u5141\u8BB8\u6240\u6709\u4EE3\u7406\u4E2D\u8F6C\u7AD9\u4F7F\u7528GPT-5\n debugLogger.state('GPT5_VALIDATE_CONFIG_NO_PROVIDER_RESTRICTIONS', {\n model: config.model,\n })\n }\n\n debugLogger.state('GPT5_VALIDATE_CONFIG_RESULT', {\n valid: errors.length === 0,\n errors,\n })\n\n return {\n valid: errors.length === 0,\n errors,\n }\n}\n", "import { debug as debugLogger } from '../debugLogger'\n\nimport type { ModelProfile, ProviderType } from '../schema'\n\nexport function isGPT5ModelName(modelName: string): boolean {\n if (!modelName || typeof modelName !== 'string') return false\n const lowerName = modelName.toLowerCase()\n return lowerName.startsWith('gpt-5') || lowerName.includes('gpt-5')\n}\n\nexport function validateAndRepairGPT5Profile(\n profile: ModelProfile,\n): ModelProfile {\n const isGPT5 = isGPT5ModelName(profile.modelName)\n const now = Date.now()\n\n const repairedProfile: ModelProfile = { ...profile }\n let wasRepaired = false\n\n if (isGPT5 !== profile.isGPT5) {\n repairedProfile.isGPT5 = isGPT5\n wasRepaired = true\n }\n\n if (isGPT5) {\n const validReasoningEfforts = ['minimal', 'low', 'medium', 'high']\n if (\n !profile.reasoningEffort ||\n !validReasoningEfforts.includes(profile.reasoningEffort)\n ) {\n repairedProfile.reasoningEffort = 'medium'\n wasRepaired = true\n debugLogger.state('GPT5_CONFIG_AUTO_REPAIR', {\n model: profile.modelName,\n field: 'reasoningEffort',\n value: 'medium',\n })\n }\n\n if (profile.contextLength < 128000) {\n repairedProfile.contextLength = 128000\n wasRepaired = true\n debugLogger.state('GPT5_CONFIG_AUTO_REPAIR', {\n model: profile.modelName,\n field: 'contextLength',\n value: 128000,\n })\n }\n\n if (profile.maxTokens < 4000) {\n repairedProfile.maxTokens = 8192\n wasRepaired = true\n debugLogger.state('GPT5_CONFIG_AUTO_REPAIR', {\n model: profile.modelName,\n field: 'maxTokens',\n value: 8192,\n })\n }\n\n if (\n profile.provider !== 'openai' &&\n profile.provider !== 'custom-openai' &&\n profile.provider !== 'azure'\n ) {\n debugLogger.warn('GPT5_CONFIG_UNEXPECTED_PROVIDER', {\n model: profile.modelName,\n provider: profile.provider,\n expectedProviders: ['openai', 'custom-openai', 'azure'],\n })\n }\n\n if (profile.modelName.includes('gpt-5') && !profile.baseURL) {\n repairedProfile.baseURL = 'https://api.openai.com/v1'\n wasRepaired = true\n debugLogger.state('GPT5_CONFIG_AUTO_REPAIR', {\n model: profile.modelName,\n field: 'baseURL',\n value: 'https://api.openai.com/v1',\n })\n }\n }\n\n repairedProfile.validationStatus = wasRepaired ? 'auto_repaired' : 'valid'\n repairedProfile.lastValidation = now\n\n if (wasRepaired) {\n debugLogger.info('GPT5_CONFIG_AUTO_REPAIRED', { model: profile.modelName })\n }\n\n return repairedProfile\n}\n\nexport function getGPT5ConfigRecommendations(\n modelName: string,\n): Partial<ModelProfile> {\n if (!isGPT5ModelName(modelName)) return {}\n\n const recommendations: Partial<ModelProfile> = {\n contextLength: 128000,\n maxTokens: 8192,\n reasoningEffort: 'medium',\n isGPT5: true,\n }\n\n if (modelName.includes('gpt-5-mini')) {\n recommendations.maxTokens = 4096\n recommendations.reasoningEffort = 'low'\n } else if (modelName.includes('gpt-5-nano')) {\n recommendations.maxTokens = 2048\n recommendations.reasoningEffort = 'minimal'\n }\n\n return recommendations\n}\n\nexport function createGPT5ModelProfile(\n name: string,\n modelName: string,\n apiKey: string,\n baseURL?: string,\n provider: ProviderType = 'openai',\n): ModelProfile {\n const recommendations = getGPT5ConfigRecommendations(modelName)\n\n return {\n name,\n provider,\n modelName,\n baseURL: baseURL || 'https://api.openai.com/v1',\n apiKey,\n maxTokens: recommendations.maxTokens || 8192,\n contextLength: recommendations.contextLength || 128000,\n reasoningEffort: recommendations.reasoningEffort || 'medium',\n isActive: true,\n createdAt: Date.now(),\n isGPT5: true,\n validationStatus: 'valid',\n lastValidation: Date.now(),\n }\n}\n", "import { getGlobalConfig, saveGlobalConfig } from '../loader'\nimport type { ModelPointerType } from '../schema'\n\nimport type { ModelProfile } from '../schema'\nimport { validateAndRepairGPT5Profile } from './gpt5'\n\nexport function setAllPointersToModel(modelName: string): void {\n const config = getGlobalConfig()\n const updatedConfig = {\n ...config,\n modelPointers: {\n main: modelName,\n task: modelName,\n compact: modelName,\n quick: modelName,\n },\n defaultModelName: modelName,\n }\n saveGlobalConfig(updatedConfig)\n}\n\nexport function setModelPointer(\n pointer: ModelPointerType,\n modelName: string,\n): void {\n const config = getGlobalConfig()\n const updatedConfig = {\n ...config,\n modelPointers: {\n ...config.modelPointers,\n [pointer]: modelName,\n },\n }\n saveGlobalConfig(updatedConfig)\n}\n\nexport function validateAndRepairAllGPT5Profiles(): {\n repaired: number\n total: number\n} {\n const config = getGlobalConfig()\n if (!config.modelProfiles) return { repaired: 0, total: 0 }\n\n let repairCount = 0\n const repairedProfiles: ModelProfile[] = config.modelProfiles.map(profile => {\n const repaired = validateAndRepairGPT5Profile(profile)\n if (repaired.validationStatus === 'auto_repaired') repairCount++\n return repaired\n })\n\n if (repairCount > 0) {\n saveGlobalConfig({ ...config, modelProfiles: repairedProfiles })\n }\n\n return { repaired: repairCount, total: config.modelProfiles.length }\n}\n", "export type SettingSource = 'userSettings' | 'projectSettings' | 'localSettings'\n\nconst CLI_TO_SETTING_SOURCE: Record<string, SettingSource> = {\n user: 'userSettings',\n project: 'projectSettings',\n local: 'localSettings',\n}\n\nlet enabledSettingSources: Set<SettingSource> = new Set(\n Object.values(CLI_TO_SETTING_SOURCE),\n)\n\nexport function setEnabledSettingSourcesFromCli(\n sources: string | undefined,\n): void {\n if (sources === undefined) return\n\n const trimmed = sources.trim()\n if (!trimmed) {\n throw new Error(\n `Invalid --setting-sources value: ${JSON.stringify(sources)}. Expected a comma-separated list of: user, project, local.`,\n )\n }\n\n const parts = trimmed\n .split(',')\n .map(p => p.trim())\n .filter(Boolean)\n\n const next = new Set<SettingSource>()\n const unknown: string[] = []\n\n for (const part of parts) {\n const key = part.toLowerCase()\n const mapped = CLI_TO_SETTING_SOURCE[key]\n if (!mapped) {\n unknown.push(part)\n continue\n }\n next.add(mapped)\n }\n\n if (unknown.length > 0) {\n throw new Error(\n `Unknown setting source(s): ${unknown.join(', ')}. Expected: user, project, local.`,\n )\n }\n\n enabledSettingSources = next\n}\n\nexport function isSettingSourceEnabled(source: SettingSource): boolean {\n return enabledSettingSources.has(source)\n}\n\nexport function __resetSettingSourcesForTests(): void {\n enabledSettingSources = new Set(Object.values(CLI_TO_SETTING_SOURCE))\n}\n", "import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { homedir } from 'node:os'\nimport { dirname, join, resolve } from 'node:path'\n\nimport { getCwd } from './cwd'\n\nexport type SettingsDestination =\n | 'localSettings'\n | 'projectSettings'\n | 'userSettings'\n\nexport type SettingsFile = {\n [key: string]: unknown\n}\n\nfunction logError(error: unknown): void {\n if (process.env.NODE_ENV === 'test') {\n // eslint-disable-next-line no-console\n console.error(error)\n }\n}\n\nfunction normalizeOverride(value: unknown): string | null {\n if (typeof value !== 'string') return null\n const trimmed = value.trim()\n return trimmed ? resolve(trimmed) : null\n}\n\nfunction dedupeStrings(values: string[]): string[] {\n const out: string[] = []\n const seen = new Set<string>()\n for (const value of values) {\n if (!value) continue\n if (seen.has(value)) continue\n seen.add(value)\n out.push(value)\n }\n return out\n}\n\nfunction getDefaultHomeDir(): string {\n const envHome =\n typeof process.env.HOME === 'string'\n ? process.env.HOME\n : typeof process.env.USERPROFILE === 'string'\n ? process.env.USERPROFILE\n : ''\n const trimmed = envHome.trim()\n if (trimmed) return trimmed\n return homedir()\n}\n\nfunction getUserKodeBaseDir(options?: {\n homeDir?: string\n respectEnvOverride?: boolean\n}): string {\n const respectEnvOverride = options?.respectEnvOverride ?? true\n if (respectEnvOverride) {\n const override = normalizeOverride(\n process.env.KODE_CONFIG_DIR ?? process.env.CLAUDE_CONFIG_DIR,\n )\n if (override) return override\n }\n const home = options?.homeDir ?? getDefaultHomeDir()\n return join(home, '.kode')\n}\n\nfunction getUserLegacyBaseDir(options?: {\n homeDir?: string\n respectEnvOverride?: boolean\n}): string {\n const respectEnvOverride = options?.respectEnvOverride ?? true\n if (respectEnvOverride) {\n const override = normalizeOverride(process.env.CLAUDE_CONFIG_DIR)\n if (override) return override\n }\n const home = options?.homeDir ?? getDefaultHomeDir()\n return join(home, '.claude')\n}\n\nexport function getSettingsFileCandidates(options: {\n destination: SettingsDestination\n projectDir?: string\n homeDir?: string\n}): { primary: string; legacy: string[] } | null {\n const projectDir = options.projectDir ?? getCwd()\n const homeDir = options.homeDir ?? getDefaultHomeDir()\n const respectEnvOverride = options.homeDir === undefined\n\n switch (options.destination) {\n case 'localSettings': {\n const primary = join(projectDir, '.kode', 'settings.local.json')\n const legacy = [join(projectDir, '.claude', 'settings.local.json')]\n return { primary, legacy }\n }\n case 'projectSettings': {\n const primary = join(projectDir, '.kode', 'settings.json')\n const legacy = [join(projectDir, '.claude', 'settings.json')]\n return { primary, legacy }\n }\n case 'userSettings': {\n const primary = join(\n getUserKodeBaseDir({ homeDir, respectEnvOverride }),\n 'settings.json',\n )\n const legacy = dedupeStrings([\n join(\n getUserLegacyBaseDir({ homeDir, respectEnvOverride }),\n 'settings.json',\n ),\n join(homeDir, '.claude', 'settings.json'),\n ])\n return { primary, legacy }\n }\n default:\n return null\n }\n}\n\nexport function readSettingsFile(filePath: string): SettingsFile | null {\n if (!existsSync(filePath)) return null\n try {\n const raw = readFileSync(filePath, 'utf-8')\n const parsed = JSON.parse(raw)\n if (!parsed || typeof parsed !== 'object') return null\n return parsed as SettingsFile\n } catch (error) {\n logError(error)\n return null\n }\n}\n\nexport function writeSettingsFile(\n filePath: string,\n settings: SettingsFile,\n): void {\n mkdirSync(dirname(filePath), { recursive: true })\n writeFileSync(filePath, JSON.stringify(settings, null, 2) + '\\n', 'utf-8')\n}\n\nexport function loadSettingsWithLegacyFallback(options: {\n destination: SettingsDestination\n projectDir?: string\n homeDir?: string\n migrateToPrimary?: boolean\n}): { settings: SettingsFile | null; usedPath: string | null } {\n const candidates = getSettingsFileCandidates(options)\n if (!candidates) return { settings: null, usedPath: null }\n\n const primarySettings = readSettingsFile(candidates.primary)\n if (primarySettings)\n return { settings: primarySettings, usedPath: candidates.primary }\n\n for (const legacyPath of candidates.legacy) {\n const legacySettings = readSettingsFile(legacyPath)\n if (!legacySettings) continue\n\n if (options.migrateToPrimary && legacyPath !== candidates.primary) {\n try {\n if (!existsSync(candidates.primary)) {\n writeSettingsFile(candidates.primary, legacySettings)\n }\n } catch (error) {\n logError(error)\n }\n }\n\n return { settings: legacySettings, usedPath: legacyPath }\n }\n\n return { settings: null, usedPath: null }\n}\n\nexport function saveSettingsToPrimaryAndSyncLegacy(options: {\n destination: SettingsDestination\n settings: SettingsFile\n projectDir?: string\n homeDir?: string\n syncLegacyIfExists?: boolean\n}): void {\n const candidates = getSettingsFileCandidates(options)\n if (!candidates) return\n\n writeSettingsFile(candidates.primary, options.settings)\n\n if (!options.syncLegacyIfExists) return\n for (const legacyPath of candidates.legacy) {\n if (legacyPath === candidates.primary) continue\n if (!existsSync(legacyPath)) continue\n try {\n writeSettingsFile(legacyPath, options.settings)\n } catch (error) {\n logError(error)\n }\n }\n}\n", "import { join } from 'node:path'\n\nimport { getCwd } from './cwd'\nimport {\n getSettingsFileCandidates,\n loadSettingsWithLegacyFallback,\n saveSettingsToPrimaryAndSyncLegacy,\n} from './files'\n\nexport type LocalSettings = {\n outputStyle?: unknown\n [key: string]: unknown\n}\n\nexport function getLocalSettingsPath(options?: {\n projectDir?: string\n}): string {\n const projectDir = options?.projectDir ?? getCwd()\n return join(projectDir, '.kode', 'settings.local.json')\n}\n\nexport function readLocalSettings(options?: {\n projectDir?: string\n}): LocalSettings {\n const projectDir = options?.projectDir ?? getCwd()\n const loaded = loadSettingsWithLegacyFallback({\n destination: 'localSettings',\n projectDir,\n migrateToPrimary: true,\n })\n return (loaded.settings as LocalSettings | null) ?? {}\n}\n\nexport function updateLocalSettings(\n patch: Record<string, unknown>,\n options?: { projectDir?: string },\n): LocalSettings {\n const projectDir = options?.projectDir ?? getCwd()\n const candidates = getSettingsFileCandidates({\n destination: 'localSettings',\n projectDir,\n })\n const existing =\n (candidates\n ? loadSettingsWithLegacyFallback({\n destination: 'localSettings',\n projectDir,\n migrateToPrimary: true,\n }).settings\n : null) ?? {}\n\n const next = { ...(existing as Record<string, unknown>), ...patch }\n\n if (candidates) {\n saveSettingsToPrimaryAndSyncLegacy({\n destination: 'localSettings',\n projectDir,\n settings: next,\n syncLegacyIfExists: true,\n })\n }\n\n return next as LocalSettings\n}\n", "import yaml from 'js-yaml'\nimport { z } from 'zod'\n\nimport type { GlobalConfig, ModelPointers, ModelProfile } from './schema'\n\nconst ApiKeySpecSchema = z.union([\n z\n .object({\n fromEnv: z.string().min(1),\n })\n .strict(),\n z\n .object({\n value: z.string(),\n })\n .strict(),\n])\n\ntype ApiKeySpec = z.infer<typeof ApiKeySpecSchema>\n\nconst ModelProfileYamlSchema = z\n .object({\n name: z.string().min(1),\n provider: z.string().min(1),\n modelName: z.string().min(1),\n baseURL: z.string().min(1).optional(),\n maxTokens: z.number().int().positive(),\n contextLength: z.number().int().positive(),\n reasoningEffort: z.string().optional(),\n isActive: z.boolean().optional(),\n\n apiKey: ApiKeySpecSchema.optional(),\n apiKeyEnv: z.string().min(1).optional(),\n\n createdAt: z.number().int().positive().optional(),\n lastUsed: z.number().int().positive().optional(),\n })\n .strict()\n\nconst ModelPointersYamlSchema = z\n .object({\n main: z.string().min(1).optional(),\n task: z.string().min(1).optional(),\n compact: z.string().min(1).optional(),\n quick: z.string().min(1).optional(),\n })\n .strict()\n .optional()\n\nconst ModelConfigYamlSchema = z\n .object({\n version: z.number().int().positive().default(1),\n profiles: z.array(ModelProfileYamlSchema).default([]),\n pointers: ModelPointersYamlSchema,\n })\n .strict()\n\nexport type ModelConfigYaml = z.infer<typeof ModelConfigYamlSchema>\n\nfunction suggestedApiKeyEnvForProvider(provider: string): string | undefined {\n switch (provider) {\n case 'anthropic':\n return 'ANTHROPIC_API_KEY'\n case 'openai':\n case 'custom-openai':\n return 'OPENAI_API_KEY'\n case 'azure':\n return 'AZURE_OPENAI_API_KEY'\n case 'gemini':\n return 'GEMINI_API_KEY'\n default:\n return undefined\n }\n}\n\nfunction resolveApiKeyFromYaml(\n input: {\n apiKey?: ApiKeySpec\n apiKeyEnv?: string\n },\n existingApiKey: string | undefined,\n): { apiKey: string; warnings: string[] } {\n const warnings: string[] = []\n\n if (input.apiKeyEnv) {\n const envValue = process.env[input.apiKeyEnv]\n if (envValue) return { apiKey: envValue, warnings }\n if (existingApiKey) return { apiKey: existingApiKey, warnings }\n warnings.push(`Missing env var '${input.apiKeyEnv}' for apiKey`)\n return { apiKey: '', warnings }\n }\n\n if (input.apiKey && 'fromEnv' in input.apiKey) {\n const envValue = process.env[input.apiKey.fromEnv]\n if (envValue) return { apiKey: envValue, warnings }\n if (existingApiKey) return { apiKey: existingApiKey, warnings }\n warnings.push(`Missing env var '${input.apiKey.fromEnv}' for apiKey`)\n return { apiKey: '', warnings }\n }\n\n if (input.apiKey && 'value' in input.apiKey) {\n return { apiKey: input.apiKey.value, warnings }\n }\n\n if (existingApiKey) return { apiKey: existingApiKey, warnings }\n\n warnings.push(\n 'Missing apiKey (set apiKey.fromEnv, apiKeyEnv, or apiKey.value)',\n )\n return { apiKey: '', warnings }\n}\n\nfunction resolvePointerTarget(\n pointerValue: string,\n profiles: ModelProfile[],\n): string | null {\n if (profiles.some(p => p.modelName === pointerValue)) return pointerValue\n const byName = profiles.find(p => p.name === pointerValue)\n return byName?.modelName ?? null\n}\n\nexport function parseModelConfigYaml(yamlText: string): ModelConfigYaml {\n const parsed = yaml.load(yamlText)\n return ModelConfigYamlSchema.parse(parsed)\n}\n\nexport function formatModelConfigYamlForSharing(config: GlobalConfig): string {\n const modelProfiles = config.modelProfiles ?? []\n const pointers = config.modelPointers\n\n const exported: ModelConfigYaml = {\n version: 1,\n profiles: modelProfiles.map(p => {\n const suggestedEnv = suggestedApiKeyEnvForProvider(p.provider)\n return {\n name: p.name,\n provider: p.provider,\n modelName: p.modelName,\n ...(p.baseURL ? { baseURL: p.baseURL } : {}),\n maxTokens: p.maxTokens,\n contextLength: p.contextLength,\n ...(p.reasoningEffort ? { reasoningEffort: p.reasoningEffort } : {}),\n isActive: p.isActive,\n createdAt: p.createdAt,\n ...(typeof p.lastUsed === 'number' ? { lastUsed: p.lastUsed } : {}),\n apiKey: { fromEnv: suggestedEnv ?? 'API_KEY' },\n }\n }),\n ...(pointers ? { pointers } : {}),\n }\n\n return yaml.dump(exported, {\n noRefs: true,\n lineWidth: 120,\n })\n}\n\nexport function applyModelConfigYamlImport(\n existingConfig: GlobalConfig,\n yamlText: string,\n options: { replace?: boolean } = {},\n): { nextConfig: GlobalConfig; warnings: string[] } {\n const parsed = parseModelConfigYaml(yamlText)\n const warnings: string[] = []\n\n const existingProfiles = existingConfig.modelProfiles ?? []\n const existingByModelName = new Map<string, ModelProfile>(\n existingProfiles.map(p => [p.modelName, p]),\n )\n\n const now = Date.now()\n const importedProfiles: ModelProfile[] = parsed.profiles.map(profile => {\n const existing = existingByModelName.get(profile.modelName)\n const resolved = resolveApiKeyFromYaml(\n { apiKey: profile.apiKey, apiKeyEnv: profile.apiKeyEnv },\n existing?.apiKey,\n )\n warnings.push(...resolved.warnings.map(w => `[${profile.modelName}] ${w}`))\n\n return {\n name: profile.name,\n provider: profile.provider,\n modelName: profile.modelName,\n ...(profile.baseURL ? { baseURL: profile.baseURL } : {}),\n apiKey: resolved.apiKey,\n maxTokens: profile.maxTokens,\n contextLength: profile.contextLength,\n ...(profile.reasoningEffort\n ? { reasoningEffort: profile.reasoningEffort }\n : {}),\n isActive: profile.isActive ?? true,\n createdAt: profile.createdAt ?? existing?.createdAt ?? now,\n ...(profile.lastUsed\n ? { lastUsed: profile.lastUsed }\n : existing?.lastUsed\n ? { lastUsed: existing.lastUsed }\n : {}),\n ...(existing?.isGPT5 ? { isGPT5: existing.isGPT5 } : {}),\n ...(existing?.validationStatus\n ? { validationStatus: existing.validationStatus }\n : {}),\n ...(existing?.lastValidation\n ? { lastValidation: existing.lastValidation }\n : {}),\n }\n })\n\n const mergedProfiles = options.replace\n ? importedProfiles\n : [...existingProfiles, ...importedProfiles].reduce((acc, p) => {\n const i = acc.findIndex(x => x.modelName === p.modelName)\n if (i >= 0) acc[i] = p\n else acc.push(p)\n return acc\n }, [] as ModelProfile[])\n\n let nextPointers: ModelPointers | undefined = existingConfig.modelPointers\n if (parsed.pointers) {\n const mapped = {\n main: parsed.pointers.main,\n task: parsed.pointers.task,\n compact: parsed.pointers.compact,\n quick: parsed.pointers.quick,\n }\n nextPointers = {\n main:\n (mapped.main\n ? resolvePointerTarget(mapped.main, mergedProfiles)\n : null) ??\n existingConfig.modelPointers?.main ??\n '',\n task:\n (mapped.task\n ? resolvePointerTarget(mapped.task, mergedProfiles)\n : null) ??\n existingConfig.modelPointers?.task ??\n '',\n compact:\n (mapped.compact\n ? resolvePointerTarget(mapped.compact, mergedProfiles)\n : null) ??\n existingConfig.modelPointers?.compact ??\n '',\n quick:\n (mapped.quick\n ? resolvePointerTarget(mapped.quick, mergedProfiles)\n : null) ??\n existingConfig.modelPointers?.quick ??\n '',\n }\n }\n\n return {\n nextConfig: {\n ...existingConfig,\n modelProfiles: mergedProfiles,\n modelPointers: nextPointers,\n },\n warnings,\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["homedir", "isRecord", "existsSync", "readFileSync", "join", "isRecord", "join", "existsSync", "readFileSync", "currentConfig", "next", "existsSync", "readFileSync", "writeFileSync", "homedir", "join", "resolve", "resolve", "homedir", "join", "existsSync", "readFileSync", "writeFileSync", "join", "join"]
|
|
7
|
+
}
|