pybao-cli 1.4.97 → 1.4.99

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 (152) hide show
  1. package/dist/REPL-KURZV7EW.js +49 -0
  2. package/dist/{acp-RCUUG4TE.js → acp-IIKBAJCJ.js} +30 -30
  3. package/dist/{agentsValidate-FOGGBCAM.js → agentsValidate-6CEARR6Z.js} +7 -7
  4. package/dist/{ask-Y7GSDBHR.js → ask-7NE7NVRN.js} +29 -29
  5. package/dist/{autoUpdater-I3LHHCHT.js → autoUpdater-LFOXQ3CV.js} +3 -3
  6. package/dist/{chunk-DODMRDRY.js → chunk-2CLRREZ5.js} +3 -3
  7. package/dist/{chunk-WSATR4WL.js → chunk-2IO7WUI7.js} +4 -4
  8. package/dist/{chunk-YIXTSVYD.js → chunk-3BPXWAOJ.js} +1 -1
  9. package/dist/{chunk-YIXTSVYD.js.map → chunk-3BPXWAOJ.js.map} +1 -1
  10. package/dist/{chunk-EVDTKHQS.js → chunk-4MZJNA2D.js} +2 -2
  11. package/dist/{chunk-AL6K5BMH.js → chunk-5TCQKGL7.js} +71 -35
  12. package/dist/chunk-5TCQKGL7.js.map +7 -0
  13. package/dist/{chunk-QMUFX7IJ.js → chunk-6E6QBP52.js} +1 -1
  14. package/dist/{chunk-HV4NI23F.js → chunk-6KPO3O64.js} +3 -3
  15. package/dist/{chunk-TCW74O5N.js → chunk-7KDTFITN.js} +3 -3
  16. package/dist/{chunk-EDTKZHPB.js → chunk-7QIWZIVM.js} +1 -1
  17. package/dist/{chunk-ZETRMTIG.js → chunk-7SDAA35I.js} +1 -1
  18. package/dist/{chunk-6AJ2CWOM.js → chunk-7SPP4L5F.js} +2 -2
  19. package/dist/{chunk-6TMRUFNH.js → chunk-A2IPV5PR.js} +2 -2
  20. package/dist/{chunk-4OHWJPFN.js → chunk-BBHKGKLF.js} +16 -24
  21. package/dist/{chunk-4OHWJPFN.js.map → chunk-BBHKGKLF.js.map} +2 -2
  22. package/dist/{chunk-RL64MB7U.js → chunk-D3SG4DHV.js} +3 -3
  23. package/dist/{chunk-LR2N7KMQ.js → chunk-DKQIGPXB.js} +1 -1
  24. package/dist/{chunk-VXUWHEDL.js → chunk-GIH6DDF7.js} +1 -1
  25. package/dist/{chunk-A6QAWMSQ.js → chunk-GNDMDOGM.js} +2 -2
  26. package/dist/{chunk-53JGT3P4.js → chunk-JEGVTLOH.js} +1 -1
  27. package/dist/{chunk-A53N6YJI.js → chunk-KK5DOHDD.js} +2 -2
  28. package/dist/{chunk-JKP2RIBC.js → chunk-KZ7I6E5P.js} +227 -106
  29. package/dist/chunk-KZ7I6E5P.js.map +7 -0
  30. package/dist/{chunk-JFQY2HV5.js → chunk-MMZ2MWHJ.js} +1 -1
  31. package/dist/{chunk-PZTJUV4A.js → chunk-NXLRKKFH.js} +1 -1
  32. package/dist/{chunk-TDEIIGZD.js → chunk-PDQTREWL.js} +2 -2
  33. package/dist/{chunk-JI7VDOMU.js → chunk-Q56IGZX5.js} +3 -3
  34. package/dist/{chunk-O7CYKDDE.js → chunk-TG2B47KG.js} +8 -76
  35. package/dist/chunk-TG2B47KG.js.map +7 -0
  36. package/dist/{chunk-RBT4E5DV.js → chunk-TYOT7UVX.js} +1 -1
  37. package/dist/{chunk-Y2CH5HCU.js → chunk-VKXOAPOS.js} +1 -1
  38. package/dist/{chunk-VPVZHCOG.js → chunk-WAQ72XDO.js} +3 -3
  39. package/dist/{chunk-JHCUUDEB.js → chunk-YH7ZOG3I.js} +4 -4
  40. package/dist/{chunk-6LUGSV66.js → chunk-ZXADEAK4.js} +4 -4
  41. package/dist/{chunk-I6JG3ZBH.js → chunk-ZXO6OMWV.js} +4 -4
  42. package/dist/{cli-2RUYT6CA.js → cli-B42Z5OSM.js} +89 -89
  43. package/dist/commands-MNUBXNIB.js +53 -0
  44. package/dist/{config-W6OYIJFP.js → config-ZC4PZWOC.js} +4 -4
  45. package/dist/{context-5VP2FZYF.js → context-MF3EKP4O.js} +6 -6
  46. package/dist/{conversationTracker-GOUWLXWN.js → conversationTracker-BM6KB27G.js} +3 -3
  47. package/dist/{customCommands-TDVISN2B.js → customCommands-63F72N5R.js} +4 -4
  48. package/dist/{env-DLGPG7EV.js → env-PGV75SHC.js} +2 -2
  49. package/dist/{file-TOOPTRF2.js → file-7NLJWX5W.js} +4 -4
  50. package/dist/index.js +3 -3
  51. package/dist/{llm-HPGYRNBC.js → llm-RCPJRG2F.js} +30 -30
  52. package/dist/{llmLazy-OKLOZGW7.js → llmLazy-C5G2MM53.js} +1 -1
  53. package/dist/{loader-BPVCWO3Q.js → loader-MPCV37S5.js} +4 -4
  54. package/dist/{lsp-Y5UU7OYG.js → lsp-7FPYFR6T.js} +6 -6
  55. package/dist/{lspAnchor-YNYJ7E7M.js → lspAnchor-C676SQ6E.js} +6 -6
  56. package/dist/{mcp-ZHOROUVO.js → mcp-VKKPULAR.js} +7 -7
  57. package/dist/{mentionProcessor-YA3PCQGC.js → mentionProcessor-LJHHC5H4.js} +5 -5
  58. package/dist/{messages-QE77NR42.js → messages-QSUEHIGU.js} +1 -1
  59. package/dist/{model-YUVFO4IF.js → model-AJTLB6V4.js} +7 -5
  60. package/dist/{openai-BYIA5SOE.js → openai-XIRY5EVT.js} +5 -5
  61. package/dist/{outputStyles-RUBJ56B2.js → outputStyles-OTRZEQSD.js} +4 -4
  62. package/dist/{pluginRuntime-TFQEES5T.js → pluginRuntime-NQ6GKMG6.js} +6 -6
  63. package/dist/{pluginValidation-H7X3X4KI.js → pluginValidation-AJUPAPU2.js} +6 -6
  64. package/dist/prompts-SWCPKXLQ.js +55 -0
  65. package/dist/{pybAgentSessionLoad-RGKKINBZ.js → pybAgentSessionLoad-MOZRT43D.js} +4 -4
  66. package/dist/{pybAgentSessionResume-KO5RTOM4.js → pybAgentSessionResume-S67UFBZF.js} +4 -4
  67. package/dist/{pybAgentStreamJsonSession-B2CP4XOB.js → pybAgentStreamJsonSession-UEEVKNIR.js} +1 -1
  68. package/dist/{pybHooks-CWI5I2PJ.js → pybHooks-UQQ6VWTB.js} +4 -4
  69. package/dist/query-ZKV22Q32.js +57 -0
  70. package/dist/{registry-W2TZF6IB.js → registry-VUAORMT6.js} +5 -5
  71. package/dist/{ripgrep-IBHLMEUX.js → ripgrep-H5HDDGEE.js} +3 -3
  72. package/dist/{skillMarketplace-XTB7FHYD.js → skillMarketplace-AD473TUO.js} +3 -3
  73. package/dist/{state-B5WH4G7E.js → state-6FI3TEMZ.js} +2 -2
  74. package/dist/{theme-DJXLBRJF.js → theme-4KO4JE7Q.js} +5 -5
  75. package/dist/{toolPermissionSettings-HRFFW2PV.js → toolPermissionSettings-5QUOY3OV.js} +6 -6
  76. package/dist/tools-DOBQ6YMO.js +54 -0
  77. package/dist/{userInput-7WNQPJKD.js → userInput-ZT3LIWGH.js} +31 -31
  78. package/package.json +1 -1
  79. package/dist/REPL-34JJO6P2.js +0 -49
  80. package/dist/chunk-AL6K5BMH.js.map +0 -7
  81. package/dist/chunk-JKP2RIBC.js.map +0 -7
  82. package/dist/chunk-O7CYKDDE.js.map +0 -7
  83. package/dist/commands-XCYMIIZG.js +0 -53
  84. package/dist/prompts-SMIDAJGI.js +0 -55
  85. package/dist/query-CXHDWKXY.js +0 -57
  86. package/dist/tools-ZTSUWCM4.js +0 -54
  87. /package/dist/{REPL-34JJO6P2.js.map → REPL-KURZV7EW.js.map} +0 -0
  88. /package/dist/{acp-RCUUG4TE.js.map → acp-IIKBAJCJ.js.map} +0 -0
  89. /package/dist/{agentsValidate-FOGGBCAM.js.map → agentsValidate-6CEARR6Z.js.map} +0 -0
  90. /package/dist/{ask-Y7GSDBHR.js.map → ask-7NE7NVRN.js.map} +0 -0
  91. /package/dist/{autoUpdater-I3LHHCHT.js.map → autoUpdater-LFOXQ3CV.js.map} +0 -0
  92. /package/dist/{chunk-DODMRDRY.js.map → chunk-2CLRREZ5.js.map} +0 -0
  93. /package/dist/{chunk-WSATR4WL.js.map → chunk-2IO7WUI7.js.map} +0 -0
  94. /package/dist/{chunk-EVDTKHQS.js.map → chunk-4MZJNA2D.js.map} +0 -0
  95. /package/dist/{chunk-QMUFX7IJ.js.map → chunk-6E6QBP52.js.map} +0 -0
  96. /package/dist/{chunk-HV4NI23F.js.map → chunk-6KPO3O64.js.map} +0 -0
  97. /package/dist/{chunk-TCW74O5N.js.map → chunk-7KDTFITN.js.map} +0 -0
  98. /package/dist/{chunk-EDTKZHPB.js.map → chunk-7QIWZIVM.js.map} +0 -0
  99. /package/dist/{chunk-ZETRMTIG.js.map → chunk-7SDAA35I.js.map} +0 -0
  100. /package/dist/{chunk-6AJ2CWOM.js.map → chunk-7SPP4L5F.js.map} +0 -0
  101. /package/dist/{chunk-6TMRUFNH.js.map → chunk-A2IPV5PR.js.map} +0 -0
  102. /package/dist/{chunk-RL64MB7U.js.map → chunk-D3SG4DHV.js.map} +0 -0
  103. /package/dist/{chunk-LR2N7KMQ.js.map → chunk-DKQIGPXB.js.map} +0 -0
  104. /package/dist/{chunk-VXUWHEDL.js.map → chunk-GIH6DDF7.js.map} +0 -0
  105. /package/dist/{chunk-A6QAWMSQ.js.map → chunk-GNDMDOGM.js.map} +0 -0
  106. /package/dist/{chunk-53JGT3P4.js.map → chunk-JEGVTLOH.js.map} +0 -0
  107. /package/dist/{chunk-A53N6YJI.js.map → chunk-KK5DOHDD.js.map} +0 -0
  108. /package/dist/{chunk-JFQY2HV5.js.map → chunk-MMZ2MWHJ.js.map} +0 -0
  109. /package/dist/{chunk-PZTJUV4A.js.map → chunk-NXLRKKFH.js.map} +0 -0
  110. /package/dist/{chunk-TDEIIGZD.js.map → chunk-PDQTREWL.js.map} +0 -0
  111. /package/dist/{chunk-JI7VDOMU.js.map → chunk-Q56IGZX5.js.map} +0 -0
  112. /package/dist/{chunk-RBT4E5DV.js.map → chunk-TYOT7UVX.js.map} +0 -0
  113. /package/dist/{chunk-Y2CH5HCU.js.map → chunk-VKXOAPOS.js.map} +0 -0
  114. /package/dist/{chunk-VPVZHCOG.js.map → chunk-WAQ72XDO.js.map} +0 -0
  115. /package/dist/{chunk-JHCUUDEB.js.map → chunk-YH7ZOG3I.js.map} +0 -0
  116. /package/dist/{chunk-6LUGSV66.js.map → chunk-ZXADEAK4.js.map} +0 -0
  117. /package/dist/{chunk-I6JG3ZBH.js.map → chunk-ZXO6OMWV.js.map} +0 -0
  118. /package/dist/{cli-2RUYT6CA.js.map → cli-B42Z5OSM.js.map} +0 -0
  119. /package/dist/{commands-XCYMIIZG.js.map → commands-MNUBXNIB.js.map} +0 -0
  120. /package/dist/{config-W6OYIJFP.js.map → config-ZC4PZWOC.js.map} +0 -0
  121. /package/dist/{context-5VP2FZYF.js.map → context-MF3EKP4O.js.map} +0 -0
  122. /package/dist/{conversationTracker-GOUWLXWN.js.map → conversationTracker-BM6KB27G.js.map} +0 -0
  123. /package/dist/{customCommands-TDVISN2B.js.map → customCommands-63F72N5R.js.map} +0 -0
  124. /package/dist/{env-DLGPG7EV.js.map → env-PGV75SHC.js.map} +0 -0
  125. /package/dist/{file-TOOPTRF2.js.map → file-7NLJWX5W.js.map} +0 -0
  126. /package/dist/{llm-HPGYRNBC.js.map → llm-RCPJRG2F.js.map} +0 -0
  127. /package/dist/{llmLazy-OKLOZGW7.js.map → llmLazy-C5G2MM53.js.map} +0 -0
  128. /package/dist/{loader-BPVCWO3Q.js.map → loader-MPCV37S5.js.map} +0 -0
  129. /package/dist/{lsp-Y5UU7OYG.js.map → lsp-7FPYFR6T.js.map} +0 -0
  130. /package/dist/{lspAnchor-YNYJ7E7M.js.map → lspAnchor-C676SQ6E.js.map} +0 -0
  131. /package/dist/{mcp-ZHOROUVO.js.map → mcp-VKKPULAR.js.map} +0 -0
  132. /package/dist/{mentionProcessor-YA3PCQGC.js.map → mentionProcessor-LJHHC5H4.js.map} +0 -0
  133. /package/dist/{messages-QE77NR42.js.map → messages-QSUEHIGU.js.map} +0 -0
  134. /package/dist/{model-YUVFO4IF.js.map → model-AJTLB6V4.js.map} +0 -0
  135. /package/dist/{openai-BYIA5SOE.js.map → openai-XIRY5EVT.js.map} +0 -0
  136. /package/dist/{outputStyles-RUBJ56B2.js.map → outputStyles-OTRZEQSD.js.map} +0 -0
  137. /package/dist/{pluginRuntime-TFQEES5T.js.map → pluginRuntime-NQ6GKMG6.js.map} +0 -0
  138. /package/dist/{pluginValidation-H7X3X4KI.js.map → pluginValidation-AJUPAPU2.js.map} +0 -0
  139. /package/dist/{prompts-SMIDAJGI.js.map → prompts-SWCPKXLQ.js.map} +0 -0
  140. /package/dist/{pybAgentSessionLoad-RGKKINBZ.js.map → pybAgentSessionLoad-MOZRT43D.js.map} +0 -0
  141. /package/dist/{pybAgentSessionResume-KO5RTOM4.js.map → pybAgentSessionResume-S67UFBZF.js.map} +0 -0
  142. /package/dist/{pybAgentStreamJsonSession-B2CP4XOB.js.map → pybAgentStreamJsonSession-UEEVKNIR.js.map} +0 -0
  143. /package/dist/{pybHooks-CWI5I2PJ.js.map → pybHooks-UQQ6VWTB.js.map} +0 -0
  144. /package/dist/{query-CXHDWKXY.js.map → query-ZKV22Q32.js.map} +0 -0
  145. /package/dist/{registry-W2TZF6IB.js.map → registry-VUAORMT6.js.map} +0 -0
  146. /package/dist/{ripgrep-IBHLMEUX.js.map → ripgrep-H5HDDGEE.js.map} +0 -0
  147. /package/dist/{skillMarketplace-XTB7FHYD.js.map → skillMarketplace-AD473TUO.js.map} +0 -0
  148. /package/dist/{state-B5WH4G7E.js.map → state-6FI3TEMZ.js.map} +0 -0
  149. /package/dist/{theme-DJXLBRJF.js.map → theme-4KO4JE7Q.js.map} +0 -0
  150. /package/dist/{toolPermissionSettings-HRFFW2PV.js.map → toolPermissionSettings-5QUOY3OV.js.map} +0 -0
  151. /package/dist/{tools-ZTSUWCM4.js.map → tools-DOBQ6YMO.js.map} +0 -0
  152. /package/dist/{userInput-7WNQPJKD.js.map → userInput-ZT3LIWGH.js.map} +0 -0
@@ -2,11 +2,11 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  listPybAgentSessions
5
- } from "./chunk-PZTJUV4A.js";
5
+ } from "./chunk-NXLRKKFH.js";
6
6
  import {
7
7
  formatValidationResult,
8
8
  validatePluginOrMarketplacePath
9
- } from "./chunk-DODMRDRY.js";
9
+ } from "./chunk-2CLRREZ5.js";
10
10
  import {
11
11
  ConversationTracker,
12
12
  appendFinishState,
@@ -14,18 +14,18 @@ import {
14
14
  getConversationTrackerForContext,
15
15
  isFinishComplete,
16
16
  mapFinishReason
17
- } from "./chunk-JFQY2HV5.js";
17
+ } from "./chunk-MMZ2MWHJ.js";
18
18
  import {
19
19
  beginReplSessionScope
20
20
  } from "./chunk-F4AXICO7.js";
21
21
  import {
22
22
  loadPybAgentSessionMessages
23
- } from "./chunk-VXUWHEDL.js";
23
+ } from "./chunk-GIH6DDF7.js";
24
24
  import {
25
25
  appendSessionCustomTitleRecord,
26
26
  appendSessionJsonlFromMessage,
27
27
  appendSessionTagRecord
28
- } from "./chunk-A53N6YJI.js";
28
+ } from "./chunk-KK5DOHDD.js";
29
29
  import {
30
30
  drainHookSystemPromptAdditions,
31
31
  getHookTranscriptPath,
@@ -37,7 +37,7 @@ import {
37
37
  runStopHooks,
38
38
  runUserPromptSubmitHooks,
39
39
  updateHookTranscriptForMessages
40
- } from "./chunk-HV4NI23F.js";
40
+ } from "./chunk-6KPO3O64.js";
41
41
  import {
42
42
  DEFAULT_OUTPUT_STYLE,
43
43
  getAvailableOutputStyles,
@@ -46,11 +46,11 @@ import {
46
46
  getOutputStyleSystemPromptAdditions,
47
47
  resolveOutputStyleName,
48
48
  setCurrentOutputStyle
49
- } from "./chunk-EVDTKHQS.js";
49
+ } from "./chunk-4MZJNA2D.js";
50
50
  import {
51
51
  fetchCustomModels,
52
52
  getModelFeatures
53
- } from "./chunk-6AJ2CWOM.js";
53
+ } from "./chunk-7SPP4L5F.js";
54
54
  import {
55
55
  getSessionState
56
56
  } from "./chunk-XKYHFZEC.js";
@@ -58,7 +58,7 @@ import {
58
58
  queryLLM,
59
59
  queryQuick,
60
60
  verifyApiKey
61
- } from "./chunk-6LUGSV66.js";
61
+ } from "./chunk-ZXADEAK4.js";
62
62
  import {
63
63
  DEFAULT_TIMEOUT_MS,
64
64
  FallbackToolUseRejectedMessage,
@@ -72,7 +72,7 @@ import {
72
72
  listMCPServers,
73
73
  loadMergedSettings,
74
74
  normalizeSandboxRuntimeConfigFromSettings
75
- } from "./chunk-JHCUUDEB.js";
75
+ } from "./chunk-YH7ZOG3I.js";
76
76
  import {
77
77
  addMarketplace,
78
78
  disableSkillPlugin,
@@ -85,11 +85,11 @@ import {
85
85
  refreshMarketplaceAsync,
86
86
  removeMarketplace,
87
87
  uninstallSkillPlugin
88
- } from "./chunk-53JGT3P4.js";
88
+ } from "./chunk-JEGVTLOH.js";
89
89
  import {
90
90
  loadToolPermissionContextFromDisk,
91
91
  persistToolPermissionUpdateToDisk
92
- } from "./chunk-TCW74O5N.js";
92
+ } from "./chunk-7KDTFITN.js";
93
93
  import {
94
94
  applyToolPermissionContextUpdate,
95
95
  applyToolPermissionContextUpdates,
@@ -100,13 +100,13 @@ import {
100
100
  generateSystemReminders,
101
101
  resetReminderSession,
102
102
  systemReminderService
103
- } from "./chunk-O7CYKDDE.js";
103
+ } from "./chunk-TG2B47KG.js";
104
104
  import {
105
105
  clearAgentCache,
106
106
  getActiveAgents,
107
107
  getAgentByType,
108
108
  getAllAgents
109
- } from "./chunk-TDEIIGZD.js";
109
+ } from "./chunk-PDQTREWL.js";
110
110
  import {
111
111
  API_ERROR_MESSAGE_PREFIX,
112
112
  CANCEL_MESSAGE,
@@ -137,7 +137,7 @@ import {
137
137
  processUserInput,
138
138
  reorderMessages,
139
139
  stripSystemMessages
140
- } from "./chunk-EDTKZHPB.js";
140
+ } from "./chunk-7QIWZIVM.js";
141
141
  import {
142
142
  getRequestStatus,
143
143
  setRequestStatus,
@@ -167,7 +167,7 @@ import {
167
167
  normalizeFilePath,
168
168
  readTextContent,
169
169
  writeTextContent
170
- } from "./chunk-6TMRUFNH.js";
170
+ } from "./chunk-A2IPV5PR.js";
171
171
  import {
172
172
  parseBlockEdits
173
173
  } from "./chunk-QWIBSCDN.js";
@@ -177,26 +177,27 @@ import {
177
177
  ParserRegistry,
178
178
  initParser,
179
179
  loadLanguage
180
- } from "./chunk-I6JG3ZBH.js";
180
+ } from "./chunk-ZXO6OMWV.js";
181
181
  import {
182
182
  getSettingsFileCandidates,
183
183
  loadSettingsWithLegacyFallback,
184
184
  readSettingsFile
185
- } from "./chunk-ZETRMTIG.js";
185
+ } from "./chunk-7SDAA35I.js";
186
186
  import {
187
187
  getCustomCommandDirectories,
188
188
  hasCustomCommands,
189
189
  loadCustomCommands,
190
190
  reloadCustomCommands
191
- } from "./chunk-A6QAWMSQ.js";
191
+ } from "./chunk-GNDMDOGM.js";
192
192
  import {
193
193
  getSessionPlugins
194
194
  } from "./chunk-BJSWTHRM.js";
195
195
  import {
196
196
  ModelManager,
197
+ buildModelProfileKey,
197
198
  getModelManager,
198
199
  isDefaultSlowAndCapableModel
199
- } from "./chunk-AL6K5BMH.js";
200
+ } from "./chunk-5TCQKGL7.js";
200
201
  import {
201
202
  getCodeStyle,
202
203
  getContext,
@@ -204,16 +205,16 @@ import {
204
205
  getIsGit,
205
206
  getProjectDocs,
206
207
  getProjectStructureStatisticsBlock
207
- } from "./chunk-WSATR4WL.js";
208
+ } from "./chunk-2IO7WUI7.js";
208
209
  import {
209
210
  getRipgrepPath,
210
211
  getRipgrepPolicyMode,
211
212
  resolveRipgrepPolicy,
212
213
  ripGrep
213
- } from "./chunk-RBT4E5DV.js";
214
+ } from "./chunk-TYOT7UVX.js";
214
215
  import {
215
216
  getTheme
216
- } from "./chunk-QMUFX7IJ.js";
217
+ } from "./chunk-6E6QBP52.js";
217
218
  import {
218
219
  DEFAULT_GLOBAL_CONFIG,
219
220
  enableConfigs,
@@ -226,7 +227,7 @@ import {
226
227
  saveGlobalConfig,
227
228
  setAllPointersToModel,
228
229
  setModelPointer
229
- } from "./chunk-VPVZHCOG.js";
230
+ } from "./chunk-WAQ72XDO.js";
230
231
  import {
231
232
  AbortError
232
233
  } from "./chunk-RQVLBMP7.js";
@@ -235,7 +236,7 @@ import {
235
236
  getCurrentRequest,
236
237
  logUserFriendly,
237
238
  markPhase
238
- } from "./chunk-LR2N7KMQ.js";
239
+ } from "./chunk-DKQIGPXB.js";
239
240
  import {
240
241
  ASCII_LOGO,
241
242
  BunShell,
@@ -276,10 +277,10 @@ import {
276
277
  setCwd,
277
278
  shouldApplyToolOutputTruncation,
278
279
  truncateToolOutput
279
- } from "./chunk-Y2CH5HCU.js";
280
+ } from "./chunk-VKXOAPOS.js";
280
281
  import {
281
282
  MACRO
282
- } from "./chunk-YIXTSVYD.js";
283
+ } from "./chunk-3BPXWAOJ.js";
283
284
  import {
284
285
  __export
285
286
  } from "./chunk-I3J4JYES.js";
@@ -460,7 +461,7 @@ var getCommandSubcommandPrefix = memoize(
460
461
  var getCommandPrefix = memoize(
461
462
  async (command4, abortSignal) => {
462
463
  const { systemPrompt, userPrompt } = buildBashCommandPrefixDetectionPrompt(command4);
463
- const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-HPGYRNBC.js");
464
+ const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-RCPJRG2F.js");
464
465
  const response = await queryQuick2({
465
466
  systemPrompt,
466
467
  userPrompt,
@@ -4262,7 +4263,7 @@ function formatParseError(error) {
4262
4263
  return error instanceof Error ? error.message : String(error);
4263
4264
  }
4264
4265
  async function defaultGateQuery(args) {
4265
- const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-HPGYRNBC.js");
4266
+ const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-RCPJRG2F.js");
4266
4267
  const queryLLMFn = args.queryLLMOverride ?? queryLLM2;
4267
4268
  const messages = [
4268
4269
  {
@@ -5945,13 +5946,6 @@ var FileFreshnessService = class {
5945
5946
  const conflict = !isFresh;
5946
5947
  if (conflict) {
5947
5948
  this.state.editConflicts.add(filePath);
5948
- emitReminderEvent("file:conflict", {
5949
- filePath,
5950
- lastRead: recorded.lastRead,
5951
- lastModified: recorded.lastModified,
5952
- currentModified: currentStats.mtimeMs,
5953
- sizeDiff: currentStats.size - recorded.size
5954
- });
5955
5949
  }
5956
5950
  return {
5957
5951
  isFresh,
@@ -6005,34 +5999,6 @@ var FileFreshnessService = class {
6005
5999
  });
6006
6000
  }
6007
6001
  }
6008
- generateFileModificationReminder(filePath) {
6009
- const recorded = this.state.readTimestamps.get(filePath);
6010
- if (!recorded) {
6011
- return null;
6012
- }
6013
- try {
6014
- if (!existsSync3(filePath)) {
6015
- return `Note: ${filePath} was deleted since last read.`;
6016
- }
6017
- const currentStats = statSync2(filePath);
6018
- const isModified = currentStats.mtimeMs > recorded.lastModified;
6019
- if (!isModified) {
6020
- return null;
6021
- }
6022
- const TIME_TOLERANCE_MS = 100;
6023
- if (recorded.lastAgentEdit && recorded.lastAgentEdit >= recorded.lastModified - TIME_TOLERANCE_MS) {
6024
- return null;
6025
- }
6026
- return `Note: ${filePath} was modified externally since last read. The file may have changed outside of this session.`;
6027
- } catch (error) {
6028
- logError(error);
6029
- debug.warn("FILE_FRESHNESS_CHECK_MODIFICATION_FAILED", {
6030
- filePath,
6031
- error: error instanceof Error ? error.message : String(error)
6032
- });
6033
- return null;
6034
- }
6035
- }
6036
6002
  getConflictedFiles() {
6037
6003
  return Array.from(this.state.editConflicts);
6038
6004
  }
@@ -6066,7 +6032,6 @@ var FileFreshnessService = class {
6066
6032
  var fileFreshnessService = new FileFreshnessService();
6067
6033
  var recordFileRead = (filePath) => fileFreshnessService.recordFileRead(filePath);
6068
6034
  var recordFileEdit = (filePath, content) => fileFreshnessService.recordFileEdit(filePath, content);
6069
- var generateFileModificationReminder = (filePath) => fileFreshnessService.generateFileModificationReminder(filePath);
6070
6035
  var resetFileFreshnessSession = () => fileFreshnessService.resetSession();
6071
6036
 
6072
6037
  // src/tools/filesystem/NotebookEditTool/NotebookEditTool.tsx
@@ -6659,7 +6624,7 @@ var FileEditTool = {
6659
6624
  const originalFileContent = currentFileContent;
6660
6625
  let totalPatch = [];
6661
6626
  const { SmartEdit } = await import("./smart-edit-AWHJDSU6.js");
6662
- const { findLspAnchor } = await import("./lspAnchor-YNYJ7E7M.js");
6627
+ const { findLspAnchor } = await import("./lspAnchor-C676SQ6E.js");
6663
6628
  for (const op of editOperations) {
6664
6629
  const normalizedSearch = normalizeLineEndings(op.search);
6665
6630
  const normalizedReplace = normalizeLineEndings(op.replace);
@@ -7690,14 +7655,6 @@ var FileReadTool = {
7690
7655
  timestamp: Date.now()
7691
7656
  });
7692
7657
  readFileTimestamps[fullFilePath] = statSync7(fullFilePath).mtimeMs;
7693
- const modificationReminder = generateFileModificationReminder(fullFilePath);
7694
- if (modificationReminder) {
7695
- emitReminderEvent("file:modified", {
7696
- filePath: fullFilePath,
7697
- reminder: modificationReminder,
7698
- timestamp: Date.now()
7699
- });
7700
- }
7701
7658
  if (IMAGE_EXTENSIONS.has(ext)) {
7702
7659
  const data2 = await readImage(fullFilePath, ext);
7703
7660
  yield {
@@ -11941,7 +11898,7 @@ async function createAndStoreApiKey(accessToken) {
11941
11898
  }
11942
11899
  saveGlobalConfig(config2);
11943
11900
  try {
11944
- const { resetAnthropicClient } = await import("./llm-HPGYRNBC.js");
11901
+ const { resetAnthropicClient } = await import("./llm-RCPJRG2F.js");
11945
11902
  resetAnthropicClient();
11946
11903
  } catch {
11947
11904
  }
@@ -15138,11 +15095,12 @@ Please check your API key and try again, or press Tab to manually enter model na
15138
15095
  if (!modelId) {
15139
15096
  return;
15140
15097
  }
15141
- setModelPointer("main", modelId);
15098
+ const profileKey = buildModelProfileKey(selectedProvider, modelId);
15099
+ setModelPointer("main", profileKey);
15142
15100
  if (isOnboarding) {
15143
- setAllPointersToModel(modelId);
15101
+ setAllPointersToModel(profileKey);
15144
15102
  } else if (targetPointer && targetPointer !== "main") {
15145
- setModelPointer(targetPointer, modelId);
15103
+ setModelPointer(targetPointer, profileKey);
15146
15104
  }
15147
15105
  onDone();
15148
15106
  }
@@ -16364,7 +16322,7 @@ async function refreshPluginRuntimeFromInstalls() {
16364
16322
  const existingRoots = getSessionPlugins().map((p) => p.rootDir);
16365
16323
  const dirs = Array.from(/* @__PURE__ */ new Set([...existingRoots, ...installedRoots]));
16366
16324
  if (dirs.length === 0) return [];
16367
- const { configureSessionPlugins } = await import("./pluginRuntime-TFQEES5T.js");
16325
+ const { configureSessionPlugins } = await import("./pluginRuntime-NQ6GKMG6.js");
16368
16326
  const { errors } = await configureSessionPlugins({ pluginDirs: dirs });
16369
16327
  return errors;
16370
16328
  }
@@ -16700,10 +16658,10 @@ function ModelListManager({ onClose }) {
16700
16658
  const availableModels = modelManager.getAvailableModels();
16701
16659
  const menuItems = React40.useMemo(() => {
16702
16660
  const modelItems = availableModels.map((model) => ({
16703
- id: model.modelName,
16661
+ id: buildModelProfileKey(model.provider, model.modelName),
16704
16662
  name: model.name,
16705
16663
  provider: model.provider,
16706
- usedBy: getModelUsage(model.modelName),
16664
+ usedBy: getModelUsage(model.provider, model.modelName),
16707
16665
  type: "model"
16708
16666
  }));
16709
16667
  return [
@@ -16717,18 +16675,19 @@ function ModelListManager({ onClose }) {
16717
16675
  ...modelItems
16718
16676
  ];
16719
16677
  }, [availableModels, config2.modelPointers, refreshKey]);
16720
- function getModelUsage(modelName) {
16678
+ function getModelUsage(provider, modelName) {
16721
16679
  const usage = [];
16722
16680
  const pointers = ["main", "task", "compact", "quick"];
16681
+ const profileKey = buildModelProfileKey(provider, modelName);
16723
16682
  pointers.forEach((pointer) => {
16724
- if (config2.modelPointers?.[pointer] === modelName) {
16683
+ if (config2.modelPointers?.[pointer] === profileKey || config2.modelPointers?.[pointer] === modelName) {
16725
16684
  usage.push(pointer);
16726
16685
  }
16727
16686
  });
16728
16687
  return usage;
16729
16688
  }
16730
- const handleDeleteModel = (modelName) => {
16731
- modelManager.removeModel(modelName);
16689
+ const handleDeleteModel = (modelRef) => {
16690
+ modelManager.removeModel(modelRef);
16732
16691
  setRefreshKey((prev) => prev + 1);
16733
16692
  setIsDeleteMode(false);
16734
16693
  };
@@ -16760,7 +16719,9 @@ function ModelListManager({ onClose }) {
16760
16719
  setIsDeleteMode(false);
16761
16720
  return;
16762
16721
  }
16763
- if (config2.modelPointers?.main === item.id) {
16722
+ const mainPointer = config2.modelPointers?.main;
16723
+ const deletingMain = mainPointer === item.id || mainPointer && item.id.includes(":") && mainPointer === item.id.split(":").slice(1).join(":");
16724
+ if (deletingMain) {
16764
16725
  setIsDeleteMode(false);
16765
16726
  return;
16766
16727
  }
@@ -16840,7 +16801,10 @@ function ModelConfig({ onClose }) {
16840
16801
  }, [selectedIndex]);
16841
16802
  const availableModels = React41.useMemo(() => {
16842
16803
  const profiles = modelManager.getAvailableModels();
16843
- return profiles.map((p) => ({ id: p.modelName, name: p.name }));
16804
+ return profiles.map((p) => ({
16805
+ id: buildModelProfileKey(p.provider, p.modelName),
16806
+ name: p.name
16807
+ }));
16844
16808
  }, [modelManager, refreshKey]);
16845
16809
  const menuItems = React41.useMemo(() => {
16846
16810
  const modelSettings = [
@@ -16937,7 +16901,7 @@ function ModelConfig({ onClose }) {
16937
16901
  return;
16938
16902
  }
16939
16903
  const currentIndex = setting.options.findIndex(
16940
- (opt) => opt.id === setting.value
16904
+ (opt) => opt.id === setting.value || opt.id.endsWith(`:${setting.value}`)
16941
16905
  );
16942
16906
  const nextIndex = (currentIndex + 1) % setting.options.length;
16943
16907
  const nextOption = setting.options[nextIndex];
@@ -17033,7 +16997,7 @@ async function call(onDone, context) {
17033
16997
  ModelConfig,
17034
16998
  {
17035
16999
  onClose: () => {
17036
- import("./model-YUVFO4IF.js").then(({ reloadModelManager: reloadModelManager2 }) => {
17000
+ import("./model-AJTLB6V4.js").then(({ reloadModelManager: reloadModelManager2 }) => {
17037
17001
  reloadModelManager2();
17038
17002
  triggerModelConfigChange();
17039
17003
  onDone();
@@ -25237,7 +25201,7 @@ function useStatusLine() {
25237
25201
  // src/ui/components/PromptInput.tsx
25238
25202
  async function interpretHashCommand(input) {
25239
25203
  try {
25240
- const { queryQuick: queryQuick2 } = await import("./llm-HPGYRNBC.js");
25204
+ const { queryQuick: queryQuick2 } = await import("./llm-RCPJRG2F.js");
25241
25205
  const systemPrompt = [
25242
25206
  "You're helping the user structure notes that will be added to their PYB.md file.",
25243
25207
  "Format the user's input into a well-structured note that will be useful for later reference.",
@@ -25550,7 +25514,7 @@ function PromptInput({
25550
25514
  if (messages2.length) {
25551
25515
  if (mode === "bash") {
25552
25516
  onQuery(messages2, newAbortController).then(async () => {
25553
- const { getCwd: getCwd2 } = await import("./state-B5WH4G7E.js");
25517
+ const { getCwd: getCwd2 } = await import("./state-6FI3TEMZ.js");
25554
25518
  setCurrentPwd(getCwd2());
25555
25519
  });
25556
25520
  } else {
@@ -26422,7 +26386,26 @@ function isGPT5Model(modelName) {
26422
26386
  }
26423
26387
  function formatSystemPromptWithContext(systemPrompt, context, agentId, skipContextReminders = false, options) {
26424
26388
  const enhancedPrompt = [...systemPrompt];
26425
- let reminders = "";
26389
+ let userReminders = "";
26390
+ let systemReminders = "";
26391
+ let userReminderMessages = [];
26392
+ let systemReminderMessages = [];
26393
+ const mentionTypes = /* @__PURE__ */ new Set(["agent_mention", "file_mention", "ask_model_mention"]);
26394
+ const splitReminderChannels = (items) => {
26395
+ const user = [];
26396
+ const system = [];
26397
+ for (const item of items) {
26398
+ if (!item?.type) {
26399
+ throw new Error("REMINDER_CHANNEL_CLASSIFICATION_FAILED");
26400
+ }
26401
+ if (mentionTypes.has(item.type)) {
26402
+ user.push(item);
26403
+ } else {
26404
+ system.push(item);
26405
+ }
26406
+ }
26407
+ return { user, system };
26408
+ };
26426
26409
  const modelManager = getModelManager();
26427
26410
  const modelProfile = modelManager.getModel("main");
26428
26411
  if (modelProfile && isGPT5Model(modelProfile.modelName)) {
@@ -26450,7 +26433,15 @@ function formatSystemPromptWithContext(systemPrompt, context, agentId, skipConte
26450
26433
  }
26451
26434
  const reminderMessages = generateSystemReminders(hasContext, agentId);
26452
26435
  if (reminderMessages.length > 0) {
26453
- reminders = reminderMessages.map((r) => r.content).join("\n") + "\n";
26436
+ const channels = splitReminderChannels(reminderMessages);
26437
+ userReminderMessages = channels.user;
26438
+ systemReminderMessages = channels.system;
26439
+ if (channels.user.length > 0) {
26440
+ userReminders = channels.user.map((r) => r.content).join("\n") + "\n";
26441
+ }
26442
+ if (channels.system.length > 0) {
26443
+ systemReminders = channels.system.map((r) => r.content).join("\n") + "\n";
26444
+ }
26454
26445
  }
26455
26446
  enhancedPrompt.push(
26456
26447
  `
@@ -26495,7 +26486,81 @@ As you answer the user's questions, you can use the following context:
26495
26486
  enhancedPrompt.push("\n---\n");
26496
26487
  }
26497
26488
  }
26498
- return { systemPrompt: enhancedPrompt, reminders };
26489
+ return {
26490
+ systemPrompt: enhancedPrompt,
26491
+ userReminders,
26492
+ systemReminders,
26493
+ userReminderMessages,
26494
+ systemReminderMessages
26495
+ };
26496
+ }
26497
+
26498
+ // src/services/system/reminderChannelMetrics.ts
26499
+ function isMentionReminder(reminder) {
26500
+ return reminder.type === "agent_mention" || reminder.type === "file_mention" || reminder.type === "ask_model_mention";
26501
+ }
26502
+ function extractReminderTypes(reminderMessages) {
26503
+ const types = /* @__PURE__ */ new Set();
26504
+ for (const reminder of reminderMessages) {
26505
+ if (isMentionReminder(reminder)) {
26506
+ types.add("mention");
26507
+ continue;
26508
+ }
26509
+ types.add(reminder.type);
26510
+ }
26511
+ return Array.from(types);
26512
+ }
26513
+ function buildReminderChannelMetrics(userReminderMessages, systemReminderMessages) {
26514
+ const mentionInUser = userReminderMessages.filter(isMentionReminder).length;
26515
+ const mentionInSystem = systemReminderMessages.filter(isMentionReminder).length;
26516
+ const mentionTotal = mentionInUser + mentionInSystem;
26517
+ const nonMentionInUser = userReminderMessages.length - mentionInUser;
26518
+ return {
26519
+ mention_in_user_ratio: mentionTotal === 0 ? 1 : mentionInUser / mentionTotal,
26520
+ non_mention_in_user_count: nonMentionInUser,
26521
+ user_channel_reminder_count: userReminderMessages.length,
26522
+ system_channel_reminder_count: systemReminderMessages.length
26523
+ };
26524
+ }
26525
+ function evaluateReminderChannelClosure(rounds, requiredRounds = 3) {
26526
+ const recentRounds = rounds.slice(-requiredRounds);
26527
+ const failedRoundIndexes = [];
26528
+ recentRounds.forEach((round, index) => {
26529
+ if (round.non_mention_in_user_count !== 0 || Math.abs(round.mention_in_user_ratio - 1) > 1e-9) {
26530
+ failedRoundIndexes.push(index);
26531
+ }
26532
+ });
26533
+ return {
26534
+ passed: recentRounds.length === requiredRounds && failedRoundIndexes.length === 0,
26535
+ roundCount: recentRounds.length,
26536
+ failedRoundIndexes
26537
+ };
26538
+ }
26539
+
26540
+ // src/services/system/reminderFlags.ts
26541
+ function toBool2(value) {
26542
+ if (value == null) return void 0;
26543
+ const normalized = String(value).trim().toLowerCase();
26544
+ if (["1", "true", "yes", "on"].includes(normalized)) return true;
26545
+ if (["0", "false", "no", "off"].includes(normalized)) return false;
26546
+ return void 0;
26547
+ }
26548
+ function resolveReminderChannelFlags(env2 = process.env) {
26549
+ const reminderEnabled = toBool2(env2.PYB_REMINDER_ENABLED) ?? true;
26550
+ if (!reminderEnabled) {
26551
+ return {
26552
+ reminderEnabled: false,
26553
+ userChannelEnabled: false,
26554
+ systemChannelEnabled: false
26555
+ };
26556
+ }
26557
+ const userChannelEnabled = toBool2(env2.PYB_REMINDER_USER_CHANNEL_ENABLED) ?? true;
26558
+ const systemChannelEnabled = toBool2(env2.PYB_REMINDER_SYSTEM_CHANNEL_ENABLED) ?? true;
26559
+ return {
26560
+ reminderEnabled,
26561
+ userChannelEnabled,
26562
+ systemChannelEnabled
26563
+ };
26499
26564
  }
26500
26565
 
26501
26566
  // src/services/system/taskWatcher.ts
@@ -28080,6 +28145,7 @@ function isToolUseLikeBlock(block) {
28080
28145
  return block && typeof block === "object" && (block.type === "tool_use" || block.type === "server_tool_use" || block.type === "mcp_tool_use");
28081
28146
  }
28082
28147
  var __isToolUseLikeBlockForTests = isToolUseLikeBlock;
28148
+ var reminderChannelRounds = [];
28083
28149
  function createSyntheticToolUseErrorMessage(args) {
28084
28150
  const { toolUseId, reason, rootToolUseId } = args;
28085
28151
  if (reason === "user_interrupted") {
@@ -28465,13 +28531,29 @@ async function* queryCore(messages, systemPrompt, context, canUseTool, toolUseCo
28465
28531
  }
28466
28532
  markPhase("SYSTEM_PROMPT_BUILD");
28467
28533
  hydratePlanSlugFromMessages(messages, toolUseContext);
28468
- const { systemPrompt: fullSystemPrompt, reminders } = formatSystemPromptWithContext(
28534
+ const {
28535
+ systemPrompt: fullSystemPrompt,
28536
+ userReminders,
28537
+ systemReminders,
28538
+ userReminderMessages,
28539
+ systemReminderMessages
28540
+ } = formatSystemPromptWithContext(
28469
28541
  systemPrompt,
28470
28542
  context,
28471
28543
  toolUseContext.agentId,
28472
28544
  false,
28473
28545
  { conversationTracker: tracker, agentType: toolUseContext.agentType }
28474
28546
  );
28547
+ const flags = resolveReminderChannelFlags();
28548
+ const effectiveUserReminderMessages = flags.reminderEnabled && flags.userChannelEnabled ? userReminderMessages : [];
28549
+ const effectiveSystemReminderMessages = flags.reminderEnabled && flags.systemChannelEnabled ? systemReminderMessages : [];
28550
+ const effectiveUserReminders = flags.reminderEnabled && flags.userChannelEnabled ? userReminders : "";
28551
+ const effectiveSystemReminders = flags.reminderEnabled && flags.systemChannelEnabled ? systemReminders : "";
28552
+ if (effectiveSystemReminders) {
28553
+ fullSystemPrompt.push("\n---\n# System Reminders\n");
28554
+ fullSystemPrompt.push(effectiveSystemReminders);
28555
+ fullSystemPrompt.push("\n---\n");
28556
+ }
28475
28557
  const planModeAdditions = getPlanModeSystemPromptAdditions(
28476
28558
  messages,
28477
28559
  toolUseContext
@@ -28497,15 +28579,50 @@ async function* queryCore(messages, systemPrompt, context, canUseTool, toolUseCo
28497
28579
  requestId: currentRequest?.id,
28498
28580
  config: conversationTrackingConfig
28499
28581
  });
28500
- emitReminderEvent("session:startup", {
28501
- agentId: toolUseContext.agentId,
28502
- messages: messages.length,
28503
- timestamp: Date.now()
28504
- });
28582
+ if (!hookState?.startupEmitted) {
28583
+ emitReminderEvent("session:startup", {
28584
+ agentId: toolUseContext.agentId,
28585
+ messages: messages.length,
28586
+ timestamp: Date.now()
28587
+ });
28588
+ }
28505
28589
  if (!toolUseContext.agentId || toolUseContext.agentId === "main") {
28506
28590
  startWatchingTaskList();
28507
28591
  }
28508
- if (reminders && messages.length > 0) {
28592
+ const reminderMessages = [
28593
+ ...effectiveUserReminderMessages,
28594
+ ...effectiveSystemReminderMessages
28595
+ ];
28596
+ const rawReminderCount = userReminderMessages.length + systemReminderMessages.length;
28597
+ if (reminderMessages.length > 0) {
28598
+ const metrics = buildReminderChannelMetrics(
28599
+ effectiveUserReminderMessages,
28600
+ effectiveSystemReminderMessages
28601
+ );
28602
+ reminderChannelRounds.push(metrics);
28603
+ if (reminderChannelRounds.length > 20) {
28604
+ reminderChannelRounds.shift();
28605
+ }
28606
+ const closure = evaluateReminderChannelClosure(reminderChannelRounds, 3);
28607
+ logUserFriendly("REMINDER_INJECTION_SUMMARY", {
28608
+ queryId: activeQueryId,
28609
+ reminderTypes: extractReminderTypes(reminderMessages),
28610
+ userReminderCount: effectiveUserReminderMessages.length,
28611
+ systemReminderCount: effectiveSystemReminderMessages.length,
28612
+ rawReminderCount,
28613
+ user_channel_reminder_count: metrics.user_channel_reminder_count,
28614
+ system_channel_reminder_count: metrics.system_channel_reminder_count,
28615
+ mention_in_user_ratio: metrics.mention_in_user_ratio,
28616
+ non_mention_in_user_count: metrics.non_mention_in_user_count,
28617
+ closure_three_round_passed: closure.passed,
28618
+ closure_three_round_window_count: closure.roundCount,
28619
+ closure_three_round_failed_indexes: closure.failedRoundIndexes,
28620
+ reminder_enabled: flags.reminderEnabled,
28621
+ reminder_user_channel_enabled: flags.userChannelEnabled,
28622
+ reminder_system_channel_enabled: flags.systemChannelEnabled
28623
+ });
28624
+ }
28625
+ if (effectiveUserReminders && messages.length > 0) {
28509
28626
  for (let i = messages.length - 1; i >= 0; i--) {
28510
28627
  const msg = messages[i];
28511
28628
  if (msg?.type === "user") {
@@ -28514,9 +28631,9 @@ async function* queryCore(messages, systemPrompt, context, canUseTool, toolUseCo
28514
28631
  ...lastUserMessage,
28515
28632
  message: {
28516
28633
  ...lastUserMessage.message,
28517
- content: typeof lastUserMessage.message.content === "string" ? reminders + lastUserMessage.message.content : [
28634
+ content: typeof lastUserMessage.message.content === "string" ? effectiveUserReminders + lastUserMessage.message.content : [
28518
28635
  ...Array.isArray(lastUserMessage.message.content) ? lastUserMessage.message.content : [],
28519
- { type: "text", text: reminders }
28636
+ { type: "text", text: effectiveUserReminders }
28520
28637
  ]
28521
28638
  }
28522
28639
  };
@@ -28579,7 +28696,8 @@ async function* queryCore(messages, systemPrompt, context, canUseTool, toolUseCo
28579
28696
  getBinaryFeedbackResponse,
28580
28697
  {
28581
28698
  stopHookActive: true,
28582
- stopHookAttempts: stopHookAttempts + 1
28699
+ stopHookAttempts: stopHookAttempts + 1,
28700
+ startupEmitted: true
28583
28701
  }
28584
28702
  );
28585
28703
  return;
@@ -28648,7 +28766,10 @@ async function* queryCore(messages, systemPrompt, context, canUseTool, toolUseCo
28648
28766
  canUseTool,
28649
28767
  toolUseContext,
28650
28768
  getBinaryFeedbackResponse,
28651
- hookState
28769
+ {
28770
+ ...hookState ?? {},
28771
+ startupEmitted: true
28772
+ }
28652
28773
  );
28653
28774
  } catch (error) {
28654
28775
  throw error;
@@ -30187,7 +30308,7 @@ import { homedir as homedir8 } from "os";
30187
30308
  // src/commands/agents/generation.ts
30188
30309
  import { randomUUID as randomUUID6 } from "crypto";
30189
30310
  async function generateAgentWithClaude(prompt) {
30190
- const { queryModel } = await import("./llm-HPGYRNBC.js");
30311
+ const { queryModel } = await import("./llm-RCPJRG2F.js");
30191
30312
  const systemPrompt = `You are an expert at creating AI agent configurations. Based on the user's description, generate a specialized agent configuration.
30192
30313
 
30193
30314
  Return your response as a JSON object with exactly these fields: