@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,50 @@
1
+ import { z, type ZodTypeAny, type ZodObject, type ZodRawShape } from 'zod';
2
+ import type { OutputSchema } from '../parser/types.js';
3
+ /**
4
+ * SDK v2: Zod-first authoring helpers.
5
+ *
6
+ * Goals:
7
+ * - Preserve current enforcement rules:
8
+ * - output_schema must have `properties`
9
+ * - each property must have `type` and `description`
10
+ * - Keep JSON Schema as the transport contract to the backend.
11
+ */
12
+ export declare class QodoSchemaError extends Error {
13
+ constructor(message: string);
14
+ }
15
+ /**
16
+ * Coerce common CLI-style/string inputs into typed values before validation.
17
+ * This mirrors current validateCommandArgs behavior:
18
+ * - boolean: accepts true/false or "true"/"false"
19
+ * - number: accepts number or numeric string
20
+ * - array/object: accepts actual array/object or JSON-string
21
+ */
22
+ export declare const zCoerce: {
23
+ readonly boolean: () => z.ZodEffects<z.ZodBoolean, boolean, unknown>;
24
+ readonly number: () => z.ZodEffects<z.ZodNumber, number, unknown>;
25
+ readonly jsonArray: <T extends ZodTypeAny = z.ZodTypeAny>(itemSchema?: T) => z.ZodEffects<z.ZodArray<z.ZodAny, "many"> | z.ZodArray<T, "many">, any[] | T["_output"][], unknown>;
26
+ readonly jsonObject: <T extends ZodRawShape = z.ZodRawShape>(shape?: T) => z.ZodEffects<z.ZodObject<T, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<T>, any> extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never, z.baseObjectInputType<T> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never> | z.ZodRecord<z.ZodString, z.ZodAny>, Record<string, any> | (z.objectUtil.addQuestionMarks<z.baseObjectOutputType<T>, any> extends infer T_3 ? { [k in keyof T_3]: T_3[k]; } : never), unknown>;
27
+ };
28
+ /**
29
+ * Convert a Zod object schema into the existing OutputSchema (json_schema) shape.
30
+ * Enforces the same rules as validateOutputSchema():
31
+ * - must have properties
32
+ * - each property must have type + description
33
+ */
34
+ export declare function zodOutputSchema<T extends ZodTypeAny>(name: string, schema: T, strict?: boolean): OutputSchema;
35
+ /**
36
+ * Validate + coerce args using a Zod schema.
37
+ *
38
+ * This is the SDK v2 equivalent of validateCommandArgs(), but more powerful:
39
+ * - returns typed output
40
+ * - provides an actionable error message
41
+ */
42
+ export declare function parseArgsWithSchema<T extends ZodTypeAny>(schema: T, args: unknown): z.infer<T>;
43
+ /**
44
+ * Convenience helper for args schemas with descriptions.
45
+ *
46
+ * Note: unlike output schemas, we do not strictly require descriptions for args,
47
+ * but they are recommended for better tool_args_for_ui / UX.
48
+ */
49
+ export declare function zodArgsSchema<T extends ZodRawShape>(shape: T): ZodObject<T>;
50
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/sdk/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;;;;;;GAQG;AAEH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO;;;yBAmBN,CAAC,SAAS,UAAU,8BAA4B,CAAC;0BAahD,CAAC,SAAS,WAAW,0BAAwB,CAAC;CAYnD,CAAC;AAgBX;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAE,OAAc,GAAG,YAAY,CAkCnH;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAQ9F;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAE3E"}
@@ -0,0 +1,145 @@
1
+ import { z } from 'zod';
2
+ import { zodToJsonSchema } from 'zod-to-json-schema';
3
+ import { validateOutputSchema } from '../parser/index.js';
4
+ /**
5
+ * SDK v2: Zod-first authoring helpers.
6
+ *
7
+ * Goals:
8
+ * - Preserve current enforcement rules:
9
+ * - output_schema must have `properties`
10
+ * - each property must have `type` and `description`
11
+ * - Keep JSON Schema as the transport contract to the backend.
12
+ */
13
+ export class QodoSchemaError extends Error {
14
+ constructor(message) {
15
+ super(message);
16
+ this.name = 'QodoSchemaError';
17
+ }
18
+ }
19
+ /**
20
+ * Coerce common CLI-style/string inputs into typed values before validation.
21
+ * This mirrors current validateCommandArgs behavior:
22
+ * - boolean: accepts true/false or "true"/"false"
23
+ * - number: accepts number or numeric string
24
+ * - array/object: accepts actual array/object or JSON-string
25
+ */
26
+ export const zCoerce = {
27
+ boolean: () => z.preprocess((v) => {
28
+ if (typeof v === 'boolean')
29
+ return v;
30
+ if (typeof v === 'string') {
31
+ const s = v.toLowerCase();
32
+ if (s === 'true')
33
+ return true;
34
+ if (s === 'false')
35
+ return false;
36
+ }
37
+ return v;
38
+ }, z.boolean()),
39
+ number: () => z.preprocess((v) => {
40
+ if (typeof v === 'number')
41
+ return v;
42
+ if (typeof v === 'string' && /^-?\d+(\.\d+)?$/.test(v.trim()))
43
+ return Number(v);
44
+ return v;
45
+ }, z.number()),
46
+ jsonArray: (itemSchema) => z.preprocess((v) => {
47
+ if (Array.isArray(v))
48
+ return v;
49
+ if (typeof v === 'string') {
50
+ try {
51
+ return JSON.parse(v);
52
+ }
53
+ catch {
54
+ return v;
55
+ }
56
+ }
57
+ return v;
58
+ }, itemSchema ? z.array(itemSchema) : z.array(z.any())),
59
+ jsonObject: (shape) => z.preprocess((v) => {
60
+ if (v !== null && typeof v === 'object' && !Array.isArray(v))
61
+ return v;
62
+ if (typeof v === 'string') {
63
+ try {
64
+ return JSON.parse(v);
65
+ }
66
+ catch {
67
+ return v;
68
+ }
69
+ }
70
+ return v;
71
+ }, shape ? z.object(shape) : z.record(z.any())),
72
+ };
73
+ function collectMissingDescriptionsFromJsonSchema(schema) {
74
+ const missing = [];
75
+ const props = schema?.properties;
76
+ if (!props || typeof props !== 'object')
77
+ return missing;
78
+ for (const [k, v] of Object.entries(props)) {
79
+ const def = v;
80
+ if (!def?.description) {
81
+ missing.push(String(k));
82
+ }
83
+ }
84
+ return missing;
85
+ }
86
+ /**
87
+ * Convert a Zod object schema into the existing OutputSchema (json_schema) shape.
88
+ * Enforces the same rules as validateOutputSchema():
89
+ * - must have properties
90
+ * - each property must have type + description
91
+ */
92
+ export function zodOutputSchema(name, schema, strict = true) {
93
+ const json = zodToJsonSchema(schema, { name });
94
+ // zod-to-json-schema often returns {$ref:'#/definitions/<name>'} at the top.
95
+ // Our existing validator expects the *resolved* object schema with properties.
96
+ const resolved = json?.definitions?.[name] ?? json;
97
+ // Enforce per-field descriptions to match current output_schema validation.
98
+ const missing = collectMissingDescriptionsFromJsonSchema(resolved);
99
+ if (missing.length > 0) {
100
+ throw new QodoSchemaError(`output schema is missing description for: ${missing.join(', ')}. ` +
101
+ `In SDK v2, every output property must use .describe('...') so the backend receives a fully-described JSON schema.`);
102
+ }
103
+ const out = {
104
+ type: 'json_schema',
105
+ json_schema: {
106
+ name,
107
+ strict,
108
+ schema: resolved,
109
+ },
110
+ };
111
+ // Run existing validator to ensure we satisfy today's constraints.
112
+ const errors = [];
113
+ validateOutputSchema(out, 'sdk.output_schema', errors);
114
+ if (errors.length > 0) {
115
+ const msg = errors.map((e) => `${e.path}: ${e.message}`).join('; ');
116
+ throw new QodoSchemaError(`Invalid output_schema: ${msg}`);
117
+ }
118
+ return out;
119
+ }
120
+ /**
121
+ * Validate + coerce args using a Zod schema.
122
+ *
123
+ * This is the SDK v2 equivalent of validateCommandArgs(), but more powerful:
124
+ * - returns typed output
125
+ * - provides an actionable error message
126
+ */
127
+ export function parseArgsWithSchema(schema, args) {
128
+ const res = schema.safeParse(args);
129
+ if (res.success)
130
+ return res.data;
131
+ const msg = res.error.issues
132
+ .map((i) => `${i.path.join('.') || '(root)'}: ${i.message}`)
133
+ .join('; ');
134
+ throw new QodoSchemaError(`Invalid command args: ${msg}`);
135
+ }
136
+ /**
137
+ * Convenience helper for args schemas with descriptions.
138
+ *
139
+ * Note: unlike output schemas, we do not strictly require descriptions for args,
140
+ * but they are recommended for better tool_args_for_ui / UX.
141
+ */
142
+ export function zodArgsSchema(shape) {
143
+ return z.object(shape);
144
+ }
145
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/sdk/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { Flags } from "../types.js";
2
+ import { CommandConfig } from '../parser/types.js';
3
+ import { InternalSessionHistory } from "./history.js";
4
+ /**
5
+ * SessionContext manages global session state that needs to be shared across components
6
+ * This includes project root paths, session information, and other session-specific data
7
+ */
8
+ export declare class SessionContext {
9
+ private command;
10
+ private readonly generalInstructions;
11
+ private readonly systemPrompt;
12
+ private readonly flags;
13
+ private readonly sessionHistory;
14
+ private model;
15
+ private readonly sessionId;
16
+ private static instance;
17
+ private _projectRootPaths;
18
+ private _currentWorkingDirectory;
19
+ private _executionCwd;
20
+ private readonly _isResumedSession;
21
+ private readonly availableTools;
22
+ private readonly qodomd;
23
+ private readonly ignoreTools;
24
+ private _permissions;
25
+ private _previousSessionsSummarizationMap;
26
+ private _deltaFileLinkFormat;
27
+ private constructor();
28
+ static getInstance(): SessionContext;
29
+ /**
30
+ * Initialize the session context with validated project root paths
31
+ * This should be called early in the application lifecycle
32
+ */
33
+ static initialize(flags: Record<string, any>, command: CommandConfig, generalInstructions?: string, systemPrompt?: string, sessionHistory?: InternalSessionHistory, sessionId?: string): Promise<SessionContext>;
34
+ static newSessionContext(flags: Record<string, any>, command: CommandConfig, generalInstructions?: string, systemPrompt?: string, sessionHistory?: InternalSessionHistory, sessionId?: string): Promise<SessionContext>;
35
+ static setInstanceForSDK(ctx: SessionContext): void;
36
+ private getQodoMdContent;
37
+ setCommand(command: CommandConfig): void;
38
+ /**
39
+ * Set project root paths with access validation
40
+ */
41
+ setProjectRootPaths(paths: string[]): Promise<string[]>;
42
+ getProjectRootPaths(): string[];
43
+ getAvailableTools(): string[] | undefined;
44
+ getIgnoreTools(): string[] | undefined;
45
+ getLogOutput(): string | undefined;
46
+ getSessionId(): string;
47
+ getQodoMd(): string | undefined;
48
+ getGeneralInstructions(): string | undefined;
49
+ getSystemPrompt(): string | undefined;
50
+ getCommand(): CommandConfig;
51
+ getFlags(): Flags;
52
+ isResumedSession(): boolean;
53
+ /**
54
+ * Returns the application type. In SDK context, this is always "sdk".
55
+ */
56
+ getAppType(): string;
57
+ setModel(model: string): string;
58
+ getModel(): string;
59
+ getInternalSessionHistoryMessages(): Record<string, any>[] | undefined;
60
+ getExecutionStrategy(): "plan" | "act" | undefined;
61
+ getPermissions(): string;
62
+ setPermissions(permissions: string): void;
63
+ isDebugMode(): boolean;
64
+ setDeltaFileLinkFormat(format?: string): void;
65
+ getDeltaFileLinkFormat(): string | undefined;
66
+ serialize(): Record<string, any>;
67
+ /**
68
+ * Add a new project root path with validation
69
+ */
70
+ addProjectRootPath(dirPath: string): Promise<boolean>;
71
+ /**
72
+ * Reset the context (useful for testing or new sessions)
73
+ */
74
+ reset(): void;
75
+ /**
76
+ * Preferred execution CWD used by tools when not explicitly provided.
77
+ */
78
+ setExecutionCwd(dir: string | undefined): void;
79
+ getExecutionCwd(): string | undefined;
80
+ addPreviousSessionSummarization(sessionId: string, summary: string): void;
81
+ getPreviousSessionsSummarization(): {
82
+ sessionId: string;
83
+ summary: string;
84
+ }[];
85
+ }
86
+ //# sourceMappingURL=SessionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionContext.d.ts","sourceRoot":"","sources":["../../src/session/SessionContext.ts"],"names":[],"mappings":"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"}