pybao-cli 1.4.83 → 1.4.84

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.
Files changed (151) hide show
  1. package/dist/REPL-YDQJ4XS3.js +49 -0
  2. package/dist/{acp-5G23YRZD.js → acp-KR2NIRMP.js} +30 -30
  3. package/dist/{agentsValidate-Y3JGFZPX.js → agentsValidate-RP4UMGNT.js} +7 -7
  4. package/dist/{ask-DNEJAFQM.js → ask-AV47M7DZ.js} +29 -29
  5. package/dist/{autoUpdater-NBXSZEKC.js → autoUpdater-KY6NLGJN.js} +3 -3
  6. package/dist/{chunk-MBIKKOOW.js → chunk-2OQK4SGM.js} +1 -1
  7. package/dist/{chunk-FPCH7C5K.js → chunk-2Y6RSLIK.js} +2 -2
  8. package/dist/{chunk-IDJMJZP4.js → chunk-3JI37ZA6.js} +2 -2
  9. package/dist/{chunk-A5LLPMGS.js → chunk-4K65XDFQ.js} +2 -2
  10. package/dist/{chunk-EUHKG6AJ.js → chunk-4T65Y47N.js} +1 -1
  11. package/dist/{chunk-IIZXV4HL.js → chunk-5EJDTTBL.js} +2 -2
  12. package/dist/{chunk-OUOB2RBI.js → chunk-5LRFEGFP.js} +4 -4
  13. package/dist/{chunk-TKPY5LGF.js → chunk-5Z5ZS7IB.js} +1 -1
  14. package/dist/{chunk-7UTUKVKM.js → chunk-6IXLNIBX.js} +4 -4
  15. package/dist/{chunk-RMZABYAD.js → chunk-APXMGUKA.js} +1 -1
  16. package/dist/{chunk-VRRJXBF3.js → chunk-BKU7DKGB.js} +1 -1
  17. package/dist/{chunk-CFX5VEY5.js → chunk-CAPAA2BC.js} +3 -3
  18. package/dist/{chunk-5MZZCUQX.js → chunk-HS5IAPED.js} +2 -2
  19. package/dist/{chunk-53LVQG4V.js → chunk-KELCOTIO.js} +2 -2
  20. package/dist/{chunk-5KEKIQVC.js → chunk-KXHMHPXD.js} +3 -3
  21. package/dist/{chunk-GRQ32HWG.js → chunk-LLNPRFDC.js} +3 -1
  22. package/dist/chunk-LLNPRFDC.js.map +7 -0
  23. package/dist/{chunk-FQL6V43W.js → chunk-NIIT2UQA.js} +1 -1
  24. package/dist/{chunk-WSP4AYLZ.js → chunk-QTPKDLLB.js} +3 -3
  25. package/dist/{chunk-FVR53MZY.js → chunk-QUQAVKTY.js} +3 -3
  26. package/dist/{chunk-DHJEENK5.js → chunk-RIKQVWEQ.js} +2 -2
  27. package/dist/{chunk-LIFJX3UL.js → chunk-RTLO6X7T.js} +3 -3
  28. package/dist/{chunk-EINLEUKA.js → chunk-SELNEWOV.js} +1 -1
  29. package/dist/{chunk-MKSTJEGS.js → chunk-SRT3X6FV.js} +4 -4
  30. package/dist/{chunk-KSCBNFN7.js → chunk-TTMZXWQN.js} +1 -1
  31. package/dist/{chunk-5MEGIDN7.js → chunk-UKCYPF74.js} +1 -1
  32. package/dist/{chunk-V37R5FE5.js → chunk-UTQQ6WYY.js} +16 -16
  33. package/dist/{chunk-WGGELTRR.js → chunk-UZE4M5OS.js} +3 -3
  34. package/dist/{chunk-XHQMUJIS.js → chunk-X2MOC5KR.js} +4 -4
  35. package/dist/{chunk-OCIKBYQ4.js → chunk-X36JZMFM.js} +3 -3
  36. package/dist/{chunk-SUHM4MYA.js → chunk-ZPTG6OYN.js} +1 -1
  37. package/dist/{chunk-GKBRHNMB.js → chunk-ZTGVZNCE.js} +1268 -162
  38. package/dist/{chunk-GKBRHNMB.js.map → chunk-ZTGVZNCE.js.map} +4 -4
  39. package/dist/{cli-7JVEUFE2.js → cli-FHJDO3QF.js} +89 -89
  40. package/dist/commands-KPY2LIJC.js +53 -0
  41. package/dist/{config-YGHZ7OZB.js → config-2K52USGJ.js} +4 -4
  42. package/dist/{context-SNUVPSIW.js → context-3BRWJN5E.js} +6 -6
  43. package/dist/{conversationTracker-IXJWSKYY.js → conversationTracker-QH5XBLEU.js} +3 -3
  44. package/dist/{customCommands-2YZVCPNF.js → customCommands-3PVMTJKU.js} +4 -4
  45. package/dist/{env-SPCTS7IU.js → env-O6FTKEEB.js} +2 -2
  46. package/dist/{file-MRX573XM.js → file-ULFXIDDG.js} +4 -4
  47. package/dist/index.js +3 -3
  48. package/dist/{llm-VAN6WS52.js → llm-WAAV3MBX.js} +270 -180
  49. package/dist/llm-WAAV3MBX.js.map +7 -0
  50. package/dist/{llmLazy-II5PXLQI.js → llmLazy-6V6GNLLC.js} +1 -1
  51. package/dist/{loader-EV4REQWE.js → loader-JF4VIAR6.js} +4 -4
  52. package/dist/{lsp-O2TLN3AD.js → lsp-SANMXODH.js} +6 -6
  53. package/dist/{lspAnchor-BLB7II5Y.js → lspAnchor-A3P4LT3X.js} +6 -6
  54. package/dist/{mcp-OJPHPVNM.js → mcp-U2WNWDDG.js} +7 -7
  55. package/dist/{mentionProcessor-BXCFLUXL.js → mentionProcessor-XZUAAVZX.js} +5 -5
  56. package/dist/{messages-CUNARS37.js → messages-JUZVZDYN.js} +1 -1
  57. package/dist/{model-OUTGOGMR.js → model-JCGDL77F.js} +5 -5
  58. package/dist/{openai-WTOKA74W.js → openai-7OC7CIDJ.js} +5 -5
  59. package/dist/{outputStyles-K5O5RB33.js → outputStyles-RWFKRQCE.js} +4 -4
  60. package/dist/{pluginRuntime-JEJXUSFZ.js → pluginRuntime-BZ3RM5P7.js} +6 -6
  61. package/dist/{pluginValidation-S4VSNYHJ.js → pluginValidation-6DUVMEIK.js} +6 -6
  62. package/dist/prompts-W5GKJOV4.js +55 -0
  63. package/dist/{pybAgentSessionLoad-I7MI2W5O.js → pybAgentSessionLoad-ELD4U4GW.js} +4 -4
  64. package/dist/{pybAgentSessionResume-CMC5D4IX.js → pybAgentSessionResume-B7MQTZPJ.js} +4 -4
  65. package/dist/{pybAgentStreamJsonSession-FUT6NUZG.js → pybAgentStreamJsonSession-R5S6OEAV.js} +1 -1
  66. package/dist/{pybHooks-I4C2HCMR.js → pybHooks-4Y5UPP2F.js} +4 -4
  67. package/dist/query-ZA2CGHOR.js +57 -0
  68. package/dist/{registry-HA4GULY4.js → registry-TQILT7AJ.js} +5 -5
  69. package/dist/{ripgrep-4F2VOLSN.js → ripgrep-B6OHNO36.js} +3 -3
  70. package/dist/{skillMarketplace-73JWYMAT.js → skillMarketplace-M7LOJ7WU.js} +3 -3
  71. package/dist/{state-WVRITIDZ.js → state-YJAFADHA.js} +2 -2
  72. package/dist/{theme-BPZWU5M7.js → theme-W6D4H7FU.js} +5 -5
  73. package/dist/{toolPermissionSettings-UOQTLVV5.js → toolPermissionSettings-IDD5Z57F.js} +6 -6
  74. package/dist/tools-BPMG4PXB.js +54 -0
  75. package/dist/{userInput-TQYQIWBV.js → userInput-PZGDYW45.js} +31 -31
  76. package/package.json +3 -1
  77. package/dist/REPL-KB5JZS6S.js +0 -49
  78. package/dist/chunk-GRQ32HWG.js.map +0 -7
  79. package/dist/commands-FPZREXUW.js +0 -53
  80. package/dist/llm-VAN6WS52.js.map +0 -7
  81. package/dist/prompts-XUL3MGVE.js +0 -55
  82. package/dist/query-HKFFVARD.js +0 -57
  83. package/dist/tools-3OMW2SOR.js +0 -54
  84. /package/dist/{REPL-KB5JZS6S.js.map → REPL-YDQJ4XS3.js.map} +0 -0
  85. /package/dist/{acp-5G23YRZD.js.map → acp-KR2NIRMP.js.map} +0 -0
  86. /package/dist/{agentsValidate-Y3JGFZPX.js.map → agentsValidate-RP4UMGNT.js.map} +0 -0
  87. /package/dist/{ask-DNEJAFQM.js.map → ask-AV47M7DZ.js.map} +0 -0
  88. /package/dist/{autoUpdater-NBXSZEKC.js.map → autoUpdater-KY6NLGJN.js.map} +0 -0
  89. /package/dist/{chunk-MBIKKOOW.js.map → chunk-2OQK4SGM.js.map} +0 -0
  90. /package/dist/{chunk-FPCH7C5K.js.map → chunk-2Y6RSLIK.js.map} +0 -0
  91. /package/dist/{chunk-IDJMJZP4.js.map → chunk-3JI37ZA6.js.map} +0 -0
  92. /package/dist/{chunk-A5LLPMGS.js.map → chunk-4K65XDFQ.js.map} +0 -0
  93. /package/dist/{chunk-EUHKG6AJ.js.map → chunk-4T65Y47N.js.map} +0 -0
  94. /package/dist/{chunk-IIZXV4HL.js.map → chunk-5EJDTTBL.js.map} +0 -0
  95. /package/dist/{chunk-OUOB2RBI.js.map → chunk-5LRFEGFP.js.map} +0 -0
  96. /package/dist/{chunk-TKPY5LGF.js.map → chunk-5Z5ZS7IB.js.map} +0 -0
  97. /package/dist/{chunk-7UTUKVKM.js.map → chunk-6IXLNIBX.js.map} +0 -0
  98. /package/dist/{chunk-RMZABYAD.js.map → chunk-APXMGUKA.js.map} +0 -0
  99. /package/dist/{chunk-VRRJXBF3.js.map → chunk-BKU7DKGB.js.map} +0 -0
  100. /package/dist/{chunk-CFX5VEY5.js.map → chunk-CAPAA2BC.js.map} +0 -0
  101. /package/dist/{chunk-5MZZCUQX.js.map → chunk-HS5IAPED.js.map} +0 -0
  102. /package/dist/{chunk-53LVQG4V.js.map → chunk-KELCOTIO.js.map} +0 -0
  103. /package/dist/{chunk-5KEKIQVC.js.map → chunk-KXHMHPXD.js.map} +0 -0
  104. /package/dist/{chunk-FQL6V43W.js.map → chunk-NIIT2UQA.js.map} +0 -0
  105. /package/dist/{chunk-WSP4AYLZ.js.map → chunk-QTPKDLLB.js.map} +0 -0
  106. /package/dist/{chunk-FVR53MZY.js.map → chunk-QUQAVKTY.js.map} +0 -0
  107. /package/dist/{chunk-DHJEENK5.js.map → chunk-RIKQVWEQ.js.map} +0 -0
  108. /package/dist/{chunk-LIFJX3UL.js.map → chunk-RTLO6X7T.js.map} +0 -0
  109. /package/dist/{chunk-EINLEUKA.js.map → chunk-SELNEWOV.js.map} +0 -0
  110. /package/dist/{chunk-MKSTJEGS.js.map → chunk-SRT3X6FV.js.map} +0 -0
  111. /package/dist/{chunk-KSCBNFN7.js.map → chunk-TTMZXWQN.js.map} +0 -0
  112. /package/dist/{chunk-5MEGIDN7.js.map → chunk-UKCYPF74.js.map} +0 -0
  113. /package/dist/{chunk-V37R5FE5.js.map → chunk-UTQQ6WYY.js.map} +0 -0
  114. /package/dist/{chunk-WGGELTRR.js.map → chunk-UZE4M5OS.js.map} +0 -0
  115. /package/dist/{chunk-XHQMUJIS.js.map → chunk-X2MOC5KR.js.map} +0 -0
  116. /package/dist/{chunk-OCIKBYQ4.js.map → chunk-X36JZMFM.js.map} +0 -0
  117. /package/dist/{chunk-SUHM4MYA.js.map → chunk-ZPTG6OYN.js.map} +0 -0
  118. /package/dist/{cli-7JVEUFE2.js.map → cli-FHJDO3QF.js.map} +0 -0
  119. /package/dist/{commands-FPZREXUW.js.map → commands-KPY2LIJC.js.map} +0 -0
  120. /package/dist/{config-YGHZ7OZB.js.map → config-2K52USGJ.js.map} +0 -0
  121. /package/dist/{context-SNUVPSIW.js.map → context-3BRWJN5E.js.map} +0 -0
  122. /package/dist/{conversationTracker-IXJWSKYY.js.map → conversationTracker-QH5XBLEU.js.map} +0 -0
  123. /package/dist/{customCommands-2YZVCPNF.js.map → customCommands-3PVMTJKU.js.map} +0 -0
  124. /package/dist/{env-SPCTS7IU.js.map → env-O6FTKEEB.js.map} +0 -0
  125. /package/dist/{file-MRX573XM.js.map → file-ULFXIDDG.js.map} +0 -0
  126. /package/dist/{llmLazy-II5PXLQI.js.map → llmLazy-6V6GNLLC.js.map} +0 -0
  127. /package/dist/{loader-EV4REQWE.js.map → loader-JF4VIAR6.js.map} +0 -0
  128. /package/dist/{lsp-O2TLN3AD.js.map → lsp-SANMXODH.js.map} +0 -0
  129. /package/dist/{lspAnchor-BLB7II5Y.js.map → lspAnchor-A3P4LT3X.js.map} +0 -0
  130. /package/dist/{mcp-OJPHPVNM.js.map → mcp-U2WNWDDG.js.map} +0 -0
  131. /package/dist/{mentionProcessor-BXCFLUXL.js.map → mentionProcessor-XZUAAVZX.js.map} +0 -0
  132. /package/dist/{messages-CUNARS37.js.map → messages-JUZVZDYN.js.map} +0 -0
  133. /package/dist/{model-OUTGOGMR.js.map → model-JCGDL77F.js.map} +0 -0
  134. /package/dist/{openai-WTOKA74W.js.map → openai-7OC7CIDJ.js.map} +0 -0
  135. /package/dist/{outputStyles-K5O5RB33.js.map → outputStyles-RWFKRQCE.js.map} +0 -0
  136. /package/dist/{pluginRuntime-JEJXUSFZ.js.map → pluginRuntime-BZ3RM5P7.js.map} +0 -0
  137. /package/dist/{pluginValidation-S4VSNYHJ.js.map → pluginValidation-6DUVMEIK.js.map} +0 -0
  138. /package/dist/{prompts-XUL3MGVE.js.map → prompts-W5GKJOV4.js.map} +0 -0
  139. /package/dist/{pybAgentSessionLoad-I7MI2W5O.js.map → pybAgentSessionLoad-ELD4U4GW.js.map} +0 -0
  140. /package/dist/{pybAgentSessionResume-CMC5D4IX.js.map → pybAgentSessionResume-B7MQTZPJ.js.map} +0 -0
  141. /package/dist/{pybAgentStreamJsonSession-FUT6NUZG.js.map → pybAgentStreamJsonSession-R5S6OEAV.js.map} +0 -0
  142. /package/dist/{pybHooks-I4C2HCMR.js.map → pybHooks-4Y5UPP2F.js.map} +0 -0
  143. /package/dist/{query-HKFFVARD.js.map → query-ZA2CGHOR.js.map} +0 -0
  144. /package/dist/{registry-HA4GULY4.js.map → registry-TQILT7AJ.js.map} +0 -0
  145. /package/dist/{ripgrep-4F2VOLSN.js.map → ripgrep-B6OHNO36.js.map} +0 -0
  146. /package/dist/{skillMarketplace-73JWYMAT.js.map → skillMarketplace-M7LOJ7WU.js.map} +0 -0
  147. /package/dist/{state-WVRITIDZ.js.map → state-YJAFADHA.js.map} +0 -0
  148. /package/dist/{theme-BPZWU5M7.js.map → theme-W6D4H7FU.js.map} +0 -0
  149. /package/dist/{toolPermissionSettings-UOQTLVV5.js.map → toolPermissionSettings-IDD5Z57F.js.map} +0 -0
  150. /package/dist/{tools-3OMW2SOR.js.map → tools-BPMG4PXB.js.map} +0 -0
  151. /package/dist/{userInput-TQYQIWBV.js.map → userInput-PZGDYW45.js.map} +0 -0
@@ -18,10 +18,10 @@ import {
18
18
  readFileSafe,
19
19
  readTextContent,
20
20
  writeTextContent
21
- } from "./chunk-FPCH7C5K.js";
22
- import "./chunk-KSCBNFN7.js";
23
- import "./chunk-VRRJXBF3.js";
24
- import "./chunk-GRQ32HWG.js";
21
+ } from "./chunk-2Y6RSLIK.js";
22
+ import "./chunk-TTMZXWQN.js";
23
+ import "./chunk-BKU7DKGB.js";
24
+ import "./chunk-LLNPRFDC.js";
25
25
  import "./chunk-I3J4JYES.js";
26
26
  export {
27
27
  addLineNumbers,
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  MACRO
5
- } from "./chunk-GRQ32HWG.js";
5
+ } from "./chunk-LLNPRFDC.js";
6
6
  import "./chunk-I3J4JYES.js";
7
7
 
8
8
  // src/entrypoints/index.ts
@@ -28,7 +28,7 @@ Common options:
28
28
  process.exit(0);
29
29
  }
30
30
  if (hasFlag("--acp")) {
31
- await import("./acp-5G23YRZD.js");
31
+ await import("./acp-KR2NIRMP.js");
32
32
  } else {
33
- await import("./cli-7JVEUFE2.js");
33
+ await import("./cli-FHJDO3QF.js");
34
34
  }
@@ -4,34 +4,37 @@ import {
4
4
  getToolDescription
5
5
  } from "./chunk-XI4LTVYT.js";
6
6
  import {
7
+ emitTelemetryEvent,
7
8
  formatSystemPromptWithContext,
8
9
  generatePybContext,
9
10
  getCLISyspromptPrefix,
11
+ getModelCapabilities,
10
12
  getReasoningEffort,
11
13
  models_default,
12
- refreshPybContext
13
- } from "./chunk-GKBRHNMB.js";
14
- import "./chunk-EINLEUKA.js";
15
- import "./chunk-WGGELTRR.js";
16
- import "./chunk-RMZABYAD.js";
14
+ refreshPybContext,
15
+ resolveModelResponsePolicy
16
+ } from "./chunk-ZTGVZNCE.js";
17
+ import "./chunk-SELNEWOV.js";
18
+ import "./chunk-UZE4M5OS.js";
19
+ import "./chunk-APXMGUKA.js";
17
20
  import "./chunk-F4AXICO7.js";
18
- import "./chunk-FQL6V43W.js";
19
- import "./chunk-A5LLPMGS.js";
21
+ import "./chunk-NIIT2UQA.js";
22
+ import "./chunk-4K65XDFQ.js";
20
23
  import "./chunk-5P7HBXTD.js";
21
- import "./chunk-5KEKIQVC.js";
22
- import "./chunk-IDJMJZP4.js";
24
+ import "./chunk-KXHMHPXD.js";
25
+ import "./chunk-3JI37ZA6.js";
23
26
  import {
24
27
  getCompletionWithProfile,
25
28
  getGPT5CompletionWithProfile
26
- } from "./chunk-53LVQG4V.js";
29
+ } from "./chunk-KELCOTIO.js";
27
30
  import "./chunk-XKYHFZEC.js";
28
- import "./chunk-OUOB2RBI.js";
29
- import "./chunk-7UTUKVKM.js";
30
- import "./chunk-SUHM4MYA.js";
31
- import "./chunk-FVR53MZY.js";
31
+ import "./chunk-5LRFEGFP.js";
32
+ import "./chunk-6IXLNIBX.js";
33
+ import "./chunk-ZPTG6OYN.js";
34
+ import "./chunk-QUQAVKTY.js";
32
35
  import "./chunk-UNNVICVU.js";
33
- import "./chunk-5MZZCUQX.js";
34
- import "./chunk-DHJEENK5.js";
36
+ import "./chunk-HS5IAPED.js";
37
+ import "./chunk-RIKQVWEQ.js";
35
38
  import "./chunk-A3BVXXA3.js";
36
39
  import {
37
40
  API_ERROR_MESSAGE_PREFIX,
@@ -42,7 +45,7 @@ import {
42
45
  PROMPT_TOO_LONG_ERROR_MESSAGE,
43
46
  createAssistantAPIErrorMessage,
44
47
  normalizeContentFromAPI
45
- } from "./chunk-EUHKG6AJ.js";
48
+ } from "./chunk-4T65Y47N.js";
46
49
  import {
47
50
  processResponsesStream
48
51
  } from "./chunk-OMELVAJD.js";
@@ -53,27 +56,27 @@ import "./chunk-B6IMQJZM.js";
53
56
  import {
54
57
  addToTotalCost
55
58
  } from "./chunk-OUXHGDLH.js";
56
- import "./chunk-FPCH7C5K.js";
59
+ import "./chunk-2Y6RSLIK.js";
57
60
  import "./chunk-QWIBSCDN.js";
58
- import "./chunk-XHQMUJIS.js";
59
- import "./chunk-CFX5VEY5.js";
60
- import "./chunk-5MEGIDN7.js";
61
+ import "./chunk-X2MOC5KR.js";
62
+ import "./chunk-CAPAA2BC.js";
63
+ import "./chunk-UKCYPF74.js";
61
64
  import "./chunk-UZ34JEUK.js";
62
- import "./chunk-IIZXV4HL.js";
65
+ import "./chunk-5EJDTTBL.js";
63
66
  import "./chunk-BJSWTHRM.js";
64
67
  import {
65
68
  USE_BEDROCK,
66
69
  USE_VERTEX,
67
70
  getModelManager,
68
71
  getVertexRegionForModel
69
- } from "./chunk-OCIKBYQ4.js";
70
- import "./chunk-MKSTJEGS.js";
71
- import "./chunk-KSCBNFN7.js";
72
- import "./chunk-TKPY5LGF.js";
72
+ } from "./chunk-X36JZMFM.js";
73
+ import "./chunk-SRT3X6FV.js";
74
+ import "./chunk-TTMZXWQN.js";
75
+ import "./chunk-5Z5ZS7IB.js";
73
76
  import {
74
77
  getAnthropicApiKey,
75
78
  getGlobalConfig
76
- } from "./chunk-WSP4AYLZ.js";
79
+ } from "./chunk-QTPKDLLB.js";
77
80
  import "./chunk-RQVLBMP7.js";
78
81
  import {
79
82
  debug,
@@ -82,16 +85,16 @@ import {
82
85
  logLLMInteraction,
83
86
  logSystemPromptConstruction,
84
87
  markPhase
85
- } from "./chunk-MBIKKOOW.js";
88
+ } from "./chunk-2OQK4SGM.js";
86
89
  import {
87
90
  PRODUCT_COMMAND,
88
91
  env,
89
92
  getCwd,
90
93
  logError
91
- } from "./chunk-VRRJXBF3.js";
94
+ } from "./chunk-BKU7DKGB.js";
92
95
  import {
93
96
  MACRO
94
- } from "./chunk-GRQ32HWG.js";
97
+ } from "./chunk-LLNPRFDC.js";
95
98
  import "./chunk-I3J4JYES.js";
96
99
 
97
100
  // src/services/ai/llm.ts
@@ -1169,151 +1172,6 @@ var ChatCompletionsAdapter = class extends OpenAIAdapter {
1169
1172
  }
1170
1173
  };
1171
1174
 
1172
- // src/constants/modelCapabilities.ts
1173
- var GPT5_CAPABILITIES = {
1174
- apiArchitecture: {
1175
- primary: "responses_api",
1176
- fallback: "chat_completions"
1177
- },
1178
- parameters: {
1179
- maxTokensField: "max_output_tokens",
1180
- supportsReasoningEffort: true,
1181
- supportsVerbosity: true,
1182
- temperatureMode: "fixed_one"
1183
- },
1184
- toolCalling: {
1185
- mode: "custom_tools",
1186
- supportsFreeform: true,
1187
- supportsAllowedTools: true,
1188
- supportsParallelCalls: true
1189
- },
1190
- stateManagement: {
1191
- supportsResponseId: true,
1192
- supportsConversationChaining: true,
1193
- supportsPreviousResponseId: true
1194
- },
1195
- streaming: {
1196
- supported: true,
1197
- includesUsage: true
1198
- }
1199
- };
1200
- var CHAT_COMPLETIONS_CAPABILITIES = {
1201
- apiArchitecture: {
1202
- primary: "chat_completions"
1203
- },
1204
- parameters: {
1205
- maxTokensField: "max_tokens",
1206
- supportsReasoningEffort: false,
1207
- supportsVerbosity: false,
1208
- temperatureMode: "flexible"
1209
- },
1210
- toolCalling: {
1211
- mode: "function_calling",
1212
- supportsFreeform: false,
1213
- supportsAllowedTools: false,
1214
- supportsParallelCalls: true
1215
- },
1216
- stateManagement: {
1217
- supportsResponseId: false,
1218
- supportsConversationChaining: false,
1219
- supportsPreviousResponseId: false
1220
- },
1221
- streaming: {
1222
- supported: true,
1223
- includesUsage: true
1224
- }
1225
- };
1226
- var MODEL_CAPABILITIES_REGISTRY = {
1227
- "gpt-5": GPT5_CAPABILITIES,
1228
- "gpt-5-mini": GPT5_CAPABILITIES,
1229
- "gpt-5-nano": GPT5_CAPABILITIES,
1230
- "gpt-5-chat-latest": GPT5_CAPABILITIES,
1231
- "gpt-5-codex": GPT5_CAPABILITIES,
1232
- "gpt-4o": CHAT_COMPLETIONS_CAPABILITIES,
1233
- "gpt-4o-mini": CHAT_COMPLETIONS_CAPABILITIES,
1234
- "gpt-4-turbo": CHAT_COMPLETIONS_CAPABILITIES,
1235
- "gpt-4": CHAT_COMPLETIONS_CAPABILITIES,
1236
- "claude-3-5-sonnet-20241022": CHAT_COMPLETIONS_CAPABILITIES,
1237
- "claude-3-5-haiku-20241022": CHAT_COMPLETIONS_CAPABILITIES,
1238
- "claude-3-opus-20240229": CHAT_COMPLETIONS_CAPABILITIES,
1239
- o1: {
1240
- ...CHAT_COMPLETIONS_CAPABILITIES,
1241
- parameters: {
1242
- ...CHAT_COMPLETIONS_CAPABILITIES.parameters,
1243
- maxTokensField: "max_completion_tokens",
1244
- temperatureMode: "fixed_one"
1245
- }
1246
- },
1247
- "o1-mini": {
1248
- ...CHAT_COMPLETIONS_CAPABILITIES,
1249
- parameters: {
1250
- ...CHAT_COMPLETIONS_CAPABILITIES.parameters,
1251
- maxTokensField: "max_completion_tokens",
1252
- temperatureMode: "fixed_one"
1253
- }
1254
- },
1255
- "o1-preview": {
1256
- ...CHAT_COMPLETIONS_CAPABILITIES,
1257
- parameters: {
1258
- ...CHAT_COMPLETIONS_CAPABILITIES.parameters,
1259
- maxTokensField: "max_completion_tokens",
1260
- temperatureMode: "fixed_one"
1261
- }
1262
- }
1263
- };
1264
- function inferModelCapabilities(modelName) {
1265
- if (!modelName) return null;
1266
- const lowerName = modelName.toLowerCase();
1267
- if (lowerName.includes("gpt-5") || lowerName.includes("gpt5")) {
1268
- return GPT5_CAPABILITIES;
1269
- }
1270
- if (lowerName.includes("gpt-6") || lowerName.includes("gpt6")) {
1271
- return {
1272
- ...GPT5_CAPABILITIES,
1273
- streaming: { supported: true, includesUsage: true }
1274
- };
1275
- }
1276
- if (lowerName.includes("glm-5") || lowerName.includes("glm5")) {
1277
- return {
1278
- ...CHAT_COMPLETIONS_CAPABILITIES,
1279
- toolCalling: {
1280
- ...CHAT_COMPLETIONS_CAPABILITIES.toolCalling,
1281
- supportsAllowedTools: false
1282
- }
1283
- };
1284
- }
1285
- if (lowerName.startsWith("o1") || lowerName.includes("o1-")) {
1286
- return {
1287
- ...CHAT_COMPLETIONS_CAPABILITIES,
1288
- parameters: {
1289
- ...CHAT_COMPLETIONS_CAPABILITIES.parameters,
1290
- maxTokensField: "max_completion_tokens",
1291
- temperatureMode: "fixed_one"
1292
- }
1293
- };
1294
- }
1295
- return null;
1296
- }
1297
- var capabilityCache = /* @__PURE__ */ new Map();
1298
- function getModelCapabilities(modelName) {
1299
- if (capabilityCache.has(modelName)) {
1300
- return capabilityCache.get(modelName);
1301
- }
1302
- if (MODEL_CAPABILITIES_REGISTRY[modelName]) {
1303
- const capabilities = MODEL_CAPABILITIES_REGISTRY[modelName];
1304
- capabilityCache.set(modelName, capabilities);
1305
- return capabilities;
1306
- }
1307
- const inferred = inferModelCapabilities(modelName);
1308
- if (inferred) {
1309
- capabilityCache.set(modelName, inferred);
1310
- return inferred;
1311
- }
1312
- const defaultCapabilities = CHAT_COMPLETIONS_CAPABILITIES;
1313
- capabilityCache.set(modelName, defaultCapabilities);
1314
- return defaultCapabilities;
1315
- }
1316
-
1317
1175
  // src/services/ai/modelAdapterFactory.ts
1318
1176
  var ModelAdapterFactory = class {
1319
1177
  static createAdapter(modelProfile) {
@@ -1678,6 +1536,230 @@ function convertAnthropicMessagesToOpenAIMessages(messages) {
1678
1536
  return finalMessages;
1679
1537
  }
1680
1538
 
1539
+ // src/services/ai/messageTransform/policies.ts
1540
+ function resolvePolicies(context) {
1541
+ return resolveModelResponsePolicy({
1542
+ source: context.source,
1543
+ model: context.model,
1544
+ provider: context.provider,
1545
+ reasoningPolicy: context.reasoningPolicy,
1546
+ normalizeProviderContent: context.normalizeProviderContent,
1547
+ trimCrossModelMetadata: context.trimCrossModelMetadata
1548
+ });
1549
+ }
1550
+
1551
+ // src/services/ai/messageTransform/providerRules.ts
1552
+ function createDefaultRuleHits() {
1553
+ return {
1554
+ trimmedMetadata: 0,
1555
+ mappedReasoningBlocks: 0,
1556
+ flattenedReasoningBlocks: 0,
1557
+ filteredEmptyTextBlocks: 0,
1558
+ filteredEmptyThinkingBlocks: 0
1559
+ };
1560
+ }
1561
+ function applyProviderRules(messages, options) {
1562
+ const ruleHits = createDefaultRuleHits();
1563
+ const transformed = messages.map((message) => {
1564
+ if (!message || typeof message !== "object" || !message.message) {
1565
+ return message;
1566
+ }
1567
+ const sourceModel = String(message.message.model ?? "");
1568
+ const shouldTrimMetadata = options.trimCrossModelMetadata && sourceModel.length > 0 && sourceModel !== options.model && message.message.providerMetadata && typeof message.message.providerMetadata === "object";
1569
+ const content = message.message.content;
1570
+ if (!Array.isArray(content)) {
1571
+ if (!shouldTrimMetadata) return message;
1572
+ const nextMessage2 = { ...message.message };
1573
+ delete nextMessage2.providerMetadata;
1574
+ ruleHits.trimmedMetadata += 1;
1575
+ return { ...message, message: nextMessage2 };
1576
+ }
1577
+ let changed = false;
1578
+ const mappedReasoning = [];
1579
+ const nextContent = [];
1580
+ for (const block of content) {
1581
+ if (!block || typeof block !== "object") {
1582
+ if (options.normalizeProviderContent) {
1583
+ changed = true;
1584
+ continue;
1585
+ }
1586
+ nextContent.push(block);
1587
+ continue;
1588
+ }
1589
+ if (block.type === "text") {
1590
+ const text = typeof block.text === "string" ? block.text : "";
1591
+ if (options.normalizeProviderContent && text.trim().length === 0) {
1592
+ changed = true;
1593
+ ruleHits.filteredEmptyTextBlocks += 1;
1594
+ continue;
1595
+ }
1596
+ nextContent.push(block);
1597
+ continue;
1598
+ }
1599
+ if (block.type === "thinking" || block.type === "reasoning") {
1600
+ const reasoningText = typeof block.thinking === "string" ? block.thinking : typeof block.reasoning === "string" ? block.reasoning : "";
1601
+ if (options.normalizeProviderContent && reasoningText.trim().length === 0) {
1602
+ changed = true;
1603
+ ruleHits.filteredEmptyThinkingBlocks += 1;
1604
+ continue;
1605
+ }
1606
+ if (options.reasoningPolicy === "map_to_provider_options") {
1607
+ if (reasoningText.trim().length > 0) {
1608
+ mappedReasoning.push(reasoningText.trim());
1609
+ }
1610
+ changed = true;
1611
+ ruleHits.mappedReasoningBlocks += 1;
1612
+ continue;
1613
+ }
1614
+ if (options.reasoningPolicy === "flatten_to_text_fallback") {
1615
+ if (reasoningText.trim().length > 0) {
1616
+ nextContent.push({ type: "text", text: reasoningText.trim() });
1617
+ }
1618
+ changed = true;
1619
+ ruleHits.flattenedReasoningBlocks += 1;
1620
+ continue;
1621
+ }
1622
+ if (block.type === "reasoning") {
1623
+ nextContent.push({ type: "thinking", thinking: reasoningText });
1624
+ changed = true;
1625
+ continue;
1626
+ }
1627
+ nextContent.push(block);
1628
+ continue;
1629
+ }
1630
+ nextContent.push(block);
1631
+ }
1632
+ const shouldMapReasoning = mappedReasoning.length > 0;
1633
+ if (!changed && !shouldTrimMetadata && !shouldMapReasoning) {
1634
+ return message;
1635
+ }
1636
+ const nextMessage = {
1637
+ ...message.message,
1638
+ content: nextContent
1639
+ };
1640
+ if (shouldTrimMetadata) {
1641
+ delete nextMessage.providerMetadata;
1642
+ ruleHits.trimmedMetadata += 1;
1643
+ }
1644
+ if (shouldMapReasoning) {
1645
+ nextMessage.providerOptions = {
1646
+ ...nextMessage.providerOptions || {},
1647
+ reasoning_content: mappedReasoning.join("\n\n")
1648
+ };
1649
+ }
1650
+ return {
1651
+ ...message,
1652
+ message: nextMessage
1653
+ };
1654
+ });
1655
+ return { transformed, ruleHits };
1656
+ }
1657
+
1658
+ // src/services/ai/messageTransform/index.ts
1659
+ var MESSAGE_TRANSFORM_RULE_VERSION = "b2-enhanced-v1";
1660
+ function collectBlockStats(messages) {
1661
+ const stats = {};
1662
+ for (const message of messages) {
1663
+ const content = message?.message?.content;
1664
+ if (!Array.isArray(content)) continue;
1665
+ for (const block of content) {
1666
+ const key = block && typeof block === "object" ? String(block.type ?? "unknown") : typeof block;
1667
+ stats[key] = (stats[key] ?? 0) + 1;
1668
+ }
1669
+ }
1670
+ return stats;
1671
+ }
1672
+ function transformMessagesForModel(messages, context) {
1673
+ const resolved = resolvePolicies(context);
1674
+ if (process.env.PYB_MESSAGE_TRANSFORM_ENABLED === "0") {
1675
+ const payload2 = {
1676
+ source: context.source,
1677
+ model: context.model,
1678
+ provider: context.provider,
1679
+ dryRun: false,
1680
+ reasoningPolicy: resolved.reasoningPolicy,
1681
+ normalizeProviderContent: resolved.normalizeProviderContent,
1682
+ trimCrossModelMetadata: resolved.trimCrossModelMetadata,
1683
+ policySource: resolved.policySource,
1684
+ ruleVersion: MESSAGE_TRANSFORM_RULE_VERSION,
1685
+ ruleHits: createDefaultRuleHits(),
1686
+ reason: "disabled",
1687
+ messageCount: messages.length,
1688
+ outputBlockStats: collectBlockStats(messages)
1689
+ };
1690
+ debug.state("MESSAGE_TRANSFORM_SKIPPED", payload2);
1691
+ emitTelemetryEvent({
1692
+ channel: "message_transform",
1693
+ phase: "MESSAGE_TRANSFORM_SKIPPED",
1694
+ data: payload2,
1695
+ timestamp: Date.now()
1696
+ });
1697
+ return messages;
1698
+ }
1699
+ const dryRun = process.env.PYB_MESSAGE_TRANSFORM_DRY_RUN === "1";
1700
+ if (dryRun) {
1701
+ const payload2 = {
1702
+ source: context.source,
1703
+ model: context.model,
1704
+ provider: context.provider,
1705
+ dryRun: true,
1706
+ reasoningPolicy: resolved.reasoningPolicy,
1707
+ normalizeProviderContent: resolved.normalizeProviderContent,
1708
+ trimCrossModelMetadata: resolved.trimCrossModelMetadata,
1709
+ policySource: resolved.policySource,
1710
+ ruleVersion: MESSAGE_TRANSFORM_RULE_VERSION,
1711
+ ruleHits: createDefaultRuleHits(),
1712
+ messageCount: messages.length,
1713
+ outputBlockStats: collectBlockStats(messages)
1714
+ };
1715
+ debug.state("MESSAGE_TRANSFORM_APPLIED", payload2);
1716
+ emitTelemetryEvent({
1717
+ channel: "message_transform",
1718
+ phase: "MESSAGE_TRANSFORM_APPLIED",
1719
+ data: payload2,
1720
+ timestamp: Date.now()
1721
+ });
1722
+ return messages;
1723
+ }
1724
+ const { transformed, ruleHits } = applyProviderRules(messages, {
1725
+ model: context.model,
1726
+ reasoningPolicy: resolved.reasoningPolicy,
1727
+ normalizeProviderContent: resolved.normalizeProviderContent,
1728
+ trimCrossModelMetadata: resolved.trimCrossModelMetadata
1729
+ });
1730
+ const payload = {
1731
+ source: context.source,
1732
+ model: context.model,
1733
+ provider: context.provider,
1734
+ dryRun: false,
1735
+ reasoningPolicy: resolved.reasoningPolicy,
1736
+ normalizeProviderContent: resolved.normalizeProviderContent,
1737
+ trimCrossModelMetadata: resolved.trimCrossModelMetadata,
1738
+ policySource: resolved.policySource,
1739
+ ruleVersion: MESSAGE_TRANSFORM_RULE_VERSION,
1740
+ ruleHits,
1741
+ messageCount: messages.length,
1742
+ outputBlockStats: collectBlockStats(transformed)
1743
+ };
1744
+ debug.state("MESSAGE_TRANSFORM_APPLIED", payload);
1745
+ emitTelemetryEvent({
1746
+ channel: "message_transform",
1747
+ phase: "MESSAGE_TRANSFORM_APPLIED",
1748
+ data: payload,
1749
+ timestamp: Date.now()
1750
+ });
1751
+ return transformed;
1752
+ }
1753
+
1754
+ // src/services/ai/messageTransform/context.ts
1755
+ function buildMessageTransformContext(params) {
1756
+ return {
1757
+ source: params.source,
1758
+ model: params.model,
1759
+ provider: params.provider ?? "openai"
1760
+ };
1761
+ }
1762
+
1681
1763
  // src/services/ai/llm.ts
1682
1764
  function isGPT5Model(modelName) {
1683
1765
  return modelName.startsWith("gpt-5");
@@ -2271,6 +2353,14 @@ async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal
2271
2353
  );
2272
2354
  }
2273
2355
  const resolvedModel = modelProfile.modelName;
2356
+ const transformedMessages = transformMessagesForModel(
2357
+ messages,
2358
+ buildMessageTransformContext({
2359
+ source: "query",
2360
+ model: resolvedModel,
2361
+ provider: modelProfile.provider || "openai"
2362
+ })
2363
+ );
2274
2364
  const toolUseContext = options.toolUseContext;
2275
2365
  if (toolUseContext && !toolUseContext.responseState) {
2276
2366
  const conversationId = getConversationId(
@@ -2294,7 +2384,7 @@ async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal
2294
2384
  });
2295
2385
  const currentRequest = getCurrentRequest();
2296
2386
  debug.api("LLM_REQUEST_START", {
2297
- messageCount: messages.length,
2387
+ messageCount: transformedMessages.length,
2298
2388
  systemPromptLength: systemPrompt.join(" ").length,
2299
2389
  toolCount: tools.length,
2300
2390
  model: resolvedModel,
@@ -2308,7 +2398,7 @@ async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal
2308
2398
  delete cleanOptions.__testModelManager;
2309
2399
  delete cleanOptions.__testQueryLLMWithPromptCaching;
2310
2400
  const runQuery = () => queryFn(
2311
- messages,
2401
+ transformedMessages,
2312
2402
  systemPrompt,
2313
2403
  maxThinkingTokens,
2314
2404
  tools,
@@ -2320,7 +2410,7 @@ async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal
2320
2410
  toolUseContext
2321
2411
  }
2322
2412
  );
2323
- const result = options.__testQueryLLMWithPromptCaching ? await runQuery() : await withVCR(messages, runQuery);
2413
+ const result = options.__testQueryLLMWithPromptCaching ? await runQuery() : await withVCR(transformedMessages, runQuery);
2324
2414
  debug.api("LLM_REQUEST_SUCCESS", {
2325
2415
  costUSD: result.costUSD,
2326
2416
  durationMs: result.durationMs,
@@ -2343,7 +2433,7 @@ async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal
2343
2433
  logErrorWithDiagnosis(
2344
2434
  error,
2345
2435
  {
2346
- messageCount: messages.length,
2436
+ messageCount: transformedMessages.length,
2347
2437
  systemPromptLength: systemPrompt.join(" ").length,
2348
2438
  model: options.model,
2349
2439
  toolCount: tools.length,
@@ -2852,7 +2942,7 @@ async function queryOpenAI(messages, systemPrompt, maxThinkingTokens, tools, sig
2852
2942
  start = Date.now();
2853
2943
  if (adapterContext) {
2854
2944
  if (adapterContext.shouldUseResponses) {
2855
- const { callGPT5ResponsesAPI } = await import("./openai-WTOKA74W.js");
2945
+ const { callGPT5ResponsesAPI } = await import("./openai-7OC7CIDJ.js");
2856
2946
  const response = await callGPT5ResponsesAPI(
2857
2947
  modelProfile,
2858
2948
  adapterContext.request,