pybao-cli 1.5.35 → 1.5.36

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 (153) hide show
  1. package/dist/REPL-BECQEFPJ.js +51 -0
  2. package/dist/{acp-HEFMA6AP.js → acp-QRIZ5IYO.js} +30 -30
  3. package/dist/{agentsValidate-MEWBSKN4.js → agentsValidate-P2QSA4XL.js} +7 -7
  4. package/dist/{ask-MQYVNWYL.js → ask-WIQYOQEG.js} +30 -30
  5. package/dist/{autoUpdater-2VD3CZE4.js → autoUpdater-MEUBMTCZ.js} +3 -3
  6. package/dist/{chunk-376H3S6C.js → chunk-3KHMRGJJ.js} +3 -3
  7. package/dist/{chunk-53EPWNTO.js → chunk-44H5ROEF.js} +1 -1
  8. package/dist/{chunk-GZLF4YSL.js → chunk-45XR2OAY.js} +1 -1
  9. package/dist/{chunk-UY7STTHB.js → chunk-542JZAJQ.js} +4 -4
  10. package/dist/{chunk-5ZLM7PRZ.js → chunk-5ZNLZ4TP.js} +2 -2
  11. package/dist/{chunk-5UFPCFNE.js → chunk-6QEIHAGS.js} +1 -1
  12. package/dist/{chunk-X3OD6B7R.js → chunk-7HMF5J3F.js} +1 -1
  13. package/dist/{chunk-5SUIEQUY.js → chunk-7KPPJFGR.js} +1 -1
  14. package/dist/{chunk-2OWEFUP6.js → chunk-7POF6LG4.js} +4 -4
  15. package/dist/{chunk-DKKTHSL7.js → chunk-AI7TZGEO.js} +2 -2
  16. package/dist/{chunk-YQR52AYW.js → chunk-D3FZBDVS.js} +2 -2
  17. package/dist/{chunk-LB3N27HD.js → chunk-DDJPFVCD.js} +3 -3
  18. package/dist/{chunk-GRMDSFUX.js → chunk-DDN6NKCL.js} +1 -1
  19. package/dist/{chunk-7PPJSWI2.js → chunk-DGLIAB7C.js} +38 -38
  20. package/dist/{chunk-OR3METID.js → chunk-DWHXB72J.js} +3 -3
  21. package/dist/{chunk-M7WSOMIQ.js → chunk-EAPNJV2Z.js} +3 -3
  22. package/dist/{chunk-SWW5SPVB.js → chunk-EN7KOPIA.js} +3 -3
  23. package/dist/chunk-EN7KOPIA.js.map +7 -0
  24. package/dist/{chunk-7PUKNW5Z.js → chunk-JJ5HRVLG.js} +4 -4
  25. package/dist/{chunk-4MUOJDIX.js → chunk-MJT2BJLD.js} +1 -1
  26. package/dist/{chunk-4UBDHN3C.js → chunk-MUBRIEFY.js} +3 -3
  27. package/dist/{chunk-2C57X27A.js → chunk-MV747DN6.js} +1 -1
  28. package/dist/{chunk-PA7CVASG.js → chunk-OUREC4BI.js} +4 -4
  29. package/dist/{chunk-EIIVGVOE.js → chunk-PRDPN4QZ.js} +1 -1
  30. package/dist/{chunk-JVSXJL4F.js → chunk-QA3HDYQZ.js} +2 -2
  31. package/dist/{chunk-STUPRWGG.js → chunk-SEJZHZ5F.js} +4 -3
  32. package/dist/chunk-SEJZHZ5F.js.map +7 -0
  33. package/dist/{chunk-JFZNITC4.js → chunk-TLP5DVEM.js} +3 -3
  34. package/dist/{chunk-4FWTKEA2.js → chunk-U7MKXQK6.js} +2 -2
  35. package/dist/{chunk-JRB5DIF6.js → chunk-X5IT55SG.js} +1 -1
  36. package/dist/{chunk-JIHINIR6.js → chunk-XHLFDFPQ.js} +3 -3
  37. package/dist/{chunk-TSIPE63V.js → chunk-YWK2UVTO.js} +1 -1
  38. package/dist/{chunk-GIBL4KQS.js → chunk-YZBVDQNG.js} +3 -3
  39. package/dist/{cli-HVIKWQJS.js → cli-NLMPMQ2E.js} +90 -90
  40. package/dist/commands-QMNEULJC.js +55 -0
  41. package/dist/{config-4QNQCWSM.js → config-D5UJFGPG.js} +4 -4
  42. package/dist/{context-AY5MGTPC.js → context-5K45JNRQ.js} +6 -6
  43. package/dist/{conversationPersistence-3ESBZRBW.js → conversationPersistence-ZQQCB6BK.js} +3 -3
  44. package/dist/{conversationTracker-KX4RIYMC.js → conversationTracker-PUTHQLXK.js} +4 -4
  45. package/dist/{customCommands-ANHCJ74F.js → customCommands-46VIFQ34.js} +4 -4
  46. package/dist/{env-7IW5VY72.js → env-6IPMBPS4.js} +2 -2
  47. package/dist/{file-7WYSK4MV.js → file-MSKCELHV.js} +4 -4
  48. package/dist/index.js +3 -3
  49. package/dist/{llm-V3347QST.js → llm-FH3V2XTE.js} +31 -31
  50. package/dist/{llmLazy-6J7SLZXP.js → llmLazy-URJDLFSZ.js} +1 -1
  51. package/dist/{loader-A7BRP3RX.js → loader-A62HAK4O.js} +4 -4
  52. package/dist/{lsp-XNRBMNJ7.js → lsp-HMODWV7I.js} +6 -6
  53. package/dist/{lspAnchor-P7MO5SU4.js → lspAnchor-ZC7I7COT.js} +6 -6
  54. package/dist/{mcp-Z75QKOR7.js → mcp-7LRQSBP6.js} +7 -7
  55. package/dist/{mentionProcessor-II33MEBA.js → mentionProcessor-ZMRROWKA.js} +5 -5
  56. package/dist/{messages-IERWEH6P.js → messages-LXUVZTLH.js} +1 -1
  57. package/dist/{model-26SYHHAI.js → model-QV7OOHHG.js} +5 -5
  58. package/dist/{openai-S2FF5GI6.js → openai-YUTDZOKP.js} +5 -5
  59. package/dist/{outputStyles-N47VZWMD.js → outputStyles-TBOL576J.js} +4 -4
  60. package/dist/{pluginRuntime-IO5XRK4L.js → pluginRuntime-IB7YAUZR.js} +6 -6
  61. package/dist/{pluginValidation-RBMUJREQ.js → pluginValidation-5JVF2CA3.js} +6 -6
  62. package/dist/prompts-6JCRUF2G.js +57 -0
  63. package/dist/{pybAgentSessionLoad-5TC52KPK.js → pybAgentSessionLoad-YOZUCXGF.js} +4 -4
  64. package/dist/{pybAgentSessionResume-SFVEV245.js → pybAgentSessionResume-KBCPZ5M7.js} +4 -4
  65. package/dist/{pybAgentStreamJsonSession-GWEPLJHB.js → pybAgentStreamJsonSession-A7CQ6PEZ.js} +1 -1
  66. package/dist/{pybHooks-GKVDR7U7.js → pybHooks-ZXVD4ACH.js} +4 -4
  67. package/dist/query-LAHU5G7G.js +55 -0
  68. package/dist/{registry-FO5JUIXK.js → registry-WYGTZAW4.js} +5 -5
  69. package/dist/{ripgrep-YTZLPAZ2.js → ripgrep-V2OK4EJP.js} +3 -3
  70. package/dist/{skillMarketplace-GDMOJXWA.js → skillMarketplace-D3MIES5B.js} +3 -3
  71. package/dist/{state-XKRSGBTM.js → state-L4B23VCD.js} +2 -2
  72. package/dist/{theme-EMB4ORKN.js → theme-DH6QMGKW.js} +5 -5
  73. package/dist/{toolPermissionSettings-2GVVREEV.js → toolPermissionSettings-QPTI6L6H.js} +6 -6
  74. package/dist/tools-SG2ZUUUH.js +55 -0
  75. package/dist/{userInput-QZUJ5NNS.js → userInput-7XK4U2ZK.js} +32 -32
  76. package/package.json +4 -3
  77. package/dist/REPL-XZIQMIBB.js +0 -51
  78. package/dist/chunk-STUPRWGG.js.map +0 -7
  79. package/dist/chunk-SWW5SPVB.js.map +0 -7
  80. package/dist/commands-PZU3FRIJ.js +0 -55
  81. package/dist/prompts-VYE4V5Z2.js +0 -57
  82. package/dist/query-HZA2CUP4.js +0 -55
  83. package/dist/tools-H2ZUDIMQ.js +0 -55
  84. /package/dist/{REPL-XZIQMIBB.js.map → REPL-BECQEFPJ.js.map} +0 -0
  85. /package/dist/{acp-HEFMA6AP.js.map → acp-QRIZ5IYO.js.map} +0 -0
  86. /package/dist/{agentsValidate-MEWBSKN4.js.map → agentsValidate-P2QSA4XL.js.map} +0 -0
  87. /package/dist/{ask-MQYVNWYL.js.map → ask-WIQYOQEG.js.map} +0 -0
  88. /package/dist/{autoUpdater-2VD3CZE4.js.map → autoUpdater-MEUBMTCZ.js.map} +0 -0
  89. /package/dist/{chunk-376H3S6C.js.map → chunk-3KHMRGJJ.js.map} +0 -0
  90. /package/dist/{chunk-53EPWNTO.js.map → chunk-44H5ROEF.js.map} +0 -0
  91. /package/dist/{chunk-GZLF4YSL.js.map → chunk-45XR2OAY.js.map} +0 -0
  92. /package/dist/{chunk-UY7STTHB.js.map → chunk-542JZAJQ.js.map} +0 -0
  93. /package/dist/{chunk-5ZLM7PRZ.js.map → chunk-5ZNLZ4TP.js.map} +0 -0
  94. /package/dist/{chunk-5UFPCFNE.js.map → chunk-6QEIHAGS.js.map} +0 -0
  95. /package/dist/{chunk-X3OD6B7R.js.map → chunk-7HMF5J3F.js.map} +0 -0
  96. /package/dist/{chunk-5SUIEQUY.js.map → chunk-7KPPJFGR.js.map} +0 -0
  97. /package/dist/{chunk-2OWEFUP6.js.map → chunk-7POF6LG4.js.map} +0 -0
  98. /package/dist/{chunk-DKKTHSL7.js.map → chunk-AI7TZGEO.js.map} +0 -0
  99. /package/dist/{chunk-YQR52AYW.js.map → chunk-D3FZBDVS.js.map} +0 -0
  100. /package/dist/{chunk-LB3N27HD.js.map → chunk-DDJPFVCD.js.map} +0 -0
  101. /package/dist/{chunk-GRMDSFUX.js.map → chunk-DDN6NKCL.js.map} +0 -0
  102. /package/dist/{chunk-7PPJSWI2.js.map → chunk-DGLIAB7C.js.map} +0 -0
  103. /package/dist/{chunk-OR3METID.js.map → chunk-DWHXB72J.js.map} +0 -0
  104. /package/dist/{chunk-M7WSOMIQ.js.map → chunk-EAPNJV2Z.js.map} +0 -0
  105. /package/dist/{chunk-7PUKNW5Z.js.map → chunk-JJ5HRVLG.js.map} +0 -0
  106. /package/dist/{chunk-4MUOJDIX.js.map → chunk-MJT2BJLD.js.map} +0 -0
  107. /package/dist/{chunk-4UBDHN3C.js.map → chunk-MUBRIEFY.js.map} +0 -0
  108. /package/dist/{chunk-2C57X27A.js.map → chunk-MV747DN6.js.map} +0 -0
  109. /package/dist/{chunk-PA7CVASG.js.map → chunk-OUREC4BI.js.map} +0 -0
  110. /package/dist/{chunk-EIIVGVOE.js.map → chunk-PRDPN4QZ.js.map} +0 -0
  111. /package/dist/{chunk-JVSXJL4F.js.map → chunk-QA3HDYQZ.js.map} +0 -0
  112. /package/dist/{chunk-JFZNITC4.js.map → chunk-TLP5DVEM.js.map} +0 -0
  113. /package/dist/{chunk-4FWTKEA2.js.map → chunk-U7MKXQK6.js.map} +0 -0
  114. /package/dist/{chunk-JRB5DIF6.js.map → chunk-X5IT55SG.js.map} +0 -0
  115. /package/dist/{chunk-JIHINIR6.js.map → chunk-XHLFDFPQ.js.map} +0 -0
  116. /package/dist/{chunk-TSIPE63V.js.map → chunk-YWK2UVTO.js.map} +0 -0
  117. /package/dist/{chunk-GIBL4KQS.js.map → chunk-YZBVDQNG.js.map} +0 -0
  118. /package/dist/{cli-HVIKWQJS.js.map → cli-NLMPMQ2E.js.map} +0 -0
  119. /package/dist/{commands-PZU3FRIJ.js.map → commands-QMNEULJC.js.map} +0 -0
  120. /package/dist/{config-4QNQCWSM.js.map → config-D5UJFGPG.js.map} +0 -0
  121. /package/dist/{context-AY5MGTPC.js.map → context-5K45JNRQ.js.map} +0 -0
  122. /package/dist/{conversationPersistence-3ESBZRBW.js.map → conversationPersistence-ZQQCB6BK.js.map} +0 -0
  123. /package/dist/{conversationTracker-KX4RIYMC.js.map → conversationTracker-PUTHQLXK.js.map} +0 -0
  124. /package/dist/{customCommands-ANHCJ74F.js.map → customCommands-46VIFQ34.js.map} +0 -0
  125. /package/dist/{env-7IW5VY72.js.map → env-6IPMBPS4.js.map} +0 -0
  126. /package/dist/{file-7WYSK4MV.js.map → file-MSKCELHV.js.map} +0 -0
  127. /package/dist/{llm-V3347QST.js.map → llm-FH3V2XTE.js.map} +0 -0
  128. /package/dist/{llmLazy-6J7SLZXP.js.map → llmLazy-URJDLFSZ.js.map} +0 -0
  129. /package/dist/{loader-A7BRP3RX.js.map → loader-A62HAK4O.js.map} +0 -0
  130. /package/dist/{lsp-XNRBMNJ7.js.map → lsp-HMODWV7I.js.map} +0 -0
  131. /package/dist/{lspAnchor-P7MO5SU4.js.map → lspAnchor-ZC7I7COT.js.map} +0 -0
  132. /package/dist/{mcp-Z75QKOR7.js.map → mcp-7LRQSBP6.js.map} +0 -0
  133. /package/dist/{mentionProcessor-II33MEBA.js.map → mentionProcessor-ZMRROWKA.js.map} +0 -0
  134. /package/dist/{messages-IERWEH6P.js.map → messages-LXUVZTLH.js.map} +0 -0
  135. /package/dist/{model-26SYHHAI.js.map → model-QV7OOHHG.js.map} +0 -0
  136. /package/dist/{openai-S2FF5GI6.js.map → openai-YUTDZOKP.js.map} +0 -0
  137. /package/dist/{outputStyles-N47VZWMD.js.map → outputStyles-TBOL576J.js.map} +0 -0
  138. /package/dist/{pluginRuntime-IO5XRK4L.js.map → pluginRuntime-IB7YAUZR.js.map} +0 -0
  139. /package/dist/{pluginValidation-RBMUJREQ.js.map → pluginValidation-5JVF2CA3.js.map} +0 -0
  140. /package/dist/{prompts-VYE4V5Z2.js.map → prompts-6JCRUF2G.js.map} +0 -0
  141. /package/dist/{pybAgentSessionLoad-5TC52KPK.js.map → pybAgentSessionLoad-YOZUCXGF.js.map} +0 -0
  142. /package/dist/{pybAgentSessionResume-SFVEV245.js.map → pybAgentSessionResume-KBCPZ5M7.js.map} +0 -0
  143. /package/dist/{pybAgentStreamJsonSession-GWEPLJHB.js.map → pybAgentStreamJsonSession-A7CQ6PEZ.js.map} +0 -0
  144. /package/dist/{pybHooks-GKVDR7U7.js.map → pybHooks-ZXVD4ACH.js.map} +0 -0
  145. /package/dist/{query-HZA2CUP4.js.map → query-LAHU5G7G.js.map} +0 -0
  146. /package/dist/{registry-FO5JUIXK.js.map → registry-WYGTZAW4.js.map} +0 -0
  147. /package/dist/{ripgrep-YTZLPAZ2.js.map → ripgrep-V2OK4EJP.js.map} +0 -0
  148. /package/dist/{skillMarketplace-GDMOJXWA.js.map → skillMarketplace-D3MIES5B.js.map} +0 -0
  149. /package/dist/{state-XKRSGBTM.js.map → state-L4B23VCD.js.map} +0 -0
  150. /package/dist/{theme-EMB4ORKN.js.map → theme-DH6QMGKW.js.map} +0 -0
  151. /package/dist/{toolPermissionSettings-2GVVREEV.js.map → toolPermissionSettings-QPTI6L6H.js.map} +0 -0
  152. /package/dist/{tools-H2ZUDIMQ.js.map → tools-SG2ZUUUH.js.map} +0 -0
  153. /package/dist/{userInput-QZUJ5NNS.js.map → userInput-7XK4U2ZK.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-X3OD6B7R.js";
5
+ } from "./chunk-7HMF5J3F.js";
6
6
  import {
7
7
  appendSessionCustomTitleRecord,
8
8
  appendSessionJsonlFromMessage,
9
9
  appendSessionTagRecord,
10
10
  listPybAgentSessions
11
- } from "./chunk-OR3METID.js";
11
+ } from "./chunk-DWHXB72J.js";
12
12
  import {
13
13
  formatValidationResult,
14
14
  validatePluginOrMarketplacePath
15
- } from "./chunk-GIBL4KQS.js";
15
+ } from "./chunk-YZBVDQNG.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-EIIVGVOE.js";
23
+ } from "./chunk-PRDPN4QZ.js";
24
24
  import {
25
25
  FileSystemConversationPersistence
26
- } from "./chunk-53EPWNTO.js";
26
+ } from "./chunk-44H5ROEF.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-376H3S6C.js";
41
+ } from "./chunk-3KHMRGJJ.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-SWW5SPVB.js";
50
+ } from "./chunk-EN7KOPIA.js";
51
51
  import {
52
52
  fetchCustomModels,
53
53
  getModelFeatures
54
- } from "./chunk-DKKTHSL7.js";
54
+ } from "./chunk-AI7TZGEO.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-7PUKNW5Z.js";
63
+ } from "./chunk-JJ5HRVLG.js";
64
64
  import {
65
65
  DEFAULT_TIMEOUT_MS,
66
66
  FallbackToolUseRejectedMessage,
@@ -75,7 +75,7 @@ import {
75
75
  listMCPServers,
76
76
  loadMergedSettings,
77
77
  normalizeSandboxRuntimeConfigFromSettings
78
- } from "./chunk-PA7CVASG.js";
78
+ } from "./chunk-OUREC4BI.js";
79
79
  import {
80
80
  addMarketplace,
81
81
  disableSkillPlugin,
@@ -88,11 +88,11 @@ import {
88
88
  refreshMarketplaceAsync,
89
89
  removeMarketplace,
90
90
  uninstallSkillPlugin
91
- } from "./chunk-GRMDSFUX.js";
91
+ } from "./chunk-DDN6NKCL.js";
92
92
  import {
93
93
  loadToolPermissionContextFromDisk,
94
94
  persistToolPermissionUpdateToDisk
95
- } from "./chunk-LB3N27HD.js";
95
+ } from "./chunk-DDJPFVCD.js";
96
96
  import {
97
97
  applyToolPermissionContextUpdate,
98
98
  applyToolPermissionContextUpdates,
@@ -103,14 +103,14 @@ import {
103
103
  generateSystemReminders,
104
104
  resetReminderSession,
105
105
  systemReminderService
106
- } from "./chunk-YQR52AYW.js";
106
+ } from "./chunk-D3FZBDVS.js";
107
107
  import {
108
108
  clearAgentCache,
109
109
  getActiveAgents,
110
110
  getAgentByType,
111
111
  getAllAgents,
112
112
  getAvailableAgentTypes
113
- } from "./chunk-4FWTKEA2.js";
113
+ } from "./chunk-U7MKXQK6.js";
114
114
  import {
115
115
  API_ERROR_MESSAGE_PREFIX,
116
116
  CANCEL_MESSAGE,
@@ -147,7 +147,7 @@ import {
147
147
  reorderMessages,
148
148
  resetAutoCompactTelemetry,
149
149
  stripSystemMessages
150
- } from "./chunk-GZLF4YSL.js";
150
+ } from "./chunk-45XR2OAY.js";
151
151
  import {
152
152
  getRequestStatus,
153
153
  setRequestStatus,
@@ -179,7 +179,7 @@ import {
179
179
  normalizeFilePath,
180
180
  readTextContent,
181
181
  writeTextContent
182
- } from "./chunk-JVSXJL4F.js";
182
+ } from "./chunk-QA3HDYQZ.js";
183
183
  import {
184
184
  parseBlockEdits
185
185
  } from "./chunk-QWIBSCDN.js";
@@ -190,18 +190,18 @@ import {
190
190
  formatDiagnosticsPretty,
191
191
  initParser,
192
192
  loadLanguage
193
- } from "./chunk-2OWEFUP6.js";
193
+ } from "./chunk-7POF6LG4.js";
194
194
  import {
195
195
  getSettingsFileCandidates,
196
196
  loadSettingsWithLegacyFallback,
197
197
  readSettingsFile
198
- } from "./chunk-4MUOJDIX.js";
198
+ } from "./chunk-MJT2BJLD.js";
199
199
  import {
200
200
  getCustomCommandDirectories,
201
201
  hasCustomCommands,
202
202
  loadCustomCommands,
203
203
  reloadCustomCommands
204
- } from "./chunk-5ZLM7PRZ.js";
204
+ } from "./chunk-5ZNLZ4TP.js";
205
205
  import {
206
206
  getSessionPlugins
207
207
  } from "./chunk-BJSWTHRM.js";
@@ -210,7 +210,7 @@ import {
210
210
  buildModelProfileKey,
211
211
  getModelManager,
212
212
  isDefaultSlowAndCapableModel
213
- } from "./chunk-JIHINIR6.js";
213
+ } from "./chunk-XHLFDFPQ.js";
214
214
  import {
215
215
  getCodeStyle,
216
216
  getContext,
@@ -218,16 +218,16 @@ import {
218
218
  getIsGit,
219
219
  getProjectDocs,
220
220
  getProjectStructureStatisticsBlock
221
- } from "./chunk-UY7STTHB.js";
221
+ } from "./chunk-542JZAJQ.js";
222
222
  import {
223
223
  getRipgrepPath,
224
224
  getRipgrepPolicyMode,
225
225
  resolveRipgrepPolicy,
226
226
  ripGrep
227
- } from "./chunk-TSIPE63V.js";
227
+ } from "./chunk-YWK2UVTO.js";
228
228
  import {
229
229
  getTheme
230
- } from "./chunk-JRB5DIF6.js";
230
+ } from "./chunk-X5IT55SG.js";
231
231
  import {
232
232
  DEFAULT_GLOBAL_CONFIG,
233
233
  enableConfigs,
@@ -240,7 +240,7 @@ import {
240
240
  saveGlobalConfig,
241
241
  setAllPointersToModel,
242
242
  setModelPointer
243
- } from "./chunk-JFZNITC4.js";
243
+ } from "./chunk-TLP5DVEM.js";
244
244
  import {
245
245
  AbortError
246
246
  } from "./chunk-RQVLBMP7.js";
@@ -249,7 +249,7 @@ import {
249
249
  getCurrentRequest,
250
250
  logUserFriendly,
251
251
  markPhase
252
- } from "./chunk-5UFPCFNE.js";
252
+ } from "./chunk-6QEIHAGS.js";
253
253
  import {
254
254
  ASCII_LOGO,
255
255
  BunShell,
@@ -293,10 +293,10 @@ import {
293
293
  setCwd,
294
294
  shouldApplyToolOutputTruncation,
295
295
  truncateToolOutput
296
- } from "./chunk-2C57X27A.js";
296
+ } from "./chunk-MV747DN6.js";
297
297
  import {
298
298
  MACRO
299
- } from "./chunk-STUPRWGG.js";
299
+ } from "./chunk-SEJZHZ5F.js";
300
300
  import {
301
301
  __export
302
302
  } from "./chunk-I3J4JYES.js";
@@ -477,7 +477,7 @@ var getCommandSubcommandPrefix = memoize(
477
477
  var getCommandPrefix = memoize(
478
478
  async (command4, abortSignal) => {
479
479
  const { systemPrompt, userPrompt } = buildBashCommandPrefixDetectionPrompt(command4);
480
- const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-V3347QST.js");
480
+ const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-FH3V2XTE.js");
481
481
  const response = await queryQuick2({
482
482
  systemPrompt,
483
483
  userPrompt,
@@ -4279,7 +4279,7 @@ function formatParseError(error) {
4279
4279
  return error instanceof Error ? error.message : String(error);
4280
4280
  }
4281
4281
  async function defaultGateQuery(args) {
4282
- const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-V3347QST.js");
4282
+ const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-FH3V2XTE.js");
4283
4283
  const queryLLMFn = args.queryLLMOverride ?? queryLLM2;
4284
4284
  const messages = [
4285
4285
  {
@@ -6672,7 +6672,7 @@ var FileEditTool = {
6672
6672
  const originalFileContent = currentFileContent;
6673
6673
  let totalPatch = [];
6674
6674
  const { SmartEdit } = await import("./smart-edit-AWHJDSU6.js");
6675
- const { findLspAnchor } = await import("./lspAnchor-P7MO5SU4.js");
6675
+ const { findLspAnchor } = await import("./lspAnchor-ZC7I7COT.js");
6676
6676
  for (const op of editOperations) {
6677
6677
  const normalizedSearch = normalizeLineEndings(op.search);
6678
6678
  const normalizedReplace = normalizeLineEndings(op.replace);
@@ -12175,7 +12175,7 @@ async function createAndStoreApiKey(accessToken) {
12175
12175
  }
12176
12176
  saveGlobalConfig(config2);
12177
12177
  try {
12178
- const { resetAnthropicClient } = await import("./llm-V3347QST.js");
12178
+ const { resetAnthropicClient } = await import("./llm-FH3V2XTE.js");
12179
12179
  resetAnthropicClient();
12180
12180
  } catch {
12181
12181
  }
@@ -16599,7 +16599,7 @@ async function refreshPluginRuntimeFromInstalls() {
16599
16599
  const existingRoots = getSessionPlugins().map((p) => p.rootDir);
16600
16600
  const dirs = Array.from(/* @__PURE__ */ new Set([...existingRoots, ...installedRoots]));
16601
16601
  if (dirs.length === 0) return [];
16602
- const { configureSessionPlugins } = await import("./pluginRuntime-IO5XRK4L.js");
16602
+ const { configureSessionPlugins } = await import("./pluginRuntime-IB7YAUZR.js");
16603
16603
  const { errors } = await configureSessionPlugins({ pluginDirs: dirs });
16604
16604
  return errors;
16605
16605
  }
@@ -17274,7 +17274,7 @@ async function call(onDone, context) {
17274
17274
  ModelConfig,
17275
17275
  {
17276
17276
  onClose: () => {
17277
- import("./model-26SYHHAI.js").then(({ reloadModelManager: reloadModelManager2 }) => {
17277
+ import("./model-QV7OOHHG.js").then(({ reloadModelManager: reloadModelManager2 }) => {
17278
17278
  reloadModelManager2();
17279
17279
  triggerModelConfigChange();
17280
17280
  onDone();
@@ -27163,7 +27163,7 @@ async function analyzeOutputWithLsp(output, exitCode) {
27163
27163
  if (exitCode !== 0 || errorCount > 0 || warningCount > 0) {
27164
27164
  try {
27165
27165
  const { isAbsolute: isAbsolute11, resolve: resolve16 } = await import("path");
27166
- const { getSessionRoot: getSessionRoot2 } = await import("./state-XKRSGBTM.js");
27166
+ const { getSessionRoot: getSessionRoot2 } = await import("./state-L4B23VCD.js");
27167
27167
  const lines = output.split("\n");
27168
27168
  const uniqueFiles = /* @__PURE__ */ new Set();
27169
27169
  const lspSuggestions = [];
@@ -27533,7 +27533,7 @@ var DeleteTool = {
27533
27533
  }
27534
27534
  if (!force) {
27535
27535
  try {
27536
- const { LspFacade: LspFacade2 } = await import("./lsp-XNRBMNJ7.js");
27536
+ const { LspFacade: LspFacade2 } = await import("./lsp-HMODWV7I.js");
27537
27537
  const referenceDetail = await LspFacade2.checkFileReferences(fullPath);
27538
27538
  if (referenceDetail) {
27539
27539
  failedItems.push(
@@ -38042,7 +38042,7 @@ function useStatusLine() {
38042
38042
  // src/ui/components/PromptInput.tsx
38043
38043
  async function interpretHashCommand(input) {
38044
38044
  try {
38045
- const { queryQuick: queryQuick2 } = await import("./llm-V3347QST.js");
38045
+ const { queryQuick: queryQuick2 } = await import("./llm-FH3V2XTE.js");
38046
38046
  const systemPrompt = [
38047
38047
  "You're helping the user structure notes that will be added to their PYB.md file.",
38048
38048
  "Format the user's input into a well-structured note that will be useful for later reference.",
@@ -38355,7 +38355,7 @@ function PromptInput({
38355
38355
  if (messages2.length) {
38356
38356
  if (mode === "bash") {
38357
38357
  onQuery(messages2, newAbortController).then(async () => {
38358
- const { getCwd: getCwd2 } = await import("./state-XKRSGBTM.js");
38358
+ const { getCwd: getCwd2 } = await import("./state-L4B23VCD.js");
38359
38359
  setCurrentPwd(getCwd2());
38360
38360
  });
38361
38361
  } else {
@@ -39985,7 +39985,7 @@ import { homedir as homedir8 } from "os";
39985
39985
  // src/commands/agents/generation.ts
39986
39986
  import { randomUUID as randomUUID9 } from "crypto";
39987
39987
  async function generateAgentWithClaude(prompt) {
39988
- const { queryModel } = await import("./llm-V3347QST.js");
39988
+ const { queryModel } = await import("./llm-FH3V2XTE.js");
39989
39989
  const systemPrompt = `You are an expert at creating AI agent configurations. Based on the user's description, generate a specialized agent configuration.
39990
39990
 
39991
39991
  Return your response as a JSON object with exactly these fields:
@@ -5,7 +5,7 @@ import {
5
5
  getSessionStoreFlags,
6
6
  recordSessionSqlDualWriteFailure,
7
7
  recordSessionSqlDualWriteSuccess
8
- } from "./chunk-5SUIEQUY.js";
8
+ } from "./chunk-7KPPJFGR.js";
9
9
  import {
10
10
  isUuid
11
11
  } from "./chunk-5P7HBXTD.js";
@@ -18,10 +18,10 @@ import {
18
18
  PLAN_SLUG_VERBS,
19
19
  getCwd,
20
20
  resolveXdgDataPath
21
- } from "./chunk-2C57X27A.js";
21
+ } from "./chunk-MV747DN6.js";
22
22
  import {
23
23
  MACRO
24
- } from "./chunk-STUPRWGG.js";
24
+ } from "./chunk-SEJZHZ5F.js";
25
25
 
26
26
  // src/utils/protocol/pybAgentSessionResume.ts
27
27
  import { existsSync as existsSync2, readdirSync, readFileSync as readFileSync2, statSync as statSync2 } from "fs";
@@ -4,10 +4,10 @@ import {
4
4
  PRODUCT_NAME,
5
5
  execFileNoThrow,
6
6
  logError
7
- } from "./chunk-2C57X27A.js";
7
+ } from "./chunk-MV747DN6.js";
8
8
  import {
9
9
  MACRO
10
- } from "./chunk-STUPRWGG.js";
10
+ } from "./chunk-SEJZHZ5F.js";
11
11
 
12
12
  // src/utils/session/autoUpdater.ts
13
13
  async function getSemver() {
@@ -82,7 +82,7 @@ async function checkAndNotifyUpdate() {
82
82
  const [
83
83
  { isAutoUpdaterDisabled, getGlobalConfig, saveGlobalConfig },
84
84
  { env }
85
- ] = await Promise.all([import("./config-4QNQCWSM.js"), import("./env-7IW5VY72.js")]);
85
+ ] = await Promise.all([import("./config-D5UJFGPG.js"), import("./env-6IPMBPS4.js")]);
86
86
  if (await isAutoUpdaterDisabled()) return;
87
87
  if (await env.getIsDocker()) return;
88
88
  if (!await env.hasInternetAccess()) return;
@@ -7,14 +7,14 @@ import {
7
7
  getSettingsFileCandidates,
8
8
  loadSettingsWithLegacyFallback,
9
9
  saveSettingsToPrimaryAndSyncLegacy
10
- } from "./chunk-4MUOJDIX.js";
10
+ } from "./chunk-MJT2BJLD.js";
11
11
  import {
12
12
  getSessionPlugins
13
13
  } from "./chunk-BJSWTHRM.js";
14
14
  import {
15
15
  getCwd,
16
16
  getXdgConfigDir
17
- } from "./chunk-2C57X27A.js";
17
+ } from "./chunk-MV747DN6.js";
18
18
 
19
19
  // src/services/ui/outputStyles.ts
20
20
  import figures from "figures";
@@ -60,7 +60,7 @@ function updateLocalSettings(patch, options) {
60
60
  }
61
61
 
62
62
  // src/services/ui/outputStyles.ts
63
- var DEFAULT_OUTPUT_STYLE = "default";
63
+ var DEFAULT_OUTPUT_STYLE = "Explanatory";
64
64
  var getRuntimeDirname = () => {
65
65
  try {
66
66
  return __dirname;
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/services/ui/outputStyles.ts", "../src/utils/config/localSettings.ts"],
4
+ "sourcesContent": ["import figures from 'figures'\nimport { memoize } from 'lodash-es'\nimport { existsSync, readdirSync, readFileSync, statSync } from 'fs'\nimport { basename, dirname, join, resolve } from 'path'\nimport { homedir } from 'os'\nimport { fileURLToPath } from 'url'\nimport matter from 'gray-matter'\nimport yaml from 'js-yaml'\nimport { getSessionPlugins } from '@utils/session/sessionPlugins'\nimport { readLocalSettings, updateLocalSettings } from '@utils/config/localSettings'\nimport { getCwd } from '@utils/state'\nimport { isSettingSourceEnabled } from '@utils/config/settingSources'\nimport { getXdgConfigDir } from '@utils/config/env'\n\nexport type OutputStyleSource =\n | 'built-in'\n | 'plugin'\n | 'userSettings'\n | 'projectSettings'\n | 'policySettings'\n\nexport type OutputStyleDefinition = {\n name: string\n description: string\n prompt: string\n source: OutputStyleSource\n keepCodingInstructions?: boolean\n}\n\nexport type OutputStyleMap = Record<string, OutputStyleDefinition | null>\n\nexport const DEFAULT_OUTPUT_STYLE = 'Explanatory'\n\nconst getRuntimeDirname = () => {\n try {\n return __dirname\n } catch {\n return dirname(fileURLToPath(import.meta.url))\n }\n}\n\nconst runtimeDirname = getRuntimeDirname()\n\nfunction normalizeString(value: unknown): string | null {\n if (typeof value !== 'string') return null\n const trimmed = value.trim()\n return trimmed ? trimmed : null\n}\n\nfunction getClaudePolicyBaseDir(): string {\n switch (process.platform) {\n case 'darwin':\n return '/Library/Application Support/ClaudeCode'\n case 'win32':\n return existsSync('C:\\\\Program Files\\\\ClaudeCode')\n ? 'C:\\\\Program Files\\\\ClaudeCode'\n : 'C:\\\\ProgramData\\\\ClaudeCode'\n default:\n return '/etc/claude-code'\n }\n}\n\nfunction getUserConfigBaseDirs(): { claude: string; pyb: string }[] {\n const out: { claude: string; pyb: string }[] = []\n\n const hasAnyOverride =\n typeof process.env.CLAUDE_CONFIG_DIR === 'string' ||\n typeof process.env.PYB_CONFIG_DIR === 'string'\n\n const claudeBase = normalizeString(process.env.CLAUDE_CONFIG_DIR)\n const pybBase = normalizeString(process.env.PYB_CONFIG_DIR)\n\n if (claudeBase) out.push({ claude: resolve(claudeBase), pyb: resolve(claudeBase) })\n if (pybBase) out.push({ claude: resolve(pybBase), pyb: resolve(pybBase) })\n\n if (hasAnyOverride) {\n return dedupeConfigBases(out)\n }\n\n return dedupeConfigBases([\n { claude: getXdgConfigDir(), pyb: getXdgConfigDir() },\n { claude: join(homedir(), '.claude'), pyb: join(homedir(), '.claude') },\n { claude: join(homedir(), '.pyb'), pyb: join(homedir(), '.pyb') },\n ])\n}\n\nfunction dedupeConfigBases(\n bases: Array<{ claude: string; pyb: string }>,\n): Array<{ claude: string; pyb: string }> {\n const seen = new Set<string>()\n const out: Array<{ claude: string; pyb: string }> = []\n for (const base of bases) {\n const key = `${base.claude}::${base.pyb}`\n if (seen.has(key)) continue\n seen.add(key)\n out.push(base)\n }\n return out\n}\n\nfunction findProjectSubdirs(subdir: string, cwd: string): string[] {\n const result: string[] = []\n const home = resolve(homedir())\n let current = resolve(cwd)\n\n while (current !== home) {\n const claudeDir = join(current, '.claude', subdir)\n if (existsSync(claudeDir)) result.push(claudeDir)\n\n const pybDir = join(current, '.pyb', subdir)\n if (existsSync(pybDir)) result.push(pybDir)\n\n const parent = dirname(current)\n if (parent === current) break\n current = parent\n }\n\n return result\n}\n\nfunction markdownFirstLineOrHeading(content: string, fallback: string): string {\n const lines = content.split('\\n')\n for (const line of lines) {\n const trimmed = line.trim()\n if (!trimmed) continue\n const heading = trimmed.match(/^#+\\s+(.+)$/)?.[1] ?? trimmed\n return heading.length > 100 ? `${heading.substring(0, 97)}...` : heading\n }\n return fallback\n}\n\nfunction resolveBuiltInOutputStyleDirs(): string[] {\n const dirs: string[] = []\n const envDir = normalizeString(process.env.PYB_OUTPUT_STYLE_DIR)\n if (envDir) dirs.push(resolve(envDir))\n\n if (runtimeDirname.includes('dist') || runtimeDirname.includes('node_modules')) {\n dirs.push(resolve(runtimeDirname, '../resources/output-styles'))\n } else {\n dirs.push(resolve(runtimeDirname, '../../../resources/output-styles'))\n }\n\n return Array.from(new Set(dirs))\n}\n\nfunction listMarkdownFilesRecursively(rootDir: string): string[] {\n const files: string[] = []\n const visitedDirs = new Set<string>()\n\n const walk = (dirPath: string) => {\n let dirStat: ReturnType<typeof statSync>\n try {\n dirStat = statSync(dirPath)\n } catch {\n return\n }\n if (!dirStat.isDirectory()) return\n\n const dirKey = `${dirStat.dev}:${dirStat.ino}`\n if (visitedDirs.has(dirKey)) return\n visitedDirs.add(dirKey)\n\n let entries: Array<{ name: string; isDirectory(): boolean; isFile(): boolean; isSymbolicLink(): boolean }>\n try {\n entries = readdirSync(dirPath, { withFileTypes: true, encoding: 'utf8' }) as any\n } catch {\n return\n }\n\n for (const entry of entries) {\n const name = String(entry.name ?? '')\n const fullPath = join(dirPath, name)\n\n if (entry.isDirectory()) {\n walk(fullPath)\n continue\n }\n\n if (entry.isFile()) {\n if (name.endsWith('.md')) files.push(fullPath)\n continue\n }\n\n if (entry.isSymbolicLink()) {\n try {\n const st = statSync(fullPath)\n if (st.isDirectory()) {\n walk(fullPath)\n } else if (st.isFile() && name.endsWith('.md')) {\n files.push(fullPath)\n }\n } catch {\n continue\n }\n }\n }\n }\n\n if (!existsSync(rootDir)) return []\n walk(rootDir)\n return files\n}\n\nfunction readMarkdownFile(filePath: string): { frontmatter: any; content: string } | null {\n try {\n const raw = readFileSync(filePath, 'utf8')\n const yamlSchema = (yaml as any).JSON_SCHEMA\n const matterOptions = {\n engines: {\n yaml: {\n parse: (input: string) =>\n yaml.load(input, yamlSchema ? { schema: yamlSchema } : undefined) ??\n {},\n },\n },\n }\n const parsed = matter(raw, matterOptions)\n return { frontmatter: (parsed.data as any) ?? {}, content: String(parsed.content ?? '') }\n } catch {\n return null\n }\n}\n\nfunction inodeKeyForPath(filePath: string): string | null {\n try {\n const st = statSync(filePath)\n if (typeof (st as any).dev === 'number' && typeof (st as any).ino === 'number') {\n return `${(st as any).dev}:${(st as any).ino}`\n }\n return null\n } catch {\n return null\n }\n}\n\nfunction parseBuiltInOutputStyleFile(options: {\n filePath: string\n}): OutputStyleDefinition | null {\n const parsed = readMarkdownFile(options.filePath)\n if (!parsed) return null\n\n const base = basename(options.filePath, '.md')\n const name = normalizeString(parsed.frontmatter?.name) ?? base\n const description =\n normalizeString(parsed.frontmatter?.description) ??\n markdownFirstLineOrHeading(parsed.content, `Built-in ${base} output style`)\n const keepCodingInstructions = parseKeepCodingInstructions(\n parsed.frontmatter?.['keep-coding-instructions'],\n )\n const prompt = parsed.content.trim()\n if (!prompt) return null\n\n return {\n name,\n description,\n prompt,\n source: 'built-in',\n ...(keepCodingInstructions !== undefined ? { keepCodingInstructions } : {}),\n }\n}\n\nfunction loadBundledOutputStyles(): OutputStyleDefinition[] {\n const out: OutputStyleDefinition[] = []\n const seen = new Set<string>()\n for (const dirPath of resolveBuiltInOutputStyleDirs()) {\n for (const filePath of listMarkdownFilesRecursively(dirPath)) {\n const inodeKey = inodeKeyForPath(filePath)\n const dedupeKey = inodeKey ? `inode:${inodeKey}` : `path:${filePath}`\n if (seen.has(dedupeKey)) continue\n seen.add(dedupeKey)\n const style = parseBuiltInOutputStyleFile({ filePath })\n if (style && style.name !== DEFAULT_OUTPUT_STYLE) out.push(style)\n }\n }\n return out\n}\n\nconst INSIGHTS_SECTION = `\n## Insights\nIn order to encourage learning, before and after writing code, always provide brief educational explanations about implementation choices using (with backticks):\n\"\\`${figures.star} Insight \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\`\n[2-3 key educational points]\n\\`\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\`\"\n\nThese insights should be included in the conversation, not in the codebase. You should generally focus on interesting insights that are specific to the codebase or the code you just wrote, rather than general programming concepts.`\n\nfunction getBuiltInOutputStyles(): OutputStyleMap {\n const builtIn: OutputStyleMap = {\n [DEFAULT_OUTPUT_STYLE]: null,\n Explanatory: {\n name: 'Explanatory',\n source: 'built-in',\n description: 'Claude explains its implementation choices and codebase patterns',\n keepCodingInstructions: true,\n prompt: `You are an interactive CLI tool that helps users with software engineering tasks. In addition to software engineering tasks, you should provide educational insights about the codebase along the way.\n\nYou should be clear and educational, providing helpful explanations while remaining focused on the task. Balance educational content with task completion. When providing insights, you may exceed typical length constraints, but remain focused and relevant.\n\n# Explanatory Style Active\n${INSIGHTS_SECTION}`,\n },\n Learning: {\n name: 'Learning',\n source: 'built-in',\n description:\n 'Claude pauses and asks you to write small pieces of code for hands-on practice',\n keepCodingInstructions: true,\n prompt: `You are an interactive CLI tool that helps users with software engineering tasks. In addition to software engineering tasks, you should help users learn more about the codebase through hands-on practice and educational insights.\n\nYou should be collaborative and encouraging. Balance task completion with learning by requesting user input for meaningful design decisions while handling routine implementation yourself. \n\n# Learning Style Active\n## Requesting Human Contributions\nIn order to encourage learning, ask the human to contribute 2-10 line code pieces when generating 20+ lines involving:\n- Design decisions (error handling, data structures)\n- Business logic with multiple valid approaches \n- Key algorithms or interface definitions\n\n**TodoList Integration**: If using a TodoList for the overall task, include a specific todo item like \"Request human input on [specific decision]\" when planning to request human input. This ensures proper task tracking. Note: TodoList is not required for all tasks.\n\nExample TodoList flow:\n \u2713 \"Set up component structure with placeholder for logic\"\n \u2713 \"Request human collaboration on decision logic implementation\"\n \u2713 \"Integrate contribution and complete feature\"\n\n### Request Format\n\\`\\`\\`\n${figures.bullet} **Learn by Doing**\n**Context:** [what's built and why this decision matters]\n**Your Task:** [specific function/section in file, mention file and TODO(human) but do not include line numbers]\n**Guidance:** [trade-offs and constraints to consider]\n\\`\\`\\`\n\n### Key Guidelines\n- Frame contributions as valuable design decisions, not busy work\n- You must first add a TODO(human) section into the codebase with your editing tools before making the Learn by Doing request \n- Make sure there is one and only one TODO(human) section in the code\n- Don't take any action or output anything after the Learn by Doing request. Wait for human implementation before proceeding.\n\n### Example Requests\n\n**Whole Function Example:**\n\\`\\`\\`\n${figures.bullet} **Learn by Doing**\n\n**Context:** I've set up the hint feature UI with a button that triggers the hint system. The infrastructure is ready: when clicked, it calls selectHintCell() to determine which cell to hint, then highlights that cell with a yellow background and shows possible values. The hint system needs to decide which empty cell would be most helpful to reveal to the user.\n\n**Your Task:** In sudoku.js, implement the selectHintCell(board) function. Look for TODO(human). This function should analyze the board and return {row, col} for the best cell to hint, or null if the puzzle is complete.\n\n**Guidance:** Consider multiple strategies: prioritize cells with only one possible value (naked singles), or cells that appear in rows/columns/boxes with many filled cells. You could also consider a balanced approach that helps without making it too easy. The board parameter is a 9x9 array where 0 represents empty cells.\n\\`\\`\\`\n\n**Partial Function Example:**\n\\`\\`\\`\n${figures.bullet} **Learn by Doing**\n\n**Context:** I've built a file upload component that validates files before accepting them. The main validation logic is complete, but it needs specific handling for different file type categories in the switch statement.\n\n**Your Task:** In upload.js, inside the validateFile() function's switch statement, implement the 'case \"document\":' branch. Look for TODO(human). This should validate document files (pdf, doc, docx).\n\n**Guidance:** Consider checking file size limits (maybe 10MB for documents?), validating the file extension matches the MIME type, and returning {valid: boolean, error?: string}. The file object has properties: name, size, type.\n\\`\\`\\`\n\n**Debugging Example:**\n\\`\\`\\`\n${figures.bullet} **Learn by Doing**\n\n**Context:** The user reported that number inputs aren't working correctly in the calculator. I've identified the handleInput() function as the likely source, but need to understand what values are being processed.\n\n**Your Task:** In calculator.js, inside the handleInput() function, add 2-3 console.log statements after the TODO(human) comment to help debug why number inputs fail.\n\n**Guidance:** Consider logging: the raw input value, the parsed result, and any validation state. This will help us understand where the conversion breaks.\n\\`\\`\\`\n\n### After Contributions\nShare one insight connecting their code to broader patterns or system effects. Avoid praise or repetition.\n\n## Insights\n${INSIGHTS_SECTION}`,\n },\n }\n for (const style of loadBundledOutputStyles()) {\n builtIn[style.name] = style\n }\n return builtIn\n}\n\nfunction parseKeepCodingInstructions(value: unknown): boolean | undefined {\n if (value === 'true') return true\n if (value === 'false') return false\n return undefined\n}\n\nfunction parseCustomOutputStyleFile(options: {\n filePath: string\n source: Exclude<OutputStyleSource, 'built-in' | 'plugin'>\n}): OutputStyleDefinition | null {\n const parsed = readMarkdownFile(options.filePath)\n if (!parsed) return null\n\n const base = basename(options.filePath, '.md')\n const name = normalizeString(parsed.frontmatter?.name) ?? base\n const description =\n normalizeString(parsed.frontmatter?.description) ??\n markdownFirstLineOrHeading(parsed.content, `Custom ${base} output style`)\n const keepCodingInstructions = parseKeepCodingInstructions(\n parsed.frontmatter?.['keep-coding-instructions'],\n )\n const prompt = parsed.content.trim()\n\n return {\n name,\n description,\n prompt,\n source: options.source,\n ...(keepCodingInstructions !== undefined ? { keepCodingInstructions } : {}),\n }\n}\n\nfunction parsePluginOutputStyleFile(options: {\n filePath: string\n pluginName: string\n seen: Set<string>\n}): OutputStyleDefinition | null {\n const inodeKey = inodeKeyForPath(options.filePath)\n const dedupeKey = inodeKey ? `inode:${inodeKey}` : `path:${options.filePath}`\n if (options.seen.has(dedupeKey)) return null\n options.seen.add(dedupeKey)\n\n const parsed = readMarkdownFile(options.filePath)\n if (!parsed) return null\n\n const base = basename(options.filePath, '.md')\n const styleName = normalizeString(parsed.frontmatter?.name) ?? base\n const fullName = `${options.pluginName}:${styleName}`\n const description =\n normalizeString(parsed.frontmatter?.description) ??\n markdownFirstLineOrHeading(\n parsed.content,\n `Output style from ${options.pluginName} plugin`,\n )\n const prompt = parsed.content.trim()\n\n return {\n name: fullName,\n description,\n prompt,\n source: 'plugin',\n }\n}\n\nfunction loadPluginOutputStyles(): OutputStyleDefinition[] {\n const out: OutputStyleDefinition[] = []\n const plugins = getSessionPlugins()\n for (const plugin of plugins) {\n const pluginName = plugin.name\n const seen = new Set<string>()\n for (const dir of plugin.outputStylesDirs ?? []) {\n let st: ReturnType<typeof statSync>\n try {\n st = statSync(dir)\n } catch {\n continue\n }\n if (st.isFile()) {\n if (!dir.endsWith('.md')) continue\n const style = parsePluginOutputStyleFile({\n filePath: dir,\n pluginName,\n seen,\n })\n if (style) out.push(style)\n continue\n }\n\n if (st.isDirectory()) {\n const files = listMarkdownFilesRecursively(dir)\n for (const filePath of files) {\n const style = parsePluginOutputStyleFile({\n filePath,\n pluginName,\n seen,\n })\n if (style) out.push(style)\n }\n }\n }\n }\n return out\n}\n\nfunction loadCustomOutputStyles(options: { cwd: string }): OutputStyleDefinition[] {\n const out: OutputStyleDefinition[] = []\n const seen = new Set<string>()\n\n const policyDir = join(\n getClaudePolicyBaseDir(),\n '.claude',\n 'output-styles',\n )\n for (const filePath of listMarkdownFilesRecursively(policyDir)) {\n const inodeKey = inodeKeyForPath(filePath)\n const dedupeKey = inodeKey ? `inode:${inodeKey}` : `path:${filePath}`\n if (seen.has(dedupeKey)) continue\n seen.add(dedupeKey)\n const style = parseCustomOutputStyleFile({\n filePath,\n source: 'policySettings',\n })\n if (style) out.push(style)\n }\n\n if (isSettingSourceEnabled('userSettings')) {\n const userBases = getUserConfigBaseDirs()\n for (const base of userBases) {\n for (const userBaseDir of new Set([base.claude, base.pyb])) {\n const dirPath = join(userBaseDir, 'output-styles')\n for (const filePath of listMarkdownFilesRecursively(dirPath)) {\n const inodeKey = inodeKeyForPath(filePath)\n const dedupeKey = inodeKey ? `inode:${inodeKey}` : `path:${filePath}`\n if (seen.has(dedupeKey)) continue\n seen.add(dedupeKey)\n const style = parseCustomOutputStyleFile({\n filePath,\n source: 'userSettings',\n })\n if (style) out.push(style)\n }\n }\n }\n }\n\n if (isSettingSourceEnabled('projectSettings')) {\n for (const dirPath of findProjectSubdirs('output-styles', options.cwd)) {\n for (const filePath of listMarkdownFilesRecursively(dirPath)) {\n const inodeKey = inodeKeyForPath(filePath)\n const dedupeKey = inodeKey ? `inode:${inodeKey}` : `path:${filePath}`\n if (seen.has(dedupeKey)) continue\n seen.add(dedupeKey)\n const style = parseCustomOutputStyleFile({\n filePath,\n source: 'projectSettings',\n })\n if (style) out.push(style)\n }\n }\n }\n\n return out\n}\n\nexport const getAvailableOutputStyles = memoize((): OutputStyleMap => {\n const cwd = getCwd()\n const builtIn = getBuiltInOutputStyles()\n const merged: OutputStyleMap = { ...builtIn }\n\n for (const style of loadPluginOutputStyles()) {\n merged[style.name] = style\n }\n\n const custom = loadCustomOutputStyles({ cwd })\n const user = custom.filter(s => s.source === 'userSettings')\n const project = custom.filter(s => s.source === 'projectSettings')\n const policy = custom.filter(s => s.source === 'policySettings')\n\n for (const style of user) merged[style.name] = style\n for (const style of project) merged[style.name] = style\n for (const style of policy) merged[style.name] = style\n\n return merged\n})\n\nexport function clearOutputStyleCache(): void {\n ;(getAvailableOutputStyles as any).cache?.clear?.()\n}\n\nexport function getCurrentOutputStyle(): string {\n if (!isSettingSourceEnabled('localSettings')) return DEFAULT_OUTPUT_STYLE\n\n const settings = readLocalSettings()\n const candidate = normalizeString(settings.outputStyle)\n return candidate ?? DEFAULT_OUTPUT_STYLE\n}\n\nexport function setCurrentOutputStyle(styleName: string): void {\n updateLocalSettings({ outputStyle: styleName })\n}\n\nexport function resolveOutputStyleName(input: string): string | null {\n const raw = normalizeString(input)\n if (!raw) return null\n const styles = getAvailableOutputStyles()\n if (raw in styles) return raw\n const lower = raw.toLowerCase()\n for (const name of Object.keys(styles)) {\n if (name.toLowerCase() === lower) return name\n }\n return null\n}\n\nexport function getCurrentOutputStyleDefinition(): OutputStyleDefinition | null {\n const current = getCurrentOutputStyle()\n const styles = getAvailableOutputStyles()\n return styles[current] ?? null\n}\n\nexport function getOutputStyleSystemPromptAdditions(): string[] {\n const style = getCurrentOutputStyleDefinition()\n if (!style) return []\n const prompt = style.prompt.trim()\n if (!prompt) return []\n return [`\\n# Output Style: ${style.name}\\n${prompt}\\n`]\n}\n", "import { join } from 'path'\nimport { getCwd } from '@utils/state'\nimport {\n getSettingsFileCandidates,\n loadSettingsWithLegacyFallback,\n saveSettingsToPrimaryAndSyncLegacy,\n} from '@utils/config/settingsFiles'\n\nexport type LocalSettings = {\n outputStyle?: unknown\n [key: string]: unknown\n}\n\nexport function getLocalSettingsPath(options?: {\n projectDir?: string\n}): string {\n const projectDir = options?.projectDir ?? getCwd()\n return join(projectDir, '.pyb', 'settings.local.json')\n}\n\nexport function readLocalSettings(options?: {\n projectDir?: string\n}): LocalSettings {\n const projectDir = options?.projectDir ?? getCwd()\n const loaded = loadSettingsWithLegacyFallback({\n destination: 'localSettings',\n projectDir,\n migrateToPrimary: true,\n })\n return (loaded.settings as LocalSettings | null) ?? {}\n}\n\nexport function updateLocalSettings(\n patch: Record<string, unknown>,\n options?: {\n projectDir?: string\n },\n): LocalSettings {\n const projectDir = options?.projectDir ?? getCwd()\n const candidates = getSettingsFileCandidates({\n destination: 'localSettings',\n projectDir,\n })\n const existing =\n (candidates\n ? loadSettingsWithLegacyFallback({\n destination: 'localSettings',\n projectDir,\n migrateToPrimary: true,\n }).settings\n : null) ?? {}\n\n const next = { ...(existing as Record<string, unknown>), ...patch }\n\n if (candidates) {\n saveSettingsToPrimaryAndSyncLegacy({\n destination: 'localSettings',\n projectDir,\n settings: next,\n syncLegacyIfExists: true,\n })\n }\n\n return next as LocalSettings\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -3,7 +3,7 @@ const require = __pybCreateRequire(import.meta.url);
3
3
 
4
4
  // src/services/ai/llmLazy.ts
5
5
  async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal, options) {
6
- const { queryLLM: inner } = await import("./llm-V3347QST.js");
6
+ const { queryLLM: inner } = await import("./llm-FH3V2XTE.js");
7
7
  return inner(
8
8
  messages,
9
9
  systemPrompt,
@@ -14,15 +14,15 @@ async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal
14
14
  );
15
15
  }
16
16
  async function queryQuick(args) {
17
- const { queryQuick: inner } = await import("./llm-V3347QST.js");
17
+ const { queryQuick: inner } = await import("./llm-FH3V2XTE.js");
18
18
  return inner(args);
19
19
  }
20
20
  async function verifyApiKey(apiKey, baseURL, provider) {
21
- const { verifyApiKey: inner } = await import("./llm-V3347QST.js");
21
+ const { verifyApiKey: inner } = await import("./llm-FH3V2XTE.js");
22
22
  return inner(apiKey, baseURL, provider);
23
23
  }
24
24
  async function fetchAnthropicModels(apiKey, baseURL) {
25
- const { fetchAnthropicModels: inner } = await import("./llm-V3347QST.js");
25
+ const { fetchAnthropicModels: inner } = await import("./llm-FH3V2XTE.js");
26
26
  return inner(apiKey, baseURL);
27
27
  }
28
28
 
@@ -3,7 +3,7 @@ const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  getCwd,
5
5
  logError
6
- } from "./chunk-2C57X27A.js";
6
+ } from "./chunk-MV747DN6.js";
7
7
 
8
8
  // src/utils/config/settingsFiles.ts
9
9
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -2,15 +2,15 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  loadSettingsWithLegacyFallback
5
- } from "./chunk-4MUOJDIX.js";
5
+ } from "./chunk-MJT2BJLD.js";
6
6
  import {
7
7
  debug
8
- } from "./chunk-5UFPCFNE.js";
8
+ } from "./chunk-6QEIHAGS.js";
9
9
  import {
10
10
  env,
11
11
  getSessionRoot,
12
12
  resolveXdgDataPath
13
- } from "./chunk-2C57X27A.js";
13
+ } from "./chunk-MV747DN6.js";
14
14
  import {
15
15
  __require
16
16
  } from "./chunk-I3J4JYES.js";
@@ -2,7 +2,7 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  MACRO
5
- } from "./chunk-STUPRWGG.js";
5
+ } from "./chunk-SEJZHZ5F.js";
6
6
 
7
7
  // src/utils/state/index.ts
8
8
  import { cwd } from "process";
@@ -3,13 +3,13 @@ const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  getSettingsFileCandidates,
5
5
  loadSettingsWithLegacyFallback
6
- } from "./chunk-4MUOJDIX.js";
6
+ } from "./chunk-MJT2BJLD.js";
7
7
  import {
8
8
  getSessionPlugins
9
9
  } from "./chunk-BJSWTHRM.js";
10
10
  import {
11
11
  getTheme
12
- } from "./chunk-JRB5DIF6.js";
12
+ } from "./chunk-X5IT55SG.js";
13
13
  import {
14
14
  addMcprcServerForTesting,
15
15
  getCurrentProjectConfig,
@@ -19,13 +19,13 @@ import {
19
19
  safeParseJSON,
20
20
  saveCurrentProjectConfig,
21
21
  saveGlobalConfig
22
- } from "./chunk-JFZNITC4.js";
22
+ } from "./chunk-TLP5DVEM.js";
23
23
  import {
24
24
  PRODUCT_COMMAND,
25
25
  PRODUCT_NAME,
26
26
  getCwd,
27
27
  logMCPError
28
- } from "./chunk-2C57X27A.js";
28
+ } from "./chunk-MV747DN6.js";
29
29
 
30
30
  // src/services/mcp/client.ts
31
31
  import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
@@ -2,7 +2,7 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  PERSISTENCE_VERSION
5
- } from "./chunk-53EPWNTO.js";
5
+ } from "./chunk-44H5ROEF.js";
6
6
 
7
7
  // src/utils/session/conversationMessageState.ts
8
8
  function mapFinishReason(rawReason) {
@@ -2,11 +2,11 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  listAllContentFiles
5
- } from "./chunk-TSIPE63V.js";
5
+ } from "./chunk-YWK2UVTO.js";
6
6
  import {
7
7
  getCwd,
8
8
  logError
9
- } from "./chunk-2C57X27A.js";
9
+ } from "./chunk-MV747DN6.js";
10
10
 
11
11
  // src/utils/fs/file.ts
12
12
  import {
@@ -4,7 +4,7 @@ const require = __pybCreateRequire(import.meta.url);
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "pybao-cli",
7
- version: "1.5.35",
7
+ version: "1.5.36",
8
8
  bin: {
9
9
  pyb: "cli.js",
10
10
  "pyb-acp": "cli-acp.js"
@@ -75,6 +75,7 @@ var package_default = {
75
75
  "check:sdk-tool-contract": "node scripts/sdk-tool-contract-gate.mjs",
76
76
  "check:sdk-runtime-publish": "node scripts/sdk-runtime-publish-gate.mjs",
77
77
  "check:runtime-mcp-control": "node scripts/runtime-mcp-control-gate.mjs",
78
+ "check:runtime-mcp-contract-freeze": "node scripts/runtime-mcp-contract-freeze-gate.mjs",
78
79
  "check:sdk-session-contract": "node scripts/sdk-session-contract-gate.mjs",
79
80
  "check:openapi-diff-budget": "node scripts/sdk-openapi-diff-gate.mjs",
80
81
  "check:sdk-events-source": "node scripts/sdk-events-source-gate.mjs",
@@ -98,7 +99,7 @@ var package_default = {
98
99
  "test:integration": "bun test tests/integration",
99
100
  "test:sdk-integration": "bun test tests/integration/server/sdk-client.test.ts",
100
101
  "test:e2e": "bun test tests/e2e",
101
- "test:server": "bun test tests/unit/sdk-batch-a-closure.test.ts tests/unit/sdk-batch-aa-single-source.test.ts tests/unit/sdk-batch-b-queryrunner.test.ts tests/unit/sdk-batch-c-sse.test.ts tests/unit/sdk-batch-c1-mcp-runtime.test.ts tests/unit/sdk-batch-d-openapi.test.ts tests/unit/sdk-batch-e-capability.test.ts tests/unit/sdk-batch-f-release.test.ts tests/unit/sdk-batch-g-generation.test.ts tests/unit/sdk-batch-h-facade.test.ts tests/unit/sdk-batch-i-lifecycle.test.ts tests/unit/sdk-batch-j-sse-first-class.test.ts tests/unit/sdk-batch-k-release-gate.test.ts tests/unit/sdk-batch-l-mapping-baseline.test.ts tests/unit/sdk-batch-m-docs-deprecate.test.ts tests/unit/sdk-batch-n-window-block.test.ts tests/unit/sdk-batch-o-major-cutover.test.ts tests/unit/sdk-batch-p-governance-closeout.test.ts tests/unit/sdk-batch-q1-runtime-guard.test.ts tests/unit/sdk-batch-q2-contract-capability.test.ts tests/unit/sdk-batch-q3-legacy-semantics.test.ts tests/unit/sdk-batch-r0-blockers.test.ts tests/unit/sdk-batch-r0-runtime-query-consistency.test.ts tests/unit/sdk-batch-r1-runtime-minimal.test.ts tests/unit/sdk-batch-r3-runtime-publish.test.ts tests/unit/sdk-batch-r-generation-layer.test.ts tests/unit/sdk-batch-s-diff-budget.test.ts tests/unit/sdk-batch-t-bridge-consistency.test.ts tests/unit/sdk-batch-u0-precheck.test.ts tests/unit/sdk-batch-u-contract-coverage.test.ts tests/unit/sdk-batch-u1-type-context.test.ts tests/unit/sdk-batch-u2-tool-contract.test.ts tests/unit/sdk-batch-v-transport-unification.test.ts tests/unit/sdk-batch-w-governance-hard-gate.test.ts tests/unit/sdk-batch-z-retirement-closeout.test.ts",
102
+ "test:server": "bun test tests/unit/sdk-batch-a-closure.test.ts tests/unit/sdk-batch-aa-single-source.test.ts tests/unit/sdk-batch-b-queryrunner.test.ts tests/unit/sdk-batch-c-sse.test.ts tests/unit/sdk-batch-c1-mcp-runtime.test.ts tests/unit/sdk-batch-d-openapi.test.ts tests/unit/sdk-batch-e-capability.test.ts tests/unit/sdk-batch-f-release.test.ts tests/unit/sdk-batch-g-generation.test.ts tests/unit/sdk-batch-h-facade.test.ts tests/unit/sdk-batch-i-lifecycle.test.ts tests/unit/sdk-batch-j-sse-first-class.test.ts tests/unit/sdk-batch-k-release-gate.test.ts tests/unit/sdk-batch-l-mapping-baseline.test.ts tests/unit/sdk-batch-m-docs-deprecate.test.ts tests/unit/sdk-batch-m0-mcp-contract-freeze.test.ts tests/unit/sdk-batch-m1-mcp-state-closure.test.ts tests/unit/sdk-batch-n-window-block.test.ts tests/unit/sdk-batch-o-major-cutover.test.ts tests/unit/sdk-batch-p-governance-closeout.test.ts tests/unit/sdk-batch-q1-runtime-guard.test.ts tests/unit/sdk-batch-q2-contract-capability.test.ts tests/unit/sdk-batch-q3-legacy-semantics.test.ts tests/unit/sdk-batch-r0-blockers.test.ts tests/unit/sdk-batch-r0-runtime-query-consistency.test.ts tests/unit/sdk-batch-r1-runtime-minimal.test.ts tests/unit/sdk-batch-r3-runtime-publish.test.ts tests/unit/sdk-batch-r-generation-layer.test.ts tests/unit/sdk-batch-s-diff-budget.test.ts tests/unit/sdk-batch-t-bridge-consistency.test.ts tests/unit/sdk-batch-u0-precheck.test.ts tests/unit/sdk-batch-u-contract-coverage.test.ts tests/unit/sdk-batch-u1-type-context.test.ts tests/unit/sdk-batch-u2-tool-contract.test.ts tests/unit/sdk-batch-v-transport-unification.test.ts tests/unit/sdk-batch-w-governance-hard-gate.test.ts tests/unit/sdk-batch-z-retirement-closeout.test.ts",
102
103
  "gate:runtime-assets": "bun run scripts/runtime-assets-gate-check.mjs",
103
104
  "preflight:runtime-assets": "node scripts/runtime-assets-preflight.mjs",
104
105
  "verify:runtime-assets": "node scripts/runtime-assets-verify.mjs",
@@ -122,7 +123,7 @@ var package_default = {
122
123
  "benchmark:typed-part-baseline": "bun scripts/typed-part-baseline-benchmark.mjs",
123
124
  "gate:typed-part-performance": "node scripts/typed-part-performance-gate.mjs",
124
125
  typecheck: "tsc --noEmit",
125
- "release:gate": "npm run generate:sdk && npm run check:sdk-generated && npm run generate:sdk-client && npm run check:sdk-client-generated && npm run check:openapi-diff-budget && npm run check:sdk-events-source && npm run check:sdk-bridge-consistency && npm run check:sdk-dual-track-retirement && npm run check:sdk-generated-transport-only && npm run generate:legacy-mapping && npm run check:legacy-usage && npm run report:legacy-usage-trend && npm run check:legacy-window && npm run check:docs-consistency && npm run check:major-cutover && npm run check:facade-closeout && npm run check:sdk-consistency && npm run check:sdk-contract-consistency && npm run check:sdk-runtime-publish && npm run check:runtime-mcp-control && npm run check:sdk-tool-contract && npm run check:sdk-session-contract && npm run check:sdk-legacy-semantics && npm run check:compat-window && npm run build:sdk && npm run test:server && npm run test:sdk-integration && npm run lint && npm run typecheck",
126
+ "release:gate": "npm run generate:sdk && npm run check:sdk-generated && npm run generate:sdk-client && npm run check:sdk-client-generated && npm run check:openapi-diff-budget && npm run check:sdk-events-source && npm run check:sdk-bridge-consistency && npm run check:sdk-dual-track-retirement && npm run check:sdk-generated-transport-only && npm run generate:legacy-mapping && npm run check:legacy-usage && npm run report:legacy-usage-trend && npm run check:legacy-window && npm run check:docs-consistency && npm run check:major-cutover && npm run check:facade-closeout && npm run check:sdk-consistency && npm run check:sdk-contract-consistency && npm run check:sdk-runtime-publish && npm run check:runtime-mcp-control && npm run check:runtime-mcp-contract-freeze && npm run check:sdk-tool-contract && npm run check:sdk-session-contract && npm run check:sdk-legacy-semantics && npm run check:compat-window && npm run build:sdk && npm run test:server && npm run test:sdk-integration && npm run lint && npm run typecheck",
126
127
  prepare: "bun run scripts/install-hooks.mjs",
127
128
  "sync:native-lock": "node scripts/sync-native-lock-versions.mjs",
128
129
  "publish:native-lock": "node scripts/publish-native-lock.mjs",