pybao-cli 1.5.49 → 1.5.51

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-VQEZ7GBU.js +53 -0
  2. package/dist/{acp-6X7A2AET.js → acp-OGXPDTPB.js} +30 -30
  3. package/dist/{agentsValidate-GRUUS3WU.js → agentsValidate-7USQLEWU.js} +7 -7
  4. package/dist/{ask-HZDW4LTP.js → ask-KTRDNR5F.js} +30 -30
  5. package/dist/{autoUpdater-SPEKG26M.js → autoUpdater-YTVTFZKD.js} +3 -3
  6. package/dist/{chunk-E5CC5UGF.js → chunk-276WD5RN.js} +4 -4
  7. package/dist/{chunk-TBPXZUAE.js → chunk-56FKUXNO.js} +2 -2
  8. package/dist/{chunk-4DMR3345.js → chunk-5C3V4WBH.js} +751 -739
  9. package/dist/chunk-5C3V4WBH.js.map +7 -0
  10. package/dist/{chunk-C2BMJGBF.js → chunk-726GW5OD.js} +1 -1
  11. package/dist/{chunk-UEF22EAA.js → chunk-A2QSQWOQ.js} +48 -10
  12. package/dist/{chunk-UEF22EAA.js.map → chunk-A2QSQWOQ.js.map} +2 -2
  13. package/dist/{chunk-X7L2ZXEQ.js → chunk-CLYWO4WT.js} +2 -2
  14. package/dist/{chunk-ZYI3GZHI.js → chunk-CXWYHX64.js} +4 -4
  15. package/dist/{chunk-XRHL3B3W.js → chunk-D2MHLZDN.js} +1 -1
  16. package/dist/{chunk-7OKEXFNZ.js → chunk-EEOIMMFC.js} +3 -3
  17. package/dist/{chunk-7NJKFUVQ.js → chunk-ESKGSE6G.js} +3 -3
  18. package/dist/{chunk-NYRCQC7E.js → chunk-FTPQJIPL.js} +3 -3
  19. package/dist/{chunk-XGSD7RT6.js → chunk-GUNRUYLP.js} +1 -1
  20. package/dist/{chunk-SCZBEZ4L.js → chunk-GZOD5652.js} +2 -2
  21. package/dist/{chunk-F4IOWWDV.js → chunk-HM2PO36Q.js} +3 -3
  22. package/dist/{chunk-V633SD3K.js → chunk-I6GA6HKT.js} +3 -3
  23. package/dist/{chunk-ZBUV2OFZ.js → chunk-LG4DZXZE.js} +1 -1
  24. package/dist/{chunk-EPTONOB3.js → chunk-NXWVCWZU.js} +1 -1
  25. package/dist/{chunk-3OA76CSA.js → chunk-OLQLK3UC.js} +1 -1
  26. package/dist/{chunk-I33HG6MZ.js → chunk-PGRCNKEQ.js} +1 -1
  27. package/dist/{chunk-KH3BWQJI.js → chunk-PWHPXHNR.js} +2 -2
  28. package/dist/{chunk-NRGFDG57.js → chunk-QHRHQ4TE.js} +2 -2
  29. package/dist/{chunk-VII5ABW7.js → chunk-RDDHG7KT.js} +1 -1
  30. package/dist/{chunk-AKDLTQJZ.js → chunk-TGGCRPZR.js} +1 -1
  31. package/dist/{chunk-KSDMNPM3.js → chunk-TKU3UJXS.js} +3 -3
  32. package/dist/{chunk-AIKGRPJR.js → chunk-TZGJRTAC.js} +2 -2
  33. package/dist/{chunk-SQL5Q5UT.js → chunk-UIKYSSZX.js} +4 -4
  34. package/dist/{chunk-JJNZ7WEP.js → chunk-UMOI4SIG.js} +1 -1
  35. package/dist/{chunk-V6B67TTT.js → chunk-WZDDUIIK.js} +3 -3
  36. package/dist/{chunk-ALMRZ6TK.js → chunk-X6MCOKYP.js} +1 -1
  37. package/dist/{chunk-ALMRZ6TK.js.map → chunk-X6MCOKYP.js.map} +1 -1
  38. package/dist/{chunk-NSPAFJYF.js → chunk-XTFXKDRC.js} +3 -3
  39. package/dist/{chunk-OT7EHZKB.js → chunk-YEUUN3PW.js} +1 -1
  40. package/dist/{cli-E24TVQWL.js → cli-KFO36PW7.js} +90 -90
  41. package/dist/commands-DKTG7VIQ.js +57 -0
  42. package/dist/{config-U5HHXO56.js → config-UGXKX5W7.js} +4 -4
  43. package/dist/{context-5XAWTXIF.js → context-TDXVLXJZ.js} +6 -6
  44. package/dist/{conversationPersistence-COKR4DJM.js → conversationPersistence-ATHSGPCA.js} +3 -3
  45. package/dist/{conversationTracker-CFWPAQJQ.js → conversationTracker-IGKMS7I2.js} +4 -4
  46. package/dist/{customCommands-KV4SPPEJ.js → customCommands-5MIZHJIB.js} +4 -4
  47. package/dist/{env-6Z2X4SGO.js → env-3KNLQRPA.js} +2 -2
  48. package/dist/{file-EYJLYMU7.js → file-DFXDFI6W.js} +4 -4
  49. package/dist/index.js +3 -3
  50. package/dist/{llm-JRNCNUVN.js → llm-MRDYTVAB.js} +31 -31
  51. package/dist/{llmLazy-ULKOVGTW.js → llmLazy-2O7VC463.js} +1 -1
  52. package/dist/{loader-YC2J4JQD.js → loader-FZWD5WHH.js} +4 -4
  53. package/dist/{lsp-YOU3CXAU.js → lsp-2TM75CW4.js} +6 -6
  54. package/dist/{lspAnchor-XLKJXJ4F.js → lspAnchor-XGTUMZDM.js} +6 -6
  55. package/dist/{mcp-ZBXWPPEQ.js → mcp-FITQROXI.js} +7 -7
  56. package/dist/{mentionProcessor-D7A5SR2F.js → mentionProcessor-L5WCXBIE.js} +5 -5
  57. package/dist/{messages-N4BMW6FO.js → messages-4S23AYLZ.js} +1 -1
  58. package/dist/{model-3R63GBXV.js → model-ECABFXED.js} +5 -5
  59. package/dist/{openai-OE2BXCWW.js → openai-AAHVW6AQ.js} +5 -5
  60. package/dist/{outputStyles-7NXCPWAM.js → outputStyles-2QWBQSS4.js} +4 -4
  61. package/dist/{pluginRuntime-DUFKGBKI.js → pluginRuntime-TDH3JKLN.js} +6 -6
  62. package/dist/{pluginValidation-TUI4RWTL.js → pluginValidation-FBGQ4JDV.js} +6 -6
  63. package/dist/prompts-PLA42YDC.js +59 -0
  64. package/dist/{pybAgentSessionLoad-OHCESID3.js → pybAgentSessionLoad-WEEMBEOX.js} +4 -4
  65. package/dist/{pybAgentSessionResume-X7TO6VQ7.js → pybAgentSessionResume-FXJA5YEY.js} +4 -4
  66. package/dist/{pybAgentStreamJsonSession-3XCK4MLN.js → pybAgentStreamJsonSession-I3QVTPS4.js} +1 -1
  67. package/dist/{pybHooks-WGTXY2KQ.js → pybHooks-QVFTX2NF.js} +4 -4
  68. package/dist/query-GEX7UFS4.js +57 -0
  69. package/dist/{registry-V4XMLWYT.js → registry-R642XWSX.js} +5 -5
  70. package/dist/{ripgrep-ITNB4VGR.js → ripgrep-ZCE3BIKN.js} +3 -3
  71. package/dist/{skillMarketplace-YYMKIEEM.js → skillMarketplace-O2RFNXT4.js} +3 -3
  72. package/dist/{state-ZQW77MQC.js → state-GMP5BAO3.js} +2 -2
  73. package/dist/{theme-L3I3PP7H.js → theme-BXH5IJVI.js} +5 -5
  74. package/dist/{toolPermissionSettings-ZHMSXSXS.js → toolPermissionSettings-SLI774QB.js} +6 -6
  75. package/dist/tools-GEQDCFN6.js +57 -0
  76. package/dist/{userInput-VSYAOPNU.js → userInput-73ASWIUB.js} +32 -32
  77. package/package.json +1 -1
  78. package/dist/REPL-QOH5GRZO.js +0 -53
  79. package/dist/chunk-4DMR3345.js.map +0 -7
  80. package/dist/commands-M75WK3OK.js +0 -57
  81. package/dist/prompts-VLIUTRIV.js +0 -59
  82. package/dist/query-Y332XP4J.js +0 -57
  83. package/dist/tools-CM5X3TT5.js +0 -57
  84. /package/dist/{REPL-QOH5GRZO.js.map → REPL-VQEZ7GBU.js.map} +0 -0
  85. /package/dist/{acp-6X7A2AET.js.map → acp-OGXPDTPB.js.map} +0 -0
  86. /package/dist/{agentsValidate-GRUUS3WU.js.map → agentsValidate-7USQLEWU.js.map} +0 -0
  87. /package/dist/{ask-HZDW4LTP.js.map → ask-KTRDNR5F.js.map} +0 -0
  88. /package/dist/{autoUpdater-SPEKG26M.js.map → autoUpdater-YTVTFZKD.js.map} +0 -0
  89. /package/dist/{chunk-E5CC5UGF.js.map → chunk-276WD5RN.js.map} +0 -0
  90. /package/dist/{chunk-TBPXZUAE.js.map → chunk-56FKUXNO.js.map} +0 -0
  91. /package/dist/{chunk-C2BMJGBF.js.map → chunk-726GW5OD.js.map} +0 -0
  92. /package/dist/{chunk-X7L2ZXEQ.js.map → chunk-CLYWO4WT.js.map} +0 -0
  93. /package/dist/{chunk-ZYI3GZHI.js.map → chunk-CXWYHX64.js.map} +0 -0
  94. /package/dist/{chunk-XRHL3B3W.js.map → chunk-D2MHLZDN.js.map} +0 -0
  95. /package/dist/{chunk-7OKEXFNZ.js.map → chunk-EEOIMMFC.js.map} +0 -0
  96. /package/dist/{chunk-7NJKFUVQ.js.map → chunk-ESKGSE6G.js.map} +0 -0
  97. /package/dist/{chunk-NYRCQC7E.js.map → chunk-FTPQJIPL.js.map} +0 -0
  98. /package/dist/{chunk-XGSD7RT6.js.map → chunk-GUNRUYLP.js.map} +0 -0
  99. /package/dist/{chunk-SCZBEZ4L.js.map → chunk-GZOD5652.js.map} +0 -0
  100. /package/dist/{chunk-F4IOWWDV.js.map → chunk-HM2PO36Q.js.map} +0 -0
  101. /package/dist/{chunk-V633SD3K.js.map → chunk-I6GA6HKT.js.map} +0 -0
  102. /package/dist/{chunk-ZBUV2OFZ.js.map → chunk-LG4DZXZE.js.map} +0 -0
  103. /package/dist/{chunk-EPTONOB3.js.map → chunk-NXWVCWZU.js.map} +0 -0
  104. /package/dist/{chunk-3OA76CSA.js.map → chunk-OLQLK3UC.js.map} +0 -0
  105. /package/dist/{chunk-I33HG6MZ.js.map → chunk-PGRCNKEQ.js.map} +0 -0
  106. /package/dist/{chunk-KH3BWQJI.js.map → chunk-PWHPXHNR.js.map} +0 -0
  107. /package/dist/{chunk-NRGFDG57.js.map → chunk-QHRHQ4TE.js.map} +0 -0
  108. /package/dist/{chunk-VII5ABW7.js.map → chunk-RDDHG7KT.js.map} +0 -0
  109. /package/dist/{chunk-AKDLTQJZ.js.map → chunk-TGGCRPZR.js.map} +0 -0
  110. /package/dist/{chunk-KSDMNPM3.js.map → chunk-TKU3UJXS.js.map} +0 -0
  111. /package/dist/{chunk-AIKGRPJR.js.map → chunk-TZGJRTAC.js.map} +0 -0
  112. /package/dist/{chunk-SQL5Q5UT.js.map → chunk-UIKYSSZX.js.map} +0 -0
  113. /package/dist/{chunk-JJNZ7WEP.js.map → chunk-UMOI4SIG.js.map} +0 -0
  114. /package/dist/{chunk-V6B67TTT.js.map → chunk-WZDDUIIK.js.map} +0 -0
  115. /package/dist/{chunk-NSPAFJYF.js.map → chunk-XTFXKDRC.js.map} +0 -0
  116. /package/dist/{chunk-OT7EHZKB.js.map → chunk-YEUUN3PW.js.map} +0 -0
  117. /package/dist/{cli-E24TVQWL.js.map → cli-KFO36PW7.js.map} +0 -0
  118. /package/dist/{commands-M75WK3OK.js.map → commands-DKTG7VIQ.js.map} +0 -0
  119. /package/dist/{config-U5HHXO56.js.map → config-UGXKX5W7.js.map} +0 -0
  120. /package/dist/{context-5XAWTXIF.js.map → context-TDXVLXJZ.js.map} +0 -0
  121. /package/dist/{conversationPersistence-COKR4DJM.js.map → conversationPersistence-ATHSGPCA.js.map} +0 -0
  122. /package/dist/{conversationTracker-CFWPAQJQ.js.map → conversationTracker-IGKMS7I2.js.map} +0 -0
  123. /package/dist/{customCommands-KV4SPPEJ.js.map → customCommands-5MIZHJIB.js.map} +0 -0
  124. /package/dist/{env-6Z2X4SGO.js.map → env-3KNLQRPA.js.map} +0 -0
  125. /package/dist/{file-EYJLYMU7.js.map → file-DFXDFI6W.js.map} +0 -0
  126. /package/dist/{llm-JRNCNUVN.js.map → llm-MRDYTVAB.js.map} +0 -0
  127. /package/dist/{llmLazy-ULKOVGTW.js.map → llmLazy-2O7VC463.js.map} +0 -0
  128. /package/dist/{loader-YC2J4JQD.js.map → loader-FZWD5WHH.js.map} +0 -0
  129. /package/dist/{lsp-YOU3CXAU.js.map → lsp-2TM75CW4.js.map} +0 -0
  130. /package/dist/{lspAnchor-XLKJXJ4F.js.map → lspAnchor-XGTUMZDM.js.map} +0 -0
  131. /package/dist/{mcp-ZBXWPPEQ.js.map → mcp-FITQROXI.js.map} +0 -0
  132. /package/dist/{mentionProcessor-D7A5SR2F.js.map → mentionProcessor-L5WCXBIE.js.map} +0 -0
  133. /package/dist/{messages-N4BMW6FO.js.map → messages-4S23AYLZ.js.map} +0 -0
  134. /package/dist/{model-3R63GBXV.js.map → model-ECABFXED.js.map} +0 -0
  135. /package/dist/{openai-OE2BXCWW.js.map → openai-AAHVW6AQ.js.map} +0 -0
  136. /package/dist/{outputStyles-7NXCPWAM.js.map → outputStyles-2QWBQSS4.js.map} +0 -0
  137. /package/dist/{pluginRuntime-DUFKGBKI.js.map → pluginRuntime-TDH3JKLN.js.map} +0 -0
  138. /package/dist/{pluginValidation-TUI4RWTL.js.map → pluginValidation-FBGQ4JDV.js.map} +0 -0
  139. /package/dist/{prompts-VLIUTRIV.js.map → prompts-PLA42YDC.js.map} +0 -0
  140. /package/dist/{pybAgentSessionLoad-OHCESID3.js.map → pybAgentSessionLoad-WEEMBEOX.js.map} +0 -0
  141. /package/dist/{pybAgentSessionResume-X7TO6VQ7.js.map → pybAgentSessionResume-FXJA5YEY.js.map} +0 -0
  142. /package/dist/{pybAgentStreamJsonSession-3XCK4MLN.js.map → pybAgentStreamJsonSession-I3QVTPS4.js.map} +0 -0
  143. /package/dist/{pybHooks-WGTXY2KQ.js.map → pybHooks-QVFTX2NF.js.map} +0 -0
  144. /package/dist/{query-Y332XP4J.js.map → query-GEX7UFS4.js.map} +0 -0
  145. /package/dist/{registry-V4XMLWYT.js.map → registry-R642XWSX.js.map} +0 -0
  146. /package/dist/{ripgrep-ITNB4VGR.js.map → ripgrep-ZCE3BIKN.js.map} +0 -0
  147. /package/dist/{skillMarketplace-YYMKIEEM.js.map → skillMarketplace-O2RFNXT4.js.map} +0 -0
  148. /package/dist/{state-ZQW77MQC.js.map → state-GMP5BAO3.js.map} +0 -0
  149. /package/dist/{theme-L3I3PP7H.js.map → theme-BXH5IJVI.js.map} +0 -0
  150. /package/dist/{toolPermissionSettings-ZHMSXSXS.js.map → toolPermissionSettings-SLI774QB.js.map} +0 -0
  151. /package/dist/{tools-CM5X3TT5.js.map → tools-GEQDCFN6.js.map} +0 -0
  152. /package/dist/{userInput-VSYAOPNU.js.map → userInput-73ASWIUB.js.map} +0 -0
@@ -2,17 +2,17 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  loadPybAgentSessionMessages
5
- } from "./chunk-OT7EHZKB.js";
5
+ } from "./chunk-YEUUN3PW.js";
6
6
  import {
7
7
  appendSessionCustomTitleRecord,
8
8
  appendSessionJsonlFromMessage,
9
9
  appendSessionTagRecord,
10
10
  listPybAgentSessions
11
- } from "./chunk-V633SD3K.js";
11
+ } from "./chunk-I6GA6HKT.js";
12
12
  import {
13
13
  formatValidationResult,
14
14
  validatePluginOrMarketplacePath
15
- } from "./chunk-7OKEXFNZ.js";
15
+ } from "./chunk-EEOIMMFC.js";
16
16
  import {
17
17
  ConversationTracker,
18
18
  appendFinishState,
@@ -20,10 +20,10 @@ import {
20
20
  getConversationTrackerForContext,
21
21
  isFinishComplete,
22
22
  mapFinishReason
23
- } from "./chunk-XRHL3B3W.js";
23
+ } from "./chunk-D2MHLZDN.js";
24
24
  import {
25
25
  FileSystemConversationPersistence
26
- } from "./chunk-EPTONOB3.js";
26
+ } from "./chunk-NXWVCWZU.js";
27
27
  import {
28
28
  beginReplSessionScope
29
29
  } from "./chunk-F4AXICO7.js";
@@ -38,7 +38,7 @@ import {
38
38
  runStopHooks,
39
39
  runUserPromptSubmitHooks,
40
40
  updateHookTranscriptForMessages
41
- } from "./chunk-V6B67TTT.js";
41
+ } from "./chunk-WZDDUIIK.js";
42
42
  import {
43
43
  DEFAULT_OUTPUT_STYLE,
44
44
  getAvailableOutputStyles,
@@ -47,11 +47,11 @@ import {
47
47
  getOutputStyleSystemPromptAdditions,
48
48
  resolveOutputStyleName,
49
49
  setCurrentOutputStyle
50
- } from "./chunk-AIKGRPJR.js";
50
+ } from "./chunk-TZGJRTAC.js";
51
51
  import {
52
52
  fetchCustomModels,
53
53
  getModelFeatures
54
- } from "./chunk-X7L2ZXEQ.js";
54
+ } from "./chunk-CLYWO4WT.js";
55
55
  import {
56
56
  getCurrentSessionId,
57
57
  getSessionState
@@ -60,7 +60,7 @@ import {
60
60
  queryLLM,
61
61
  queryQuick,
62
62
  verifyApiKey
63
- } from "./chunk-ZYI3GZHI.js";
63
+ } from "./chunk-CXWYHX64.js";
64
64
  import {
65
65
  DEFAULT_TIMEOUT_MS,
66
66
  DESCRIPTION,
@@ -92,7 +92,7 @@ import {
92
92
  listMCPServers,
93
93
  loadMergedSettings,
94
94
  normalizeSandboxRuntimeConfigFromSettings
95
- } from "./chunk-UEF22EAA.js";
95
+ } from "./chunk-A2QSQWOQ.js";
96
96
  import {
97
97
  addMarketplace,
98
98
  disableSkillPlugin,
@@ -105,11 +105,11 @@ import {
105
105
  refreshMarketplaceAsync,
106
106
  removeMarketplace,
107
107
  uninstallSkillPlugin
108
- } from "./chunk-3OA76CSA.js";
108
+ } from "./chunk-OLQLK3UC.js";
109
109
  import {
110
110
  loadToolPermissionContextFromDisk,
111
111
  persistToolPermissionUpdateToDisk
112
- } from "./chunk-F4IOWWDV.js";
112
+ } from "./chunk-HM2PO36Q.js";
113
113
  import {
114
114
  applyToolPermissionContextUpdate,
115
115
  applyToolPermissionContextUpdates,
@@ -120,14 +120,14 @@ import {
120
120
  generateSystemReminders,
121
121
  resetReminderSession,
122
122
  systemReminderService
123
- } from "./chunk-SCZBEZ4L.js";
123
+ } from "./chunk-GZOD5652.js";
124
124
  import {
125
125
  clearAgentCache,
126
126
  getActiveAgents,
127
127
  getAgentByType,
128
128
  getAllAgents,
129
129
  getAvailableAgentTypes
130
- } from "./chunk-TBPXZUAE.js";
130
+ } from "./chunk-56FKUXNO.js";
131
131
  import {
132
132
  API_ERROR_MESSAGE_PREFIX,
133
133
  CANCEL_MESSAGE,
@@ -162,7 +162,7 @@ import {
162
162
  reorderMessages,
163
163
  resetAutoCompactTelemetry,
164
164
  stripSystemMessages
165
- } from "./chunk-XGSD7RT6.js";
165
+ } from "./chunk-GUNRUYLP.js";
166
166
  import {
167
167
  getRequestStatus,
168
168
  setRequestStatus,
@@ -194,7 +194,7 @@ import {
194
194
  normalizeFilePath,
195
195
  readTextContent,
196
196
  writeTextContent
197
- } from "./chunk-NRGFDG57.js";
197
+ } from "./chunk-QHRHQ4TE.js";
198
198
  import {
199
199
  parseBlockEdits
200
200
  } from "./chunk-QWIBSCDN.js";
@@ -208,7 +208,7 @@ import {
208
208
  formatDiagnosticsPretty,
209
209
  initParser,
210
210
  loadLanguage
211
- } from "./chunk-SQL5Q5UT.js";
211
+ } from "./chunk-UIKYSSZX.js";
212
212
  import {
213
213
  emitTelemetryEvent,
214
214
  registerTelemetryListener
@@ -217,13 +217,13 @@ import {
217
217
  getSettingsFileCandidates,
218
218
  loadSettingsWithLegacyFallback,
219
219
  readSettingsFile
220
- } from "./chunk-JJNZ7WEP.js";
220
+ } from "./chunk-UMOI4SIG.js";
221
221
  import {
222
222
  getCustomCommandDirectories,
223
223
  hasCustomCommands,
224
224
  loadCustomCommands,
225
225
  reloadCustomCommands
226
- } from "./chunk-KH3BWQJI.js";
226
+ } from "./chunk-PWHPXHNR.js";
227
227
  import {
228
228
  getSessionPlugins
229
229
  } from "./chunk-BJSWTHRM.js";
@@ -232,7 +232,7 @@ import {
232
232
  buildModelProfileKey,
233
233
  getModelManager,
234
234
  isDefaultSlowAndCapableModel
235
- } from "./chunk-KSDMNPM3.js";
235
+ } from "./chunk-TKU3UJXS.js";
236
236
  import {
237
237
  getCodeStyle,
238
238
  getContext,
@@ -240,16 +240,16 @@ import {
240
240
  getIsGit,
241
241
  getProjectDocs,
242
242
  getProjectStructureStatisticsBlock
243
- } from "./chunk-E5CC5UGF.js";
243
+ } from "./chunk-276WD5RN.js";
244
244
  import {
245
245
  getRipgrepPath,
246
246
  getRipgrepPolicyMode,
247
247
  resolveRipgrepPolicy,
248
248
  ripGrep
249
- } from "./chunk-VII5ABW7.js";
249
+ } from "./chunk-RDDHG7KT.js";
250
250
  import {
251
251
  getTheme
252
- } from "./chunk-AKDLTQJZ.js";
252
+ } from "./chunk-TGGCRPZR.js";
253
253
  import {
254
254
  DEFAULT_GLOBAL_CONFIG,
255
255
  enableConfigs,
@@ -262,7 +262,7 @@ import {
262
262
  saveGlobalConfig,
263
263
  setAllPointersToModel,
264
264
  setModelPointer
265
- } from "./chunk-NYRCQC7E.js";
265
+ } from "./chunk-FTPQJIPL.js";
266
266
  import {
267
267
  AbortError
268
268
  } from "./chunk-RQVLBMP7.js";
@@ -271,7 +271,7 @@ import {
271
271
  getCurrentRequest,
272
272
  logUserFriendly,
273
273
  markPhase
274
- } from "./chunk-I33HG6MZ.js";
274
+ } from "./chunk-PGRCNKEQ.js";
275
275
  import {
276
276
  ASCII_LOGO,
277
277
  BunShell,
@@ -315,10 +315,10 @@ import {
315
315
  setCwd,
316
316
  shouldApplyToolOutputTruncation,
317
317
  truncateToolOutput
318
- } from "./chunk-ZBUV2OFZ.js";
318
+ } from "./chunk-LG4DZXZE.js";
319
319
  import {
320
320
  MACRO
321
- } from "./chunk-ALMRZ6TK.js";
321
+ } from "./chunk-X6MCOKYP.js";
322
322
  import {
323
323
  __export
324
324
  } from "./chunk-I3J4JYES.js";
@@ -499,7 +499,7 @@ var getCommandSubcommandPrefix = memoize(
499
499
  var getCommandPrefix = memoize(
500
500
  async (command4, abortSignal) => {
501
501
  const { systemPrompt, userPrompt } = buildBashCommandPrefixDetectionPrompt(command4);
502
- const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-JRNCNUVN.js");
502
+ const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-MRDYTVAB.js");
503
503
  const response = await queryQuick2({
504
504
  systemPrompt,
505
505
  userPrompt,
@@ -4301,7 +4301,7 @@ function formatParseError(error) {
4301
4301
  return error instanceof Error ? error.message : String(error);
4302
4302
  }
4303
4303
  async function defaultGateQuery(args) {
4304
- const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-JRNCNUVN.js");
4304
+ const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-MRDYTVAB.js");
4305
4305
  const queryLLMFn = args.queryLLMOverride ?? queryLLM2;
4306
4306
  const messages = [
4307
4307
  {
@@ -6800,7 +6800,7 @@ var FileEditTool = {
6800
6800
  const originalFileContent = currentFileContent;
6801
6801
  let totalPatch = [];
6802
6802
  const { SmartEdit } = await import("./smart-edit-AWHJDSU6.js");
6803
- const { findLspAnchor } = await import("./lspAnchor-XLKJXJ4F.js");
6803
+ const { findLspAnchor } = await import("./lspAnchor-XGTUMZDM.js");
6804
6804
  for (const op of editOperations) {
6805
6805
  const normalizedSearch = normalizeLineEndings(op.search);
6806
6806
  const normalizedReplace = normalizeLineEndings(op.replace);
@@ -8756,6 +8756,7 @@ var inputSchema7 = z7.strictObject({
8756
8756
  });
8757
8757
  var MAX_RESULT_CHARS = 2e4;
8758
8758
  var EXCLUDED_DIRS = [".git", ".svn", ".hg", ".bzr"];
8759
+ var DEFAULT_FILES_WITH_MATCHES_LIMIT = 1500;
8759
8760
  function paginate(items, limit, offset) {
8760
8761
  if (offset > 0) {
8761
8762
  items = items.slice(offset);
@@ -8884,7 +8885,9 @@ Found ${numMatches} total ${numMatches === 1 ? "occurrence" : "occurrences"} acr
8884
8885
  "No files found\nSuggestion: Read the target directory path to confirm one-level structure and search scope, then broaden matching conditions (case/regex/keyword variants, semantic=true), and if needed switch to content mode or expand the file set before searching again."
8885
8886
  );
8886
8887
  }
8887
- const header = `Found ${result.numFiles} file${result.numFiles === 1 ? "" : "s"}${pagination ? ` ${pagination}` : ""}
8888
+ const totalFiles = result.totalFiles ?? result.numFiles;
8889
+ const truncatedLabel = result.truncated && result.appliedLimit !== void 0 ? ` (showing first ${result.appliedLimit}; use head_limit/offset to paginate)` : "";
8890
+ const header = `Found ${totalFiles} file${totalFiles === 1 ? "" : "s"}${truncatedLabel}${pagination && !result.truncated ? ` ${pagination}` : ""}
8888
8891
  ${result.filenames.join("\n")}`;
8889
8892
  return appendNotice(truncateToCharBudget(header));
8890
8893
  },
@@ -8942,7 +8945,7 @@ ${result.filenames.join("\n")}`;
8942
8945
  if (type3) {
8943
8946
  baseArgs.push("--type", type3);
8944
8947
  }
8945
- const appliedLimit = head_limit !== void 0 ? head_limit : void 0;
8948
+ const appliedLimit = head_limit !== void 0 ? head_limit : output_mode === "files_with_matches" ? DEFAULT_FILES_WITH_MATCHES_LIMIT : void 0;
8946
8949
  const appliedOffset = offset || 0;
8947
8950
  if (glob) {
8948
8951
  for (const g of parseGlobString(glob)) {
@@ -9195,10 +9198,13 @@ ${result.filenames.join("\n")}`;
9195
9198
  const window = paginate(sorted, appliedLimit, appliedOffset).map(
9196
9199
  toProjectRelativeIfPossible
9197
9200
  );
9201
+ const totalFiles = sorted.length;
9198
9202
  const output = {
9199
9203
  mode: "files_with_matches",
9200
9204
  filenames: window,
9201
9205
  numFiles: window.length,
9206
+ totalFiles,
9207
+ truncated: window.length < totalFiles,
9202
9208
  ...appliedLimit !== void 0 ? { appliedLimit } : {},
9203
9209
  ...appliedOffset > 0 ? { appliedOffset } : {},
9204
9210
  durationMs: Date.now() - start,
@@ -12402,7 +12408,7 @@ async function createAndStoreApiKey(accessToken) {
12402
12408
  }
12403
12409
  saveGlobalConfig(config2);
12404
12410
  try {
12405
- const { resetAnthropicClient } = await import("./llm-JRNCNUVN.js");
12411
+ const { resetAnthropicClient } = await import("./llm-MRDYTVAB.js");
12406
12412
  resetAnthropicClient();
12407
12413
  } catch {
12408
12414
  }
@@ -16826,7 +16832,7 @@ async function refreshPluginRuntimeFromInstalls() {
16826
16832
  const existingRoots = getSessionPlugins().map((p) => p.rootDir);
16827
16833
  const dirs = Array.from(/* @__PURE__ */ new Set([...existingRoots, ...installedRoots]));
16828
16834
  if (dirs.length === 0) return [];
16829
- const { configureSessionPlugins } = await import("./pluginRuntime-DUFKGBKI.js");
16835
+ const { configureSessionPlugins } = await import("./pluginRuntime-TDH3JKLN.js");
16830
16836
  const { errors } = await configureSessionPlugins({ pluginDirs: dirs });
16831
16837
  return errors;
16832
16838
  }
@@ -17501,7 +17507,7 @@ async function call(onDone, context) {
17501
17507
  ModelConfig,
17502
17508
  {
17503
17509
  onClose: () => {
17504
- import("./model-3R63GBXV.js").then(({ reloadModelManager: reloadModelManager2 }) => {
17510
+ import("./model-ECABFXED.js").then(({ reloadModelManager: reloadModelManager2 }) => {
17505
17511
  reloadModelManager2();
17506
17512
  triggerModelConfigChange();
17507
17513
  onDone();
@@ -21043,7 +21049,7 @@ function buildAutoCompactAggregationFields(params) {
21043
21049
  }
21044
21050
 
21045
21051
  // src/utils/session/compactionBudget.ts
21046
- var DEFAULT_TOTAL_BUDGET_TOKENS = 35e3;
21052
+ var DEFAULT_TOTAL_BUDGET_TOKENS = 5e4;
21047
21053
  var DEFAULT_SUMMARY_RATIO = 0.45;
21048
21054
  var DEFAULT_CONVERSATION_RATIO = 0.2;
21049
21055
  var DEFAULT_RECOVERED_RATIO = 0.35;
@@ -25990,605 +25996,13 @@ async function* runToolUse(toolUse, siblingToolUseIDs, assistantMessage, canUseT
25990
25996
  }
25991
25997
  }
25992
25998
 
25993
- // src/server/bus/index.ts
25994
- var BusEvent;
25995
- ((BusEvent2) => {
25996
- const registry = /* @__PURE__ */ new Map();
25997
- function define(type3, properties) {
25998
- const result = { type: type3, properties };
25999
- registry.set(type3, result);
26000
- return result;
26001
- }
26002
- BusEvent2.define = define;
26003
- function getSchema(type3) {
26004
- return registry.get(type3);
26005
- }
26006
- BusEvent2.getSchema = getSchema;
26007
- })(BusEvent || (BusEvent = {}));
26008
- var Bus;
26009
- ((Bus2) => {
26010
- const state = {
26011
- subscriptions: /* @__PURE__ */ new Map()
26012
- };
26013
- async function publish(def, properties) {
26014
- const payload = {
26015
- type: def.type,
26016
- properties
26017
- };
26018
- const pending = [];
26019
- for (const key of [def.type, "*"]) {
26020
- const match = state.subscriptions.get(key);
26021
- if (match) {
26022
- for (const sub of match) {
26023
- const result = sub(payload);
26024
- if (result instanceof Promise) {
26025
- pending.push(result);
26026
- }
26027
- }
26028
- }
26029
- }
26030
- await Promise.all(pending);
26031
- }
26032
- Bus2.publish = publish;
26033
- function subscribe(def, callback) {
26034
- return raw(def.type, callback);
26035
- }
26036
- Bus2.subscribe = subscribe;
26037
- function subscribeAll(callback) {
26038
- return raw("*", callback);
26039
- }
26040
- Bus2.subscribeAll = subscribeAll;
26041
- function raw(type3, callback) {
26042
- const match = state.subscriptions.get(type3) ?? [];
26043
- match.push(callback);
26044
- state.subscriptions.set(type3, match);
26045
- return () => {
26046
- const subscriptions = state.subscriptions.get(type3);
26047
- if (!subscriptions) return;
26048
- const index = subscriptions.indexOf(callback);
26049
- if (index !== -1) {
26050
- subscriptions.splice(index, 1);
26051
- }
26052
- };
26053
- }
26054
- })(Bus || (Bus = {}));
26055
-
26056
- // src/server/events/definitions.ts
26057
- import { z as z10 } from "zod";
26058
- var ServerEvents = {
26059
- Connected: BusEvent.define("server.connected", z10.object({
26060
- serverVersion: z10.string(),
26061
- protocolVersion: z10.string(),
26062
- features: z10.array(z10.string())
26063
- })),
26064
- Heartbeat: BusEvent.define("server.heartbeat", z10.object({
26065
- timestamp: z10.number()
26066
- })),
26067
- Status: BusEvent.define("server.status", z10.object({
26068
- status: z10.enum(["healthy", "degraded", "unhealthy"]),
26069
- components: z10.object({
26070
- llm: z10.enum(["connected", "disconnected"]),
26071
- mcp: z10.enum(["connected", "disconnected"]),
26072
- tools: z10.enum(["ready", "initializing"])
26073
- })
26074
- }))
26075
- };
26076
- var SessionEvents = {
26077
- Created: BusEvent.define("session.created", z10.object({
26078
- sessionId: z10.string(),
26079
- config: z10.object({
26080
- model: z10.string(),
26081
- agent: z10.string(),
26082
- outputStyle: z10.string()
26083
- }),
26084
- resumedFrom: z10.string().optional()
26085
- })),
26086
- Updated: BusEvent.define("session.updated", z10.object({
26087
- sessionId: z10.string(),
26088
- title: z10.string().optional(),
26089
- config: z10.object({
26090
- model: z10.string().optional(),
26091
- agent: z10.string().optional(),
26092
- outputStyle: z10.string().optional()
26093
- }).optional()
26094
- })),
26095
- Deleted: BusEvent.define("session.deleted", z10.object({
26096
- sessionId: z10.string()
26097
- })),
26098
- Status: BusEvent.define("session.status", z10.object({
26099
- sessionId: z10.string(),
26100
- status: z10.enum(["active", "idle", "waiting_input", "processing"]),
26101
- currentRequestId: z10.string().optional()
26102
- }))
26103
- };
26104
- var MessageEvents = {
26105
- Created: BusEvent.define("message.created", z10.object({
26106
- sessionId: z10.string(),
26107
- message: z10.any()
26108
- })),
26109
- Updated: BusEvent.define("message.updated", z10.object({
26110
- sessionId: z10.string(),
26111
- message: z10.any(),
26112
- delta: z10.object({
26113
- type: z10.enum(["text", "tool_use"]),
26114
- content: z10.string(),
26115
- index: z10.number().optional()
26116
- }).optional()
26117
- })),
26118
- Completed: BusEvent.define("message.completed", z10.object({
26119
- sessionId: z10.string(),
26120
- messageId: z10.string(),
26121
- finishReason: z10.enum(["end_turn", "tool_calls", "max_tokens", "aborted"]),
26122
- usage: z10.object({
26123
- inputTokens: z10.number(),
26124
- outputTokens: z10.number(),
26125
- totalTokens: z10.number()
26126
- }),
26127
- cost: z10.object({
26128
- costUSD: z10.number()
26129
- })
26130
- })),
26131
- RequestStarted: BusEvent.define("request.started", z10.object({
26132
- sessionId: z10.string(),
26133
- requestId: z10.string(),
26134
- userMessage: z10.string()
26135
- })),
26136
- RequestCompleted: BusEvent.define("request.completed", z10.object({
26137
- sessionId: z10.string(),
26138
- requestId: z10.string(),
26139
- finishReason: z10.enum(["end_turn", "tool_calls", "max_tokens", "aborted"]),
26140
- duration: z10.number(),
26141
- totalTokens: z10.number(),
26142
- costUSD: z10.number()
26143
- }))
26144
- };
26145
- var ToolEvents = {
26146
- Started: BusEvent.define("tool.started", z10.object({
26147
- sessionId: z10.string(),
26148
- toolUseId: z10.string(),
26149
- toolName: z10.string(),
26150
- input: z10.record(z10.unknown()),
26151
- dangerousLevel: z10.enum(["safe", "moderate", "dangerous"]),
26152
- requiresPermission: z10.boolean()
26153
- })),
26154
- Progress: BusEvent.define("tool.progress", z10.object({
26155
- sessionId: z10.string(),
26156
- toolUseId: z10.string(),
26157
- toolName: z10.string(),
26158
- progress: z10.number(),
26159
- message: z10.string().optional(),
26160
- output: z10.string().optional()
26161
- })),
26162
- Completed: BusEvent.define("tool.completed", z10.object({
26163
- sessionId: z10.string(),
26164
- toolUseId: z10.string(),
26165
- toolName: z10.string(),
26166
- result: z10.string(),
26167
- isError: z10.boolean(),
26168
- duration: z10.number()
26169
- })),
26170
- Error: BusEvent.define("tool.error", z10.object({
26171
- sessionId: z10.string(),
26172
- toolUseId: z10.string(),
26173
- toolName: z10.string(),
26174
- error: z10.object({
26175
- code: z10.string(),
26176
- message: z10.string(),
26177
- details: z10.unknown().optional()
26178
- })
26179
- }))
26180
- };
26181
- var PermissionEvents = {
26182
- Requested: BusEvent.define("permission.requested", z10.object({
26183
- sessionId: z10.string(),
26184
- permissionId: z10.string(),
26185
- toolName: z10.string(),
26186
- toolUseId: z10.string(),
26187
- input: z10.record(z10.unknown()),
26188
- risk: z10.enum(["safe", "moderate", "dangerous"]),
26189
- message: z10.string(),
26190
- suggestedAction: z10.enum(["allow", "deny"]).optional(),
26191
- timeout: z10.number().optional()
26192
- })),
26193
- Responded: BusEvent.define("permission.responded", z10.object({
26194
- sessionId: z10.string(),
26195
- permissionId: z10.string(),
26196
- decision: z10.enum(["allow", "deny", "allowAll"]),
26197
- remember: z10.boolean(),
26198
- scope: z10.enum(["session", "project", "global"]).optional()
26199
- })),
26200
- Timeout: BusEvent.define("permission.timeout", z10.object({
26201
- sessionId: z10.string(),
26202
- permissionId: z10.string(),
26203
- toolName: z10.string(),
26204
- defaultAction: z10.enum(["allow", "deny"])
26205
- }))
26206
- };
26207
- var ErrorEvents = {
26208
- General: BusEvent.define("error", z10.object({
26209
- sessionId: z10.string().optional(),
26210
- code: z10.string(),
26211
- message: z10.string(),
26212
- details: z10.unknown().optional(),
26213
- recoverable: z10.boolean(),
26214
- suggestedAction: z10.string().optional()
26215
- })),
26216
- Stream: BusEvent.define("error.stream", z10.object({
26217
- reason: z10.enum(["timeout", "aborted", "network", "server"]),
26218
- message: z10.string(),
26219
- retryable: z10.boolean(),
26220
- retryAfter: z10.number().optional()
26221
- }))
26222
- };
26223
-
26224
- // src/server/adapters/queryRunner.ts
26225
- var QueryRunner = class {
26226
- constructor(config2, sessionState) {
26227
- this.config = config2;
26228
- this.sessionState = sessionState;
26229
- this.requestId = uuidv4();
26230
- this.abortController = new AbortController();
26231
- }
26232
- requestId;
26233
- abortController;
26234
- isRunning = false;
26235
- messages = [];
26236
- startTime = 0;
26237
- totalCost = 0;
26238
- totalInputTokens = 0;
26239
- totalOutputTokens = 0;
26240
- async run(userMessage) {
26241
- if (this.isRunning) {
26242
- throw new Error("QueryRunner is already running");
26243
- }
26244
- this.isRunning = true;
26245
- this.startTime = Date.now();
26246
- this.messages = [];
26247
- await Bus.publish(MessageEvents.RequestStarted, {
26248
- sessionId: this.config.sessionId,
26249
- requestId: this.requestId,
26250
- userMessage
26251
- });
26252
- this.config.onRequestStart?.(this.requestId);
26253
- try {
26254
- const messages = this.buildMessages(userMessage);
26255
- const systemPrompt = this.buildSystemPrompt();
26256
- const context = this.buildContext();
26257
- const canUseTool = this.createCanUseToolFn();
26258
- const toolUseContext = this.createToolUseContext();
26259
- const generator = query(
26260
- messages,
26261
- systemPrompt,
26262
- context,
26263
- canUseTool,
26264
- toolUseContext
26265
- );
26266
- let finishReason = "end_turn";
26267
- for await (const message of generator) {
26268
- if (this.abortController.signal.aborted) {
26269
- finishReason = "aborted";
26270
- break;
26271
- }
26272
- await this.handleMessage(message);
26273
- if (message.type === "assistant") {
26274
- const candidate = message.finish;
26275
- if (candidate === "end_turn" || candidate === "tool_calls" || candidate === "max_tokens") {
26276
- finishReason = candidate;
26277
- }
26278
- }
26279
- }
26280
- const result = {
26281
- requestId: this.requestId,
26282
- finishReason,
26283
- messages: this.messages,
26284
- usage: {
26285
- inputTokens: this.totalInputTokens,
26286
- outputTokens: this.totalOutputTokens,
26287
- totalTokens: this.totalInputTokens + this.totalOutputTokens
26288
- },
26289
- cost: {
26290
- costUSD: this.totalCost
26291
- },
26292
- duration: Date.now() - this.startTime
26293
- };
26294
- await Bus.publish(MessageEvents.RequestCompleted, {
26295
- sessionId: this.config.sessionId,
26296
- requestId: this.requestId,
26297
- finishReason: result.finishReason,
26298
- duration: result.duration,
26299
- totalTokens: result.usage.totalTokens,
26300
- costUSD: result.cost.costUSD
26301
- });
26302
- this.config.onRequestComplete?.(this.requestId, result);
26303
- return result;
26304
- } catch (error) {
26305
- this.config.onError?.(error instanceof Error ? error : new Error(String(error)));
26306
- throw error;
26307
- } finally {
26308
- this.isRunning = false;
26309
- }
26310
- }
26311
- abort() {
26312
- this.abortController.abort();
26313
- }
26314
- getStatus() {
26315
- return {
26316
- isRunning: this.isRunning,
26317
- requestId: this.isRunning ? this.requestId : null,
26318
- messageCount: this.messages.length
26319
- };
26320
- }
26321
- async handleMessage(message) {
26322
- this.messages.push(message);
26323
- await Bus.publish(MessageEvents.Created, {
26324
- sessionId: this.config.sessionId,
26325
- message
26326
- });
26327
- this.config.onMessageYield?.(message);
26328
- if (message.type === "assistant") {
26329
- const assistantMsg = message;
26330
- if (assistantMsg.message?.usage) {
26331
- this.totalInputTokens += assistantMsg.message.usage.input_tokens ?? 0;
26332
- this.totalOutputTokens += assistantMsg.message.usage.output_tokens ?? 0;
26333
- }
26334
- }
26335
- }
26336
- buildMessages(userMessage) {
26337
- const history = this.sessionState.messages.filter((message) => message.type !== "progress");
26338
- const nextMessage = createUserMessageFromText(userMessage);
26339
- return [...history, nextMessage];
26340
- }
26341
- buildSystemPrompt() {
26342
- return this.sessionState.config.systemPrompt ?? [];
26343
- }
26344
- buildContext() {
26345
- return {
26346
- cwd: this.sessionState.cwd
26347
- };
26348
- }
26349
- createCanUseToolFn() {
26350
- return async () => ({ result: true });
26351
- }
26352
- createToolUseContext() {
26353
- return {
26354
- abortController: this.abortController,
26355
- onQueryLifecycleEvent: (event) => {
26356
- },
26357
- sessionContext: new SessionContext(),
26358
- options: {
26359
- commands: [],
26360
- forkNumber: 0,
26361
- messageLogName: this.requestId,
26362
- tools: [],
26363
- verbose: false,
26364
- safeMode: false,
26365
- maxThinkingTokens: 16e3
26366
- },
26367
- readFileTimestamps: {},
26368
- setToolJSX: () => {
26369
- },
26370
- requestId: this.requestId,
26371
- messageId: void 0
26372
- };
26373
- }
26374
- };
26375
-
26376
- // src/server/routes/session.ts
26377
- function createSessionRoutes() {
26378
- const router = new Hono();
26379
- router.post("/", async (c) => {
26380
- const body = await c.req.json();
26381
- const { resumeFrom, config: config2 } = body;
26382
- if (resumeFrom !== void 0 && resumeFrom !== null) {
26383
- return c.json(
26384
- {
26385
- success: false,
26386
- error: {
26387
- code: "RESUME_NOT_SUPPORTED",
26388
- message: "resumeFrom is not supported in current session backend"
26389
- }
26390
- },
26391
- 400
26392
- );
26393
- }
26394
- const session = await sessionStateManager.create(
26395
- process.cwd(),
26396
- config2
26397
- );
26398
- return c.json({
26399
- success: true,
26400
- data: {
26401
- sessionId: session.id,
26402
- createdAt: session.createdAt,
26403
- config: session.config
26404
- }
26405
- }, 201);
26406
- });
26407
- router.get("/", (c) => {
26408
- const sessions = sessionStateManager.list();
26409
- const page = parseInt(c.req.query("page") ?? "1");
26410
- const limit = parseInt(c.req.query("limit") ?? "20");
26411
- const status = c.req.query("status");
26412
- let filtered = sessions;
26413
- if (status) {
26414
- filtered = filtered.filter((s) => s.status === status);
26415
- }
26416
- const start = (page - 1) * limit;
26417
- const items = filtered.slice(start, start + limit);
26418
- return c.json({
26419
- success: true,
26420
- data: {
26421
- items: items.map((s) => ({
26422
- id: s.id,
26423
- title: s.title,
26424
- status: s.status,
26425
- messageCount: s.messages.length,
26426
- createdAt: s.createdAt,
26427
- updatedAt: s.updatedAt,
26428
- config: s.config
26429
- })),
26430
- pagination: {
26431
- page,
26432
- limit,
26433
- total: filtered.length,
26434
- hasMore: start + limit < filtered.length
26435
- }
26436
- }
26437
- });
26438
- });
26439
- router.get("/:sessionId", (c) => {
26440
- const sessionId = c.req.param("sessionId");
26441
- const session = sessionStateManager.get(sessionId);
26442
- if (!session) {
26443
- return c.json({ success: false, error: { code: "SESSION_NOT_FOUND", message: "Session not found" } }, 404);
26444
- }
26445
- return c.json({
26446
- success: true,
26447
- data: {
26448
- id: session.id,
26449
- title: session.title,
26450
- status: session.status,
26451
- messages: session.messages,
26452
- createdAt: session.createdAt,
26453
- updatedAt: session.updatedAt,
26454
- config: session.config
26455
- }
26456
- });
26457
- });
26458
- router.get("/:sessionId/messages", (c) => {
26459
- const sessionId = c.req.param("sessionId");
26460
- const session = sessionStateManager.get(sessionId);
26461
- if (!session) {
26462
- return c.json({ success: false, error: { code: "SESSION_NOT_FOUND", message: "Session not found" } }, 404);
26463
- }
26464
- const after = c.req.query("after");
26465
- const before = c.req.query("before");
26466
- const limit = Math.max(1, parseInt(c.req.query("limit") ?? "50", 10));
26467
- let items = [...session.messages];
26468
- if (after) {
26469
- const index = items.findIndex((item) => item.uuid === after);
26470
- if (index >= 0) {
26471
- items = items.slice(index + 1);
26472
- }
26473
- }
26474
- if (before) {
26475
- const index = items.findIndex((item) => item.uuid === before);
26476
- if (index >= 0) {
26477
- items = items.slice(0, index);
26478
- }
26479
- }
26480
- items = items.slice(0, limit);
26481
- return c.json({
26482
- success: true,
26483
- data: { items }
26484
- });
26485
- });
26486
- router.patch("/:sessionId", async (c) => {
26487
- const sessionId = c.req.param("sessionId");
26488
- const body = await c.req.json();
26489
- const updated = await sessionStateManager.update(sessionId, body);
26490
- if (!updated) {
26491
- return c.json({ success: false, error: { code: "SESSION_NOT_FOUND", message: "Session not found" } }, 404);
26492
- }
26493
- const session = sessionStateManager.get(sessionId);
26494
- return c.json({ success: true, data: session });
26495
- });
26496
- router.delete("/:sessionId", async (c) => {
26497
- const sessionId = c.req.param("sessionId");
26498
- const deleted = await sessionStateManager.delete(sessionId);
26499
- return c.json({
26500
- success: true,
26501
- data: { deleted, sessionId }
26502
- });
26503
- });
26504
- router.post("/:sessionId/prompt", async (c) => {
26505
- const sessionId = c.req.param("sessionId");
26506
- const body = await c.req.json();
26507
- const { message, attachments, options } = body;
26508
- const session = sessionStateManager.get(sessionId);
26509
- if (!session) {
26510
- return c.json({ success: false, error: { code: "SESSION_NOT_FOUND", message: "Session not found" } }, 404);
26511
- }
26512
- const acceptHeader = c.req.header("Accept") ?? "";
26513
- const wantsSSE = acceptHeader.includes("text/event-stream") || options?.stream !== false;
26514
- if (wantsSSE) {
26515
- return streamSSE(c, async (stream) => {
26516
- const runner = new QueryRunner(
26517
- { sessionId },
26518
- session
26519
- );
26520
- sessionStateManager.setCurrentRunner(sessionId, runner);
26521
- try {
26522
- const result = await runner.run(message);
26523
- await stream.writeSSE({
26524
- event: "request.completed",
26525
- data: JSON.stringify({
26526
- type: "request.completed",
26527
- sessionId,
26528
- timestamp: Date.now(),
26529
- data: {
26530
- finishReason: result.finishReason,
26531
- usage: result.usage,
26532
- cost: result.cost,
26533
- duration: result.duration
26534
- }
26535
- })
26536
- });
26537
- } catch (error) {
26538
- await stream.writeSSE({
26539
- event: "error",
26540
- data: JSON.stringify({
26541
- type: "error",
26542
- sessionId,
26543
- timestamp: Date.now(),
26544
- data: {
26545
- code: "QUERY_ERROR",
26546
- message: error instanceof Error ? error.message : String(error),
26547
- recoverable: false
26548
- }
26549
- })
26550
- });
26551
- } finally {
26552
- sessionStateManager.clearCurrentRunner(sessionId);
26553
- }
26554
- });
26555
- } else {
26556
- const runner = new QueryRunner({ sessionId }, session);
26557
- sessionStateManager.setCurrentRunner(sessionId, runner);
26558
- try {
26559
- const result = await runner.run(message);
26560
- return c.json({ success: true, data: result });
26561
- } finally {
26562
- sessionStateManager.clearCurrentRunner(sessionId);
26563
- }
26564
- }
26565
- });
26566
- router.post("/:sessionId/abort", (c) => {
26567
- const sessionId = c.req.param("sessionId");
26568
- const session = sessionStateManager.get(sessionId);
26569
- if (!session) {
26570
- return c.json({ success: false, error: { code: "SESSION_NOT_FOUND", message: "Session not found" } }, 404);
26571
- }
26572
- const runner = sessionStateManager.getCurrentRunner(sessionId);
26573
- if (runner) {
26574
- runner.abort();
26575
- return c.json({ success: true, data: { aborted: true } });
26576
- }
26577
- return c.json({ success: true, data: { aborted: false, reason: "No running query" } });
26578
- });
26579
- return router;
26580
- }
26581
-
26582
- // src/server/routes/tool.ts
26583
- import { Hono as Hono2 } from "hono";
26584
-
26585
25999
  // src/tools/index.ts
26586
26000
  import { memoize as memoize4 } from "lodash-es";
26587
26001
 
26588
26002
  // src/tools/ai/AskExpertModelTool/AskExpertModelTool.tsx
26589
26003
  import * as React47 from "react";
26590
26004
  import { Box as Box36, Text as Text40 } from "ink";
26591
- import { z as z11 } from "zod";
26005
+ import { z as z10 } from "zod";
26592
26006
 
26593
26007
  // src/utils/session/expertChatStorage.ts
26594
26008
  import { existsSync as existsSync17, readFileSync as readFileSync9, writeFileSync as writeFileSync4, mkdirSync as mkdirSync10 } from "fs";
@@ -26879,14 +26293,14 @@ Current situation: Users report 3-5 second delays when scrolling through the lis
26879
26293
  Question: What are the most effective React optimization techniques for handling large lists, and how should I prioritize implementing virtualization vs memoization vs other approaches?"`;
26880
26294
 
26881
26295
  // src/tools/ai/AskExpertModelTool/AskExpertModelTool.tsx
26882
- var inputSchema9 = z11.strictObject({
26883
- question: z11.string().describe(
26296
+ var inputSchema9 = z10.strictObject({
26297
+ question: z10.string().describe(
26884
26298
  "COMPLETE SELF-CONTAINED QUESTION: Must include full background context, relevant details, and a clear independent question. The expert model will receive ONLY this content with no access to previous conversation or external context. Structure as: 1) Background/Context 2) Specific situation/problem 3) Clear question. Ensure the expert can fully understand and respond without needing additional information."
26885
26299
  ),
26886
- expert_model: z11.string().describe(
26300
+ expert_model: z10.string().describe(
26887
26301
  "The expert model to use (e.g., gpt-5, claude-3-5-sonnet-20241022)"
26888
26302
  ),
26889
- chat_session_id: z11.string().describe(
26303
+ chat_session_id: z10.string().describe(
26890
26304
  'Chat session ID: use "new" for new session or existing session ID'
26891
26305
  )
26892
26306
  });
@@ -27238,7 +26652,7 @@ Please check your model configuration with /model command.`
27238
26652
  // src/tools/interaction/AskUserQuestionTool/AskUserQuestionTool.tsx
27239
26653
  import { Box as Box37, Text as Text41 } from "ink";
27240
26654
  import React48 from "react";
27241
- import { z as z12 } from "zod";
26655
+ import { z as z11 } from "zod";
27242
26656
 
27243
26657
  // src/constants/figures.ts
27244
26658
  var BLACK_CIRCLE = env.platform === "macos" ? "\u23FA" : "\u25CF";
@@ -27258,19 +26672,19 @@ Usage notes:
27258
26672
  - If you recommend a specific option, make that the first option in the list and add "(Recommended)" at the end of the label`;
27259
26673
 
27260
26674
  // src/tools/interaction/AskUserQuestionTool/AskUserQuestionTool.tsx
27261
- var optionSchema = z12.object({
27262
- label: z12.string(),
27263
- description: z12.string()
26675
+ var optionSchema = z11.object({
26676
+ label: z11.string(),
26677
+ description: z11.string()
27264
26678
  });
27265
- var questionSchema = z12.object({
27266
- question: z12.string(),
27267
- header: z12.string(),
27268
- options: z12.array(optionSchema).min(2).max(4),
27269
- multiSelect: z12.boolean()
26679
+ var questionSchema = z11.object({
26680
+ question: z11.string(),
26681
+ header: z11.string(),
26682
+ options: z11.array(optionSchema).min(2).max(4),
26683
+ multiSelect: z11.boolean()
27270
26684
  });
27271
- var inputSchema10 = z12.strictObject({
27272
- questions: z12.array(questionSchema).min(1).max(4),
27273
- answers: z12.record(z12.string(), z12.string()).optional()
26685
+ var inputSchema10 = z11.strictObject({
26686
+ questions: z11.array(questionSchema).min(1).max(4),
26687
+ answers: z11.record(z11.string(), z11.string()).optional()
27274
26688
  }).refine(
27275
26689
  (input) => {
27276
26690
  const questionTexts = input.questions.map((q) => q.question);
@@ -27340,7 +26754,7 @@ var AskUserQuestionTool = {
27340
26754
  // src/tools/system/TaskOutputTool/TaskOutputTool.tsx
27341
26755
  import { Box as Box38, Text as Text42 } from "ink";
27342
26756
  import React49 from "react";
27343
- import { z as z13 } from "zod";
26757
+ import { z as z12 } from "zod";
27344
26758
 
27345
26759
  // src/utils/session/backgroundTasks.ts
27346
26760
  var backgroundTasks = /* @__PURE__ */ new Map();
@@ -27502,11 +26916,11 @@ The assistant defers analysis because:
27502
26916
  // src/tools/system/TaskOutputTool/TaskOutputTool.tsx
27503
26917
  var TOOL_PROGRESS_OPEN_TAG2 = ["<tool", "-progress>"].join("");
27504
26918
  var TOOL_PROGRESS_CLOSE_TAG2 = ["</tool", "-progress>"].join("");
27505
- var inputSchema11 = z13.strictObject({
27506
- task_id: z13.string().describe("The task ID to get output from"),
27507
- block: z13.boolean().optional().default(true).describe("Whether to wait for completion"),
27508
- timeout: z13.number().min(0).max(6e5).optional().default(3e4).describe("Max wait time in ms"),
27509
- analyze: z13.boolean().optional().describe("Analyze the output for errors and warnings")
26919
+ var inputSchema11 = z12.strictObject({
26920
+ task_id: z12.string().describe("The task ID to get output from"),
26921
+ block: z12.boolean().optional().default(true).describe("Whether to wait for completion"),
26922
+ timeout: z12.number().min(0).max(6e5).optional().default(3e4).describe("Max wait time in ms"),
26923
+ analyze: z12.boolean().optional().describe("Analyze the output for errors and warnings")
27510
26924
  });
27511
26925
  function isTaskOutputLspAnalysisEnabled() {
27512
26926
  const raw = String(process.env.PYB_TASKOUTPUT_LSP_ANALYSIS ?? "").trim().toLowerCase();
@@ -27583,7 +26997,7 @@ async function analyzeOutputWithLsp(output, exitCode) {
27583
26997
  if (exitCode !== 0 || errorCount > 0 || warningCount > 0) {
27584
26998
  try {
27585
26999
  const { isAbsolute: isAbsolute11, resolve: resolve16 } = await import("path");
27586
- const { getSessionRoot: getSessionRoot2 } = await import("./state-ZQW77MQC.js");
27000
+ const { getSessionRoot: getSessionRoot2 } = await import("./state-GMP5BAO3.js");
27587
27001
  const lines = output.split("\n");
27588
27002
  const uniqueFiles = /* @__PURE__ */ new Set();
27589
27003
  const lspSuggestions = [];
@@ -27854,7 +27268,7 @@ ${output.task.output.trimEnd()}
27854
27268
  import { rmSync as rmSync2, existsSync as existsSync18, statSync as statSync12 } from "fs";
27855
27269
  import { Box as Box39, Text as Text43 } from "ink";
27856
27270
  import * as React50 from "react";
27857
- import { z as z14 } from "zod";
27271
+ import { z as z13 } from "zod";
27858
27272
  import { isAbsolute as isAbsolute9, relative as relative11, resolve as resolve10 } from "path";
27859
27273
 
27860
27274
  // src/tools/filesystem/DeleteTool/prompt.ts
@@ -27921,11 +27335,11 @@ Delete({
27921
27335
  `.trim();
27922
27336
 
27923
27337
  // src/tools/filesystem/DeleteTool/DeleteTool.tsx
27924
- var inputSchema12 = z14.strictObject({
27925
- file_paths: z14.array(z14.string()).describe(
27338
+ var inputSchema12 = z13.strictObject({
27339
+ file_paths: z13.array(z13.string()).describe(
27926
27340
  "The list of file paths you want to delete, you MUST set file path to absolute path."
27927
27341
  ),
27928
- force: z14.boolean().optional().describe(
27342
+ force: z13.boolean().optional().describe(
27929
27343
  "Force deletion even if the file is referenced by other files (LSP check)."
27930
27344
  )
27931
27345
  });
@@ -27985,7 +27399,7 @@ var DeleteTool = {
27985
27399
  }
27986
27400
  if (!force) {
27987
27401
  try {
27988
- const { LspFacade: LspFacade2 } = await import("./lsp-YOU3CXAU.js");
27402
+ const { LspFacade: LspFacade2 } = await import("./lsp-2TM75CW4.js");
27989
27403
  const referenceDetail = await LspFacade2.checkFileReferences(fullPath);
27990
27404
  if (referenceDetail) {
27991
27405
  failedItems.push(
@@ -28045,7 +27459,7 @@ var DeleteTool = {
28045
27459
  // src/tools/system/KillShellTool/KillShellTool.tsx
28046
27460
  import { Box as Box40, Text as Text44 } from "ink";
28047
27461
  import React51 from "react";
28048
- import { z as z15 } from "zod";
27462
+ import { z as z14 } from "zod";
28049
27463
 
28050
27464
  // src/tools/system/KillShellTool/prompt.ts
28051
27465
  var TOOL_NAME16 = "KillShell";
@@ -28059,8 +27473,8 @@ var PROMPT11 = `
28059
27473
  `;
28060
27474
 
28061
27475
  // src/tools/system/KillShellTool/KillShellTool.tsx
28062
- var inputSchema13 = z15.strictObject({
28063
- shell_id: z15.string().describe("The ID of the background shell to kill")
27476
+ var inputSchema13 = z14.strictObject({
27477
+ shell_id: z14.string().describe("The ID of the background shell to kill")
28064
27478
  });
28065
27479
  var KillShellTool = {
28066
27480
  name: TOOL_NAME16,
@@ -28136,7 +27550,7 @@ var KillShellTool = {
28136
27550
  // src/tools/mcp/ListMcpResourcesTool/ListMcpResourcesTool.tsx
28137
27551
  import { Box as Box41, Text as Text45 } from "ink";
28138
27552
  import React52 from "react";
28139
- import { z as z16 } from "zod";
27553
+ import { z as z15 } from "zod";
28140
27554
  import { ListResourcesResultSchema } from "@modelcontextprotocol/sdk/types.js";
28141
27555
 
28142
27556
  // src/tools/mcp/ListMcpResourcesTool/prompt.ts
@@ -28156,8 +27570,8 @@ Parameters:
28156
27570
  resources from all servers will be returned.`;
28157
27571
 
28158
27572
  // src/tools/mcp/ListMcpResourcesTool/ListMcpResourcesTool.tsx
28159
- var inputSchema14 = z16.strictObject({
28160
- server: z16.string().optional().describe("Optional server name to filter resources by")
27573
+ var inputSchema14 = z15.strictObject({
27574
+ server: z15.string().optional().describe("Optional server name to filter resources by")
28161
27575
  });
28162
27576
  var ListMcpResourcesTool = {
28163
27577
  name: TOOL_NAME17,
@@ -28256,9 +27670,9 @@ import { existsSync as existsSync19, readFileSync as readFileSync10, statSync as
28256
27670
  import { Box as Box42, Text as Text46 } from "ink";
28257
27671
  import { relative as relative12, resolve as resolve11 } from "path";
28258
27672
  import React53 from "react";
28259
- import { z as z17 } from "zod";
28260
- var inputSchema15 = z17.strictObject({
28261
- operation: z17.enum([
27673
+ import { z as z16 } from "zod";
27674
+ var inputSchema15 = z16.strictObject({
27675
+ operation: z16.enum([
28262
27676
  "goToDefinition",
28263
27677
  "findReferences",
28264
27678
  "hover",
@@ -28271,15 +27685,15 @@ var inputSchema15 = z17.strictObject({
28271
27685
  "getScope",
28272
27686
  "diagnostics"
28273
27687
  ]).describe("The LSP operation to perform"),
28274
- filePath: z17.string().describe("The absolute or relative path to the file"),
28275
- line: z17.number().int().positive().optional().describe("The line number (1-based, as shown in editors). Required for location-based operations."),
28276
- character: z17.number().int().positive().optional().describe("The character offset (1-based, as shown in editors). Required for location-based operations."),
28277
- query: z17.string().optional().describe('The query string for workspaceSymbol. Required when operation is "workspaceSymbol".'),
28278
- waitForDiagnostics: z17.boolean().optional().describe('If true, wait for fresh diagnostics from the server (used with "diagnostics" operation)'),
28279
- timeout: z17.number().optional().describe("Timeout in milliseconds for waiting operations (default: 5000)")
27688
+ filePath: z16.string().describe("The absolute or relative path to the file"),
27689
+ line: z16.number().int().positive().optional().describe("The line number (1-based, as shown in editors). Required for location-based operations."),
27690
+ character: z16.number().int().positive().optional().describe("The character offset (1-based, as shown in editors). Required for location-based operations."),
27691
+ query: z16.string().optional().describe('The query string for workspaceSymbol. Required when operation is "workspaceSymbol".'),
27692
+ waitForDiagnostics: z16.boolean().optional().describe('If true, wait for fresh diagnostics from the server (used with "diagnostics" operation)'),
27693
+ timeout: z16.number().optional().describe("Timeout in milliseconds for waiting operations (default: 5000)")
28280
27694
  });
28281
- var outputSchema = z17.object({
28282
- operation: z17.enum([
27695
+ var outputSchema = z16.object({
27696
+ operation: z16.enum([
28283
27697
  "goToDefinition",
28284
27698
  "findReferences",
28285
27699
  "hover",
@@ -28292,10 +27706,10 @@ var outputSchema = z17.object({
28292
27706
  "getScope",
28293
27707
  "diagnostics"
28294
27708
  ]).describe("The LSP operation that was performed"),
28295
- result: z17.string().describe("The formatted result of the LSP operation"),
28296
- filePath: z17.string().describe("The file path the operation was performed on"),
28297
- resultCount: z17.number().int().nonnegative().optional().describe("Number of results (definitions, references, symbols)"),
28298
- fileCount: z17.number().int().nonnegative().optional().describe("Number of files containing results")
27709
+ result: z16.string().describe("The formatted result of the LSP operation"),
27710
+ filePath: z16.string().describe("The file path the operation was performed on"),
27711
+ resultCount: z16.number().int().nonnegative().optional().describe("Number of results (definitions, references, symbols)"),
27712
+ fileCount: z16.number().int().nonnegative().optional().describe("Number of files containing results")
28299
27713
  });
28300
27714
  var OPERATION_LABELS = {
28301
27715
  goToDefinition: { singular: "definition", plural: "definitions" },
@@ -28718,7 +28132,7 @@ var LspTool = {
28718
28132
  // src/tools/mcp/ReadMcpResourceTool/ReadMcpResourceTool.tsx
28719
28133
  import { Box as Box43, Text as Text47 } from "ink";
28720
28134
  import React54 from "react";
28721
- import { z as z18 } from "zod";
28135
+ import { z as z17 } from "zod";
28722
28136
  import { ReadResourceResultSchema } from "@modelcontextprotocol/sdk/types.js";
28723
28137
 
28724
28138
  // src/tools/mcp/ReadMcpResourceTool/prompt.ts
@@ -28736,9 +28150,9 @@ Parameters:
28736
28150
  - uri (required): The URI of the resource to read`;
28737
28151
 
28738
28152
  // src/tools/mcp/ReadMcpResourceTool/ReadMcpResourceTool.tsx
28739
- var inputSchema16 = z18.strictObject({
28740
- server: z18.string().describe("The MCP server name"),
28741
- uri: z18.string().describe("The resource URI to read")
28153
+ var inputSchema16 = z17.strictObject({
28154
+ server: z17.string().describe("The MCP server name"),
28155
+ uri: z17.string().describe("The resource URI to read")
28742
28156
  });
28743
28157
  var ReadMcpResourceTool = {
28744
28158
  name: TOOL_NAME18,
@@ -28847,18 +28261,18 @@ var ReadMcpResourceTool = {
28847
28261
  };
28848
28262
 
28849
28263
  // src/tools/ai/SkillTool/SkillTool.tsx
28850
- import { z as z19 } from "zod";
28264
+ import { z as z18 } from "zod";
28851
28265
  import * as React55 from "react";
28852
28266
 
28853
28267
  // src/tools/ai/SkillTool/prompt.ts
28854
28268
  var TOOL_NAME19 = "Skill";
28855
28269
 
28856
28270
  // src/tools/ai/SkillTool/SkillTool.tsx
28857
- var inputSchema17 = z19.strictObject({
28858
- skill: z19.string().describe(
28271
+ var inputSchema17 = z18.strictObject({
28272
+ skill: z18.string().describe(
28859
28273
  "The skill name (no arguments). Use a value from <available_skills>."
28860
28274
  ),
28861
- args: z19.string().optional().describe("Optional arguments for the skill (freeform text)")
28275
+ args: z18.string().optional().describe("Optional arguments for the skill (freeform text)")
28862
28276
  });
28863
28277
  function normalizeCommandModelName(model) {
28864
28278
  if (typeof model !== "string") return void 0;
@@ -29083,7 +28497,7 @@ function findCommand(commandName, commands) {
29083
28497
  import { last as last2, memoize as memoize3 } from "lodash-es";
29084
28498
  import React56 from "react";
29085
28499
  import { Box as Box44, Text as Text48 } from "ink";
29086
- import { z as z20 } from "zod";
28500
+ import { z as z19 } from "zod";
29087
28501
  import { randomUUID as randomUUID6 } from "crypto";
29088
28502
  import { existsSync as existsSync20, readFileSync as readFileSync11 } from "fs";
29089
28503
 
@@ -29243,17 +28657,17 @@ assistant: "I'm going to use the Task tool to launch the with the greeting-respo
29243
28657
  }
29244
28658
 
29245
28659
  // src/tools/agent/TaskTool/TaskTool.tsx
29246
- var inputSchema18 = z20.object({
29247
- description: z20.string().describe("A short (3-5 word) description of the task"),
29248
- prompt: z20.string().describe("The task for the agent to perform"),
29249
- subagent_type: z20.string().describe("The type of specialized agent to use for this task"),
29250
- model: z20.enum(["sonnet", "opus", "haiku"]).optional().describe(
28660
+ var inputSchema18 = z19.object({
28661
+ description: z19.string().describe("A short (3-5 word) description of the task"),
28662
+ prompt: z19.string().describe("The task for the agent to perform"),
28663
+ subagent_type: z19.string().describe("The type of specialized agent to use for this task"),
28664
+ model: z19.enum(["sonnet", "opus", "haiku"]).optional().describe(
29251
28665
  "Optional model to use for this agent. If not specified, inherits from parent. Prefer haiku for quick, straightforward tasks to minimize cost and latency."
29252
28666
  ),
29253
- resume: z20.string().optional().describe(
28667
+ resume: z19.string().optional().describe(
29254
28668
  "Optional agent ID to resume from. If provided, the agent will continue from the previous execution transcript."
29255
28669
  ),
29256
- run_in_background: z20.boolean().optional().describe(
28670
+ run_in_background: z19.boolean().optional().describe(
29257
28671
  "Set to true to run this agent in the background. Use TaskOutput to read the output later."
29258
28672
  )
29259
28673
  });
@@ -29779,21 +29193,21 @@ var TaskTool = {
29779
29193
  };
29780
29194
 
29781
29195
  // src/tools/interaction/TaskCreateTool/TaskCreateTool.tsx
29782
- import { z as z22 } from "zod";
29196
+ import { z as z21 } from "zod";
29783
29197
 
29784
29198
  // src/utils/session/taskToolUtils.ts
29785
- import { z as z21 } from "zod";
29786
- var jsonValueSchema = z21.lazy(
29787
- () => z21.union([
29788
- z21.string(),
29789
- z21.number(),
29790
- z21.boolean(),
29791
- z21.null(),
29792
- z21.array(jsonValueSchema),
29793
- z21.record(jsonValueSchema)
29199
+ import { z as z20 } from "zod";
29200
+ var jsonValueSchema = z20.lazy(
29201
+ () => z20.union([
29202
+ z20.string(),
29203
+ z20.number(),
29204
+ z20.boolean(),
29205
+ z20.null(),
29206
+ z20.array(jsonValueSchema),
29207
+ z20.record(jsonValueSchema)
29794
29208
  ])
29795
29209
  );
29796
- var metadataSchema = z21.record(jsonValueSchema);
29210
+ var metadataSchema = z20.record(jsonValueSchema);
29797
29211
  function mapStatusToOutput(status) {
29798
29212
  if (status === "done") return "completed";
29799
29213
  if (status === "deleted") return "deleted";
@@ -30223,11 +29637,11 @@ The assistant used TaskCreate because:
30223
29637
  `.trim();
30224
29638
 
30225
29639
  // src/tools/interaction/TaskCreateTool/TaskCreateTool.tsx
30226
- var inputSchema19 = z22.strictObject({
30227
- listId: z22.string().min(1).optional(),
30228
- subject: z22.string().min(1),
30229
- description: z22.string().min(1),
30230
- activeForm: z22.string().min(1),
29640
+ var inputSchema19 = z21.strictObject({
29641
+ listId: z21.string().min(1).optional(),
29642
+ subject: z21.string().min(1),
29643
+ description: z21.string().min(1),
29644
+ activeForm: z21.string().min(1),
30231
29645
  metadata: metadataSchema.optional()
30232
29646
  });
30233
29647
  var TaskCreateTool = {
@@ -30304,7 +29718,7 @@ var TaskCreateTool = {
30304
29718
  };
30305
29719
 
30306
29720
  // src/tools/interaction/TaskGetTool/TaskGetTool.tsx
30307
- import { z as z23 } from "zod";
29721
+ import { z as z22 } from "zod";
30308
29722
 
30309
29723
  // src/tools/interaction/TaskGetTool/prompt.ts
30310
29724
  var TOOL_NAME21 = "TaskGet";
@@ -30340,9 +29754,9 @@ Assistant: I'll fetch the task details first.
30340
29754
  `.trim();
30341
29755
 
30342
29756
  // src/tools/interaction/TaskGetTool/TaskGetTool.tsx
30343
- var inputSchema20 = z23.strictObject({
30344
- listId: z23.string().min(1).optional(),
30345
- taskId: z23.string().min(1)
29757
+ var inputSchema20 = z22.strictObject({
29758
+ listId: z22.string().min(1).optional(),
29759
+ taskId: z22.string().min(1)
30346
29760
  });
30347
29761
  var TaskGetTool = {
30348
29762
  name: TOOL_NAME21,
@@ -30404,7 +29818,7 @@ var TaskGetTool = {
30404
29818
  };
30405
29819
 
30406
29820
  // src/tools/interaction/TaskListTool/TaskListTool.tsx
30407
- import { z as z24 } from "zod";
29821
+ import { z as z23 } from "zod";
30408
29822
 
30409
29823
  // src/tools/interaction/TaskListTool/prompt.ts
30410
29824
  var TOOL_NAME22 = "TaskList";
@@ -30455,9 +29869,9 @@ Assistant: I'll list tasks to show the updated ready/blocked breakdown.
30455
29869
  `.trim();
30456
29870
 
30457
29871
  // src/tools/interaction/TaskListTool/TaskListTool.tsx
30458
- var inputSchema21 = z24.strictObject({
30459
- listId: z24.string().min(1).optional(),
30460
- status: z24.enum(["pending", "in_progress", "completed", "deleted"]).optional()
29872
+ var inputSchema21 = z23.strictObject({
29873
+ listId: z23.string().min(1).optional(),
29874
+ status: z23.enum(["pending", "in_progress", "completed", "deleted"]).optional()
30461
29875
  });
30462
29876
  var filterByStatus = (tasks, statuses) => {
30463
29877
  if (!statuses || statuses.length === 0) {
@@ -30558,7 +29972,7 @@ var TaskListTool = {
30558
29972
  };
30559
29973
 
30560
29974
  // src/tools/interaction/TaskUpdateTool/TaskUpdateTool.tsx
30561
- import { z as z25 } from "zod";
29975
+ import { z as z24 } from "zod";
30562
29976
 
30563
29977
  // src/tools/interaction/TaskUpdateTool/prompt.ts
30564
29978
  var TOOL_NAME23 = "TaskUpdate";
@@ -31002,16 +30416,16 @@ var compareTaskId = (left, right) => {
31002
30416
  if (rightIsNumber) return 1;
31003
30417
  return left.id.localeCompare(right.id);
31004
30418
  };
31005
- var inputSchema22 = z25.strictObject({
31006
- listId: z25.string().min(1).optional(),
31007
- taskId: z25.string().min(1),
31008
- subject: z25.string().optional(),
31009
- description: z25.string().optional(),
31010
- activeForm: z25.string().optional(),
31011
- status: z25.enum(["pending", "in_progress", "completed", "deleted"]).optional(),
30419
+ var inputSchema22 = z24.strictObject({
30420
+ listId: z24.string().min(1).optional(),
30421
+ taskId: z24.string().min(1),
30422
+ subject: z24.string().optional(),
30423
+ description: z24.string().optional(),
30424
+ activeForm: z24.string().optional(),
30425
+ status: z24.enum(["pending", "in_progress", "completed", "deleted"]).optional(),
31012
30426
  metadata: metadataSchema.optional(),
31013
- addBlockedBy: z25.array(z25.string()).optional(),
31014
- addBlocks: z25.array(z25.string()).optional()
30427
+ addBlockedBy: z24.array(z24.string()).optional(),
30428
+ addBlocks: z24.array(z24.string()).optional()
31015
30429
  });
31016
30430
  var TaskUpdateTool = {
31017
30431
  name: TOOL_NAME23,
@@ -31286,7 +30700,7 @@ import { existsSync as existsSync21, lstatSync, mkdirSync as mkdirSync11, readdi
31286
30700
  import { Box as Box45, Text as Text49 } from "ink";
31287
30701
  import { join as join12 } from "path";
31288
30702
  import * as React57 from "react";
31289
- import { z as z26 } from "zod";
30703
+ import { z as z25 } from "zod";
31290
30704
 
31291
30705
  // src/tools/memory/MemoryReadTool/prompt.ts
31292
30706
  var TOOL_NAME24 = "MemoryRead";
@@ -31310,8 +30724,8 @@ Security:
31310
30724
  `;
31311
30725
 
31312
30726
  // src/tools/memory/MemoryReadTool/MemoryReadTool.tsx
31313
- var inputSchema23 = z26.strictObject({
31314
- file_path: z26.string().optional().describe("Optional path to a specific memory file to read")
30727
+ var inputSchema23 = z25.strictObject({
30728
+ file_path: z25.string().optional().describe("Optional path to a specific memory file to read")
31315
30729
  });
31316
30730
  var MemoryReadTool = {
31317
30731
  name: TOOL_NAME24,
@@ -31420,7 +30834,7 @@ ${files}`;
31420
30834
  // src/tools/memory/MemoryWriteTool/MemoryWriteTool.tsx
31421
30835
  import { Box as Box46, Text as Text50 } from "ink";
31422
30836
  import * as React58 from "react";
31423
- import { z as z27 } from "zod";
30837
+ import { z as z26 } from "zod";
31424
30838
 
31425
30839
  // src/services/memory/write.ts
31426
30840
  import {
@@ -31496,10 +30910,10 @@ This is the summary of the task execution...",
31496
30910
  `;
31497
30911
 
31498
30912
  // src/tools/memory/MemoryWriteTool/MemoryWriteTool.tsx
31499
- var inputSchema24 = z27.strictObject({
31500
- file_path: z27.string().describe("Path to the memory file to write"),
31501
- content: z27.string().describe("Content to write to the file"),
31502
- mode: z27.enum(["append", "replace"]).optional().describe("Write mode: append adds to existing content, replace overwrites")
30913
+ var inputSchema24 = z26.strictObject({
30914
+ file_path: z26.string().describe("Path to the memory file to write"),
30915
+ content: z26.string().describe("Content to write to the file"),
30916
+ mode: z26.enum(["append", "replace"]).optional().describe("Write mode: append adds to existing content, replace overwrites")
31503
30917
  });
31504
30918
  var MemoryWriteTool = {
31505
30919
  name: TOOL_NAME25,
@@ -31619,7 +31033,605 @@ var getReadOnlyTools = memoize4(async () => {
31619
31033
  return tools.filter((_, index) => isEnabled5[index]);
31620
31034
  });
31621
31035
 
31036
+ // src/server/bus/index.ts
31037
+ var BusEvent;
31038
+ ((BusEvent2) => {
31039
+ const registry = /* @__PURE__ */ new Map();
31040
+ function define(type3, properties) {
31041
+ const result = { type: type3, properties };
31042
+ registry.set(type3, result);
31043
+ return result;
31044
+ }
31045
+ BusEvent2.define = define;
31046
+ function getSchema(type3) {
31047
+ return registry.get(type3);
31048
+ }
31049
+ BusEvent2.getSchema = getSchema;
31050
+ })(BusEvent || (BusEvent = {}));
31051
+ var Bus;
31052
+ ((Bus2) => {
31053
+ const state = {
31054
+ subscriptions: /* @__PURE__ */ new Map()
31055
+ };
31056
+ async function publish(def, properties) {
31057
+ const payload = {
31058
+ type: def.type,
31059
+ properties
31060
+ };
31061
+ const pending = [];
31062
+ for (const key of [def.type, "*"]) {
31063
+ const match = state.subscriptions.get(key);
31064
+ if (match) {
31065
+ for (const sub of match) {
31066
+ const result = sub(payload);
31067
+ if (result instanceof Promise) {
31068
+ pending.push(result);
31069
+ }
31070
+ }
31071
+ }
31072
+ }
31073
+ await Promise.all(pending);
31074
+ }
31075
+ Bus2.publish = publish;
31076
+ function subscribe(def, callback) {
31077
+ return raw(def.type, callback);
31078
+ }
31079
+ Bus2.subscribe = subscribe;
31080
+ function subscribeAll(callback) {
31081
+ return raw("*", callback);
31082
+ }
31083
+ Bus2.subscribeAll = subscribeAll;
31084
+ function raw(type3, callback) {
31085
+ const match = state.subscriptions.get(type3) ?? [];
31086
+ match.push(callback);
31087
+ state.subscriptions.set(type3, match);
31088
+ return () => {
31089
+ const subscriptions = state.subscriptions.get(type3);
31090
+ if (!subscriptions) return;
31091
+ const index = subscriptions.indexOf(callback);
31092
+ if (index !== -1) {
31093
+ subscriptions.splice(index, 1);
31094
+ }
31095
+ };
31096
+ }
31097
+ })(Bus || (Bus = {}));
31098
+
31099
+ // src/server/events/definitions.ts
31100
+ import { z as z27 } from "zod";
31101
+ var ServerEvents = {
31102
+ Connected: BusEvent.define("server.connected", z27.object({
31103
+ serverVersion: z27.string(),
31104
+ protocolVersion: z27.string(),
31105
+ features: z27.array(z27.string())
31106
+ })),
31107
+ Heartbeat: BusEvent.define("server.heartbeat", z27.object({
31108
+ timestamp: z27.number()
31109
+ })),
31110
+ Status: BusEvent.define("server.status", z27.object({
31111
+ status: z27.enum(["healthy", "degraded", "unhealthy"]),
31112
+ components: z27.object({
31113
+ llm: z27.enum(["connected", "disconnected"]),
31114
+ mcp: z27.enum(["connected", "disconnected"]),
31115
+ tools: z27.enum(["ready", "initializing"])
31116
+ })
31117
+ }))
31118
+ };
31119
+ var SessionEvents = {
31120
+ Created: BusEvent.define("session.created", z27.object({
31121
+ sessionId: z27.string(),
31122
+ config: z27.object({
31123
+ model: z27.string(),
31124
+ agent: z27.string(),
31125
+ outputStyle: z27.string()
31126
+ }),
31127
+ resumedFrom: z27.string().optional()
31128
+ })),
31129
+ Updated: BusEvent.define("session.updated", z27.object({
31130
+ sessionId: z27.string(),
31131
+ title: z27.string().optional(),
31132
+ config: z27.object({
31133
+ model: z27.string().optional(),
31134
+ agent: z27.string().optional(),
31135
+ outputStyle: z27.string().optional()
31136
+ }).optional()
31137
+ })),
31138
+ Deleted: BusEvent.define("session.deleted", z27.object({
31139
+ sessionId: z27.string()
31140
+ })),
31141
+ Status: BusEvent.define("session.status", z27.object({
31142
+ sessionId: z27.string(),
31143
+ status: z27.enum(["active", "idle", "waiting_input", "processing"]),
31144
+ currentRequestId: z27.string().optional()
31145
+ }))
31146
+ };
31147
+ var MessageEvents = {
31148
+ Created: BusEvent.define("message.created", z27.object({
31149
+ sessionId: z27.string(),
31150
+ message: z27.any()
31151
+ })),
31152
+ Updated: BusEvent.define("message.updated", z27.object({
31153
+ sessionId: z27.string(),
31154
+ message: z27.any(),
31155
+ delta: z27.object({
31156
+ type: z27.enum(["text", "tool_use"]),
31157
+ content: z27.string(),
31158
+ index: z27.number().optional()
31159
+ }).optional()
31160
+ })),
31161
+ Completed: BusEvent.define("message.completed", z27.object({
31162
+ sessionId: z27.string(),
31163
+ messageId: z27.string(),
31164
+ finishReason: z27.enum(["end_turn", "tool_calls", "max_tokens", "aborted"]),
31165
+ usage: z27.object({
31166
+ inputTokens: z27.number(),
31167
+ outputTokens: z27.number(),
31168
+ totalTokens: z27.number()
31169
+ }),
31170
+ cost: z27.object({
31171
+ costUSD: z27.number()
31172
+ })
31173
+ })),
31174
+ RequestStarted: BusEvent.define("request.started", z27.object({
31175
+ sessionId: z27.string(),
31176
+ requestId: z27.string(),
31177
+ userMessage: z27.string()
31178
+ })),
31179
+ RequestCompleted: BusEvent.define("request.completed", z27.object({
31180
+ sessionId: z27.string(),
31181
+ requestId: z27.string(),
31182
+ finishReason: z27.enum(["end_turn", "tool_calls", "max_tokens", "aborted"]),
31183
+ duration: z27.number(),
31184
+ totalTokens: z27.number(),
31185
+ costUSD: z27.number()
31186
+ }))
31187
+ };
31188
+ var ToolEvents = {
31189
+ Started: BusEvent.define("tool.started", z27.object({
31190
+ sessionId: z27.string(),
31191
+ toolUseId: z27.string(),
31192
+ toolName: z27.string(),
31193
+ input: z27.record(z27.unknown()),
31194
+ dangerousLevel: z27.enum(["safe", "moderate", "dangerous"]),
31195
+ requiresPermission: z27.boolean()
31196
+ })),
31197
+ Progress: BusEvent.define("tool.progress", z27.object({
31198
+ sessionId: z27.string(),
31199
+ toolUseId: z27.string(),
31200
+ toolName: z27.string(),
31201
+ progress: z27.number(),
31202
+ message: z27.string().optional(),
31203
+ output: z27.string().optional()
31204
+ })),
31205
+ Completed: BusEvent.define("tool.completed", z27.object({
31206
+ sessionId: z27.string(),
31207
+ toolUseId: z27.string(),
31208
+ toolName: z27.string(),
31209
+ result: z27.string(),
31210
+ isError: z27.boolean(),
31211
+ duration: z27.number()
31212
+ })),
31213
+ Error: BusEvent.define("tool.error", z27.object({
31214
+ sessionId: z27.string(),
31215
+ toolUseId: z27.string(),
31216
+ toolName: z27.string(),
31217
+ error: z27.object({
31218
+ code: z27.string(),
31219
+ message: z27.string(),
31220
+ details: z27.unknown().optional()
31221
+ })
31222
+ }))
31223
+ };
31224
+ var PermissionEvents = {
31225
+ Requested: BusEvent.define("permission.requested", z27.object({
31226
+ sessionId: z27.string(),
31227
+ permissionId: z27.string(),
31228
+ toolName: z27.string(),
31229
+ toolUseId: z27.string(),
31230
+ input: z27.record(z27.unknown()),
31231
+ risk: z27.enum(["safe", "moderate", "dangerous"]),
31232
+ message: z27.string(),
31233
+ suggestedAction: z27.enum(["allow", "deny"]).optional(),
31234
+ timeout: z27.number().optional()
31235
+ })),
31236
+ Responded: BusEvent.define("permission.responded", z27.object({
31237
+ sessionId: z27.string(),
31238
+ permissionId: z27.string(),
31239
+ decision: z27.enum(["allow", "deny", "allowAll"]),
31240
+ remember: z27.boolean(),
31241
+ scope: z27.enum(["session", "project", "global"]).optional()
31242
+ })),
31243
+ Timeout: BusEvent.define("permission.timeout", z27.object({
31244
+ sessionId: z27.string(),
31245
+ permissionId: z27.string(),
31246
+ toolName: z27.string(),
31247
+ defaultAction: z27.enum(["allow", "deny"])
31248
+ }))
31249
+ };
31250
+ var ErrorEvents = {
31251
+ General: BusEvent.define("error", z27.object({
31252
+ sessionId: z27.string().optional(),
31253
+ code: z27.string(),
31254
+ message: z27.string(),
31255
+ details: z27.unknown().optional(),
31256
+ recoverable: z27.boolean(),
31257
+ suggestedAction: z27.string().optional()
31258
+ })),
31259
+ Stream: BusEvent.define("error.stream", z27.object({
31260
+ reason: z27.enum(["timeout", "aborted", "network", "server"]),
31261
+ message: z27.string(),
31262
+ retryable: z27.boolean(),
31263
+ retryAfter: z27.number().optional()
31264
+ }))
31265
+ };
31266
+
31267
+ // src/server/adapters/queryRunner.ts
31268
+ var QueryRunner = class {
31269
+ constructor(config2, sessionState) {
31270
+ this.config = config2;
31271
+ this.sessionState = sessionState;
31272
+ this.requestId = uuidv4();
31273
+ this.abortController = new AbortController();
31274
+ }
31275
+ requestId;
31276
+ abortController;
31277
+ isRunning = false;
31278
+ messages = [];
31279
+ startTime = 0;
31280
+ totalCost = 0;
31281
+ totalInputTokens = 0;
31282
+ totalOutputTokens = 0;
31283
+ async run(userMessage) {
31284
+ if (this.isRunning) {
31285
+ throw new Error("QueryRunner is already running");
31286
+ }
31287
+ this.isRunning = true;
31288
+ this.startTime = Date.now();
31289
+ this.messages = [];
31290
+ await Bus.publish(MessageEvents.RequestStarted, {
31291
+ sessionId: this.config.sessionId,
31292
+ requestId: this.requestId,
31293
+ userMessage
31294
+ });
31295
+ this.config.onRequestStart?.(this.requestId);
31296
+ try {
31297
+ const messages = this.buildMessages(userMessage);
31298
+ const [systemPrompt, context, toolUseContext] = await Promise.all([
31299
+ this.buildSystemPrompt(),
31300
+ this.buildContext(),
31301
+ this.createToolUseContext()
31302
+ ]);
31303
+ const canUseTool = this.createCanUseToolFn();
31304
+ const generator = query(
31305
+ messages,
31306
+ systemPrompt,
31307
+ context,
31308
+ canUseTool,
31309
+ toolUseContext
31310
+ );
31311
+ let finishReason = "end_turn";
31312
+ for await (const message of generator) {
31313
+ if (this.abortController.signal.aborted) {
31314
+ finishReason = "aborted";
31315
+ break;
31316
+ }
31317
+ await this.handleMessage(message);
31318
+ if (message.type === "assistant") {
31319
+ const candidate = message.finish;
31320
+ if (candidate === "end_turn" || candidate === "tool_calls" || candidate === "max_tokens") {
31321
+ finishReason = candidate;
31322
+ }
31323
+ }
31324
+ }
31325
+ const result = {
31326
+ requestId: this.requestId,
31327
+ finishReason,
31328
+ messages: this.messages,
31329
+ usage: {
31330
+ inputTokens: this.totalInputTokens,
31331
+ outputTokens: this.totalOutputTokens,
31332
+ totalTokens: this.totalInputTokens + this.totalOutputTokens
31333
+ },
31334
+ cost: {
31335
+ costUSD: this.totalCost
31336
+ },
31337
+ duration: Date.now() - this.startTime
31338
+ };
31339
+ await Bus.publish(MessageEvents.RequestCompleted, {
31340
+ sessionId: this.config.sessionId,
31341
+ requestId: this.requestId,
31342
+ finishReason: result.finishReason,
31343
+ duration: result.duration,
31344
+ totalTokens: result.usage.totalTokens,
31345
+ costUSD: result.cost.costUSD
31346
+ });
31347
+ this.config.onRequestComplete?.(this.requestId, result);
31348
+ return result;
31349
+ } catch (error) {
31350
+ this.config.onError?.(error instanceof Error ? error : new Error(String(error)));
31351
+ throw error;
31352
+ } finally {
31353
+ this.isRunning = false;
31354
+ }
31355
+ }
31356
+ abort() {
31357
+ this.abortController.abort();
31358
+ }
31359
+ getStatus() {
31360
+ return {
31361
+ isRunning: this.isRunning,
31362
+ requestId: this.isRunning ? this.requestId : null,
31363
+ messageCount: this.messages.length
31364
+ };
31365
+ }
31366
+ async handleMessage(message) {
31367
+ this.messages.push(message);
31368
+ await Bus.publish(MessageEvents.Created, {
31369
+ sessionId: this.config.sessionId,
31370
+ message
31371
+ });
31372
+ this.config.onMessageYield?.(message);
31373
+ if (message.type === "assistant") {
31374
+ const assistantMsg = message;
31375
+ if (assistantMsg.message?.usage) {
31376
+ this.totalInputTokens += assistantMsg.message.usage.input_tokens ?? 0;
31377
+ this.totalOutputTokens += assistantMsg.message.usage.output_tokens ?? 0;
31378
+ }
31379
+ }
31380
+ }
31381
+ buildMessages(userMessage) {
31382
+ const history = this.sessionState.messages.filter((message) => message.type !== "progress");
31383
+ const nextMessage = createUserMessageFromText(userMessage);
31384
+ return [...history, nextMessage];
31385
+ }
31386
+ async buildSystemPrompt() {
31387
+ const basePrompt = await getSystemPrompt();
31388
+ const sessionPrompt = this.sessionState.config.systemPrompt ?? [];
31389
+ if (sessionPrompt.length === 0) return basePrompt;
31390
+ return [...basePrompt, ...sessionPrompt];
31391
+ }
31392
+ async buildContext() {
31393
+ const baseContext = await getContext();
31394
+ return {
31395
+ ...baseContext,
31396
+ cwd: this.sessionState.cwd
31397
+ };
31398
+ }
31399
+ createCanUseToolFn() {
31400
+ return async (tool, input, toolUseContext, assistantMessage) => hasPermissionsToUseTool(tool, input, toolUseContext, assistantMessage);
31401
+ }
31402
+ async createToolUseContext() {
31403
+ const tools = await getTools();
31404
+ return {
31405
+ abortController: this.abortController,
31406
+ onQueryLifecycleEvent: (event) => {
31407
+ },
31408
+ sessionContext: new SessionContext(),
31409
+ options: {
31410
+ commands: [],
31411
+ forkNumber: 0,
31412
+ messageLogName: this.requestId,
31413
+ tools,
31414
+ verbose: false,
31415
+ safeMode: false,
31416
+ maxThinkingTokens: 16e3
31417
+ },
31418
+ readFileTimestamps: {},
31419
+ setToolJSX: () => {
31420
+ },
31421
+ requestId: this.requestId,
31422
+ messageId: void 0
31423
+ };
31424
+ }
31425
+ };
31426
+
31427
+ // src/server/routes/session.ts
31428
+ function createSessionRoutes() {
31429
+ const router = new Hono();
31430
+ router.post("/", async (c) => {
31431
+ const body = await c.req.json();
31432
+ const { resumeFrom, config: config2 } = body;
31433
+ if (resumeFrom !== void 0 && resumeFrom !== null) {
31434
+ return c.json(
31435
+ {
31436
+ success: false,
31437
+ error: {
31438
+ code: "RESUME_NOT_SUPPORTED",
31439
+ message: "resumeFrom is not supported in current session backend"
31440
+ }
31441
+ },
31442
+ 400
31443
+ );
31444
+ }
31445
+ const session = await sessionStateManager.create(
31446
+ process.cwd(),
31447
+ config2
31448
+ );
31449
+ return c.json({
31450
+ success: true,
31451
+ data: {
31452
+ sessionId: session.id,
31453
+ createdAt: session.createdAt,
31454
+ config: session.config
31455
+ }
31456
+ }, 201);
31457
+ });
31458
+ router.get("/", (c) => {
31459
+ const sessions = sessionStateManager.list();
31460
+ const page = parseInt(c.req.query("page") ?? "1");
31461
+ const limit = parseInt(c.req.query("limit") ?? "20");
31462
+ const status = c.req.query("status");
31463
+ let filtered = sessions;
31464
+ if (status) {
31465
+ filtered = filtered.filter((s) => s.status === status);
31466
+ }
31467
+ const start = (page - 1) * limit;
31468
+ const items = filtered.slice(start, start + limit);
31469
+ return c.json({
31470
+ success: true,
31471
+ data: {
31472
+ items: items.map((s) => ({
31473
+ id: s.id,
31474
+ title: s.title,
31475
+ status: s.status,
31476
+ messageCount: s.messages.length,
31477
+ createdAt: s.createdAt,
31478
+ updatedAt: s.updatedAt,
31479
+ config: s.config
31480
+ })),
31481
+ pagination: {
31482
+ page,
31483
+ limit,
31484
+ total: filtered.length,
31485
+ hasMore: start + limit < filtered.length
31486
+ }
31487
+ }
31488
+ });
31489
+ });
31490
+ router.get("/:sessionId", (c) => {
31491
+ const sessionId = c.req.param("sessionId");
31492
+ const session = sessionStateManager.get(sessionId);
31493
+ if (!session) {
31494
+ return c.json({ success: false, error: { code: "SESSION_NOT_FOUND", message: "Session not found" } }, 404);
31495
+ }
31496
+ return c.json({
31497
+ success: true,
31498
+ data: {
31499
+ id: session.id,
31500
+ title: session.title,
31501
+ status: session.status,
31502
+ messages: session.messages,
31503
+ createdAt: session.createdAt,
31504
+ updatedAt: session.updatedAt,
31505
+ config: session.config
31506
+ }
31507
+ });
31508
+ });
31509
+ router.get("/:sessionId/messages", (c) => {
31510
+ const sessionId = c.req.param("sessionId");
31511
+ const session = sessionStateManager.get(sessionId);
31512
+ if (!session) {
31513
+ return c.json({ success: false, error: { code: "SESSION_NOT_FOUND", message: "Session not found" } }, 404);
31514
+ }
31515
+ const after = c.req.query("after");
31516
+ const before = c.req.query("before");
31517
+ const limit = Math.max(1, parseInt(c.req.query("limit") ?? "50", 10));
31518
+ let items = [...session.messages];
31519
+ if (after) {
31520
+ const index = items.findIndex((item) => item.uuid === after);
31521
+ if (index >= 0) {
31522
+ items = items.slice(index + 1);
31523
+ }
31524
+ }
31525
+ if (before) {
31526
+ const index = items.findIndex((item) => item.uuid === before);
31527
+ if (index >= 0) {
31528
+ items = items.slice(0, index);
31529
+ }
31530
+ }
31531
+ items = items.slice(0, limit);
31532
+ return c.json({
31533
+ success: true,
31534
+ data: { items }
31535
+ });
31536
+ });
31537
+ router.patch("/:sessionId", async (c) => {
31538
+ const sessionId = c.req.param("sessionId");
31539
+ const body = await c.req.json();
31540
+ const updated = await sessionStateManager.update(sessionId, body);
31541
+ if (!updated) {
31542
+ return c.json({ success: false, error: { code: "SESSION_NOT_FOUND", message: "Session not found" } }, 404);
31543
+ }
31544
+ const session = sessionStateManager.get(sessionId);
31545
+ return c.json({ success: true, data: session });
31546
+ });
31547
+ router.delete("/:sessionId", async (c) => {
31548
+ const sessionId = c.req.param("sessionId");
31549
+ const deleted = await sessionStateManager.delete(sessionId);
31550
+ return c.json({
31551
+ success: true,
31552
+ data: { deleted, sessionId }
31553
+ });
31554
+ });
31555
+ router.post("/:sessionId/prompt", async (c) => {
31556
+ const sessionId = c.req.param("sessionId");
31557
+ const body = await c.req.json();
31558
+ const { message, attachments, options } = body;
31559
+ const session = sessionStateManager.get(sessionId);
31560
+ if (!session) {
31561
+ return c.json({ success: false, error: { code: "SESSION_NOT_FOUND", message: "Session not found" } }, 404);
31562
+ }
31563
+ const acceptHeader = c.req.header("Accept") ?? "";
31564
+ const wantsSSE = acceptHeader.includes("text/event-stream") || options?.stream !== false;
31565
+ if (wantsSSE) {
31566
+ return streamSSE(c, async (stream) => {
31567
+ const runner = new QueryRunner(
31568
+ { sessionId },
31569
+ session
31570
+ );
31571
+ sessionStateManager.setCurrentRunner(sessionId, runner);
31572
+ try {
31573
+ const result = await runner.run(message);
31574
+ await stream.writeSSE({
31575
+ event: "request.completed",
31576
+ data: JSON.stringify({
31577
+ type: "request.completed",
31578
+ sessionId,
31579
+ timestamp: Date.now(),
31580
+ data: {
31581
+ finishReason: result.finishReason,
31582
+ usage: result.usage,
31583
+ cost: result.cost,
31584
+ duration: result.duration
31585
+ }
31586
+ })
31587
+ });
31588
+ } catch (error) {
31589
+ await stream.writeSSE({
31590
+ event: "error",
31591
+ data: JSON.stringify({
31592
+ type: "error",
31593
+ sessionId,
31594
+ timestamp: Date.now(),
31595
+ data: {
31596
+ code: "QUERY_ERROR",
31597
+ message: error instanceof Error ? error.message : String(error),
31598
+ recoverable: false
31599
+ }
31600
+ })
31601
+ });
31602
+ } finally {
31603
+ sessionStateManager.clearCurrentRunner(sessionId);
31604
+ }
31605
+ });
31606
+ } else {
31607
+ const runner = new QueryRunner({ sessionId }, session);
31608
+ sessionStateManager.setCurrentRunner(sessionId, runner);
31609
+ try {
31610
+ const result = await runner.run(message);
31611
+ return c.json({ success: true, data: result });
31612
+ } finally {
31613
+ sessionStateManager.clearCurrentRunner(sessionId);
31614
+ }
31615
+ }
31616
+ });
31617
+ router.post("/:sessionId/abort", (c) => {
31618
+ const sessionId = c.req.param("sessionId");
31619
+ const session = sessionStateManager.get(sessionId);
31620
+ if (!session) {
31621
+ return c.json({ success: false, error: { code: "SESSION_NOT_FOUND", message: "Session not found" } }, 404);
31622
+ }
31623
+ const runner = sessionStateManager.getCurrentRunner(sessionId);
31624
+ if (runner) {
31625
+ runner.abort();
31626
+ return c.json({ success: true, data: { aborted: true } });
31627
+ }
31628
+ return c.json({ success: true, data: { aborted: false, reason: "No running query" } });
31629
+ });
31630
+ return router;
31631
+ }
31632
+
31622
31633
  // src/server/routes/tool.ts
31634
+ import { Hono as Hono2 } from "hono";
31623
31635
  function createToolRoutes() {
31624
31636
  const router = new Hono2();
31625
31637
  router.get("/", async (c) => {
@@ -38297,7 +38309,7 @@ function useStatusLine() {
38297
38309
  // src/ui/components/PromptInput.tsx
38298
38310
  async function interpretHashCommand(input) {
38299
38311
  try {
38300
- const { queryQuick: queryQuick2 } = await import("./llm-JRNCNUVN.js");
38312
+ const { queryQuick: queryQuick2 } = await import("./llm-MRDYTVAB.js");
38301
38313
  const systemPrompt = [
38302
38314
  "You're helping the user structure notes that will be added to their PYB.md file.",
38303
38315
  "Format the user's input into a well-structured note that will be useful for later reference.",
@@ -38610,7 +38622,7 @@ function PromptInput({
38610
38622
  if (messages2.length) {
38611
38623
  if (mode === "bash") {
38612
38624
  onQuery(messages2, newAbortController).then(async () => {
38613
- const { getCwd: getCwd2 } = await import("./state-ZQW77MQC.js");
38625
+ const { getCwd: getCwd2 } = await import("./state-GMP5BAO3.js");
38614
38626
  setCurrentPwd(getCwd2());
38615
38627
  });
38616
38628
  } else {
@@ -40240,7 +40252,7 @@ import { homedir as homedir8 } from "os";
40240
40252
  // src/commands/agents/generation.ts
40241
40253
  import { randomUUID as randomUUID9 } from "crypto";
40242
40254
  async function generateAgentWithClaude(prompt) {
40243
- const { queryModel } = await import("./llm-JRNCNUVN.js");
40255
+ const { queryModel } = await import("./llm-MRDYTVAB.js");
40244
40256
  const systemPrompt = `You are an expert at creating AI agent configurations. Based on the user's description, generate a specialized agent configuration.
40245
40257
 
40246
40258
  Return your response as a JSON object with exactly these fields: