pybao-cli 1.5.7 → 1.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/REPL-FDBOFOZN.js +50 -0
- package/dist/{acp-2LMTSBAU.js → acp-TKO6ZSSV.js} +54 -36
- package/dist/acp-TKO6ZSSV.js.map +7 -0
- package/dist/{agentsValidate-YQSHYCYC.js → agentsValidate-RDNLI7GA.js} +7 -7
- package/dist/{ask-4Z4LH5IS.js → ask-KTXMYPIA.js} +60 -34
- package/dist/ask-KTXMYPIA.js.map +7 -0
- package/dist/{autoUpdater-UTX7ZX2N.js → autoUpdater-53BZ6QWD.js} +3 -3
- package/dist/{chunk-OY6SB5B3.js → chunk-276RV4DQ.js} +4 -4
- package/dist/{chunk-7FFBXWS3.js → chunk-35X2VS4L.js} +3 -3
- package/dist/{chunk-VZDDKAL2.js → chunk-4C2CGHBI.js} +2 -2
- package/dist/{chunk-Y2RSIF7P.js → chunk-4KPVE4K7.js} +1 -1
- package/dist/{chunk-SDKYJZWD.js → chunk-57GJQMFS.js} +2 -2
- package/dist/{chunk-3JH34RBY.js → chunk-6PXEXL7C.js} +2 -2
- package/dist/{chunk-IKMMFSNJ.js → chunk-AMQ6XZOU.js} +1 -1
- package/dist/{chunk-W4PXRGP3.js → chunk-AWRDD6BG.js} +18 -1
- package/dist/chunk-AWRDD6BG.js.map +7 -0
- package/dist/{chunk-5JKCAVMI.js → chunk-BZGQQ4WZ.js} +3 -3
- package/dist/{chunk-4BFEUSKN.js → chunk-CATWZQ3R.js} +2 -2
- package/dist/{chunk-EGJRWKZ6.js → chunk-CPLMSZ63.js} +4 -4
- package/dist/{chunk-PI5RBPFA.js → chunk-DA6NJEFI.js} +2 -2
- package/dist/{chunk-IFC2PLAM.js → chunk-E35YJNX2.js} +4 -4
- package/dist/{chunk-TIMEEE5U.js → chunk-G7DKRXDS.js} +1 -4
- package/dist/{chunk-5F6IQJHF.js → chunk-HIJYNCCN.js} +1 -1
- package/dist/{chunk-F7HYDAWW.js → chunk-JE43CQYI.js} +3 -3
- package/dist/{chunk-JEAXJP2E.js → chunk-JLC2I3EY.js} +1 -1
- package/dist/chunk-JRMAK4PK.js +926 -0
- package/dist/chunk-JRMAK4PK.js.map +7 -0
- package/dist/{chunk-KLD4WAB6.js → chunk-KNLP4UO6.js} +4 -4
- package/dist/chunk-L3R7MPZU.js +81 -0
- package/dist/{chunk-ZD6NMP33.js.map → chunk-L3R7MPZU.js.map} +1 -1
- package/dist/{chunk-PMYMUSB4.js → chunk-LEYWQQ7V.js} +3 -3
- package/dist/{chunk-EN7L7JWN.js → chunk-LIOZM4KE.js} +1 -1
- package/dist/chunk-OC5CZWBQ.js.map +7 -0
- package/dist/{chunk-SWNNPHFY.js → chunk-PH6DPTO3.js} +2025 -1321
- package/dist/chunk-PH6DPTO3.js.map +7 -0
- package/dist/{chunk-CJ2YYIJN.js → chunk-PPFVOBEG.js} +144 -76
- package/dist/chunk-PPFVOBEG.js.map +7 -0
- package/dist/{chunk-4R7NUADF.js → chunk-Q5EZLUFC.js} +1 -1
- package/dist/{chunk-LYMH46VN.js → chunk-QMN64ICT.js} +3 -3
- package/dist/{chunk-VBV5RHIK.js → chunk-R4ZEH3KJ.js} +1 -1
- package/dist/{chunk-TKEWBSVM.js → chunk-SNASBZ2C.js} +3 -3
- package/dist/chunk-T7P3SSAQ.js +78 -0
- package/dist/chunk-T7P3SSAQ.js.map +7 -0
- package/dist/{chunk-T7UTA73F.js → chunk-TLZS274Y.js} +3 -3
- package/dist/{chunk-IOP3VA4X.js → chunk-YSL5H7NJ.js} +2 -2
- package/dist/{chunk-HFVRQO2J.js → chunk-YTEQEQ56.js} +48 -40
- package/dist/chunk-YTEQEQ56.js.map +7 -0
- package/dist/{cli-N3Q4D4BW.js → cli-LYWCNPC6.js} +131 -102
- package/dist/cli-LYWCNPC6.js.map +7 -0
- package/dist/commands-DYXAWJO6.js +54 -0
- package/dist/{config-GZXNPIIG.js → config-66BMMOES.js} +4 -4
- package/dist/{context-TUO5CUR3.js → context-PG7YTQCJ.js} +6 -6
- package/dist/conversationPersistence-DB6IUU2I.js +13 -0
- package/dist/{conversationTracker-APB6PR5Z.js → conversationTracker-WG3J56PX.js} +4 -3
- package/dist/{customCommands-J4DV6OI5.js → customCommands-XDKUVT73.js} +4 -4
- package/dist/{env-YBYEMHYQ.js → env-FW74XJHK.js} +2 -2
- package/dist/{file-KIBY6XZX.js → file-U2NXQ6RC.js} +4 -4
- package/dist/index.js +3 -3
- package/dist/{llm-T7C6QJWB.js → llm-6VJMMPDO.js} +416 -49
- package/dist/llm-6VJMMPDO.js.map +7 -0
- package/dist/{llmLazy-FDVUCPDQ.js → llmLazy-LYGZWC7G.js} +1 -1
- package/dist/{loader-QCHS455W.js → loader-DMZVU2XJ.js} +4 -4
- package/dist/{lsp-TE2SQ6CO.js → lsp-6LNF5DQB.js} +6 -6
- package/dist/{lspAnchor-IZ7YQJ64.js → lspAnchor-SF5Y7ZJT.js} +6 -6
- package/dist/{mcp-PLAWUZOQ.js → mcp-NLDX3RQE.js} +7 -7
- package/dist/{mentionProcessor-2O3AMZHB.js → mentionProcessor-BMX6VGRH.js} +5 -5
- package/dist/{messages-ZHFZ2OOG.js → messages-OTQ6IJM5.js} +9 -5
- package/dist/{model-GBC2PBVJ.js → model-KWGEASLY.js} +5 -5
- package/dist/{openai-2V2J23AE.js → openai-XIRWQY5H.js} +5 -5
- package/dist/{outputStyles-WD4VD4GZ.js → outputStyles-HKYM5C76.js} +4 -4
- package/dist/{pluginRuntime-WNZS26EV.js → pluginRuntime-25Y2MVIN.js} +6 -6
- package/dist/{pluginValidation-YP7MW35I.js → pluginValidation-CIJIQKGB.js} +6 -6
- package/dist/prompts-WH3VEHH6.js +56 -0
- package/dist/{pybAgentSessionLoad-YABCHELS.js → pybAgentSessionLoad-TF3BFX4S.js} +4 -4
- package/dist/{pybAgentSessionResume-C3LNSFQL.js → pybAgentSessionResume-Y5JO4GLH.js} +4 -4
- package/dist/{pybAgentStreamJsonSession-DFOGLEOB.js → pybAgentStreamJsonSession-46VLF4QN.js} +4 -3
- package/dist/pybAgentStreamJsonSession-46VLF4QN.js.map +7 -0
- package/dist/{pybHooks-LGGIB5PJ.js → pybHooks-LZPU4EF6.js} +4 -4
- package/dist/query-4B3GTPBN.js +58 -0
- package/dist/{registry-EYMCKHRG.js → registry-6LUE7ZWC.js} +5 -5
- package/dist/{ripgrep-JZN2MVSK.js → ripgrep-KVB55D22.js} +3 -3
- package/dist/{skillMarketplace-ETYXMAXF.js → skillMarketplace-2IVEPC2E.js} +3 -3
- package/dist/{state-MAVHRDNE.js → state-OGBESWFS.js} +2 -2
- package/dist/{theme-AUEZ6SNA.js → theme-QQ2SCFEK.js} +5 -5
- package/dist/{toolPermissionSettings-7JZYBUZC.js → toolPermissionSettings-ZGGPBK6S.js} +6 -6
- package/dist/tools-UXPFIHD4.js +55 -0
- package/dist/tools-UXPFIHD4.js.map +7 -0
- package/dist/{userInput-V6RU4BEQ.js → userInput-75VCTJDE.js} +76 -49
- package/dist/userInput-75VCTJDE.js.map +7 -0
- package/package.json +18 -1
- package/dist/REPL-YW6AH5YU.js +0 -49
- package/dist/acp-2LMTSBAU.js.map +0 -7
- package/dist/ask-4Z4LH5IS.js.map +0 -7
- package/dist/chunk-CJ2YYIJN.js.map +0 -7
- package/dist/chunk-HFVRQO2J.js.map +0 -7
- package/dist/chunk-O6DTZU7F.js.map +0 -7
- package/dist/chunk-SWNNPHFY.js.map +0 -7
- package/dist/chunk-W4PXRGP3.js.map +0 -7
- package/dist/chunk-YNGGZILT.js +0 -516
- package/dist/chunk-YNGGZILT.js.map +0 -7
- package/dist/chunk-ZD6NMP33.js +0 -240
- package/dist/cli-N3Q4D4BW.js.map +0 -7
- package/dist/commands-OOINF26E.js +0 -53
- package/dist/llm-T7C6QJWB.js.map +0 -7
- package/dist/prompts-QPYUI6SX.js +0 -55
- package/dist/pybAgentStreamJsonSession-DFOGLEOB.js.map +0 -7
- package/dist/query-EC6HGBDS.js +0 -57
- package/dist/tools-3JFVDDSZ.js +0 -54
- package/dist/userInput-V6RU4BEQ.js.map +0 -7
- /package/dist/{REPL-YW6AH5YU.js.map → REPL-FDBOFOZN.js.map} +0 -0
- /package/dist/{agentsValidate-YQSHYCYC.js.map → agentsValidate-RDNLI7GA.js.map} +0 -0
- /package/dist/{autoUpdater-UTX7ZX2N.js.map → autoUpdater-53BZ6QWD.js.map} +0 -0
- /package/dist/{chunk-OY6SB5B3.js.map → chunk-276RV4DQ.js.map} +0 -0
- /package/dist/{chunk-7FFBXWS3.js.map → chunk-35X2VS4L.js.map} +0 -0
- /package/dist/{chunk-VZDDKAL2.js.map → chunk-4C2CGHBI.js.map} +0 -0
- /package/dist/{chunk-Y2RSIF7P.js.map → chunk-4KPVE4K7.js.map} +0 -0
- /package/dist/{chunk-SDKYJZWD.js.map → chunk-57GJQMFS.js.map} +0 -0
- /package/dist/{chunk-3JH34RBY.js.map → chunk-6PXEXL7C.js.map} +0 -0
- /package/dist/{chunk-IKMMFSNJ.js.map → chunk-AMQ6XZOU.js.map} +0 -0
- /package/dist/{chunk-5JKCAVMI.js.map → chunk-BZGQQ4WZ.js.map} +0 -0
- /package/dist/{chunk-4BFEUSKN.js.map → chunk-CATWZQ3R.js.map} +0 -0
- /package/dist/{chunk-EGJRWKZ6.js.map → chunk-CPLMSZ63.js.map} +0 -0
- /package/dist/{chunk-PI5RBPFA.js.map → chunk-DA6NJEFI.js.map} +0 -0
- /package/dist/{chunk-IFC2PLAM.js.map → chunk-E35YJNX2.js.map} +0 -0
- /package/dist/{chunk-TIMEEE5U.js.map → chunk-G7DKRXDS.js.map} +0 -0
- /package/dist/{chunk-5F6IQJHF.js.map → chunk-HIJYNCCN.js.map} +0 -0
- /package/dist/{chunk-F7HYDAWW.js.map → chunk-JE43CQYI.js.map} +0 -0
- /package/dist/{chunk-JEAXJP2E.js.map → chunk-JLC2I3EY.js.map} +0 -0
- /package/dist/{chunk-KLD4WAB6.js.map → chunk-KNLP4UO6.js.map} +0 -0
- /package/dist/{chunk-PMYMUSB4.js.map → chunk-LEYWQQ7V.js.map} +0 -0
- /package/dist/{chunk-EN7L7JWN.js.map → chunk-LIOZM4KE.js.map} +0 -0
- /package/dist/{chunk-O6DTZU7F.js → chunk-OC5CZWBQ.js} +0 -0
- /package/dist/{chunk-4R7NUADF.js.map → chunk-Q5EZLUFC.js.map} +0 -0
- /package/dist/{chunk-LYMH46VN.js.map → chunk-QMN64ICT.js.map} +0 -0
- /package/dist/{chunk-VBV5RHIK.js.map → chunk-R4ZEH3KJ.js.map} +0 -0
- /package/dist/{chunk-TKEWBSVM.js.map → chunk-SNASBZ2C.js.map} +0 -0
- /package/dist/{chunk-T7UTA73F.js.map → chunk-TLZS274Y.js.map} +0 -0
- /package/dist/{chunk-IOP3VA4X.js.map → chunk-YSL5H7NJ.js.map} +0 -0
- /package/dist/{commands-OOINF26E.js.map → commands-DYXAWJO6.js.map} +0 -0
- /package/dist/{config-GZXNPIIG.js.map → config-66BMMOES.js.map} +0 -0
- /package/dist/{context-TUO5CUR3.js.map → context-PG7YTQCJ.js.map} +0 -0
- /package/dist/{conversationTracker-APB6PR5Z.js.map → conversationPersistence-DB6IUU2I.js.map} +0 -0
- /package/dist/{customCommands-J4DV6OI5.js.map → conversationTracker-WG3J56PX.js.map} +0 -0
- /package/dist/{env-YBYEMHYQ.js.map → customCommands-XDKUVT73.js.map} +0 -0
- /package/dist/{file-KIBY6XZX.js.map → env-FW74XJHK.js.map} +0 -0
- /package/dist/{llmLazy-FDVUCPDQ.js.map → file-U2NXQ6RC.js.map} +0 -0
- /package/dist/{loader-QCHS455W.js.map → llmLazy-LYGZWC7G.js.map} +0 -0
- /package/dist/{lsp-TE2SQ6CO.js.map → loader-DMZVU2XJ.js.map} +0 -0
- /package/dist/{mcp-PLAWUZOQ.js.map → lsp-6LNF5DQB.js.map} +0 -0
- /package/dist/{lspAnchor-IZ7YQJ64.js.map → lspAnchor-SF5Y7ZJT.js.map} +0 -0
- /package/dist/{messages-ZHFZ2OOG.js.map → mcp-NLDX3RQE.js.map} +0 -0
- /package/dist/{mentionProcessor-2O3AMZHB.js.map → mentionProcessor-BMX6VGRH.js.map} +0 -0
- /package/dist/{model-GBC2PBVJ.js.map → messages-OTQ6IJM5.js.map} +0 -0
- /package/dist/{openai-2V2J23AE.js.map → model-KWGEASLY.js.map} +0 -0
- /package/dist/{outputStyles-WD4VD4GZ.js.map → openai-XIRWQY5H.js.map} +0 -0
- /package/dist/{pluginValidation-YP7MW35I.js.map → outputStyles-HKYM5C76.js.map} +0 -0
- /package/dist/{pluginRuntime-WNZS26EV.js.map → pluginRuntime-25Y2MVIN.js.map} +0 -0
- /package/dist/{prompts-QPYUI6SX.js.map → pluginValidation-CIJIQKGB.js.map} +0 -0
- /package/dist/{pybAgentSessionLoad-YABCHELS.js.map → prompts-WH3VEHH6.js.map} +0 -0
- /package/dist/{pybAgentSessionResume-C3LNSFQL.js.map → pybAgentSessionLoad-TF3BFX4S.js.map} +0 -0
- /package/dist/{pybHooks-LGGIB5PJ.js.map → pybAgentSessionResume-Y5JO4GLH.js.map} +0 -0
- /package/dist/{query-EC6HGBDS.js.map → pybHooks-LZPU4EF6.js.map} +0 -0
- /package/dist/{registry-EYMCKHRG.js.map → query-4B3GTPBN.js.map} +0 -0
- /package/dist/{ripgrep-JZN2MVSK.js.map → registry-6LUE7ZWC.js.map} +0 -0
- /package/dist/{skillMarketplace-ETYXMAXF.js.map → ripgrep-KVB55D22.js.map} +0 -0
- /package/dist/{state-MAVHRDNE.js.map → skillMarketplace-2IVEPC2E.js.map} +0 -0
- /package/dist/{theme-AUEZ6SNA.js.map → state-OGBESWFS.js.map} +0 -0
- /package/dist/{toolPermissionSettings-7JZYBUZC.js.map → theme-QQ2SCFEK.js.map} +0 -0
- /package/dist/{tools-3JFVDDSZ.js.map → toolPermissionSettings-ZGGPBK6S.js.map} +0 -0
|
@@ -2,39 +2,37 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
getToolDescription
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-OC5CZWBQ.js";
|
|
6
6
|
import {
|
|
7
|
-
emitTelemetryEvent,
|
|
8
7
|
formatSystemPromptWithContext,
|
|
9
8
|
generatePybContext,
|
|
10
9
|
getCLISyspromptPrefix,
|
|
11
|
-
getModelCapabilities,
|
|
12
10
|
getReasoningEffort,
|
|
13
11
|
models_default,
|
|
14
|
-
refreshPybContext
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
12
|
+
refreshPybContext
|
|
13
|
+
} from "./chunk-PH6DPTO3.js";
|
|
14
|
+
import "./chunk-Q5EZLUFC.js";
|
|
15
|
+
import "./chunk-JLC2I3EY.js";
|
|
16
|
+
import "./chunk-L3R7MPZU.js";
|
|
17
|
+
import "./chunk-BZGQQ4WZ.js";
|
|
18
|
+
import "./chunk-PPFVOBEG.js";
|
|
19
|
+
import "./chunk-T7P3SSAQ.js";
|
|
20
20
|
import "./chunk-F4AXICO7.js";
|
|
21
|
-
import "./chunk-4R7NUADF.js";
|
|
22
|
-
import "./chunk-ZD6NMP33.js";
|
|
23
21
|
import "./chunk-5P7HBXTD.js";
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-TLZS274Y.js";
|
|
23
|
+
import "./chunk-6PXEXL7C.js";
|
|
26
24
|
import {
|
|
27
25
|
getCompletionWithProfile,
|
|
28
26
|
getGPT5CompletionWithProfile
|
|
29
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-CATWZQ3R.js";
|
|
30
28
|
import "./chunk-XKYHFZEC.js";
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-KNLP4UO6.js";
|
|
30
|
+
import "./chunk-276RV4DQ.js";
|
|
31
|
+
import "./chunk-R4ZEH3KJ.js";
|
|
32
|
+
import "./chunk-35X2VS4L.js";
|
|
35
33
|
import "./chunk-UNNVICVU.js";
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-YSL5H7NJ.js";
|
|
35
|
+
import "./chunk-DA6NJEFI.js";
|
|
38
36
|
import "./chunk-A3BVXXA3.js";
|
|
39
37
|
import {
|
|
40
38
|
API_ERROR_MESSAGE_PREFIX,
|
|
@@ -44,8 +42,9 @@ import {
|
|
|
44
42
|
NO_CONTENT_MESSAGE,
|
|
45
43
|
PROMPT_TOO_LONG_ERROR_MESSAGE,
|
|
46
44
|
createAssistantAPIErrorMessage,
|
|
45
|
+
emitTelemetryEvent,
|
|
47
46
|
normalizeContentFromAPI
|
|
48
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-JRMAK4PK.js";
|
|
49
48
|
import {
|
|
50
49
|
processResponsesStream
|
|
51
50
|
} from "./chunk-OMELVAJD.js";
|
|
@@ -56,27 +55,27 @@ import "./chunk-B6IMQJZM.js";
|
|
|
56
55
|
import {
|
|
57
56
|
addToTotalCost
|
|
58
57
|
} from "./chunk-OUXHGDLH.js";
|
|
59
|
-
import "./chunk-
|
|
58
|
+
import "./chunk-57GJQMFS.js";
|
|
60
59
|
import "./chunk-QWIBSCDN.js";
|
|
61
|
-
import "./chunk-
|
|
62
|
-
import "./chunk-
|
|
63
|
-
import "./chunk-
|
|
60
|
+
import "./chunk-CPLMSZ63.js";
|
|
61
|
+
import "./chunk-JE43CQYI.js";
|
|
62
|
+
import "./chunk-HIJYNCCN.js";
|
|
64
63
|
import "./chunk-UZ34JEUK.js";
|
|
65
|
-
import "./chunk-
|
|
64
|
+
import "./chunk-4C2CGHBI.js";
|
|
66
65
|
import "./chunk-BJSWTHRM.js";
|
|
67
66
|
import {
|
|
68
67
|
USE_BEDROCK,
|
|
69
68
|
USE_VERTEX,
|
|
70
69
|
getModelManager,
|
|
71
70
|
getVertexRegionForModel
|
|
72
|
-
} from "./chunk-
|
|
73
|
-
import "./chunk-
|
|
74
|
-
import "./chunk-
|
|
75
|
-
import "./chunk-
|
|
71
|
+
} from "./chunk-QMN64ICT.js";
|
|
72
|
+
import "./chunk-E35YJNX2.js";
|
|
73
|
+
import "./chunk-LIOZM4KE.js";
|
|
74
|
+
import "./chunk-4KPVE4K7.js";
|
|
76
75
|
import {
|
|
77
76
|
getAnthropicApiKey,
|
|
78
77
|
getGlobalConfig
|
|
79
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-LEYWQQ7V.js";
|
|
80
79
|
import "./chunk-RQVLBMP7.js";
|
|
81
80
|
import {
|
|
82
81
|
debug,
|
|
@@ -85,16 +84,16 @@ import {
|
|
|
85
84
|
logLLMInteraction,
|
|
86
85
|
logSystemPromptConstruction,
|
|
87
86
|
markPhase
|
|
88
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-AMQ6XZOU.js";
|
|
89
88
|
import {
|
|
90
89
|
PRODUCT_COMMAND,
|
|
91
90
|
env,
|
|
92
91
|
getCwd,
|
|
93
92
|
logError
|
|
94
|
-
} from "./chunk-
|
|
93
|
+
} from "./chunk-G7DKRXDS.js";
|
|
95
94
|
import {
|
|
96
95
|
MACRO
|
|
97
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-AWRDD6BG.js";
|
|
98
97
|
import "./chunk-I3J4JYES.js";
|
|
99
98
|
|
|
100
99
|
// src/services/ai/llm.ts
|
|
@@ -1172,6 +1171,151 @@ var ChatCompletionsAdapter = class extends OpenAIAdapter {
|
|
|
1172
1171
|
}
|
|
1173
1172
|
};
|
|
1174
1173
|
|
|
1174
|
+
// src/constants/modelCapabilities.ts
|
|
1175
|
+
var GPT5_CAPABILITIES = {
|
|
1176
|
+
apiArchitecture: {
|
|
1177
|
+
primary: "responses_api",
|
|
1178
|
+
fallback: "chat_completions"
|
|
1179
|
+
},
|
|
1180
|
+
parameters: {
|
|
1181
|
+
maxTokensField: "max_output_tokens",
|
|
1182
|
+
supportsReasoningEffort: true,
|
|
1183
|
+
supportsVerbosity: true,
|
|
1184
|
+
temperatureMode: "fixed_one"
|
|
1185
|
+
},
|
|
1186
|
+
toolCalling: {
|
|
1187
|
+
mode: "custom_tools",
|
|
1188
|
+
supportsFreeform: true,
|
|
1189
|
+
supportsAllowedTools: true,
|
|
1190
|
+
supportsParallelCalls: true
|
|
1191
|
+
},
|
|
1192
|
+
stateManagement: {
|
|
1193
|
+
supportsResponseId: true,
|
|
1194
|
+
supportsConversationChaining: true,
|
|
1195
|
+
supportsPreviousResponseId: true
|
|
1196
|
+
},
|
|
1197
|
+
streaming: {
|
|
1198
|
+
supported: true,
|
|
1199
|
+
includesUsage: true
|
|
1200
|
+
}
|
|
1201
|
+
};
|
|
1202
|
+
var CHAT_COMPLETIONS_CAPABILITIES = {
|
|
1203
|
+
apiArchitecture: {
|
|
1204
|
+
primary: "chat_completions"
|
|
1205
|
+
},
|
|
1206
|
+
parameters: {
|
|
1207
|
+
maxTokensField: "max_tokens",
|
|
1208
|
+
supportsReasoningEffort: false,
|
|
1209
|
+
supportsVerbosity: false,
|
|
1210
|
+
temperatureMode: "flexible"
|
|
1211
|
+
},
|
|
1212
|
+
toolCalling: {
|
|
1213
|
+
mode: "function_calling",
|
|
1214
|
+
supportsFreeform: false,
|
|
1215
|
+
supportsAllowedTools: false,
|
|
1216
|
+
supportsParallelCalls: true
|
|
1217
|
+
},
|
|
1218
|
+
stateManagement: {
|
|
1219
|
+
supportsResponseId: false,
|
|
1220
|
+
supportsConversationChaining: false,
|
|
1221
|
+
supportsPreviousResponseId: false
|
|
1222
|
+
},
|
|
1223
|
+
streaming: {
|
|
1224
|
+
supported: true,
|
|
1225
|
+
includesUsage: true
|
|
1226
|
+
}
|
|
1227
|
+
};
|
|
1228
|
+
var MODEL_CAPABILITIES_REGISTRY = {
|
|
1229
|
+
"gpt-5": GPT5_CAPABILITIES,
|
|
1230
|
+
"gpt-5-mini": GPT5_CAPABILITIES,
|
|
1231
|
+
"gpt-5-nano": GPT5_CAPABILITIES,
|
|
1232
|
+
"gpt-5-chat-latest": GPT5_CAPABILITIES,
|
|
1233
|
+
"gpt-5-codex": GPT5_CAPABILITIES,
|
|
1234
|
+
"gpt-4o": CHAT_COMPLETIONS_CAPABILITIES,
|
|
1235
|
+
"gpt-4o-mini": CHAT_COMPLETIONS_CAPABILITIES,
|
|
1236
|
+
"gpt-4-turbo": CHAT_COMPLETIONS_CAPABILITIES,
|
|
1237
|
+
"gpt-4": CHAT_COMPLETIONS_CAPABILITIES,
|
|
1238
|
+
"claude-3-5-sonnet-20241022": CHAT_COMPLETIONS_CAPABILITIES,
|
|
1239
|
+
"claude-3-5-haiku-20241022": CHAT_COMPLETIONS_CAPABILITIES,
|
|
1240
|
+
"claude-3-opus-20240229": CHAT_COMPLETIONS_CAPABILITIES,
|
|
1241
|
+
o1: {
|
|
1242
|
+
...CHAT_COMPLETIONS_CAPABILITIES,
|
|
1243
|
+
parameters: {
|
|
1244
|
+
...CHAT_COMPLETIONS_CAPABILITIES.parameters,
|
|
1245
|
+
maxTokensField: "max_completion_tokens",
|
|
1246
|
+
temperatureMode: "fixed_one"
|
|
1247
|
+
}
|
|
1248
|
+
},
|
|
1249
|
+
"o1-mini": {
|
|
1250
|
+
...CHAT_COMPLETIONS_CAPABILITIES,
|
|
1251
|
+
parameters: {
|
|
1252
|
+
...CHAT_COMPLETIONS_CAPABILITIES.parameters,
|
|
1253
|
+
maxTokensField: "max_completion_tokens",
|
|
1254
|
+
temperatureMode: "fixed_one"
|
|
1255
|
+
}
|
|
1256
|
+
},
|
|
1257
|
+
"o1-preview": {
|
|
1258
|
+
...CHAT_COMPLETIONS_CAPABILITIES,
|
|
1259
|
+
parameters: {
|
|
1260
|
+
...CHAT_COMPLETIONS_CAPABILITIES.parameters,
|
|
1261
|
+
maxTokensField: "max_completion_tokens",
|
|
1262
|
+
temperatureMode: "fixed_one"
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
};
|
|
1266
|
+
function inferModelCapabilities(modelName) {
|
|
1267
|
+
if (!modelName) return null;
|
|
1268
|
+
const lowerName = modelName.toLowerCase();
|
|
1269
|
+
if (lowerName.includes("gpt-5") || lowerName.includes("gpt5")) {
|
|
1270
|
+
return GPT5_CAPABILITIES;
|
|
1271
|
+
}
|
|
1272
|
+
if (lowerName.includes("gpt-6") || lowerName.includes("gpt6")) {
|
|
1273
|
+
return {
|
|
1274
|
+
...GPT5_CAPABILITIES,
|
|
1275
|
+
streaming: { supported: true, includesUsage: true }
|
|
1276
|
+
};
|
|
1277
|
+
}
|
|
1278
|
+
if (lowerName.includes("glm-5") || lowerName.includes("glm5")) {
|
|
1279
|
+
return {
|
|
1280
|
+
...CHAT_COMPLETIONS_CAPABILITIES,
|
|
1281
|
+
toolCalling: {
|
|
1282
|
+
...CHAT_COMPLETIONS_CAPABILITIES.toolCalling,
|
|
1283
|
+
supportsAllowedTools: false
|
|
1284
|
+
}
|
|
1285
|
+
};
|
|
1286
|
+
}
|
|
1287
|
+
if (lowerName.startsWith("o1") || lowerName.includes("o1-")) {
|
|
1288
|
+
return {
|
|
1289
|
+
...CHAT_COMPLETIONS_CAPABILITIES,
|
|
1290
|
+
parameters: {
|
|
1291
|
+
...CHAT_COMPLETIONS_CAPABILITIES.parameters,
|
|
1292
|
+
maxTokensField: "max_completion_tokens",
|
|
1293
|
+
temperatureMode: "fixed_one"
|
|
1294
|
+
}
|
|
1295
|
+
};
|
|
1296
|
+
}
|
|
1297
|
+
return null;
|
|
1298
|
+
}
|
|
1299
|
+
var capabilityCache = /* @__PURE__ */ new Map();
|
|
1300
|
+
function getModelCapabilities(modelName) {
|
|
1301
|
+
if (capabilityCache.has(modelName)) {
|
|
1302
|
+
return capabilityCache.get(modelName);
|
|
1303
|
+
}
|
|
1304
|
+
if (MODEL_CAPABILITIES_REGISTRY[modelName]) {
|
|
1305
|
+
const capabilities = MODEL_CAPABILITIES_REGISTRY[modelName];
|
|
1306
|
+
capabilityCache.set(modelName, capabilities);
|
|
1307
|
+
return capabilities;
|
|
1308
|
+
}
|
|
1309
|
+
const inferred = inferModelCapabilities(modelName);
|
|
1310
|
+
if (inferred) {
|
|
1311
|
+
capabilityCache.set(modelName, inferred);
|
|
1312
|
+
return inferred;
|
|
1313
|
+
}
|
|
1314
|
+
const defaultCapabilities = CHAT_COMPLETIONS_CAPABILITIES;
|
|
1315
|
+
capabilityCache.set(modelName, defaultCapabilities);
|
|
1316
|
+
return defaultCapabilities;
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1175
1319
|
// src/services/ai/modelAdapterFactory.ts
|
|
1176
1320
|
var ModelAdapterFactory = class {
|
|
1177
1321
|
static createAdapter(modelProfile) {
|
|
@@ -1536,6 +1680,142 @@ function convertAnthropicMessagesToOpenAIMessages(messages) {
|
|
|
1536
1680
|
return finalMessages;
|
|
1537
1681
|
}
|
|
1538
1682
|
|
|
1683
|
+
// src/services/ai/policyDispatch/policyConfigLoader.ts
|
|
1684
|
+
import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
|
|
1685
|
+
import { join, resolve } from "path";
|
|
1686
|
+
|
|
1687
|
+
// src/services/ai/policyDispatch/policyConfigSchema.ts
|
|
1688
|
+
import { z } from "zod";
|
|
1689
|
+
var policyConfigSchema = z.object({
|
|
1690
|
+
version: z.string().min(1),
|
|
1691
|
+
defaults: z.object({
|
|
1692
|
+
reasoningPolicy: z.enum([
|
|
1693
|
+
"preserve_reasoning_blocks",
|
|
1694
|
+
"map_to_provider_options",
|
|
1695
|
+
"flatten_to_text_fallback"
|
|
1696
|
+
]).optional(),
|
|
1697
|
+
normalizeProviderContent: z.boolean().optional(),
|
|
1698
|
+
trimCrossModelMetadata: z.boolean().optional()
|
|
1699
|
+
}).optional(),
|
|
1700
|
+
overrides: z.array(
|
|
1701
|
+
z.object({
|
|
1702
|
+
model: z.string().min(1).optional(),
|
|
1703
|
+
modelFamily: z.string().min(1).optional(),
|
|
1704
|
+
provider: z.string().min(1).optional(),
|
|
1705
|
+
scenario: z.enum(["query", "auto_compact", "other"]).optional(),
|
|
1706
|
+
reasoningPolicy: z.enum([
|
|
1707
|
+
"preserve_reasoning_blocks",
|
|
1708
|
+
"map_to_provider_options",
|
|
1709
|
+
"flatten_to_text_fallback"
|
|
1710
|
+
]).optional(),
|
|
1711
|
+
normalizeProviderContent: z.boolean().optional(),
|
|
1712
|
+
trimCrossModelMetadata: z.boolean().optional()
|
|
1713
|
+
})
|
|
1714
|
+
).optional().default([])
|
|
1715
|
+
});
|
|
1716
|
+
|
|
1717
|
+
// src/services/ai/policyDispatch/policyConfigLoader.ts
|
|
1718
|
+
function getModelFamily(model) {
|
|
1719
|
+
const normalized = String(model || "").toLowerCase();
|
|
1720
|
+
if (normalized.startsWith("gpt-5")) return "gpt-5";
|
|
1721
|
+
if (normalized.startsWith("gpt-4o")) return "gpt-4o";
|
|
1722
|
+
if (!normalized) return "unknown";
|
|
1723
|
+
const segments = normalized.split("-");
|
|
1724
|
+
return segments.length >= 2 ? `${segments[0]}-${segments[1]}` : normalized;
|
|
1725
|
+
}
|
|
1726
|
+
function getDefaultPolicyConfigPath() {
|
|
1727
|
+
return resolve(join(process.cwd(), "config/auto-compact-policy.config.json"));
|
|
1728
|
+
}
|
|
1729
|
+
function loadAutoCompactPolicyConfig(options) {
|
|
1730
|
+
const filePath = resolve(options?.filePath ?? getDefaultPolicyConfigPath());
|
|
1731
|
+
if (!existsSync2(filePath)) return null;
|
|
1732
|
+
try {
|
|
1733
|
+
const raw = readFileSync2(filePath, "utf8");
|
|
1734
|
+
const parsed = JSON.parse(raw);
|
|
1735
|
+
return policyConfigSchema.parse(parsed);
|
|
1736
|
+
} catch {
|
|
1737
|
+
return null;
|
|
1738
|
+
}
|
|
1739
|
+
}
|
|
1740
|
+
function matches(input, override) {
|
|
1741
|
+
if (override.model && override.model !== input.model) return false;
|
|
1742
|
+
if (override.modelFamily && override.modelFamily !== getModelFamily(input.model))
|
|
1743
|
+
return false;
|
|
1744
|
+
if (override.provider && override.provider !== input.provider) return false;
|
|
1745
|
+
if (override.scenario && override.scenario !== input.source) return false;
|
|
1746
|
+
return true;
|
|
1747
|
+
}
|
|
1748
|
+
function selectPolicyOverride(input, config) {
|
|
1749
|
+
const matched = [...config.overrides ?? []].reverse().find((item) => matches(input, item));
|
|
1750
|
+
if (matched) {
|
|
1751
|
+
return {
|
|
1752
|
+
reasoningPolicy: matched.reasoningPolicy,
|
|
1753
|
+
normalizeProviderContent: matched.normalizeProviderContent,
|
|
1754
|
+
trimCrossModelMetadata: matched.trimCrossModelMetadata
|
|
1755
|
+
};
|
|
1756
|
+
}
|
|
1757
|
+
if (config.defaults) {
|
|
1758
|
+
return {
|
|
1759
|
+
reasoningPolicy: config.defaults.reasoningPolicy,
|
|
1760
|
+
normalizeProviderContent: config.defaults.normalizeProviderContent,
|
|
1761
|
+
trimCrossModelMetadata: config.defaults.trimCrossModelMetadata
|
|
1762
|
+
};
|
|
1763
|
+
}
|
|
1764
|
+
return null;
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1767
|
+
// src/services/ai/policyDispatch/index.ts
|
|
1768
|
+
function resolveDefaultReasoningPolicy(model) {
|
|
1769
|
+
const capabilities = getModelCapabilities(model);
|
|
1770
|
+
if (capabilities.apiArchitecture.primary === "responses_api") {
|
|
1771
|
+
return "map_to_provider_options";
|
|
1772
|
+
}
|
|
1773
|
+
return "preserve_reasoning_blocks";
|
|
1774
|
+
}
|
|
1775
|
+
function resolveDefaultNormalizeProviderContent(model) {
|
|
1776
|
+
const capabilities = getModelCapabilities(model);
|
|
1777
|
+
return capabilities.apiArchitecture.primary === "responses_api";
|
|
1778
|
+
}
|
|
1779
|
+
function resolveDefaultTrimCrossModelMetadata(model) {
|
|
1780
|
+
const capabilities = getModelCapabilities(model);
|
|
1781
|
+
return capabilities.apiArchitecture.primary === "responses_api";
|
|
1782
|
+
}
|
|
1783
|
+
function resolveCapabilityDefaults(model) {
|
|
1784
|
+
return {
|
|
1785
|
+
reasoningPolicy: resolveDefaultReasoningPolicy(model),
|
|
1786
|
+
normalizeProviderContent: resolveDefaultNormalizeProviderContent(model),
|
|
1787
|
+
trimCrossModelMetadata: resolveDefaultTrimCrossModelMetadata(model)
|
|
1788
|
+
};
|
|
1789
|
+
}
|
|
1790
|
+
function resolveModelResponsePolicy(input) {
|
|
1791
|
+
const defaults = resolveCapabilityDefaults(input.model);
|
|
1792
|
+
const hasOverride = input.reasoningPolicy !== void 0 || input.normalizeProviderContent !== void 0 || input.trimCrossModelMetadata !== void 0;
|
|
1793
|
+
if (hasOverride) {
|
|
1794
|
+
return {
|
|
1795
|
+
reasoningPolicy: input.reasoningPolicy ?? defaults.reasoningPolicy,
|
|
1796
|
+
normalizeProviderContent: input.normalizeProviderContent ?? defaults.normalizeProviderContent,
|
|
1797
|
+
trimCrossModelMetadata: input.trimCrossModelMetadata ?? defaults.trimCrossModelMetadata,
|
|
1798
|
+
policySource: "context_override"
|
|
1799
|
+
};
|
|
1800
|
+
}
|
|
1801
|
+
const config = loadAutoCompactPolicyConfig();
|
|
1802
|
+
const selection = config ? selectPolicyOverride(input, config) : null;
|
|
1803
|
+
if (selection && (selection.reasoningPolicy !== void 0 || selection.normalizeProviderContent !== void 0 || selection.trimCrossModelMetadata !== void 0)) {
|
|
1804
|
+
return {
|
|
1805
|
+
reasoningPolicy: selection.reasoningPolicy ?? defaults.reasoningPolicy,
|
|
1806
|
+
normalizeProviderContent: selection.normalizeProviderContent ?? defaults.normalizeProviderContent,
|
|
1807
|
+
trimCrossModelMetadata: selection.trimCrossModelMetadata ?? defaults.trimCrossModelMetadata,
|
|
1808
|
+
policySource: "policy_config"
|
|
1809
|
+
};
|
|
1810
|
+
}
|
|
1811
|
+
return {
|
|
1812
|
+
reasoningPolicy: defaults.reasoningPolicy,
|
|
1813
|
+
normalizeProviderContent: defaults.normalizeProviderContent,
|
|
1814
|
+
trimCrossModelMetadata: defaults.trimCrossModelMetadata,
|
|
1815
|
+
policySource: "model_capabilities"
|
|
1816
|
+
};
|
|
1817
|
+
}
|
|
1818
|
+
|
|
1539
1819
|
// src/services/ai/messageTransform/policies.ts
|
|
1540
1820
|
function resolvePolicies(context) {
|
|
1541
1821
|
return resolveModelResponsePolicy({
|
|
@@ -1657,6 +1937,7 @@ function applyProviderRules(messages, options) {
|
|
|
1657
1937
|
|
|
1658
1938
|
// src/services/ai/messageTransform/index.ts
|
|
1659
1939
|
var MESSAGE_TRANSFORM_RULE_VERSION = "b2-enhanced-v1";
|
|
1940
|
+
var DEFAULT_PRUNE_PLACEHOLDER = "[pruned historical tool output]";
|
|
1660
1941
|
function collectBlockStats(messages) {
|
|
1661
1942
|
const stats = {};
|
|
1662
1943
|
for (const message of messages) {
|
|
@@ -1669,8 +1950,63 @@ function collectBlockStats(messages) {
|
|
|
1669
1950
|
}
|
|
1670
1951
|
return stats;
|
|
1671
1952
|
}
|
|
1953
|
+
function getPruneCheckpointIndex(messages) {
|
|
1954
|
+
for (let index = messages.length - 1; index >= 0; index -= 1) {
|
|
1955
|
+
const state = messages[index]?.message?.compaction?.prune?.state ?? messages[index]?.message?.metadata?.compaction?.prune?.state;
|
|
1956
|
+
if (state === "compacted") return index;
|
|
1957
|
+
}
|
|
1958
|
+
return -1;
|
|
1959
|
+
}
|
|
1960
|
+
function isToolLikeBlock(block) {
|
|
1961
|
+
if (!block || typeof block !== "object") return false;
|
|
1962
|
+
const type = String(block.type ?? "");
|
|
1963
|
+
if (type === "tool_result" || type === "tool_use" || type === "tool-use" || type === "tool-call" || type === "tool_output" || type === "tool-output") {
|
|
1964
|
+
return true;
|
|
1965
|
+
}
|
|
1966
|
+
return "toolUseId" in block || "tool_use_id" in block || "toolCallId" in block || "tool_call_id" in block;
|
|
1967
|
+
}
|
|
1968
|
+
function applyPruneExecution(messages, context) {
|
|
1969
|
+
if (!context.pruneExecutionEnabled) {
|
|
1970
|
+
return { transformed: messages, replacedBlocks: 0, replacedTextMessages: 0 };
|
|
1971
|
+
}
|
|
1972
|
+
const checkpointIndex = getPruneCheckpointIndex(messages);
|
|
1973
|
+
if (checkpointIndex <= 0) {
|
|
1974
|
+
return { transformed: messages, replacedBlocks: 0, replacedTextMessages: 0 };
|
|
1975
|
+
}
|
|
1976
|
+
const placeholder = context.pruneExecutionPlaceholder?.trim() || DEFAULT_PRUNE_PLACEHOLDER;
|
|
1977
|
+
let replacedBlocks = 0;
|
|
1978
|
+
let replacedTextMessages = 0;
|
|
1979
|
+
const transformed = messages.map((message, index) => {
|
|
1980
|
+
if (index >= checkpointIndex) return message;
|
|
1981
|
+
const content = message?.message?.content;
|
|
1982
|
+
if (Array.isArray(content)) {
|
|
1983
|
+
let changed = false;
|
|
1984
|
+
const nextContent = content.map((block) => {
|
|
1985
|
+
if (!isToolLikeBlock(block)) return block;
|
|
1986
|
+
changed = true;
|
|
1987
|
+
replacedBlocks += 1;
|
|
1988
|
+
return {
|
|
1989
|
+
type: "text",
|
|
1990
|
+
text: placeholder
|
|
1991
|
+
};
|
|
1992
|
+
});
|
|
1993
|
+
if (!changed) return message;
|
|
1994
|
+
return {
|
|
1995
|
+
...message,
|
|
1996
|
+
message: {
|
|
1997
|
+
...message.message,
|
|
1998
|
+
content: nextContent
|
|
1999
|
+
}
|
|
2000
|
+
};
|
|
2001
|
+
}
|
|
2002
|
+
return message;
|
|
2003
|
+
});
|
|
2004
|
+
return { transformed, replacedBlocks, replacedTextMessages };
|
|
2005
|
+
}
|
|
1672
2006
|
function transformMessagesForModel(messages, context) {
|
|
1673
2007
|
const resolved = resolvePolicies(context);
|
|
2008
|
+
const pruneExecutionResult = applyPruneExecution(messages, context);
|
|
2009
|
+
const inputMessages = pruneExecutionResult.transformed;
|
|
1674
2010
|
if (process.env.PYB_MESSAGE_TRANSFORM_ENABLED === "0") {
|
|
1675
2011
|
const payload2 = {
|
|
1676
2012
|
source: context.source,
|
|
@@ -1684,8 +2020,11 @@ function transformMessagesForModel(messages, context) {
|
|
|
1684
2020
|
ruleVersion: MESSAGE_TRANSFORM_RULE_VERSION,
|
|
1685
2021
|
ruleHits: createDefaultRuleHits(),
|
|
1686
2022
|
reason: "disabled",
|
|
1687
|
-
messageCount:
|
|
1688
|
-
outputBlockStats: collectBlockStats(
|
|
2023
|
+
messageCount: inputMessages.length,
|
|
2024
|
+
outputBlockStats: collectBlockStats(inputMessages),
|
|
2025
|
+
pruneExecutionEnabled: context.pruneExecutionEnabled === true,
|
|
2026
|
+
pruneExecutionReplacedBlocks: pruneExecutionResult.replacedBlocks,
|
|
2027
|
+
pruneExecutionReplacedTextMessages: pruneExecutionResult.replacedTextMessages
|
|
1689
2028
|
};
|
|
1690
2029
|
debug.state("MESSAGE_TRANSFORM_SKIPPED", payload2);
|
|
1691
2030
|
emitTelemetryEvent({
|
|
@@ -1694,7 +2033,7 @@ function transformMessagesForModel(messages, context) {
|
|
|
1694
2033
|
data: payload2,
|
|
1695
2034
|
timestamp: Date.now()
|
|
1696
2035
|
});
|
|
1697
|
-
return
|
|
2036
|
+
return inputMessages;
|
|
1698
2037
|
}
|
|
1699
2038
|
const dryRun = process.env.PYB_MESSAGE_TRANSFORM_DRY_RUN === "1";
|
|
1700
2039
|
if (dryRun) {
|
|
@@ -1709,8 +2048,11 @@ function transformMessagesForModel(messages, context) {
|
|
|
1709
2048
|
policySource: resolved.policySource,
|
|
1710
2049
|
ruleVersion: MESSAGE_TRANSFORM_RULE_VERSION,
|
|
1711
2050
|
ruleHits: createDefaultRuleHits(),
|
|
1712
|
-
messageCount:
|
|
1713
|
-
outputBlockStats: collectBlockStats(
|
|
2051
|
+
messageCount: inputMessages.length,
|
|
2052
|
+
outputBlockStats: collectBlockStats(inputMessages),
|
|
2053
|
+
pruneExecutionEnabled: context.pruneExecutionEnabled === true,
|
|
2054
|
+
pruneExecutionReplacedBlocks: pruneExecutionResult.replacedBlocks,
|
|
2055
|
+
pruneExecutionReplacedTextMessages: pruneExecutionResult.replacedTextMessages
|
|
1714
2056
|
};
|
|
1715
2057
|
debug.state("MESSAGE_TRANSFORM_APPLIED", payload2);
|
|
1716
2058
|
emitTelemetryEvent({
|
|
@@ -1719,9 +2061,9 @@ function transformMessagesForModel(messages, context) {
|
|
|
1719
2061
|
data: payload2,
|
|
1720
2062
|
timestamp: Date.now()
|
|
1721
2063
|
});
|
|
1722
|
-
return
|
|
2064
|
+
return inputMessages;
|
|
1723
2065
|
}
|
|
1724
|
-
const { transformed, ruleHits } = applyProviderRules(
|
|
2066
|
+
const { transformed, ruleHits } = applyProviderRules(inputMessages, {
|
|
1725
2067
|
model: context.model,
|
|
1726
2068
|
reasoningPolicy: resolved.reasoningPolicy,
|
|
1727
2069
|
normalizeProviderContent: resolved.normalizeProviderContent,
|
|
@@ -1738,8 +2080,11 @@ function transformMessagesForModel(messages, context) {
|
|
|
1738
2080
|
policySource: resolved.policySource,
|
|
1739
2081
|
ruleVersion: MESSAGE_TRANSFORM_RULE_VERSION,
|
|
1740
2082
|
ruleHits,
|
|
1741
|
-
messageCount:
|
|
1742
|
-
outputBlockStats: collectBlockStats(transformed)
|
|
2083
|
+
messageCount: inputMessages.length,
|
|
2084
|
+
outputBlockStats: collectBlockStats(transformed),
|
|
2085
|
+
pruneExecutionEnabled: context.pruneExecutionEnabled === true,
|
|
2086
|
+
pruneExecutionReplacedBlocks: pruneExecutionResult.replacedBlocks,
|
|
2087
|
+
pruneExecutionReplacedTextMessages: pruneExecutionResult.replacedTextMessages
|
|
1743
2088
|
};
|
|
1744
2089
|
debug.state("MESSAGE_TRANSFORM_APPLIED", payload);
|
|
1745
2090
|
emitTelemetryEvent({
|
|
@@ -1756,7 +2101,9 @@ function buildMessageTransformContext(params) {
|
|
|
1756
2101
|
return {
|
|
1757
2102
|
source: params.source,
|
|
1758
2103
|
model: params.model,
|
|
1759
|
-
provider: params.provider ?? "openai"
|
|
2104
|
+
provider: params.provider ?? "openai",
|
|
2105
|
+
pruneExecutionEnabled: params.pruneExecutionEnabled,
|
|
2106
|
+
pruneExecutionPlaceholder: params.pruneExecutionPlaceholder
|
|
1760
2107
|
};
|
|
1761
2108
|
}
|
|
1762
2109
|
|
|
@@ -1765,6 +2112,23 @@ function isGPT5Model(modelName) {
|
|
|
1765
2112
|
return modelName.startsWith("gpt-5");
|
|
1766
2113
|
}
|
|
1767
2114
|
var PROMPT_CACHING_ENABLED = !process.env.DISABLE_PROMPT_CACHING;
|
|
2115
|
+
function parseBooleanFlag(value) {
|
|
2116
|
+
if (value === void 0) return null;
|
|
2117
|
+
const normalized = value.trim().toLowerCase();
|
|
2118
|
+
if (normalized === "1" || normalized === "true" || normalized === "yes" || normalized === "on") {
|
|
2119
|
+
return true;
|
|
2120
|
+
}
|
|
2121
|
+
if (normalized === "0" || normalized === "false" || normalized === "no" || normalized === "off") {
|
|
2122
|
+
return false;
|
|
2123
|
+
}
|
|
2124
|
+
return null;
|
|
2125
|
+
}
|
|
2126
|
+
function resolvePruneExecutionEnabled(_toolUseContext) {
|
|
2127
|
+
const explicit = parseBooleanFlag(process.env.PYB_PRUNE_EXECUTION_ENABLED);
|
|
2128
|
+
if (explicit !== null) return explicit;
|
|
2129
|
+
return false;
|
|
2130
|
+
}
|
|
2131
|
+
var resolvePruneExecutionEnabledForTest = resolvePruneExecutionEnabled;
|
|
1768
2132
|
var SONNET_COST_PER_MILLION_INPUT_TOKENS = 3;
|
|
1769
2133
|
var SONNET_COST_PER_MILLION_OUTPUT_TOKENS = 15;
|
|
1770
2134
|
var SONNET_COST_PER_MILLION_PROMPT_CACHE_WRITE_TOKENS = 3.75;
|
|
@@ -1772,13 +2136,13 @@ var SONNET_COST_PER_MILLION_PROMPT_CACHE_READ_TOKENS = 0.3;
|
|
|
1772
2136
|
var MAX_RETRIES = process.env.USER_TYPE === "SWE_BENCH" ? 100 : 10;
|
|
1773
2137
|
var BASE_DELAY_MS = 500;
|
|
1774
2138
|
function abortableDelay(delayMs, signal) {
|
|
1775
|
-
return new Promise((
|
|
2139
|
+
return new Promise((resolve2, reject) => {
|
|
1776
2140
|
if (signal?.aborted) {
|
|
1777
2141
|
reject(new Error("Request was aborted"));
|
|
1778
2142
|
return;
|
|
1779
2143
|
}
|
|
1780
2144
|
const timeoutId = setTimeout(() => {
|
|
1781
|
-
|
|
2145
|
+
resolve2();
|
|
1782
2146
|
}, delayMs);
|
|
1783
2147
|
if (signal) {
|
|
1784
2148
|
const abortHandler = () => {
|
|
@@ -2353,15 +2717,17 @@ async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal
|
|
|
2353
2717
|
);
|
|
2354
2718
|
}
|
|
2355
2719
|
const resolvedModel = modelProfile.modelName;
|
|
2720
|
+
const toolUseContext = options.toolUseContext;
|
|
2721
|
+
const pruneExecutionEnabled = resolvePruneExecutionEnabled(toolUseContext);
|
|
2356
2722
|
const transformedMessages = transformMessagesForModel(
|
|
2357
2723
|
messages,
|
|
2358
2724
|
buildMessageTransformContext({
|
|
2359
2725
|
source: "query",
|
|
2360
2726
|
model: resolvedModel,
|
|
2361
|
-
provider: modelProfile.provider || "openai"
|
|
2727
|
+
provider: modelProfile.provider || "openai",
|
|
2728
|
+
pruneExecutionEnabled
|
|
2362
2729
|
})
|
|
2363
2730
|
);
|
|
2364
|
-
const toolUseContext = options.toolUseContext;
|
|
2365
2731
|
if (toolUseContext && !toolUseContext.responseState) {
|
|
2366
2732
|
const conversationId = getConversationId(
|
|
2367
2733
|
toolUseContext.agentId,
|
|
@@ -2942,7 +3308,7 @@ async function queryOpenAI(messages, systemPrompt, maxThinkingTokens, tools, sig
|
|
|
2942
3308
|
start = Date.now();
|
|
2943
3309
|
if (adapterContext) {
|
|
2944
3310
|
if (adapterContext.shouldUseResponses) {
|
|
2945
|
-
const { callGPT5ResponsesAPI } = await import("./openai-
|
|
3311
|
+
const { callGPT5ResponsesAPI } = await import("./openai-XIRWQY5H.js");
|
|
2946
3312
|
const response = await callGPT5ResponsesAPI(
|
|
2947
3313
|
modelProfile,
|
|
2948
3314
|
adapterContext.request,
|
|
@@ -3212,6 +3578,7 @@ export {
|
|
|
3212
3578
|
queryQuick,
|
|
3213
3579
|
refreshPybContext,
|
|
3214
3580
|
resetAnthropicClient,
|
|
3581
|
+
resolvePruneExecutionEnabledForTest,
|
|
3215
3582
|
userMessageToMessageParam,
|
|
3216
3583
|
verifyApiKey
|
|
3217
3584
|
};
|