gaunt-sloth-assistant 0.8.8 → 0.8.11

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 (229) hide show
  1. package/.gsloth.backstory.md +0 -0
  2. package/.gsloth.chat.md +0 -0
  3. package/.gsloth.code.md +0 -0
  4. package/.gsloth.guidelines.md +1 -1
  5. package/.gsloth.review.md +0 -0
  6. package/.gsloth.system.md +0 -0
  7. package/LICENSE +0 -0
  8. package/README.md +29 -12
  9. package/cli.js +2 -2
  10. package/dist/builtInToolsConfig.d.ts +2 -2
  11. package/dist/builtInToolsConfig.js +0 -0
  12. package/dist/builtInToolsConfig.js.map +1 -1
  13. package/dist/{index.d.ts → cli.d.ts} +0 -0
  14. package/dist/{index.js → cli.js} +2 -2
  15. package/dist/cli.js.map +1 -0
  16. package/dist/commands/askCommand.d.ts +0 -0
  17. package/dist/commands/askCommand.js +0 -0
  18. package/dist/commands/askCommand.js.map +0 -0
  19. package/dist/commands/chatCommand.d.ts +0 -0
  20. package/dist/commands/chatCommand.js +0 -0
  21. package/dist/commands/chatCommand.js.map +0 -0
  22. package/dist/commands/codeCommand.d.ts +0 -0
  23. package/dist/commands/codeCommand.js +0 -0
  24. package/dist/commands/codeCommand.js.map +0 -0
  25. package/dist/commands/commandUtils.d.ts +3 -3
  26. package/dist/commands/commandUtils.js +0 -0
  27. package/dist/commands/commandUtils.js.map +1 -1
  28. package/dist/commands/initCommand.d.ts +0 -0
  29. package/dist/commands/initCommand.js +0 -0
  30. package/dist/commands/initCommand.js.map +0 -0
  31. package/dist/commands/prCommand.d.ts +0 -0
  32. package/dist/commands/prCommand.js +0 -0
  33. package/dist/commands/prCommand.js.map +0 -0
  34. package/dist/commands/reviewCommand.d.ts +0 -0
  35. package/dist/commands/reviewCommand.js +0 -0
  36. package/dist/commands/reviewCommand.js.map +0 -0
  37. package/dist/config.d.ts +34 -11
  38. package/dist/config.js +3 -2
  39. package/dist/config.js.map +1 -1
  40. package/dist/consoleUtils.d.ts +0 -0
  41. package/dist/consoleUtils.js +0 -0
  42. package/dist/consoleUtils.js.map +0 -0
  43. package/dist/constants.d.ts +0 -0
  44. package/dist/constants.js +0 -0
  45. package/dist/constants.js.map +0 -0
  46. package/dist/core/GthAgentRunner.d.ts +18 -5
  47. package/dist/core/GthAgentRunner.js +36 -11
  48. package/dist/core/GthAgentRunner.js.map +1 -1
  49. package/dist/core/GthLangChainAgent.d.ts +5 -4
  50. package/dist/core/GthLangChainAgent.js +4 -0
  51. package/dist/core/GthLangChainAgent.js.map +1 -1
  52. package/dist/core/types.d.ts +2 -2
  53. package/dist/core/types.js +0 -0
  54. package/dist/core/types.js.map +0 -0
  55. package/dist/filePathUtils.d.ts +0 -0
  56. package/dist/filePathUtils.js +0 -0
  57. package/dist/filePathUtils.js.map +0 -0
  58. package/dist/globalConfigUtils.d.ts +0 -0
  59. package/dist/globalConfigUtils.js +0 -0
  60. package/dist/globalConfigUtils.js.map +0 -0
  61. package/dist/helpers/jira/jiraClient.d.ts +0 -0
  62. package/dist/helpers/jira/jiraClient.js +0 -0
  63. package/dist/helpers/jira/jiraClient.js.map +0 -0
  64. package/dist/helpers/jira/jiraLogWork.d.ts +0 -0
  65. package/dist/helpers/jira/jiraLogWork.js +0 -0
  66. package/dist/helpers/jira/jiraLogWork.js.map +0 -0
  67. package/dist/llmUtils.d.ts +2 -2
  68. package/dist/llmUtils.js +1 -1
  69. package/dist/llmUtils.js.map +1 -1
  70. package/dist/mcp/OAuthClientProviderImpl.d.ts +0 -0
  71. package/dist/mcp/OAuthClientProviderImpl.js +0 -0
  72. package/dist/mcp/OAuthClientProviderImpl.js.map +0 -0
  73. package/dist/modules/interactiveSessionModule.d.ts +0 -0
  74. package/dist/modules/interactiveSessionModule.js +7 -9
  75. package/dist/modules/interactiveSessionModule.js.map +1 -1
  76. package/dist/modules/questionAnsweringModule.d.ts +2 -2
  77. package/dist/modules/questionAnsweringModule.js +0 -0
  78. package/dist/modules/questionAnsweringModule.js.map +1 -1
  79. package/dist/modules/reviewModule.d.ts +2 -2
  80. package/dist/modules/reviewModule.js +0 -0
  81. package/dist/modules/reviewModule.js.map +1 -1
  82. package/dist/modules/types.d.ts +0 -0
  83. package/dist/modules/types.js +0 -0
  84. package/dist/modules/types.js.map +0 -0
  85. package/dist/presets/anthropic.d.ts +0 -0
  86. package/dist/presets/anthropic.js +0 -0
  87. package/dist/presets/anthropic.js.map +0 -0
  88. package/dist/presets/deepseek.d.ts +0 -0
  89. package/dist/presets/deepseek.js +0 -0
  90. package/dist/presets/deepseek.js.map +0 -0
  91. package/dist/presets/fake.d.ts +0 -0
  92. package/dist/presets/fake.js +0 -0
  93. package/dist/presets/fake.js.map +0 -0
  94. package/dist/presets/google-genai.d.ts +0 -0
  95. package/dist/presets/google-genai.js +0 -0
  96. package/dist/presets/google-genai.js.map +0 -0
  97. package/dist/presets/groq.d.ts +0 -0
  98. package/dist/presets/groq.js +0 -0
  99. package/dist/presets/groq.js.map +0 -0
  100. package/dist/presets/openai.d.ts +0 -0
  101. package/dist/presets/openai.js +0 -0
  102. package/dist/presets/openai.js.map +0 -0
  103. package/dist/presets/vertexai.d.ts +0 -0
  104. package/dist/presets/vertexai.js +0 -0
  105. package/dist/presets/vertexai.js.map +0 -0
  106. package/dist/presets/xai.d.ts +4 -0
  107. package/dist/presets/xai.js +30 -0
  108. package/dist/presets/xai.js.map +1 -0
  109. package/dist/prompt.d.ts +0 -0
  110. package/dist/prompt.js +3 -10
  111. package/dist/prompt.js.map +1 -1
  112. package/dist/providers/file.d.ts +0 -0
  113. package/dist/providers/file.js +0 -0
  114. package/dist/providers/file.js.map +0 -0
  115. package/dist/providers/ghIssueProvider.d.ts +0 -0
  116. package/dist/providers/ghIssueProvider.js +0 -0
  117. package/dist/providers/ghIssueProvider.js.map +0 -0
  118. package/dist/providers/ghPrDiffProvider.d.ts +0 -0
  119. package/dist/providers/ghPrDiffProvider.js +0 -0
  120. package/dist/providers/ghPrDiffProvider.js.map +0 -0
  121. package/dist/providers/jiraIssueLegacyProvider.d.ts +0 -0
  122. package/dist/providers/jiraIssueLegacyProvider.js +0 -0
  123. package/dist/providers/jiraIssueLegacyProvider.js.map +0 -0
  124. package/dist/providers/jiraIssueProvider.d.ts +0 -0
  125. package/dist/providers/jiraIssueProvider.js +0 -0
  126. package/dist/providers/jiraIssueProvider.js.map +0 -0
  127. package/dist/providers/text.d.ts +0 -0
  128. package/dist/providers/text.js +0 -0
  129. package/dist/providers/text.js.map +0 -0
  130. package/dist/providers/types.d.ts +0 -0
  131. package/dist/providers/types.js +0 -0
  132. package/dist/providers/types.js.map +0 -0
  133. package/dist/systemUtils.d.ts +1 -1
  134. package/dist/systemUtils.js +1 -1
  135. package/dist/systemUtils.js.map +0 -0
  136. package/dist/tools/GthFileSystemToolkit.d.ts +0 -0
  137. package/dist/tools/GthFileSystemToolkit.js +0 -0
  138. package/dist/tools/GthFileSystemToolkit.js.map +0 -0
  139. package/dist/tools/gthJiraLogWorkTool.d.ts +2 -2
  140. package/dist/tools/gthJiraLogWorkTool.js +0 -0
  141. package/dist/tools/gthJiraLogWorkTool.js.map +1 -1
  142. package/dist/tools/gthStatusUpdateTool.d.ts +2 -2
  143. package/dist/tools/gthStatusUpdateTool.js +0 -0
  144. package/dist/tools/gthStatusUpdateTool.js.map +1 -1
  145. package/dist/utils.d.ts +9 -2
  146. package/dist/utils.js +19 -0
  147. package/dist/utils.js.map +1 -1
  148. package/package.json +25 -7
  149. package/.gsloth.config_.json +0 -7
  150. package/.gsloth.config_.mjs +0 -33
  151. package/.gsloth.config_claude.mjs +0 -18
  152. package/.gsloth.config_vertex.json +0 -6
  153. package/.prettierrc.json +0 -9
  154. package/assets/gaunt-sloth-logo.png +0 -0
  155. package/assets/release-notes/RELEASE-NOTES-HOWTO.md +0 -12
  156. package/assets/release-notes/v0_4_0.md +0 -39
  157. package/assets/release-notes/v0_5_0.md +0 -10
  158. package/assets/release-notes/v0_5_1.md +0 -47
  159. package/assets/release-notes/v0_5_2.md +0 -23
  160. package/assets/release-notes/v0_5_3.md +0 -25
  161. package/assets/release-notes/v0_6_0.md +0 -44
  162. package/assets/release-notes/v0_6_2.md +0 -4
  163. package/assets/release-notes/v0_6_4.md +0 -4
  164. package/assets/release-notes/v0_6_5.md +0 -3
  165. package/assets/release-notes/v0_7_0.md +0 -7
  166. package/assets/release-notes/v0_7_2.md +0 -14
  167. package/assets/release-notes/v0_7_3.md +0 -64
  168. package/assets/release-notes/v0_8_0.md +0 -13
  169. package/assets/release-notes/v0_8_2.md +0 -9
  170. package/assets/release-notes/v0_8_5.md +0 -12
  171. package/assets/release-notes/v0_8_6.md +0 -12
  172. package/assets/release-notes/v0_8_7.md +0 -5
  173. package/assets/release-notes/v0_8_8.md +0 -15
  174. package/dist/index.js.map +0 -1
  175. package/docs/COMMANDS.md +0 -231
  176. package/docs/CONFIGURATION.md +0 -642
  177. package/docs/DEVELOPMENT.md +0 -46
  178. package/docs/RELEASE-HOWTO.md +0 -40
  179. package/eslint.config.js +0 -122
  180. package/it.js +0 -16
  181. package/maintenance/doc-maintenance.md +0 -8
  182. package/src/builtInToolsConfig.ts +0 -99
  183. package/src/commands/askCommand.ts +0 -51
  184. package/src/commands/chatCommand.ts +0 -25
  185. package/src/commands/codeCommand.ts +0 -24
  186. package/src/commands/commandUtils.ts +0 -77
  187. package/src/commands/initCommand.ts +0 -19
  188. package/src/commands/prCommand.ts +0 -118
  189. package/src/commands/reviewCommand.ts +0 -106
  190. package/src/config.ts +0 -363
  191. package/src/consoleUtils.ts +0 -84
  192. package/src/constants.ts +0 -12
  193. package/src/core/GthAgentRunner.ts +0 -85
  194. package/src/core/GthLangChainAgent.ts +0 -257
  195. package/src/core/types.ts +0 -22
  196. package/src/filePathUtils.ts +0 -77
  197. package/src/globalConfigUtils.ts +0 -71
  198. package/src/helpers/jira/jiraClient.ts +0 -99
  199. package/src/helpers/jira/jiraLogWork.ts +0 -81
  200. package/src/index.ts +0 -42
  201. package/src/llmUtils.ts +0 -72
  202. package/src/mcp/OAuthClientProviderImpl.ts +0 -236
  203. package/src/modules/interactiveSessionModule.ts +0 -105
  204. package/src/modules/questionAnsweringModule.ts +0 -39
  205. package/src/modules/reviewModule.ts +0 -34
  206. package/src/modules/types.ts +0 -23
  207. package/src/presets/anthropic.ts +0 -42
  208. package/src/presets/deepseek.ts +0 -42
  209. package/src/presets/fake.ts +0 -15
  210. package/src/presets/google-genai.ts +0 -42
  211. package/src/presets/groq.ts +0 -37
  212. package/src/presets/openai.ts +0 -59
  213. package/src/presets/vertexai.ts +0 -32
  214. package/src/prompt.ts +0 -74
  215. package/src/providers/file.ts +0 -24
  216. package/src/providers/ghIssueProvider.ts +0 -39
  217. package/src/providers/ghPrDiffProvider.ts +0 -39
  218. package/src/providers/jiraIssueLegacyProvider.ts +0 -103
  219. package/src/providers/jiraIssueProvider.ts +0 -89
  220. package/src/providers/text.ts +0 -14
  221. package/src/providers/types.ts +0 -24
  222. package/src/systemUtils.ts +0 -107
  223. package/src/tools/GthFileSystemToolkit.ts +0 -833
  224. package/src/tools/gthJiraLogWorkTool.ts +0 -51
  225. package/src/tools/gthStatusUpdateTool.ts +0 -17
  226. package/src/utils.ts +0 -331
  227. package/tsconfig.json +0 -24
  228. package/vitest-it.config.ts +0 -13
  229. package/vitest.config.ts +0 -14
File without changes
package/.gsloth.chat.md CHANGED
File without changes
package/.gsloth.code.md CHANGED
File without changes
@@ -19,7 +19,7 @@ Vendor and system abstractions and wrappers should be used in most cases.
19
19
 
20
20
  Project uses import alias with `#src/*.js` pointing to `src/` and after build resolving to generated `dist/`.
21
21
  Please abstain from using relative imports, only use them when no other choices are available
22
- (currently the only exception is entry point index.js)
22
+ (currently the only exception is entry point cli.js)
23
23
 
24
24
  ### Architecture and Flow
25
25
 
package/.gsloth.review.md CHANGED
File without changes
package/.gsloth.system.md CHANGED
File without changes
package/LICENSE CHANGED
File without changes
package/README.md CHANGED
@@ -41,7 +41,7 @@ The promise of Gaunt Sloth:
41
41
  - Fetches descriptions (requirements) from Github issue or Jira (`gsloth pr 42 12`);;
42
42
  - Answers questions about provided code;
43
43
  - Writes code;
44
- - Connects to MCP server;
44
+ - Connects to MCP server (including remote MCP with OAuth);
45
45
  - Saves all responses in .md file in the project directory;
46
46
  - Anything else you need, when combined with other command line tools.
47
47
 
@@ -49,10 +49,11 @@ The promise of Gaunt Sloth:
49
49
 
50
50
  - Groq;
51
51
  - DeepSeek;
52
- - Google Vertex AI and Google AI Studio;
52
+ - Google AI Studio and Google Vertex AI;
53
53
  - Anthropic;
54
54
  - OpenAI (and other providers using OpenAI format, such as Inception);
55
55
  - Ollama with JS config (some of the models, see https://github.com/andruhon/gaunt-sloth-assistant/discussions/107)
56
+ - xAI;
56
57
 
57
58
  `*` Any other provider supported by LangChain.JS should also work with [JS config](./docs/CONFIGURATION.md#JavaScript-Configuration).
58
59
 
@@ -129,31 +130,34 @@ npm install gaunt-sloth-assistant -g
129
130
 
130
131
  ## Configuration
131
132
 
132
- > Gaunt Sloth currently only functions from the directory which has a configuration file (`.gsloth.config.js`, `.gsloth.config.json`, or `.gsloth.config.mjs`) and `.gsloth.guidelines.md`.
133
+ > Gaunt Sloth currently only functions from the directory which has a configuration file (`.gsloth.config.js`, `.gsloth.config.json`, or `.gsloth.config.mjs`) and `.gsloth.guidelines.md`. Configuration files can be located in the project root or in the `.gsloth/.gsloth-settings/` directory.
134
+ >
135
+ > You can also specify a path to a configuration file directly using the `-c` or `--config` global flag, for example `gth -c /path/to/your/config.json ask "who are you?"`
136
+ > Note, however, is that project guidelines are going to be used from current directory if they exist and simple install dir prompt is going to be used if nothing found.
133
137
 
134
138
  Configuration can be created with `gsloth init [vendor]` command.
135
- Currently, vertexai, anthropic, groq, deepseek and openai can be configured with `gsloth init [vendor]`.
139
+ Currently, anthropic, groq, deepseek, openai, google-genai, vertexai and xai can be configured with `gsloth init [vendor]`.
136
140
  For OpenAI-compatible providers like Inception, use `gsloth init openai` and modify the configuration.
137
141
 
138
142
  More detailed information on configuration can be found in [CONFIGURATION.md](./docs/CONFIGURATION.md)
139
143
 
140
- ### Google Vertex AI
144
+ ### Google GenAI (AI Studio)
141
145
 
142
146
  ```shell
143
147
  cd ./your-project
144
- gsloth init vertexai
145
- gcloud auth login
146
- gcloud auth application-default login
148
+ gsloth init google-genai
147
149
  ```
150
+ Make sure you either define `GOOGLE_API_KEY` environment variable or edit your configuration file and set up your key.
151
+ It is recommended to obtain API key from Google AI Studio official website rather than from a reseller.
148
152
 
149
- ### Google GenAI (AI Studio)
153
+ ### Google Vertex AI
150
154
 
151
155
  ```shell
152
156
  cd ./your-project
153
- gsloth init google-genai
157
+ gsloth init vertexai
158
+ gcloud auth login
159
+ gcloud auth application-default login
154
160
  ```
155
- Make sure you either define `GOOGLE_API_KEY` environment variable or edit your configuration file and set up your key.
156
- It is recommended to obtain API key from Google AI Studio official website rather than from a reseller.
157
161
 
158
162
  ### Anthropic
159
163
 
@@ -194,10 +198,23 @@ gsloth init openai
194
198
  ```
195
199
  Then edit your configuration to add custom base URL and API key. See [CONFIGURATION.md](./docs/CONFIGURATION.md) for examples.
196
200
 
201
+ ### xAI
202
+ ```shell
203
+ cd ./your-project
204
+ gsloth init xai
205
+ ```
206
+ Make sure you either define `XAI_API_KEY` environment variable or edit your configuration file and set up your key.
207
+
197
208
  ### Other AI providers
198
209
  Any other AI provider supported by Langchain.js can be configured with js [Config](./docs/CONFIGURATION.md).
199
210
  For example, Ollama can be set up with JS config (some of the models, see https://github.com/andruhon/gaunt-sloth-assistant/discussions/107)
200
211
 
212
+ ## Integration with GitHub Workflows / Actions
213
+
214
+ Example GitHub workflows integration can be found in [.github/workflows/review.yml;](.github/workflows/review.yml)
215
+ this example workflow performs AI review on any pushes to Pull Request, resulting in a comment left by,
216
+ GitHub actions bot.
217
+
201
218
  ## MCP (Model Context Protocol) Servers
202
219
 
203
220
  Gaunt Sloth supports connecting to MCP servers, including those requiring OAuth authentication.
package/cli.js CHANGED
@@ -10,14 +10,14 @@ process.on('warning', (warning) => {
10
10
  });
11
11
 
12
12
  // This is a minimalistic entry point that sets the installDir in systemUtils
13
- // and delegates to the compiled TypeScript code in dist/index.js
13
+ // and delegates to the compiled TypeScript code in dist/cli.js
14
14
  import { setEntryPoint } from './dist/systemUtils.js';
15
15
 
16
16
  // Set the installation directory in systemUtils
17
17
  setEntryPoint(import.meta.url);
18
18
 
19
19
  // Import and run the compiled TypeScript code
20
- import('./dist/index.js').catch((err) => {
20
+ import('./dist/cli.js').catch((err) => {
21
21
  console.error('Failed to load application:', err);
22
22
  process.exit(1);
23
23
  });
@@ -1,6 +1,6 @@
1
1
  import { StructuredToolInterface } from '@langchain/core/tools';
2
- import { SlothConfig } from '#src/config.js';
2
+ import { GthConfig } from '#src/config.js';
3
3
  /**
4
4
  * Get default tools based on filesystem and built-in tools configuration
5
5
  */
6
- export declare function getDefaultTools(config: SlothConfig): Promise<StructuredToolInterface[]>;
6
+ export declare function getDefaultTools(config: GthConfig): Promise<StructuredToolInterface[]>;
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"builtInToolsConfig.js","sourceRoot":"","sources":["../src/builtInToolsConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builtInToolsConfig.js","sourceRoot":"","sources":["../src/builtInToolsConfig.ts"],"names":[],"mappings":"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"}
File without changes
@@ -15,7 +15,7 @@ program
15
15
  .description('Gaunt Sloth Assistant reviewing your PRs')
16
16
  .version(getSlothVersion())
17
17
  .option('--verbose', 'Print entire prompt sent to LLM.')
18
- .option('--config <path>', 'Path to custom configuration file')
18
+ .option('-c, --config <path>', 'Path to custom configuration file')
19
19
  .addOption(new Option('--nopipe').hideHelp(true));
20
20
  // Parse global options before binding any commands
21
21
  program.parseOptions(argv);
@@ -35,4 +35,4 @@ askCommand(program);
35
35
  chatCommand(program);
36
36
  codeCommand(program);
37
37
  await readStdin(program);
38
- //# sourceMappingURL=index.js.map
38
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,0CAA0C,CAAC;KACvD,OAAO,CAAC,eAAe,EAAE,CAAC;KAC1B,MAAM,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACvD,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;KAClE,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAEpD,mDAAmD;AACnD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;IACtC,0BAA0B;IAC1B,UAAU,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AACD,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrC,yBAAyB;IACzB,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,sEAAsE;AACtE,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,SAAS,CAAC,OAAO,CAAC,CAAC;AACnB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,WAAW,CAAC,OAAO,CAAC,CAAC;AAErB,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,4 +1,4 @@
1
- import type { SlothConfig } from '#src/config.js';
1
+ import type { GthConfig } from '#src/config.js';
2
2
  /**
3
3
  * Requirements providers. Expected to be in `.providers/` dir.
4
4
  * Aliases are mapped to actual providers in this file
@@ -21,5 +21,5 @@ export declare const CONTENT_PROVIDERS: {
21
21
  readonly file: "file.js";
22
22
  };
23
23
  export type ContentProviderType = keyof typeof CONTENT_PROVIDERS;
24
- export declare function getRequirementsFromProvider(requirementsProvider: RequirementsProviderType | undefined, requirementsId: string | undefined, config: SlothConfig): Promise<string>;
25
- export declare function getContentFromProvider(contentProvider: ContentProviderType | undefined, contentId: string | undefined, config: SlothConfig): Promise<string>;
24
+ export declare function getRequirementsFromProvider(requirementsProvider: RequirementsProviderType | undefined, requirementsId: string | undefined, config: GthConfig): Promise<string>;
25
+ export declare function getContentFromProvider(contentProvider: ContentProviderType | undefined, contentId: string | undefined, config: GthConfig): Promise<string>;
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"commandUtils.js","sourceRoot":"","sources":["../../src/commands/commandUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,4BAA4B;IAC3C,IAAI,EAAE,sBAAsB;IAC5B,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;CACP,CAAC;AAIX;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,qBAAqB;IAC7B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;CACP,CAAC;AAIX,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,oBAA0D,EAC1D,cAAkC,EAClC,MAAmB;IAEnB,OAAO,eAAe,CACpB,oBAAoB,EACpB,cAAc,EACd,CAAC,MAAM,EAAE,0BAA0B,IAAI,EAAE,CAAC,CAAC,oBAA8B,CAAC,EAC1E,sBAAsB,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,eAAgD,EAChD,SAA6B,EAC7B,MAAmB;IAEnB,OAAO,eAAe,CACpB,eAAe,EACf,SAAS,EACT,CAAC,MAAM,EAAE,qBAAqB,IAAI,EAAE,CAAC,CAAC,eAAyB,CAAC,EAChE,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,QAAoE,EACpE,EAAsB;AACtB,8DAA8D;AAC9D,MAAW,EACX,wBAAkF;IAElF,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,sCAAsC;QACtC,IAAI,wBAAwB,CAAC,QAAiD,CAAC,EAAE,CAAC;YAChF,MAAM,YAAY,GAAG,kBAAkB,wBAAwB,CAAC,QAAiD,CAAC,EAAE,CAAC;YACrH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YAC3C,OAAO,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,qBAAqB,QAAQ,0BAA0B,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC1C,yCAAyC;QACzC,OAAO,MAAO,QAAwD,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"commandUtils.js","sourceRoot":"","sources":["../../src/commands/commandUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,4BAA4B;IAC3C,IAAI,EAAE,sBAAsB;IAC5B,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;CACP,CAAC;AAIX;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,qBAAqB;IAC7B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;CACP,CAAC;AAIX,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,oBAA0D,EAC1D,cAAkC,EAClC,MAAiB;IAEjB,OAAO,eAAe,CACpB,oBAAoB,EACpB,cAAc,EACd,CAAC,MAAM,EAAE,0BAA0B,IAAI,EAAE,CAAC,CAAC,oBAA8B,CAAC,EAC1E,sBAAsB,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,eAAgD,EAChD,SAA6B,EAC7B,MAAiB;IAEjB,OAAO,eAAe,CACpB,eAAe,EACf,SAAS,EACT,CAAC,MAAM,EAAE,qBAAqB,IAAI,EAAE,CAAC,CAAC,eAAyB,CAAC,EAChE,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,QAAoE,EACpE,EAAsB;AACtB,8DAA8D;AAC9D,MAAW,EACX,wBAAkF;IAElF,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,sCAAsC;QACtC,IAAI,wBAAwB,CAAC,QAAiD,CAAC,EAAE,CAAC;YAChF,MAAM,YAAY,GAAG,kBAAkB,wBAAwB,CAAC,QAAiD,CAAC,EAAE,CAAC;YACrH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YAC3C,OAAO,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,qBAAqB,QAAQ,0BAA0B,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC1C,yCAAyC;QACzC,OAAO,MAAO,QAAwD,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/config.d.ts CHANGED
@@ -2,7 +2,14 @@ import type { BaseChatModel } from '@langchain/core/language_models/chat_models'
2
2
  import type { Connection } from '@langchain/mcp-adapters';
3
3
  import type { BaseToolkit, StructuredToolInterface } from '@langchain/core/tools';
4
4
  import { JiraConfig } from '#src/providers/types.js';
5
- export interface SlothConfig extends BaseSlothConfig {
5
+ import type { GthAgentInterface } from '#src/core/types.js';
6
+ import type { GthAgentRunner } from '#src/core/GthAgentRunner.js';
7
+ import type { Message } from '#src/modules/types.js';
8
+ import { RunnableConfig } from '@langchain/core/runnables';
9
+ /**
10
+ * This is a processed Gaunt Sloth config ready to be passed down into components.
11
+ */
12
+ export interface GthConfig extends BaseGthConfig {
6
13
  llm: BaseChatModel;
7
14
  contentProvider: string;
8
15
  requirementsProvider: string;
@@ -13,17 +20,33 @@ export interface SlothConfig extends BaseSlothConfig {
13
20
  filesystem: string[] | 'all' | 'read' | 'none';
14
21
  builtInTools?: string[];
15
22
  tools?: StructuredToolInterface[] | BaseToolkit[];
23
+ /**
24
+ * Hooks are only available on JS config
25
+ */
26
+ hooks?: {
27
+ createRunnableConfig?: (config: GthConfig) => Promise<RunnableConfig>;
28
+ createAgent?: (config: GthConfig) => Promise<GthAgentInterface>;
29
+ beforeAgentInit?: RunnerHook | RunnerHook[];
30
+ /**
31
+ * After agent init.
32
+ */
33
+ afterAgentInit?: RunnerHook | RunnerHook[];
34
+ beforeProcessMessages?: BeforeMessageHook | BeforeMessageHook[];
35
+ };
16
36
  }
37
+ type RunnerHook = (runner: GthAgentRunner) => Promise<void>;
38
+ type BeforeMessageHook = (runner: GthAgentRunner, message: Message[], runConfig: RunnableConfig) => Promise<void>;
17
39
  /**
18
- * Raw, unprocessed sloth config
40
+ * Raw, unprocessed Gaunt Sloth config.
19
41
  */
20
- export interface RawSlothConfig extends BaseSlothConfig {
42
+ export interface RawGthConfig extends BaseGthConfig {
21
43
  llm: LLMConfig;
22
44
  }
23
45
  /**
24
- * Do not export this one
46
+ * Do not export this one.
47
+ * This is a basic interface for Gaunt Sloth config.
25
48
  */
26
- interface BaseSlothConfig {
49
+ interface BaseGthConfig {
27
50
  llm: unknown;
28
51
  contentProvider?: string;
29
52
  requirementsProvider?: string;
@@ -76,23 +99,23 @@ export interface LLMConfig extends Record<string, unknown> {
76
99
  configuration: Record<string, unknown>;
77
100
  apiKeyEnvironmentVariable?: string;
78
101
  }
79
- export declare const availableDefaultConfigs: readonly ["vertexai", "anthropic", "groq", "deepseek", "openai", "google-genai"];
102
+ export declare const availableDefaultConfigs: readonly ["vertexai", "anthropic", "groq", "deepseek", "openai", "google-genai", "xai"];
80
103
  export type ConfigType = (typeof availableDefaultConfigs)[number];
81
104
  export declare function setCustomConfigPath(path: string): void;
82
105
  export declare function getCustomConfigPath(): string | undefined;
83
106
  export declare function clearCustomConfigPath(): void;
84
- export declare const DEFAULT_CONFIG: Partial<SlothConfig>;
107
+ export declare const DEFAULT_CONFIG: Partial<GthConfig>;
85
108
  /**
86
109
  * Initialize configuration by loading from available config files
87
- * @returns The loaded SlothConfig
110
+ * @returns The loaded GthConfig
88
111
  */
89
- export declare function initConfig(): Promise<SlothConfig>;
112
+ export declare function initConfig(): Promise<GthConfig>;
90
113
  /**
91
114
  * Process JSON LLM config by creating the appropriate LLM instance
92
115
  * @param jsonConfig - The parsed JSON config
93
- * @returns Promise<SlothConfig>
116
+ * @returns Promise<GthConfig>
94
117
  */
95
- export declare function tryJsonConfig(jsonConfig: RawSlothConfig): Promise<SlothConfig>;
118
+ export declare function tryJsonConfig(jsonConfig: RawGthConfig): Promise<GthConfig>;
96
119
  export declare function createProjectConfig(configType: string): Promise<void>;
97
120
  export declare function writeProjectReviewPreamble(): void;
98
121
  export {};
package/dist/config.js CHANGED
@@ -12,6 +12,7 @@ export const availableDefaultConfigs = [
12
12
  'deepseek',
13
13
  'openai',
14
14
  'google-genai',
15
+ 'xai',
15
16
  ];
16
17
  const configGlobalSettings = {
17
18
  customConfigPath: undefined,
@@ -46,7 +47,7 @@ export const DEFAULT_CONFIG = {
46
47
  };
47
48
  /**
48
49
  * Initialize configuration by loading from available config files
49
- * @returns The loaded SlothConfig
50
+ * @returns The loaded GthConfig
50
51
  */
51
52
  export async function initConfig() {
52
53
  if (configGlobalSettings.customConfigPath && !existsSync(configGlobalSettings.customConfigPath)) {
@@ -133,7 +134,7 @@ async function tryMjsConfig() {
133
134
  /**
134
135
  * Process JSON LLM config by creating the appropriate LLM instance
135
136
  * @param jsonConfig - The parsed JSON config
136
- * @returns Promise<SlothConfig>
137
+ * @returns Promise<GthConfig>
137
138
  */
138
139
  export async function tryJsonConfig(jsonConfig) {
139
140
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
package/dist/constants.js CHANGED
File without changes
File without changes
@@ -1,17 +1,30 @@
1
1
  import type { Message } from '#src/modules/types.js';
2
- import { SlothConfig } from '#src/config.js';
2
+ import { GthConfig } from '#src/config.js';
3
3
  import { BaseCheckpointSaver } from '@langchain/langgraph';
4
4
  import { GthAgentInterface, GthCommand } from '#src/core/types.js';
5
5
  import { StatusUpdateCallback } from '#src/core/GthLangChainAgent.js';
6
- import { RunnableConfig } from '@langchain/core/runnables';
6
+ /**
7
+ * Agent simplifies interaction with LLM and reduces it to calling a few methods
8
+ * {@link #init} and {@link #processMessages}.
9
+ */
7
10
  export declare class GthAgentRunner {
8
11
  private statusUpdate;
9
12
  private verbose;
10
13
  private agent;
11
14
  private config;
12
- constructor(statusUpdate: StatusUpdateCallback, agent?: GthAgentInterface);
15
+ private runConfig;
16
+ constructor(statusUpdate: StatusUpdateCallback);
13
17
  setVerbose(verbose: boolean): void;
14
- init(command: GthCommand | undefined, configIn: SlothConfig, checkpointSaver?: BaseCheckpointSaver | undefined): Promise<void>;
15
- processMessages(messages: Message[], runConfig: RunnableConfig): Promise<string>;
18
+ /**
19
+ * Init is split into a separate method. This may create a number of connections,
20
+ * and we'd better have an instance by that moment, for the case things will go wrong,
21
+ * so we can wrap init into try-catch and then call {@link #cleanup} within finally.
22
+ */
23
+ init(command: GthCommand | undefined, configIn: GthConfig, checkpointSaver?: BaseCheckpointSaver | undefined): Promise<void>;
24
+ /**
25
+ * processMessages deals with both streaming and non-streaming approaches.
26
+ */
27
+ processMessages(messages: Message[]): Promise<string>;
28
+ getAgent(): GthAgentInterface | null;
16
29
  cleanup(): Promise<void>;
17
30
  }
@@ -1,38 +1,59 @@
1
1
  import { GthLangChainAgent } from '#src/core/GthLangChainAgent.js';
2
+ import { executeHooks } from '#src/utils.js';
3
+ import { getNewRunnableConfig } from '#src/llmUtils.js';
4
+ /**
5
+ * Agent simplifies interaction with LLM and reduces it to calling a few methods
6
+ * {@link #init} and {@link #processMessages}.
7
+ */
2
8
  export class GthAgentRunner {
3
9
  statusUpdate;
4
10
  verbose = false;
5
11
  agent = null;
6
12
  config = null;
7
- constructor(statusUpdate, agent) {
13
+ runConfig = null;
14
+ constructor(statusUpdate) {
8
15
  this.statusUpdate = statusUpdate;
9
- this.agent = agent || null;
10
16
  }
11
17
  setVerbose(verbose) {
12
18
  this.verbose = verbose;
13
19
  }
20
+ /**
21
+ * Init is split into a separate method. This may create a number of connections,
22
+ * and we'd better have an instance by that moment, for the case things will go wrong,
23
+ * so we can wrap init into try-catch and then call {@link #cleanup} within finally.
24
+ */
14
25
  async init(command, configIn, checkpointSaver) {
15
26
  this.config = configIn;
16
- // Create default agent if none provided
17
- if (!this.agent) {
18
- this.agent = new GthLangChainAgent(this.statusUpdate);
19
- }
27
+ this.runConfig = this.config.hooks?.createRunnableConfig
28
+ ? await this.config.hooks.createRunnableConfig(this.config)
29
+ : getNewRunnableConfig();
30
+ this.agent = this.config.hooks?.createAgent
31
+ ? await this.config.hooks?.createAgent(this.config)
32
+ : new GthLangChainAgent(this.statusUpdate);
20
33
  // Set verbose mode before initialization so it can be used during init
21
34
  if (this.verbose) {
22
35
  this.agent.setVerbose(this.verbose);
23
36
  }
24
- // Initialize the agent if it has an init method
37
+ // Call before init hook
38
+ await executeHooks(this.config.hooks?.beforeAgentInit, this);
39
+ // Initialize the agent
25
40
  await this.agent.init(command, configIn, checkpointSaver);
41
+ // Call after init hook
42
+ await executeHooks(this.config.hooks?.afterAgentInit, this);
26
43
  }
27
- async processMessages(messages, runConfig) {
28
- if (!this.agent || !this.config) {
44
+ /**
45
+ * processMessages deals with both streaming and non-streaming approaches.
46
+ */
47
+ async processMessages(messages) {
48
+ if (!this.agent || !this.config || !this.runConfig) {
29
49
  throw new Error('AgentRunner not initialized. Call init() first.');
30
50
  }
51
+ await executeHooks(this.config.hooks?.beforeProcessMessages, this, messages, this.runConfig);
31
52
  try {
32
53
  // Decision: Use streaming or non-streaming based on config
33
54
  if (this.config.streamOutput) {
34
55
  // Use streaming
35
- const stream = await this.agent.stream(messages, runConfig);
56
+ const stream = await this.agent.stream(messages, this.runConfig);
36
57
  let result = '';
37
58
  try {
38
59
  for await (const chunk of stream) {
@@ -47,7 +68,7 @@ export class GthAgentRunner {
47
68
  }
48
69
  else {
49
70
  // Use non-streaming
50
- return await this.agent.invoke(messages, runConfig);
71
+ return await this.agent.invoke(messages, this.runConfig);
51
72
  }
52
73
  }
53
74
  catch (error) {
@@ -55,6 +76,10 @@ export class GthAgentRunner {
55
76
  throw new Error(`Agent processing failed: ${error instanceof Error ? error.message : String(error)}`);
56
77
  }
57
78
  }
79
+ // noinspection JSUnusedGlobalSymbols
80
+ getAgent() {
81
+ return this.agent;
82
+ }
58
83
  async cleanup() {
59
84
  if (this.agent && 'cleanup' in this.agent && typeof this.agent.cleanup === 'function') {
60
85
  await this.agent.cleanup();
@@ -1 +1 @@
1
- {"version":3,"file":"GthAgentRunner.js","sourceRoot":"","sources":["../../src/core/GthAgentRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GthAgentRunner.js","sourceRoot":"","sources":["../../src/core/GthAgentRunner.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { SlothConfig } from '#src/config.js';
1
+ import { GthConfig } from '#src/config.js';
2
2
  import type { Connection } from '@langchain/mcp-adapters';
3
3
  import { MultiServerMCPClient } from '@langchain/mcp-adapters';
4
4
  import { BaseCheckpointSaver } from '@langchain/langgraph';
@@ -15,7 +15,7 @@ export declare class GthLangChainAgent implements GthAgentInterface {
15
15
  private config;
16
16
  constructor(statusUpdate: StatusUpdateCallback);
17
17
  setVerbose(verbose: boolean): void;
18
- init(command: GthCommand | undefined, configIn: SlothConfig, checkpointSaver?: BaseCheckpointSaver | undefined): Promise<void>;
18
+ init(command: GthCommand | undefined, configIn: GthConfig, checkpointSaver?: BaseCheckpointSaver | undefined): Promise<void>;
19
19
  /**
20
20
  * Invoke LLM with a message and runnable config.
21
21
  * For streaming use {@link #stream} method, streaming is preferred if model API supports it.
@@ -28,12 +28,13 @@ export declare class GthLangChainAgent implements GthAgentInterface {
28
28
  * When stream is not appropriate use {@link invoke}.
29
29
  */
30
30
  stream(messages: Message[], runConfig: RunnableConfig): Promise<IterableReadableStream<string>>;
31
+ getMCPClient(): MultiServerMCPClient | null;
31
32
  cleanup(): Promise<void>;
32
- getEffectiveConfig(config: SlothConfig, command: GthCommand | undefined): SlothConfig;
33
+ getEffectiveConfig(config: GthConfig, command: GthCommand | undefined): GthConfig;
33
34
  /**
34
35
  * Extract and flatten tools from toolkits
35
36
  */
36
37
  private extractAndFlattenTools;
37
38
  protected getDefaultMcpServers(): Record<string, Connection>;
38
- protected getMcpClient(config: SlothConfig): Promise<MultiServerMCPClient | null>;
39
+ protected getMcpClient(config: GthConfig): Promise<MultiServerMCPClient | null>;
39
40
  }
@@ -139,6 +139,10 @@ export class GthLangChainAgent {
139
139
  },
140
140
  });
141
141
  }
142
+ // noinspection JSUnusedGlobalSymbols
143
+ getMCPClient() {
144
+ return this.mcpClient;
145
+ }
142
146
  async cleanup() {
143
147
  if (this.mcpClient) {
144
148
  await this.mcpClient.close();