@qodo/sdk 0.1.0

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 (303) hide show
  1. package/LICENSE +118 -0
  2. package/README.md +121 -0
  3. package/dist/api/agent.d.ts +69 -0
  4. package/dist/api/agent.d.ts.map +1 -0
  5. package/dist/api/agent.js +1034 -0
  6. package/dist/api/agent.js.map +1 -0
  7. package/dist/api/analytics.d.ts +43 -0
  8. package/dist/api/analytics.d.ts.map +1 -0
  9. package/dist/api/analytics.js +163 -0
  10. package/dist/api/analytics.js.map +1 -0
  11. package/dist/api/http.d.ts +5 -0
  12. package/dist/api/http.d.ts.map +1 -0
  13. package/dist/api/http.js +59 -0
  14. package/dist/api/http.js.map +1 -0
  15. package/dist/api/index.d.ts +12 -0
  16. package/dist/api/index.d.ts.map +1 -0
  17. package/dist/api/index.js +17 -0
  18. package/dist/api/index.js.map +1 -0
  19. package/dist/api/taskTracking.d.ts +54 -0
  20. package/dist/api/taskTracking.d.ts.map +1 -0
  21. package/dist/api/taskTracking.js +208 -0
  22. package/dist/api/taskTracking.js.map +1 -0
  23. package/dist/api/types.d.ts +92 -0
  24. package/dist/api/types.d.ts.map +1 -0
  25. package/dist/api/types.js +2 -0
  26. package/dist/api/types.js.map +1 -0
  27. package/dist/api/utils.d.ts +8 -0
  28. package/dist/api/utils.d.ts.map +1 -0
  29. package/dist/api/utils.js +54 -0
  30. package/dist/api/utils.js.map +1 -0
  31. package/dist/api/websocket.d.ts +74 -0
  32. package/dist/api/websocket.d.ts.map +1 -0
  33. package/dist/api/websocket.js +685 -0
  34. package/dist/api/websocket.js.map +1 -0
  35. package/dist/auth/index.d.ts +25 -0
  36. package/dist/auth/index.d.ts.map +1 -0
  37. package/dist/auth/index.js +85 -0
  38. package/dist/auth/index.js.map +1 -0
  39. package/dist/clients/index.d.ts +8 -0
  40. package/dist/clients/index.d.ts.map +1 -0
  41. package/dist/clients/index.js +7 -0
  42. package/dist/clients/index.js.map +1 -0
  43. package/dist/clients/info/InfoClient.d.ts +37 -0
  44. package/dist/clients/info/InfoClient.d.ts.map +1 -0
  45. package/dist/clients/info/InfoClient.js +69 -0
  46. package/dist/clients/info/InfoClient.js.map +1 -0
  47. package/dist/clients/info/index.d.ts +4 -0
  48. package/dist/clients/info/index.d.ts.map +1 -0
  49. package/dist/clients/info/index.js +2 -0
  50. package/dist/clients/info/index.js.map +1 -0
  51. package/dist/clients/info/types.d.ts +21 -0
  52. package/dist/clients/info/types.d.ts.map +1 -0
  53. package/dist/clients/info/types.js +2 -0
  54. package/dist/clients/info/types.js.map +1 -0
  55. package/dist/clients/sessions/SessionsClient.d.ts +34 -0
  56. package/dist/clients/sessions/SessionsClient.d.ts.map +1 -0
  57. package/dist/clients/sessions/SessionsClient.js +71 -0
  58. package/dist/clients/sessions/SessionsClient.js.map +1 -0
  59. package/dist/clients/sessions/index.d.ts +4 -0
  60. package/dist/clients/sessions/index.d.ts.map +1 -0
  61. package/dist/clients/sessions/index.js +2 -0
  62. package/dist/clients/sessions/index.js.map +1 -0
  63. package/dist/clients/sessions/types.d.ts +20 -0
  64. package/dist/clients/sessions/types.d.ts.map +1 -0
  65. package/dist/clients/sessions/types.js +2 -0
  66. package/dist/clients/sessions/types.js.map +1 -0
  67. package/dist/config/ConfigManager.d.ts +43 -0
  68. package/dist/config/ConfigManager.d.ts.map +1 -0
  69. package/dist/config/ConfigManager.js +472 -0
  70. package/dist/config/ConfigManager.js.map +1 -0
  71. package/dist/config/index.d.ts +6 -0
  72. package/dist/config/index.d.ts.map +1 -0
  73. package/dist/config/index.js +7 -0
  74. package/dist/config/index.js.map +1 -0
  75. package/dist/config/urlConfig.d.ts +15 -0
  76. package/dist/config/urlConfig.d.ts.map +1 -0
  77. package/dist/config/urlConfig.js +75 -0
  78. package/dist/config/urlConfig.js.map +1 -0
  79. package/dist/constants/errors.d.ts +2 -0
  80. package/dist/constants/errors.d.ts.map +1 -0
  81. package/dist/constants/errors.js +2 -0
  82. package/dist/constants/errors.js.map +1 -0
  83. package/dist/constants/index.d.ts +7 -0
  84. package/dist/constants/index.d.ts.map +1 -0
  85. package/dist/constants/index.js +11 -0
  86. package/dist/constants/index.js.map +1 -0
  87. package/dist/constants/tools.d.ts +4 -0
  88. package/dist/constants/tools.d.ts.map +1 -0
  89. package/dist/constants/tools.js +4 -0
  90. package/dist/constants/tools.js.map +1 -0
  91. package/dist/constants/versions.d.ts +2 -0
  92. package/dist/constants/versions.d.ts.map +1 -0
  93. package/dist/constants/versions.js +2 -0
  94. package/dist/constants/versions.js.map +1 -0
  95. package/dist/context/buildUserContext.d.ts +18 -0
  96. package/dist/context/buildUserContext.d.ts.map +1 -0
  97. package/dist/context/buildUserContext.js +34 -0
  98. package/dist/context/buildUserContext.js.map +1 -0
  99. package/dist/context/index.d.ts +9 -0
  100. package/dist/context/index.d.ts.map +1 -0
  101. package/dist/context/index.js +9 -0
  102. package/dist/context/index.js.map +1 -0
  103. package/dist/context/messageManager.d.ts +42 -0
  104. package/dist/context/messageManager.d.ts.map +1 -0
  105. package/dist/context/messageManager.js +322 -0
  106. package/dist/context/messageManager.js.map +1 -0
  107. package/dist/context/taskFocus.d.ts +2 -0
  108. package/dist/context/taskFocus.d.ts.map +1 -0
  109. package/dist/context/taskFocus.js +26 -0
  110. package/dist/context/taskFocus.js.map +1 -0
  111. package/dist/context/userInput.d.ts +3 -0
  112. package/dist/context/userInput.d.ts.map +1 -0
  113. package/dist/context/userInput.js +20 -0
  114. package/dist/context/userInput.js.map +1 -0
  115. package/dist/index.d.ts +18 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +21 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/mcp/MCPManager.d.ts +125 -0
  120. package/dist/mcp/MCPManager.d.ts.map +1 -0
  121. package/dist/mcp/MCPManager.js +616 -0
  122. package/dist/mcp/MCPManager.js.map +1 -0
  123. package/dist/mcp/approvedTools.d.ts +4 -0
  124. package/dist/mcp/approvedTools.d.ts.map +1 -0
  125. package/dist/mcp/approvedTools.js +19 -0
  126. package/dist/mcp/approvedTools.js.map +1 -0
  127. package/dist/mcp/baseServer.d.ts +75 -0
  128. package/dist/mcp/baseServer.d.ts.map +1 -0
  129. package/dist/mcp/baseServer.js +107 -0
  130. package/dist/mcp/baseServer.js.map +1 -0
  131. package/dist/mcp/builtinServers.d.ts +15 -0
  132. package/dist/mcp/builtinServers.d.ts.map +1 -0
  133. package/dist/mcp/builtinServers.js +155 -0
  134. package/dist/mcp/builtinServers.js.map +1 -0
  135. package/dist/mcp/dynamicBEServer.d.ts +20 -0
  136. package/dist/mcp/dynamicBEServer.d.ts.map +1 -0
  137. package/dist/mcp/dynamicBEServer.js +52 -0
  138. package/dist/mcp/dynamicBEServer.js.map +1 -0
  139. package/dist/mcp/index.d.ts +19 -0
  140. package/dist/mcp/index.d.ts.map +1 -0
  141. package/dist/mcp/index.js +24 -0
  142. package/dist/mcp/index.js.map +1 -0
  143. package/dist/mcp/mcpInitialization.d.ts +2 -0
  144. package/dist/mcp/mcpInitialization.d.ts.map +1 -0
  145. package/dist/mcp/mcpInitialization.js +56 -0
  146. package/dist/mcp/mcpInitialization.js.map +1 -0
  147. package/dist/mcp/servers/filesystem.d.ts +75 -0
  148. package/dist/mcp/servers/filesystem.d.ts.map +1 -0
  149. package/dist/mcp/servers/filesystem.js +992 -0
  150. package/dist/mcp/servers/filesystem.js.map +1 -0
  151. package/dist/mcp/servers/gerrit.d.ts +19 -0
  152. package/dist/mcp/servers/gerrit.d.ts.map +1 -0
  153. package/dist/mcp/servers/gerrit.js +515 -0
  154. package/dist/mcp/servers/gerrit.js.map +1 -0
  155. package/dist/mcp/servers/git.d.ts +18 -0
  156. package/dist/mcp/servers/git.d.ts.map +1 -0
  157. package/dist/mcp/servers/git.js +441 -0
  158. package/dist/mcp/servers/git.js.map +1 -0
  159. package/dist/mcp/servers/ripgrep.d.ts +34 -0
  160. package/dist/mcp/servers/ripgrep.d.ts.map +1 -0
  161. package/dist/mcp/servers/ripgrep.js +517 -0
  162. package/dist/mcp/servers/ripgrep.js.map +1 -0
  163. package/dist/mcp/servers/shell.d.ts +20 -0
  164. package/dist/mcp/servers/shell.d.ts.map +1 -0
  165. package/dist/mcp/servers/shell.js +603 -0
  166. package/dist/mcp/servers/shell.js.map +1 -0
  167. package/dist/mcp/serversRegistry.d.ts +55 -0
  168. package/dist/mcp/serversRegistry.d.ts.map +1 -0
  169. package/dist/mcp/serversRegistry.js +410 -0
  170. package/dist/mcp/serversRegistry.js.map +1 -0
  171. package/dist/mcp/toolProcessor.d.ts +42 -0
  172. package/dist/mcp/toolProcessor.d.ts.map +1 -0
  173. package/dist/mcp/toolProcessor.js +200 -0
  174. package/dist/mcp/toolProcessor.js.map +1 -0
  175. package/dist/mcp/types.d.ts +29 -0
  176. package/dist/mcp/types.d.ts.map +1 -0
  177. package/dist/mcp/types.js +2 -0
  178. package/dist/mcp/types.js.map +1 -0
  179. package/dist/parser/index.d.ts +72 -0
  180. package/dist/parser/index.d.ts.map +1 -0
  181. package/dist/parser/index.js +967 -0
  182. package/dist/parser/index.js.map +1 -0
  183. package/dist/parser/types.d.ts +153 -0
  184. package/dist/parser/types.d.ts.map +1 -0
  185. package/dist/parser/types.js +6 -0
  186. package/dist/parser/types.js.map +1 -0
  187. package/dist/parser/utils.d.ts +18 -0
  188. package/dist/parser/utils.d.ts.map +1 -0
  189. package/dist/parser/utils.js +64 -0
  190. package/dist/parser/utils.js.map +1 -0
  191. package/dist/sdk/QodoSDK.d.ts +152 -0
  192. package/dist/sdk/QodoSDK.d.ts.map +1 -0
  193. package/dist/sdk/QodoSDK.js +786 -0
  194. package/dist/sdk/QodoSDK.js.map +1 -0
  195. package/dist/sdk/bootstrap.d.ts +16 -0
  196. package/dist/sdk/bootstrap.d.ts.map +1 -0
  197. package/dist/sdk/bootstrap.js +21 -0
  198. package/dist/sdk/bootstrap.js.map +1 -0
  199. package/dist/sdk/builders.d.ts +54 -0
  200. package/dist/sdk/builders.d.ts.map +1 -0
  201. package/dist/sdk/builders.js +117 -0
  202. package/dist/sdk/builders.js.map +1 -0
  203. package/dist/sdk/defaults.d.ts +11 -0
  204. package/dist/sdk/defaults.d.ts.map +1 -0
  205. package/dist/sdk/defaults.js +39 -0
  206. package/dist/sdk/defaults.js.map +1 -0
  207. package/dist/sdk/discovery.d.ts +2 -0
  208. package/dist/sdk/discovery.d.ts.map +1 -0
  209. package/dist/sdk/discovery.js +25 -0
  210. package/dist/sdk/discovery.js.map +1 -0
  211. package/dist/sdk/events.d.ts +168 -0
  212. package/dist/sdk/events.d.ts.map +1 -0
  213. package/dist/sdk/events.js +52 -0
  214. package/dist/sdk/events.js.map +1 -0
  215. package/dist/sdk/index.d.ts +17 -0
  216. package/dist/sdk/index.d.ts.map +1 -0
  217. package/dist/sdk/index.js +17 -0
  218. package/dist/sdk/index.js.map +1 -0
  219. package/dist/sdk/runner/AgentRunner.d.ts +22 -0
  220. package/dist/sdk/runner/AgentRunner.d.ts.map +1 -0
  221. package/dist/sdk/runner/AgentRunner.js +222 -0
  222. package/dist/sdk/runner/AgentRunner.js.map +1 -0
  223. package/dist/sdk/runner/finalize.d.ts +9 -0
  224. package/dist/sdk/runner/finalize.d.ts.map +1 -0
  225. package/dist/sdk/runner/finalize.js +115 -0
  226. package/dist/sdk/runner/finalize.js.map +1 -0
  227. package/dist/sdk/runner/formats.d.ts +7 -0
  228. package/dist/sdk/runner/formats.d.ts.map +1 -0
  229. package/dist/sdk/runner/formats.js +91 -0
  230. package/dist/sdk/runner/formats.js.map +1 -0
  231. package/dist/sdk/runner/index.d.ts +9 -0
  232. package/dist/sdk/runner/index.d.ts.map +1 -0
  233. package/dist/sdk/runner/index.js +9 -0
  234. package/dist/sdk/runner/index.js.map +1 -0
  235. package/dist/sdk/runner/progress.d.ts +3 -0
  236. package/dist/sdk/runner/progress.d.ts.map +1 -0
  237. package/dist/sdk/runner/progress.js +16 -0
  238. package/dist/sdk/runner/progress.js.map +1 -0
  239. package/dist/sdk/schemas.d.ts +50 -0
  240. package/dist/sdk/schemas.d.ts.map +1 -0
  241. package/dist/sdk/schemas.js +145 -0
  242. package/dist/sdk/schemas.js.map +1 -0
  243. package/dist/session/SessionContext.d.ts +86 -0
  244. package/dist/session/SessionContext.d.ts.map +1 -0
  245. package/dist/session/SessionContext.js +395 -0
  246. package/dist/session/SessionContext.js.map +1 -0
  247. package/dist/session/environment.d.ts +42 -0
  248. package/dist/session/environment.d.ts.map +1 -0
  249. package/dist/session/environment.js +27 -0
  250. package/dist/session/environment.js.map +1 -0
  251. package/dist/session/history.d.ts +3 -0
  252. package/dist/session/history.d.ts.map +1 -0
  253. package/dist/session/history.js +67 -0
  254. package/dist/session/history.js.map +1 -0
  255. package/dist/session/index.d.ts +10 -0
  256. package/dist/session/index.d.ts.map +1 -0
  257. package/dist/session/index.js +9 -0
  258. package/dist/session/index.js.map +1 -0
  259. package/dist/session/serverData.d.ts +38 -0
  260. package/dist/session/serverData.d.ts.map +1 -0
  261. package/dist/session/serverData.js +241 -0
  262. package/dist/session/serverData.js.map +1 -0
  263. package/dist/tracking/Tracker.d.ts +55 -0
  264. package/dist/tracking/Tracker.d.ts.map +1 -0
  265. package/dist/tracking/Tracker.js +217 -0
  266. package/dist/tracking/Tracker.js.map +1 -0
  267. package/dist/tracking/index.d.ts +8 -0
  268. package/dist/tracking/index.d.ts.map +1 -0
  269. package/dist/tracking/index.js +8 -0
  270. package/dist/tracking/index.js.map +1 -0
  271. package/dist/tracking/schemas.d.ts +292 -0
  272. package/dist/tracking/schemas.d.ts.map +1 -0
  273. package/dist/tracking/schemas.js +91 -0
  274. package/dist/tracking/schemas.js.map +1 -0
  275. package/dist/types.d.ts +4 -0
  276. package/dist/types.d.ts.map +1 -0
  277. package/dist/types.js +2 -0
  278. package/dist/types.js.map +1 -0
  279. package/dist/utils/extractSetFlags.d.ts +6 -0
  280. package/dist/utils/extractSetFlags.d.ts.map +1 -0
  281. package/dist/utils/extractSetFlags.js +16 -0
  282. package/dist/utils/extractSetFlags.js.map +1 -0
  283. package/dist/utils/formatTimeAgo.d.ts +2 -0
  284. package/dist/utils/formatTimeAgo.d.ts.map +1 -0
  285. package/dist/utils/formatTimeAgo.js +20 -0
  286. package/dist/utils/formatTimeAgo.js.map +1 -0
  287. package/dist/utils/index.d.ts +12 -0
  288. package/dist/utils/index.d.ts.map +1 -0
  289. package/dist/utils/index.js +12 -0
  290. package/dist/utils/index.js.map +1 -0
  291. package/dist/utils/machineId.d.ts +14 -0
  292. package/dist/utils/machineId.d.ts.map +1 -0
  293. package/dist/utils/machineId.js +66 -0
  294. package/dist/utils/machineId.js.map +1 -0
  295. package/dist/utils/pathUtils.d.ts +22 -0
  296. package/dist/utils/pathUtils.d.ts.map +1 -0
  297. package/dist/utils/pathUtils.js +54 -0
  298. package/dist/utils/pathUtils.js.map +1 -0
  299. package/dist/version.d.ts +2 -0
  300. package/dist/version.d.ts.map +1 -0
  301. package/dist/version.js +23 -0
  302. package/dist/version.js.map +1 -0
  303. package/package.json +93 -0
@@ -0,0 +1,11 @@
1
+ /**
2
+ * SDK constants
3
+ * @internal
4
+ */
5
+ // Tool constants
6
+ export { UserResponse, Progress, EndNode } from './tools.js';
7
+ // Error messages
8
+ export { SERVER_ERROR_MESSAGE } from './errors.js';
9
+ // Version constants
10
+ export { LATEST_CONFIG_VERSION } from './versions.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7D,iBAAiB;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,oBAAoB;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const UserResponse = "UserResponse";
2
+ export declare const Progress = "progress";
3
+ export declare const EndNode = "EndNode";
4
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/constants/tools.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,iBAAiB,CAAA;AAC1C,eAAO,MAAM,QAAQ,aAAa,CAAA;AAClC,eAAO,MAAM,OAAO,YAAY,CAAA"}
@@ -0,0 +1,4 @@
1
+ export const UserResponse = "UserResponse";
2
+ export const Progress = "progress";
3
+ export const EndNode = "EndNode";
4
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/constants/tools.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAA;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAA;AAClC,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const LATEST_CONFIG_VERSION = "1.0";
2
+ //# sourceMappingURL=versions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../src/constants/versions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const LATEST_CONFIG_VERSION = "1.0";
2
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/constants/versions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { CommandConfig } from "../parser/types.js";
2
+ /**
3
+ * Entry shape for enriched user_context when derived from command arguments.
4
+ * Only the value and the human-readable description are included, since those
5
+ * are the most useful pieces of information for the LLM.
6
+ */
7
+ export interface UserContextEntry {
8
+ value: any;
9
+ description?: string;
10
+ }
11
+ /**
12
+ * Build a structured user_context map from raw command arguments and the
13
+ * corresponding CommandConfig. For keys that match defined command arguments,
14
+ * we wrap them as { value, description }. For any unknown keys we leave the
15
+ * value as-is so custom flags continue to work.
16
+ */
17
+ export declare function buildUserContextFromArgs(rawContext: Record<string, any> | undefined, command: CommandConfig | undefined): Record<string, any> | undefined;
18
+ //# sourceMappingURL=buildUserContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildUserContext.d.ts","sourceRoot":"","sources":["../../src/context/buildUserContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AAEpE;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,GAAG,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC3C,OAAO,EAAE,aAAa,GAAG,SAAS,GACjC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CA6BjC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Build a structured user_context map from raw command arguments and the
3
+ * corresponding CommandConfig. For keys that match defined command arguments,
4
+ * we wrap them as { value, description }. For any unknown keys we leave the
5
+ * value as-is so custom flags continue to work.
6
+ */
7
+ export function buildUserContextFromArgs(rawContext, command) {
8
+ if (!rawContext) {
9
+ return undefined;
10
+ }
11
+ const result = {};
12
+ const argIndex = new Map();
13
+ if (command?.arguments && command.arguments.length > 0) {
14
+ for (const arg of command.arguments) {
15
+ argIndex.set(arg.name, arg);
16
+ }
17
+ }
18
+ for (const [key, value] of Object.entries(rawContext)) {
19
+ const argCfg = argIndex.get(key);
20
+ if (argCfg) {
21
+ const entry = { value };
22
+ if (argCfg.description) {
23
+ entry.description = argCfg.description;
24
+ }
25
+ result[key] = entry;
26
+ }
27
+ else {
28
+ // Not a declared command argument (e.g., custom/extra flag) – keep as-is
29
+ result[key] = value;
30
+ }
31
+ }
32
+ return Object.keys(result).length > 0 ? result : undefined;
33
+ }
34
+ //# sourceMappingURL=buildUserContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildUserContext.js","sourceRoot":"","sources":["../../src/context/buildUserContext.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAA2C,EAC3C,OAAkC;IAElC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEpD,IAAI,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACpC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAqB,EAAE,KAAK,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACzC,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,yEAAyE;YACzE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Context utilities for agent execution
3
+ * @internal
4
+ */
5
+ export type { UserContextEntry } from './buildUserContext.js';
6
+ export { MessageManager } from './messageManager.js';
7
+ export { computeNextTaskFocus } from './taskFocus.js';
8
+ export { getUserInput } from './userInput.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Context utilities for agent execution
3
+ * @internal
4
+ */
5
+ export { buildUserContextFromArgs } from './buildUserContext.js';
6
+ export { MessageManager } from './messageManager.js';
7
+ export { computeNextTaskFocus } from './taskFocus.js';
8
+ export { getUserInput } from './userInput.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { BaseMessage, AIMessage } from "@langchain/core/messages";
2
+ type MessageUpdateListener = (messages: BaseMessage[]) => void;
3
+ type LoadingStateListener = (isLoading: boolean) => void;
4
+ type ErrorListener = (error: string | null) => void;
5
+ export declare class MessageManager {
6
+ private messages;
7
+ private readonly structuredOutputs;
8
+ private readonly accumulatedResponses;
9
+ private messageListeners;
10
+ private loadingListeners;
11
+ private errorListeners;
12
+ private isLoading;
13
+ private error;
14
+ private static instance;
15
+ static getInstance(): MessageManager;
16
+ getLastMessage(): BaseMessage[];
17
+ getMessages(): BaseMessage[];
18
+ getLastAIMessage(): AIMessage | null;
19
+ getLastAIStructuredOutputMessage(): AIMessage | null;
20
+ getIsLoading(): boolean;
21
+ getError(): string | null;
22
+ addMessage(message: BaseMessage): void;
23
+ setMessages(messages: BaseMessage[], silent?: boolean): void;
24
+ setLoading(isLoading: boolean): void;
25
+ setError(error: string | null): void;
26
+ reset(): void;
27
+ softReset(): void;
28
+ addMessageListener(listener: MessageUpdateListener): () => void;
29
+ addLoadingListener(listener: LoadingStateListener): () => void;
30
+ addErrorListener(listener: ErrorListener): () => void;
31
+ private notifyMessageListeners;
32
+ private notifyLoadingListeners;
33
+ private notifyErrorListeners;
34
+ createUserEngagementCallback(stream?: boolean, returnRawProgress?: boolean): (response: any) => void;
35
+ addUserMessage(content: string): void;
36
+ finalizeUserResponse(toolId: string): void;
37
+ getAccumulatedResponse(toolId: string): string | undefined;
38
+ getAllAccumulatedResponses(): Map<string, string>;
39
+ hasPendingResponses(): boolean;
40
+ }
41
+ export {};
42
+ //# sourceMappingURL=messageManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageManager.d.ts","sourceRoot":"","sources":["../../src/context/messageManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAgB,SAAS,EAAc,MAAM,0BAA0B,CAAC;AAK3F,KAAK,qBAAqB,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;AAC/D,KAAK,oBAAoB,GAAG,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;AACzD,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AAEpD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAkC;IACvE,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,KAAK,CAAuB;IAMpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;WAE1B,WAAW,IAAI,cAAc;IAqBpC,cAAc,IAAI,WAAW,EAAE;IAK/B,WAAW,IAAI,WAAW,EAAE;IAI5B,gBAAgB,IAAI,SAAS,GAAG,IAAI;IAOpC,gCAAgC,IAAI,SAAS,GAAG,IAAI;IAIpD,YAAY,IAAI,OAAO;IAIvB,QAAQ,IAAI,MAAM,GAAG,IAAI;IAKzB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAKtC,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,GAAE,OAAe,GAAG,IAAI;IAOnE,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAKpC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMpC,KAAK,IAAI,IAAI;IAKb,SAAS,IAAI,IAAI;IASjB,kBAAkB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAO/D,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAO9D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI;IAO5D,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,oBAAoB;IAKrB,4BAA4B,CAAC,MAAM,GAAE,OAAe,EAAE,iBAAiB,GAAE,OAAe,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI;IAuKlH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMrC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAsC1C,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK1D,0BAA0B,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAKjD,mBAAmB,IAAI,OAAO;CAGtC"}
@@ -0,0 +1,322 @@
1
+ import { HumanMessage, AIMessage, ToolMessage } from "@langchain/core/messages";
2
+ import { UserResponse } from "../constants/tools.js";
3
+ import { getCurrentEnvironment, getGlobalEnvironment } from "../session/index.js";
4
+ export class MessageManager {
5
+ messages = [];
6
+ structuredOutputs = [];
7
+ accumulatedResponses = new Map();
8
+ messageListeners = [];
9
+ loadingListeners = [];
10
+ errorListeners = [];
11
+ isLoading = false;
12
+ error = null;
13
+ // Environment-scoped singleton helper. Historically MessageManager was a
14
+ // simple process-wide singleton used by CLI and Ink. We now prefer
15
+ // resolving it via EnvironmentServices so SDK-created environments can use
16
+ // their own instance while legacy paths keep the global behavior.
17
+ static instance;
18
+ static getInstance() {
19
+ const env = getCurrentEnvironment();
20
+ const globalEnv = getGlobalEnvironment();
21
+ let instance = env.messageManager;
22
+ if (!instance) {
23
+ instance = new MessageManager();
24
+ // Bind to the current environment only
25
+ env.messageManager = instance;
26
+ // Preserve legacy singleton only if we're in the global environment
27
+ if (env === globalEnv) {
28
+ MessageManager.instance = instance;
29
+ if (!globalEnv.messageManager) {
30
+ globalEnv.messageManager = instance;
31
+ }
32
+ }
33
+ }
34
+ return instance;
35
+ }
36
+ // Getters
37
+ getLastMessage() {
38
+ return this.messages.length > 0 ? [this.messages[this.messages.length - 1]] : [];
39
+ }
40
+ // Getters
41
+ getMessages() {
42
+ return [...this.messages];
43
+ }
44
+ getLastAIMessage() {
45
+ const aiMessages = this.messages.filter((msg) => msg instanceof AIMessage);
46
+ return aiMessages.length > 0 ? aiMessages[aiMessages.length - 1] : null;
47
+ }
48
+ getLastAIStructuredOutputMessage() {
49
+ return this.structuredOutputs.length > 0 ? this.structuredOutputs[this.structuredOutputs.length - 1] : null;
50
+ }
51
+ getIsLoading() {
52
+ return this.isLoading;
53
+ }
54
+ getError() {
55
+ return this.error;
56
+ }
57
+ // State modification methods
58
+ addMessage(message) {
59
+ this.messages.push(message);
60
+ this.notifyMessageListeners();
61
+ }
62
+ setMessages(messages, silent = false) {
63
+ this.messages = [...messages];
64
+ if (!silent) {
65
+ this.notifyMessageListeners();
66
+ }
67
+ }
68
+ setLoading(isLoading) {
69
+ this.isLoading = isLoading;
70
+ this.notifyLoadingListeners();
71
+ }
72
+ setError(error) {
73
+ this.error = error;
74
+ // Always notify listeners, even when clearing error
75
+ this.notifyErrorListeners();
76
+ }
77
+ reset() {
78
+ this.messages = [];
79
+ this.softReset();
80
+ }
81
+ softReset() {
82
+ this.accumulatedResponses.clear();
83
+ this.isLoading = false;
84
+ this.error = null;
85
+ this.notifyLoadingListeners();
86
+ this.notifyErrorListeners();
87
+ }
88
+ // Event listeners
89
+ addMessageListener(listener) {
90
+ this.messageListeners.push(listener);
91
+ return () => {
92
+ this.messageListeners = this.messageListeners.filter(l => l !== listener);
93
+ };
94
+ }
95
+ addLoadingListener(listener) {
96
+ this.loadingListeners.push(listener);
97
+ return () => {
98
+ this.loadingListeners = this.loadingListeners.filter(l => l !== listener);
99
+ };
100
+ }
101
+ addErrorListener(listener) {
102
+ this.errorListeners.push(listener);
103
+ return () => {
104
+ this.errorListeners = this.errorListeners.filter(l => l !== listener);
105
+ };
106
+ }
107
+ notifyMessageListeners() {
108
+ this.messageListeners.forEach(listener => listener(this.getMessages()));
109
+ }
110
+ notifyLoadingListeners() {
111
+ this.loadingListeners.forEach(listener => listener(this.isLoading));
112
+ }
113
+ notifyErrorListeners() {
114
+ this.errorListeners.forEach(listener => listener(this.error));
115
+ }
116
+ // The refactored callback function
117
+ createUserEngagementCallback(stream = false, returnRawProgress = false) {
118
+ // Track the last UserResponse tool ID to detect changes
119
+ let lastUserResponseToolId = null;
120
+ const finalizePendingUserResponse = () => {
121
+ if (lastUserResponseToolId !== null &&
122
+ this.accumulatedResponses.has(lastUserResponseToolId)) {
123
+ this.finalizeUserResponse(lastUserResponseToolId);
124
+ lastUserResponseToolId = null;
125
+ }
126
+ };
127
+ const handleUserResponse = (response) => {
128
+ const toolId = response.toolData?.identifier;
129
+ const content = response.toolData.tool_args.content;
130
+ const messageType = response.toolData.tool_args.type || response.toolData?.type;
131
+ // Handle retry status messages specially
132
+ if (messageType === "retry_status") {
133
+ // Add retry status message immediately with special metadata
134
+ this.addMessage(new AIMessage(content, {
135
+ id: toolId,
136
+ type: "retry_status",
137
+ isRetryStatus: true
138
+ }));
139
+ return;
140
+ }
141
+ // If we have a new tool ID and we were accumulating for a different ID,
142
+ // finalize the previous one first
143
+ if (lastUserResponseToolId !== null &&
144
+ lastUserResponseToolId !== toolId &&
145
+ this.accumulatedResponses.has(lastUserResponseToolId)) {
146
+ this.finalizeUserResponse(lastUserResponseToolId);
147
+ }
148
+ // Update the last tool ID
149
+ lastUserResponseToolId = toolId;
150
+ // Accumulate content by tool ID
151
+ const currentContent = this.accumulatedResponses.get(toolId) ?? '';
152
+ const newContent = currentContent + content;
153
+ this.accumulatedResponses.set(toolId, newContent);
154
+ if (messageType === "structured_output") {
155
+ this.structuredOutputs.push(new AIMessage(response.toolData.tool_args.content, { id: toolId }));
156
+ }
157
+ // Streaming support: update the message content in real time if stream is true
158
+ if (stream) {
159
+ // Find the last user message index
160
+ const lastUserIndex = this.messages.map(msg => msg instanceof HumanMessage)
161
+ .lastIndexOf(true);
162
+ // Look for an existing message with this ID, but only after the last user message
163
+ const messageIndex = this.messages.findIndex((msg, i) => i > lastUserIndex && msg.additional_kwargs?.id === toolId);
164
+ if (messageIndex >= 0) {
165
+ // Update existing message in current turn
166
+ const updatedMessages = [...this.messages];
167
+ updatedMessages[messageIndex] = new AIMessage(newContent, { id: toolId });
168
+ this.setMessages(updatedMessages);
169
+ }
170
+ else {
171
+ // Add new message for current turn
172
+ this.addMessage(new AIMessage(newContent, { id: toolId }));
173
+ }
174
+ }
175
+ // If not streaming, don't update the message here, just accumulate until forceStop
176
+ };
177
+ const handleToolCall = (response) => {
178
+ finalizePendingUserResponse();
179
+ // Handle tool data updates
180
+ const toolData = response.toolData;
181
+ if (toolData.tool_result) {
182
+ // Add tool result message
183
+ if (!toolData.identifier) {
184
+ console.warn('⚠️ ToolMessage created without identifier:', toolData);
185
+ // Generate a fallback identifier to prevent errors
186
+ toolData.identifier = `fallback-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
187
+ }
188
+ this.addMessage(new ToolMessage({
189
+ tool_call_id: toolData.identifier,
190
+ status: toolData.tool_result.isError ? "error" : "success",
191
+ content: toolData.tool_result.content,
192
+ // Preserve server name on tool results so renderers can apply
193
+ // server-specific formatting (e.g., show todo_list content as-is)
194
+ additional_kwargs: {
195
+ server_name: toolData.server_name,
196
+ },
197
+ }));
198
+ }
199
+ else {
200
+ // Add tool call message
201
+ this.addMessage(new AIMessage({
202
+ tool_calls: [{
203
+ name: toolData.tool,
204
+ args: toolData.tool_args,
205
+ id: toolData.identifier,
206
+ type: "tool_call",
207
+ }],
208
+ content: toolData.tool_reasoning,
209
+ additional_kwargs: {
210
+ server_name: toolData.server_name,
211
+ pending_approval: toolData.pending_approval,
212
+ tool_args_for_ui: toolData.tool_args_for_ui,
213
+ }
214
+ }));
215
+ }
216
+ };
217
+ const handleError = (response) => {
218
+ finalizePendingUserResponse();
219
+ // Handle errors
220
+ this.setError(response.error);
221
+ // Don't add error as a message - it will be displayed in error box
222
+ this.setLoading(false);
223
+ };
224
+ const handlePlainContent = (response) => {
225
+ finalizePendingUserResponse();
226
+ // Handle regular content
227
+ this.addMessage(new AIMessage(response.content));
228
+ };
229
+ const handleForceStop = (response) => {
230
+ // Handle forced stop - this is where we update the message with accumulated content
231
+ if (response.toolData?.identifier) {
232
+ const toolId = response.toolData.identifier;
233
+ this.finalizeUserResponse(toolId);
234
+ }
235
+ else if (lastUserResponseToolId !== null) {
236
+ // If forceStop doesn't specify a tool ID but we were accumulating, finalize that one
237
+ this.finalizeUserResponse(lastUserResponseToolId);
238
+ }
239
+ lastUserResponseToolId = null;
240
+ this.setLoading(false);
241
+ };
242
+ const handleProgressResponse = (response) => {
243
+ const toolId = response.toolData?.identifier;
244
+ const content = JSON.stringify(response.toolData.tool_args.raw);
245
+ this.addMessage(new AIMessage(content, { id: toolId, type: "progress" }));
246
+ };
247
+ return (response) => {
248
+ if (response?.toolData?.tool === UserResponse) {
249
+ if (returnRawProgress && response.toolData.type === "progress" && response.toolData?.tool_args?.raw) {
250
+ handleProgressResponse(response);
251
+ }
252
+ else {
253
+ handleUserResponse(response);
254
+ }
255
+ }
256
+ else if (response?.toolData) {
257
+ handleToolCall(response);
258
+ }
259
+ else if (response.error) {
260
+ handleError(response);
261
+ }
262
+ else if (response.content) {
263
+ handlePlainContent(response);
264
+ }
265
+ else if (response.forceStop) {
266
+ handleForceStop(response);
267
+ }
268
+ };
269
+ }
270
+ // Helper method to add a user message and start the agent
271
+ addUserMessage(content) {
272
+ const userMessage = new HumanMessage(content);
273
+ this.addMessage(userMessage);
274
+ }
275
+ // Helper method to explicitly finalize a UserResponse
276
+ finalizeUserResponse(toolId) {
277
+ const accumulatedContent = this.accumulatedResponses.get(toolId);
278
+ if (accumulatedContent) {
279
+ // Find the last user message index
280
+ let lastUserIndex = -1;
281
+ for (let i = this.messages.length - 1; i >= 0; i--) {
282
+ if (this.messages[i] instanceof HumanMessage) {
283
+ lastUserIndex = i;
284
+ break;
285
+ }
286
+ }
287
+ // Look for an existing message with this ID, but only after the last user message
288
+ let messageIndex = -1;
289
+ for (let i = lastUserIndex + 1; i < this.messages.length; i++) {
290
+ if (this.messages[i].additional_kwargs?.id === toolId) {
291
+ messageIndex = i;
292
+ break;
293
+ }
294
+ }
295
+ if (messageIndex >= 0) {
296
+ // Update existing message in current turn
297
+ const updatedMessages = [...this.messages];
298
+ updatedMessages[messageIndex] = new AIMessage(accumulatedContent, { id: toolId });
299
+ this.setMessages(updatedMessages);
300
+ }
301
+ else {
302
+ // Add new message for current turn
303
+ this.addMessage(new AIMessage(accumulatedContent, { id: toolId }));
304
+ }
305
+ // Clear accumulated content after it's been added to the messages
306
+ this.accumulatedResponses.delete(toolId);
307
+ }
308
+ }
309
+ // Get accumulated content without updating the messages
310
+ getAccumulatedResponse(toolId) {
311
+ return this.accumulatedResponses.get(toolId);
312
+ }
313
+ // Get all accumulated responses (useful for debugging)
314
+ getAllAccumulatedResponses() {
315
+ return new Map(this.accumulatedResponses);
316
+ }
317
+ // Check if there are any pending accumulated responses
318
+ hasPendingResponses() {
319
+ return this.accumulatedResponses.size > 0;
320
+ }
321
+ }
322
+ //# sourceMappingURL=messageManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageManager.js","sourceRoot":"","sources":["../../src/context/messageManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function computeNextTaskFocus(instructions?: string, userRequest?: string, userContext?: Record<string, any>): string | undefined;
2
+ //# sourceMappingURL=taskFocus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskFocus.d.ts","sourceRoot":"","sources":["../../src/context/taskFocus.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAClC,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAChC,MAAM,GAAG,SAAS,CAyBpB"}
@@ -0,0 +1,26 @@
1
+ export function computeNextTaskFocus(instructions, userRequest, userContext) {
2
+ const parts = [];
3
+ const norm = (s) => (typeof s === 'string' && s.trim().length > 0 ? s.trim() : undefined);
4
+ const req = norm(userRequest);
5
+ const instr = norm(instructions);
6
+ if (req)
7
+ parts.push(`User request: ${req}`);
8
+ if (instr)
9
+ parts.push(`Instructions: ${instr}`);
10
+ if (userContext && typeof userContext === 'object' && Object.keys(userContext).length > 0) {
11
+ try {
12
+ const entries = Object.entries(userContext)
13
+ .map(([k, v]) => `${k}=${typeof v === 'string' ? v : JSON.stringify(v)}`);
14
+ if (entries.length > 0) {
15
+ parts.push(`Context: ${entries.join(', ')}`);
16
+ }
17
+ }
18
+ catch {
19
+ // best effort; ignore serialization errors
20
+ }
21
+ }
22
+ if (parts.length === 0)
23
+ return undefined;
24
+ return parts.join(' | ');
25
+ }
26
+ //# sourceMappingURL=taskFocus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskFocus.js","sourceRoot":"","sources":["../../src/context/taskFocus.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAClC,YAAqB,EACrB,WAAoB,EACpB,WAAiC;IAEjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEnG,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAEjC,IAAI,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;IAC5C,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC;IAEhD,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1F,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { CommandConfig } from "../parser/types.js";
2
+ export declare function getUserInput(prompt: string, extraInstructions: string, command?: CommandConfig): string;
3
+ //# sourceMappingURL=userInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userInput.d.ts","sourceRoot":"","sources":["../../src/context/userInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAEjD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAiBvG"}
@@ -0,0 +1,20 @@
1
+ import { SessionContext } from "../session/index.js";
2
+ export function getUserInput(prompt, extraInstructions, command) {
3
+ if (!command) {
4
+ command = SessionContext.getInstance().getCommand();
5
+ }
6
+ if (command.chat_message) {
7
+ return command.chat_message;
8
+ }
9
+ if (command?.name === prompt) {
10
+ prompt = "";
11
+ }
12
+ let userInput = command?.instructions
13
+ ? `${command?.instructions} \n\n${prompt}`
14
+ : prompt ?? '';
15
+ if (extraInstructions) {
16
+ userInput += ` ${extraInstructions}`;
17
+ }
18
+ return userInput;
19
+ }
20
+ //# sourceMappingURL=userInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userInput.js","sourceRoot":"","sources":["../../src/context/userInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAGnD,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,iBAAyB,EAAE,OAAuB;IAC7F,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,YAAY,CAAC;IAC9B,CAAC;IACD,IAAI,OAAO,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAC7B,MAAM,GAAG,EAAE,CAAA;IACb,CAAC;IACD,IAAI,SAAS,GAAG,OAAO,EAAE,YAAY;QACnC,CAAC,CAAC,GAAG,OAAO,EAAE,YAAY,QAAQ,MAAM,EAAE;QAC1C,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;IACjB,IAAI,iBAAiB,EAAE,CAAC;QACtB,SAAS,IAAI,IAAI,iBAAiB,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,18 @@
1
+ export { QodoSDK } from './sdk/index.js';
2
+ export type { QodoSDKOptions, QodoSDKRunResult, QodoSDKStreamEvent, QodoSDKRunOptions, QodoSDKLogger, } from './sdk/index.js';
3
+ export { SdkEventType, SDK_PROTOCOL_V2, matchSdkEvent, createSdkEvent, getSdkVersion, } from './sdk/events.js';
4
+ export type { QodoSdkEvent, SdkEventTypeName, SdkEventEnvelope, SdkInitEvent, SdkRunStartedEvent, SdkMessageDeltaEvent, SdkMessageFullEvent, SdkProgressEvent, SdkToolRequestedEvent, SdkToolApprovedEvent, SdkToolExecutedEvent, SdkErrorEvent, SdkFinalEvent, SdkEventHandlers, } from './sdk/events.js';
5
+ export { sdkAgent, sdkCommand, sdkArgs } from './sdk/builders.js';
6
+ export { zodOutputSchema, zodArgsSchema, zCoerce, parseArgsWithSchema, QodoSchemaError, } from './sdk/schemas.js';
7
+ export { QodoInfoClient } from './clients/info/index.js';
8
+ export type { QodoBackendInfo } from './clients/info/types.js';
9
+ export { QodoSessionsClient } from './clients/sessions/index.js';
10
+ export type { RecentSession, SessionHistory, SessionMessage, } from './clients/sessions/types.js';
11
+ export { findNearestAgentConfig } from './sdk/discovery.js';
12
+ export { buildDefaultSdkAgentConfig } from './sdk/defaults.js';
13
+ export { QodoTracker } from './tracking/index.js';
14
+ export type { AIAssistantConfig, CommandConfig, ModeConfig, MCPConfig, OutputSchema, CommandArgument, } from './parser/types.js';
15
+ export { getCurrentVersion } from './version.js';
16
+ export { QodoAuthError } from './auth/index.js';
17
+ export { QodoBackendBootstrapError } from './session/serverData.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACL,eAAe,EACf,aAAa,EACb,OAAO,EACP,mBAAmB,EACnB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,SAAS,EACT,YAAY,EACZ,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}