gaunt-sloth-assistant 0.8.11 → 0.9.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.
- package/.gsloth.backstory.md +0 -0
- package/.gsloth.chat.md +0 -0
- package/.gsloth.code.md +32 -19
- package/.gsloth.guidelines.md +4 -2
- package/.gsloth.review.md +0 -0
- package/.gsloth.system.md +0 -0
- package/LICENSE +0 -0
- package/README.md +16 -1
- package/dist/builtInToolsConfig.d.ts +2 -1
- package/dist/builtInToolsConfig.js +16 -4
- package/dist/builtInToolsConfig.js.map +1 -1
- package/dist/cli.d.ts +0 -0
- package/dist/cli.js.map +0 -0
- package/dist/commands/askCommand.d.ts +0 -0
- package/dist/commands/askCommand.js +0 -0
- package/dist/commands/askCommand.js.map +0 -0
- package/dist/commands/chatCommand.d.ts +0 -0
- package/dist/commands/chatCommand.js +0 -0
- package/dist/commands/chatCommand.js.map +0 -0
- package/dist/commands/codeCommand.d.ts +0 -0
- package/dist/commands/codeCommand.js +0 -0
- package/dist/commands/codeCommand.js.map +0 -0
- package/dist/commands/commandUtils.d.ts +0 -0
- package/dist/commands/commandUtils.js +0 -0
- package/dist/commands/commandUtils.js.map +0 -0
- package/dist/commands/initCommand.d.ts +0 -0
- package/dist/commands/initCommand.js +0 -0
- package/dist/commands/initCommand.js.map +0 -0
- package/dist/commands/prCommand.d.ts +0 -0
- package/dist/commands/prCommand.js +3 -3
- package/dist/commands/prCommand.js.map +1 -1
- package/dist/commands/reviewCommand.d.ts +0 -0
- package/dist/commands/reviewCommand.js +0 -0
- package/dist/commands/reviewCommand.js.map +0 -0
- package/dist/config.d.ts +33 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/consoleUtils.d.ts +0 -0
- package/dist/consoleUtils.js +0 -0
- package/dist/consoleUtils.js.map +0 -0
- package/dist/constants.d.ts +0 -0
- package/dist/constants.js +0 -0
- package/dist/constants.js.map +0 -0
- package/dist/core/GthAgentRunner.d.ts +0 -0
- package/dist/core/GthAgentRunner.js +22 -1
- package/dist/core/GthAgentRunner.js.map +1 -1
- package/dist/core/GthLangChainAgent.d.ts +0 -0
- package/dist/core/GthLangChainAgent.js +51 -4
- package/dist/core/GthLangChainAgent.js.map +1 -1
- package/dist/core/types.d.ts +0 -0
- package/dist/core/types.js +0 -0
- package/dist/core/types.js.map +0 -0
- package/dist/debugUtils.d.ts +20 -0
- package/dist/debugUtils.js +89 -0
- package/dist/debugUtils.js.map +1 -0
- package/dist/filePathUtils.d.ts +0 -0
- package/dist/filePathUtils.js +0 -0
- package/dist/filePathUtils.js.map +0 -0
- package/dist/globalConfigUtils.d.ts +0 -0
- package/dist/globalConfigUtils.js +0 -0
- package/dist/globalConfigUtils.js.map +0 -0
- package/dist/helpers/jira/jiraClient.d.ts +0 -0
- package/dist/helpers/jira/jiraClient.js +0 -0
- package/dist/helpers/jira/jiraClient.js.map +0 -0
- package/dist/helpers/jira/jiraLogWork.d.ts +0 -0
- package/dist/helpers/jira/jiraLogWork.js +0 -0
- package/dist/helpers/jira/jiraLogWork.js.map +0 -0
- package/dist/llmUtils.d.ts +0 -0
- package/dist/llmUtils.js +0 -0
- package/dist/llmUtils.js.map +0 -0
- package/dist/mcp/OAuthClientProviderImpl.d.ts +0 -0
- package/dist/mcp/OAuthClientProviderImpl.js +0 -0
- package/dist/mcp/OAuthClientProviderImpl.js.map +0 -0
- package/dist/modules/interactiveSessionModule.d.ts +0 -0
- package/dist/modules/interactiveSessionModule.js +22 -4
- package/dist/modules/interactiveSessionModule.js.map +1 -1
- package/dist/modules/questionAnsweringModule.d.ts +0 -0
- package/dist/modules/questionAnsweringModule.js +0 -0
- package/dist/modules/questionAnsweringModule.js.map +0 -0
- package/dist/modules/reviewModule.d.ts +0 -0
- package/dist/modules/reviewModule.js +0 -0
- package/dist/modules/reviewModule.js.map +0 -0
- package/dist/modules/types.d.ts +0 -0
- package/dist/modules/types.js +0 -0
- package/dist/modules/types.js.map +0 -0
- package/dist/presets/anthropic.d.ts +0 -0
- package/dist/presets/anthropic.js +0 -0
- package/dist/presets/anthropic.js.map +0 -0
- package/dist/presets/deepseek.d.ts +0 -0
- package/dist/presets/deepseek.js +0 -0
- package/dist/presets/deepseek.js.map +0 -0
- package/dist/presets/fake.d.ts +0 -0
- package/dist/presets/fake.js +0 -0
- package/dist/presets/fake.js.map +0 -0
- package/dist/presets/google-genai.d.ts +0 -0
- package/dist/presets/google-genai.js +0 -0
- package/dist/presets/google-genai.js.map +0 -0
- package/dist/presets/groq.d.ts +0 -0
- package/dist/presets/groq.js +0 -0
- package/dist/presets/groq.js.map +0 -0
- package/dist/presets/openai.d.ts +0 -0
- package/dist/presets/openai.js +0 -0
- package/dist/presets/openai.js.map +0 -0
- package/dist/presets/openrouter.d.ts +5 -0
- package/dist/presets/openrouter.js +54 -0
- package/dist/presets/openrouter.js.map +1 -0
- package/dist/presets/vertexai.d.ts +0 -0
- package/dist/presets/vertexai.js +0 -0
- package/dist/presets/vertexai.js.map +0 -0
- package/dist/presets/xai.d.ts +0 -0
- package/dist/presets/xai.js +0 -0
- package/dist/presets/xai.js.map +0 -0
- package/dist/prompt.d.ts +0 -0
- package/dist/prompt.js +0 -0
- package/dist/prompt.js.map +0 -0
- package/dist/providers/file.d.ts +0 -0
- package/dist/providers/file.js +0 -0
- package/dist/providers/file.js.map +0 -0
- package/dist/providers/ghIssueProvider.d.ts +0 -0
- package/dist/providers/ghIssueProvider.js +0 -0
- package/dist/providers/ghIssueProvider.js.map +0 -0
- package/dist/providers/ghPrDiffProvider.d.ts +0 -0
- package/dist/providers/ghPrDiffProvider.js +0 -0
- package/dist/providers/ghPrDiffProvider.js.map +0 -0
- package/dist/providers/jiraIssueLegacyProvider.d.ts +0 -0
- package/dist/providers/jiraIssueLegacyProvider.js +0 -0
- package/dist/providers/jiraIssueLegacyProvider.js.map +0 -0
- package/dist/providers/jiraIssueProvider.d.ts +0 -0
- package/dist/providers/jiraIssueProvider.js +0 -0
- package/dist/providers/jiraIssueProvider.js.map +0 -0
- package/dist/providers/text.d.ts +0 -0
- package/dist/providers/text.js +0 -0
- package/dist/providers/text.js.map +0 -0
- package/dist/providers/types.d.ts +0 -0
- package/dist/providers/types.js +0 -0
- package/dist/providers/types.js.map +0 -0
- package/dist/systemUtils.d.ts +0 -0
- package/dist/systemUtils.js +0 -0
- package/dist/systemUtils.js.map +0 -0
- package/dist/tools/GthDevToolkit.d.ts +21 -0
- package/dist/tools/GthDevToolkit.js +182 -0
- package/dist/tools/GthDevToolkit.js.map +1 -0
- package/dist/tools/GthFileSystemToolkit.d.ts +0 -0
- package/dist/tools/GthFileSystemToolkit.js +25 -16
- package/dist/tools/GthFileSystemToolkit.js.map +1 -1
- package/dist/tools/gthJiraLogWorkTool.d.ts +0 -0
- package/dist/tools/gthJiraLogWorkTool.js +0 -0
- package/dist/tools/gthJiraLogWorkTool.js.map +0 -0
- package/dist/tools/gthSequentialThinkingTool.d.ts +53 -0
- package/dist/tools/gthSequentialThinkingTool.js +130 -0
- package/dist/tools/gthSequentialThinkingTool.js.map +1 -0
- package/dist/tools/gthStatusUpdateTool.d.ts +0 -0
- package/dist/tools/gthStatusUpdateTool.js +0 -0
- package/dist/tools/gthStatusUpdateTool.js.map +0 -0
- package/dist/utils.d.ts +0 -0
- package/dist/utils.js +0 -0
- package/dist/utils.js.map +0 -0
- package/package.json +9 -8
package/.gsloth.backstory.md
CHANGED
|
File without changes
|
package/.gsloth.chat.md
CHANGED
|
File without changes
|
package/.gsloth.code.md
CHANGED
|
@@ -1,19 +1,32 @@
|
|
|
1
|
-
# Code Mode Instructions
|
|
2
|
-
|
|
3
|
-
You are an AI coding assistant with full file system access within the user's project. Your role is to:
|
|
4
|
-
|
|
5
|
-
- Help write, modify, and debug code
|
|
6
|
-
- Understand and work with the existing codebase
|
|
7
|
-
- Follow project conventions and best practices
|
|
8
|
-
- Create, read, update, and delete files as needed to complete coding tasks
|
|
9
|
-
- Run commands and scripts to test and validate changes
|
|
10
|
-
- Provide clear explanations of the changes you make
|
|
11
|
-
|
|
12
|
-
You have access to the entire project directory and can:
|
|
13
|
-
- Navigate the file system
|
|
14
|
-
- Read and analyze existing code
|
|
15
|
-
- Make modifications to implement features or fix bugs
|
|
16
|
-
- Create new files and directories as needed
|
|
17
|
-
- Execute commands to
|
|
18
|
-
|
|
19
|
-
Focus on writing clean, maintainable code that follows the project's established patterns and conventions. Always test your changes when possible and explain what you're doing and why.
|
|
1
|
+
# Code Mode Instructions
|
|
2
|
+
|
|
3
|
+
You are an AI coding assistant with full file system access within the user's project. Your role is to:
|
|
4
|
+
|
|
5
|
+
- Help write, modify, and debug code
|
|
6
|
+
- Understand and work with the existing codebase
|
|
7
|
+
- Follow project conventions and best practices
|
|
8
|
+
- Create, read, update, and delete files as needed to complete coding tasks
|
|
9
|
+
- Run commands and scripts to test and validate changes
|
|
10
|
+
- Provide clear explanations of the changes you make
|
|
11
|
+
|
|
12
|
+
You have access to the entire project directory and can:
|
|
13
|
+
- Navigate the file system
|
|
14
|
+
- Read and analyze existing code
|
|
15
|
+
- Make modifications to implement features or fix bugs
|
|
16
|
+
- Create new files and directories as needed
|
|
17
|
+
- Execute commands to run tests, build the project or run static analysis (lint)
|
|
18
|
+
|
|
19
|
+
Focus on writing clean, maintainable code that follows the project's established patterns and conventions. Always test your changes when possible and explain what you're doing and why.
|
|
20
|
+
|
|
21
|
+
## Running tests
|
|
22
|
+
|
|
23
|
+
- When working on functionality always prefer running a single test, over the entire suite;
|
|
24
|
+
- Abstain from running tests in circles, run the test once, if it fails — inspect the output carefully and try to fix it;
|
|
25
|
+
- Run full tests suite as a penultimate step, when everything is fixed, but before running the lint;
|
|
26
|
+
- Run lint only as a final step when everything else is fixed;
|
|
27
|
+
- If nothing seems to work, ask for user's assistance;
|
|
28
|
+
|
|
29
|
+
## Sequential thinking
|
|
30
|
+
|
|
31
|
+
Use gth_sequential_thinking tool if the problem has multiple steps, or it turns to be complicated,
|
|
32
|
+
but make sure to continue with your task after finishing with the sequential thinking tool.
|
package/.gsloth.guidelines.md
CHANGED
|
@@ -52,6 +52,8 @@ Use [llmUtils.ts](src/llmUtils.ts) to access LLM.
|
|
|
52
52
|
|
|
53
53
|
## Testing (Important)
|
|
54
54
|
|
|
55
|
+
Tests are located in `spec/`; Integration tests are located in `integration-tests/`;
|
|
56
|
+
|
|
55
57
|
- In spec files never import mocked files themselves, mock them, and a tested file should import them.
|
|
56
58
|
- Always import the tested file dynamically within the test.
|
|
57
59
|
- Mocks are hoisted, so it is better to simply place them at the top of the file to avoid confusion.
|
|
@@ -148,8 +150,8 @@ Please follow this workflow:
|
|
|
148
150
|
- Make sure all tests pass `npm run test` and fix if possible.
|
|
149
151
|
- Request relevant documentation if some of the test failures are unclear.
|
|
150
152
|
- Once all tests are green check lint with `npm run lint`.
|
|
151
|
-
- If any lint failures are present try fixing them with `npm run lint
|
|
153
|
+
- If any lint failures are present try fixing them with `npm run lint-n-fix`.
|
|
152
154
|
- If autofix didn't help, try fixing them yourself.
|
|
153
|
-
- Prefer testing all user outputs, including testing absence of unexpected outputs.
|
|
155
|
+
- Prefer testing all user outputs, including testing the absence of unexpected outputs.
|
|
154
156
|
|
|
155
157
|
---
|
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
|
@@ -47,6 +47,7 @@ The promise of Gaunt Sloth:
|
|
|
47
47
|
|
|
48
48
|
### To make GSloth work, you need an **API key** from some AI provider, such as:
|
|
49
49
|
|
|
50
|
+
- OpenRouter
|
|
50
51
|
- Groq;
|
|
51
52
|
- DeepSeek;
|
|
52
53
|
- Google AI Studio and Google Vertex AI;
|
|
@@ -94,6 +95,11 @@ git --no-pager diff | gsloth review
|
|
|
94
95
|
git --no-pager diff v0.8.3..HEAD | gth review
|
|
95
96
|
```
|
|
96
97
|
|
|
98
|
+
**Review diff between head and previous release and head using a specific requirements provider (GitHub issue 38), not the one which is configured by default:
|
|
99
|
+
```shell
|
|
100
|
+
git --no-pager diff v0.8.10 HEAD | npx gth review --requirements-provider github -r 38
|
|
101
|
+
```
|
|
102
|
+
|
|
97
103
|
**Ask questions:**
|
|
98
104
|
```shell
|
|
99
105
|
gsloth ask "What does this function do?" -f utils.js
|
|
@@ -136,7 +142,7 @@ npm install gaunt-sloth-assistant -g
|
|
|
136
142
|
> 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.
|
|
137
143
|
|
|
138
144
|
Configuration can be created with `gsloth init [vendor]` command.
|
|
139
|
-
Currently, anthropic, groq, deepseek, openai, google-genai, vertexai and xai can be configured with `gsloth init [vendor]`.
|
|
145
|
+
Currently, openrouter, anthropic, groq, deepseek, openai, google-genai, vertexai and xai can be configured with `gsloth init [vendor]`.
|
|
140
146
|
For OpenAI-compatible providers like Inception, use `gsloth init openai` and modify the configuration.
|
|
141
147
|
|
|
142
148
|
More detailed information on configuration can be found in [CONFIGURATION.md](./docs/CONFIGURATION.md)
|
|
@@ -159,6 +165,15 @@ gcloud auth login
|
|
|
159
165
|
gcloud auth application-default login
|
|
160
166
|
```
|
|
161
167
|
|
|
168
|
+
### Open Router
|
|
169
|
+
|
|
170
|
+
```shell
|
|
171
|
+
cd ./your-project
|
|
172
|
+
gsloth init openrouter
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Make sure you either define `OPEN_ROUTER_API_KEY` environment variable or edit your configuration file and set up your key.
|
|
176
|
+
|
|
162
177
|
### Anthropic
|
|
163
178
|
|
|
164
179
|
```shell
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { StructuredToolInterface } from '@langchain/core/tools';
|
|
2
2
|
import { GthConfig } from '#src/config.js';
|
|
3
|
+
import { GthCommand } from '#src/core/types.js';
|
|
3
4
|
/**
|
|
4
5
|
* Get default tools based on filesystem and built-in tools configuration
|
|
5
6
|
*/
|
|
6
|
-
export declare function getDefaultTools(config: GthConfig): Promise<StructuredToolInterface[]>;
|
|
7
|
+
export declare function getDefaultTools(config: GthConfig, command?: GthCommand): Promise<StructuredToolInterface[]>;
|
|
@@ -1,22 +1,34 @@
|
|
|
1
1
|
import GthFileSystemToolkit from '#src/tools/GthFileSystemToolkit.js';
|
|
2
2
|
import { displayWarning } from '#src/consoleUtils.js';
|
|
3
3
|
import { getCurrentDir } from '#src/systemUtils.js';
|
|
4
|
+
import GthDevToolkit from '#src/tools/GthDevToolkit.js';
|
|
4
5
|
const AVAILABLE_BUILT_IN_TOOLS = {
|
|
5
6
|
gth_status_update: '#src/tools/gthStatusUpdateTool.js',
|
|
6
7
|
gth_jira_log_work: '#src/tools/gthJiraLogWorkTool.js',
|
|
8
|
+
gth_sequential_thinking: '#src/tools/gthSequentialThinkingTool.js',
|
|
7
9
|
};
|
|
8
10
|
/**
|
|
9
11
|
* Get default tools based on filesystem and built-in tools configuration
|
|
10
12
|
*/
|
|
11
|
-
export async function getDefaultTools(config) {
|
|
12
|
-
const filesystemTools = filterFilesystemTools(
|
|
13
|
+
export async function getDefaultTools(config, command) {
|
|
14
|
+
const filesystemTools = filterFilesystemTools(config.filesystem);
|
|
13
15
|
const builtInTools = await getBuiltInTools(config);
|
|
14
|
-
|
|
16
|
+
const devTools = await filterDevTools(command, config.commands?.code?.devTools);
|
|
17
|
+
return [...filesystemTools, ...devTools, ...builtInTools];
|
|
18
|
+
}
|
|
19
|
+
async function filterDevTools(command, devToolConfig) {
|
|
20
|
+
if (command != 'code' || !devToolConfig) {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
const thinking = await import(AVAILABLE_BUILT_IN_TOOLS.gth_sequential_thinking);
|
|
24
|
+
const toolkit = new GthDevToolkit(devToolConfig);
|
|
25
|
+
return [thinking.get(), ...toolkit.getTools()];
|
|
15
26
|
}
|
|
16
27
|
/**
|
|
17
28
|
* Filter filesystem tools based on configuration
|
|
18
29
|
*/
|
|
19
|
-
function filterFilesystemTools(
|
|
30
|
+
function filterFilesystemTools(filesystemConfig) {
|
|
31
|
+
const toolkit = new GthFileSystemToolkit([getCurrentDir()]);
|
|
20
32
|
if (filesystemConfig === 'all') {
|
|
21
33
|
return toolkit.getTools();
|
|
22
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtInToolsConfig.js","sourceRoot":"","sources":["../src/builtInToolsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,oCAAoC,CAAC;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,wBAAwB,GAAG;IAC/B,iBAAiB,EAAE,mCAAmC;IACtD,iBAAiB,EAAE,kCAAkC;
|
|
1
|
+
{"version":3,"file":"builtInToolsConfig.js","sourceRoot":"","sources":["../src/builtInToolsConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
File without changes
|
package/dist/cli.js.map
CHANGED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -33,14 +33,14 @@ export function prCommand(program) {
|
|
|
33
33
|
const contentProvider = config?.commands?.pr?.contentProvider ??
|
|
34
34
|
config?.contentProvider ??
|
|
35
35
|
'github';
|
|
36
|
+
if (options.file) {
|
|
37
|
+
content.push(readMultipleFilesFromCurrentDir(options.file));
|
|
38
|
+
}
|
|
36
39
|
// Handle requirements
|
|
37
40
|
const requirements = await getRequirementsFromProvider(requirementsProvider, requirementsId, config);
|
|
38
41
|
if (requirements) {
|
|
39
42
|
content.push(requirements);
|
|
40
43
|
}
|
|
41
|
-
if (options.file) {
|
|
42
|
-
content.push(readMultipleFilesFromCurrentDir(options.file));
|
|
43
|
-
}
|
|
44
44
|
// Get PR diff using the provider
|
|
45
45
|
const providerPath = `#src/providers/${CONTENT_PROVIDERS[contentProvider]}`;
|
|
46
46
|
const { get } = await import(providerPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prCommand.js","sourceRoot":"","sources":["../../src/commands/prCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EACL,iBAAiB,EAEjB,2BAA2B,EAC3B,sBAAsB,GAEvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAS3D,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,OAAO;SACJ,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CACV,qDAAqD;QACnD,iFAAiF;QACjF,8EAA8E,CACjF;SACA,QAAQ,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAChD,QAAQ,CACP,kBAAkB,EAClB,uFAAuF,CACxF;SACA,SAAS,CACR,IAAI,MAAM,CACR,oDAAoD,EACpD,wCAAwC,CACzC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAC/C;SACA,MAAM,CACL,uBAAuB,EACvB,2FAA2F,CAC5F;SACA,MAAM,CAAC,yBAAyB,EAAE,kDAAkD,CAAC;SACrF,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,cAAkC,EAAE,OAAyB,EAAE,EAAE;QAC5F,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC,CAAC,4BAA4B;QAE/D,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG;YACpB,aAAa,EAAE;YACf,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACxC,sBAAsB,CAAC,MAAM,CAAC,yBAAyB,CAAC;SACzD,CAAC;QACF,IAAI,YAAY,EAAE,CAAC;YACjB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,oBAAoB,GACxB,OAAO,CAAC,oBAAoB;YAC3B,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,oBAA6D;YACnF,MAAM,EAAE,oBAA6D,CAAC;QAEzE,MAAM,eAAe,GAClB,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,eAAmD;YACzE,MAAM,EAAE,eAAmD;YAC5D,QAAQ,CAAC;QAEX,
|
|
1
|
+
{"version":3,"file":"prCommand.js","sourceRoot":"","sources":["../../src/commands/prCommand.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/config.d.ts
CHANGED
|
@@ -47,6 +47,7 @@ export interface RawGthConfig extends BaseGthConfig {
|
|
|
47
47
|
* This is a basic interface for Gaunt Sloth config.
|
|
48
48
|
*/
|
|
49
49
|
interface BaseGthConfig {
|
|
50
|
+
debugLog?: boolean;
|
|
50
51
|
llm: unknown;
|
|
51
52
|
contentProvider?: string;
|
|
52
53
|
requirementsProvider?: string;
|
|
@@ -86,6 +87,7 @@ interface BaseGthConfig {
|
|
|
86
87
|
code?: {
|
|
87
88
|
filesystem?: string[] | 'all' | 'read' | 'none';
|
|
88
89
|
builtInTools?: string[];
|
|
90
|
+
devTools?: GthDevToolsConfig;
|
|
89
91
|
};
|
|
90
92
|
};
|
|
91
93
|
}
|
|
@@ -93,13 +95,43 @@ export type CustomToolsConfig = Record<string, object>;
|
|
|
93
95
|
export type BuiltInToolsConfig = {
|
|
94
96
|
jira: JiraConfig;
|
|
95
97
|
};
|
|
98
|
+
/**
|
|
99
|
+
* Config for {@link GthDevToolkit}.
|
|
100
|
+
* Tools are not applied when config is not provided.
|
|
101
|
+
* Only available in `code` mode.
|
|
102
|
+
*/
|
|
103
|
+
export interface GthDevToolsConfig {
|
|
104
|
+
/**
|
|
105
|
+
* Optional shell command to run tests.
|
|
106
|
+
* Not applied when config is not provided.
|
|
107
|
+
*/
|
|
108
|
+
run_tests?: string;
|
|
109
|
+
/**
|
|
110
|
+
* Optional shell command to run static analysis (lint).
|
|
111
|
+
* Not applied when config is not provided.
|
|
112
|
+
*/
|
|
113
|
+
run_lint?: string;
|
|
114
|
+
/**
|
|
115
|
+
* Optional shell command to run the build.
|
|
116
|
+
* Not applied when config is not provided.
|
|
117
|
+
*/
|
|
118
|
+
run_build?: string;
|
|
119
|
+
/**
|
|
120
|
+
* Optional shell command to run a single test file.
|
|
121
|
+
* Supports command interpolation with the `${testPath}` placeholder.
|
|
122
|
+
* Example: "npm test -- ${testPath}" or "jest ${testPath}"
|
|
123
|
+
* Example: "npm test" - the test will simply be appended
|
|
124
|
+
* Not applied when config is not provided.
|
|
125
|
+
*/
|
|
126
|
+
run_single_test?: string;
|
|
127
|
+
}
|
|
96
128
|
export interface LLMConfig extends Record<string, unknown> {
|
|
97
129
|
type: string;
|
|
98
130
|
model: string;
|
|
99
131
|
configuration: Record<string, unknown>;
|
|
100
132
|
apiKeyEnvironmentVariable?: string;
|
|
101
133
|
}
|
|
102
|
-
export declare const availableDefaultConfigs: readonly ["vertexai", "anthropic", "groq", "deepseek", "openai", "google-genai", "xai"];
|
|
134
|
+
export declare const availableDefaultConfigs: readonly ["vertexai", "anthropic", "groq", "deepseek", "openai", "google-genai", "xai", "openrouter"];
|
|
103
135
|
export type ConfigType = (typeof availableDefaultConfigs)[number];
|
|
104
136
|
export declare function setCustomConfigPath(path: string): void;
|
|
105
137
|
export declare function getCustomConfigPath(): string | undefined;
|
package/dist/config.js
CHANGED
|
@@ -13,6 +13,7 @@ export const availableDefaultConfigs = [
|
|
|
13
13
|
'openai',
|
|
14
14
|
'google-genai',
|
|
15
15
|
'xai',
|
|
16
|
+
'openrouter',
|
|
16
17
|
];
|
|
17
18
|
const configGlobalSettings = {
|
|
18
19
|
customConfigPath: undefined,
|
|
@@ -35,6 +36,7 @@ export const DEFAULT_CONFIG = {
|
|
|
35
36
|
streamOutput: true,
|
|
36
37
|
useColour: true,
|
|
37
38
|
filesystem: 'read',
|
|
39
|
+
debugLog: false,
|
|
38
40
|
commands: {
|
|
39
41
|
pr: {
|
|
40
42
|
contentProvider: 'github', // gh pr diff NN
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAG1F,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/consoleUtils.d.ts
CHANGED
|
File without changes
|
package/dist/consoleUtils.js
CHANGED
|
File without changes
|
package/dist/consoleUtils.js.map
CHANGED
|
File without changes
|
package/dist/constants.d.ts
CHANGED
|
File without changes
|
package/dist/constants.js
CHANGED
|
File without changes
|
package/dist/constants.js.map
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { GthLangChainAgent } from '#src/core/GthLangChainAgent.js';
|
|
2
2
|
import { executeHooks } from '#src/utils.js';
|
|
3
3
|
import { getNewRunnableConfig } from '#src/llmUtils.js';
|
|
4
|
+
import { initDebugLogging, debugLog, debugLogError, debugLogObject } from '#src/debugUtils.js';
|
|
4
5
|
/**
|
|
5
6
|
* Agent simplifies interaction with LLM and reduces it to calling a few methods
|
|
6
7
|
* {@link #init} and {@link #processMessages}.
|
|
@@ -24,9 +25,13 @@ export class GthAgentRunner {
|
|
|
24
25
|
*/
|
|
25
26
|
async init(command, configIn, checkpointSaver) {
|
|
26
27
|
this.config = configIn;
|
|
28
|
+
// Initialize debug logging
|
|
29
|
+
initDebugLogging(configIn.debugLog ?? false);
|
|
30
|
+
debugLog(`Initializing GthAgentRunner with command: ${command || 'default'}`);
|
|
27
31
|
this.runConfig = this.config.hooks?.createRunnableConfig
|
|
28
32
|
? await this.config.hooks.createRunnableConfig(this.config)
|
|
29
33
|
: getNewRunnableConfig();
|
|
34
|
+
debugLogObject('Runnable Config', this.runConfig);
|
|
30
35
|
this.agent = this.config.hooks?.createAgent
|
|
31
36
|
? await this.config.hooks?.createAgent(this.config)
|
|
32
37
|
: new GthLangChainAgent(this.statusUpdate);
|
|
@@ -35,11 +40,15 @@ export class GthAgentRunner {
|
|
|
35
40
|
this.agent.setVerbose(this.verbose);
|
|
36
41
|
}
|
|
37
42
|
// Call before init hook
|
|
43
|
+
debugLog('Executing beforeAgentInit hooks...');
|
|
38
44
|
await executeHooks(this.config.hooks?.beforeAgentInit, this);
|
|
39
45
|
// Initialize the agent
|
|
46
|
+
debugLog('Initializing agent...');
|
|
40
47
|
await this.agent.init(command, configIn, checkpointSaver);
|
|
41
48
|
// Call after init hook
|
|
49
|
+
debugLog('Executing afterAgentInit hooks...');
|
|
42
50
|
await executeHooks(this.config.hooks?.afterAgentInit, this);
|
|
51
|
+
debugLog('Agent initialization complete');
|
|
43
52
|
}
|
|
44
53
|
/**
|
|
45
54
|
* processMessages deals with both streaming and non-streaming approaches.
|
|
@@ -48,31 +57,41 @@ export class GthAgentRunner {
|
|
|
48
57
|
if (!this.agent || !this.config || !this.runConfig) {
|
|
49
58
|
throw new Error('AgentRunner not initialized. Call init() first.');
|
|
50
59
|
}
|
|
60
|
+
debugLog('Processing messages...');
|
|
61
|
+
debugLogObject('Input Messages', messages);
|
|
51
62
|
await executeHooks(this.config.hooks?.beforeProcessMessages, this, messages, this.runConfig);
|
|
52
63
|
try {
|
|
53
64
|
// Decision: Use streaming or non-streaming based on config
|
|
54
65
|
if (this.config.streamOutput) {
|
|
55
66
|
// Use streaming
|
|
67
|
+
debugLog('Using streaming mode');
|
|
56
68
|
const stream = await this.agent.stream(messages, this.runConfig);
|
|
57
69
|
let result = '';
|
|
58
70
|
try {
|
|
59
71
|
for await (const chunk of stream) {
|
|
72
|
+
debugLogObject('Stream chunk', chunk);
|
|
60
73
|
result += chunk;
|
|
61
74
|
}
|
|
62
75
|
}
|
|
63
76
|
catch (streamError) {
|
|
64
77
|
// Handle streaming-specific errors
|
|
78
|
+
debugLogError('Stream processing', streamError);
|
|
65
79
|
throw new Error(`Stream processing failed: ${streamError instanceof Error ? streamError.message : String(streamError)}`);
|
|
66
80
|
}
|
|
81
|
+
debugLog(`Stream completed. Total response length: ${result.length}`);
|
|
67
82
|
return result;
|
|
68
83
|
}
|
|
69
84
|
else {
|
|
70
85
|
// Use non-streaming
|
|
71
|
-
|
|
86
|
+
debugLog('Using non-streaming mode');
|
|
87
|
+
const result = await this.agent.invoke(messages, this.runConfig);
|
|
88
|
+
debugLog(`Non-stream response length: ${result.length}`);
|
|
89
|
+
return result;
|
|
72
90
|
}
|
|
73
91
|
}
|
|
74
92
|
catch (error) {
|
|
75
93
|
// Handle agent invocation errors
|
|
94
|
+
debugLogError('Agent processing', error);
|
|
76
95
|
throw new Error(`Agent processing failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
77
96
|
}
|
|
78
97
|
}
|
|
@@ -81,11 +100,13 @@ export class GthAgentRunner {
|
|
|
81
100
|
return this.agent;
|
|
82
101
|
}
|
|
83
102
|
async cleanup() {
|
|
103
|
+
debugLog('Cleaning up GthAgentRunner...');
|
|
84
104
|
if (this.agent && 'cleanup' in this.agent && typeof this.agent.cleanup === 'function') {
|
|
85
105
|
await this.agent.cleanup();
|
|
86
106
|
}
|
|
87
107
|
this.agent = null;
|
|
88
108
|
this.config = null;
|
|
109
|
+
debugLog('GthAgentRunner cleanup complete');
|
|
89
110
|
}
|
|
90
111
|
}
|
|
91
112
|
//# sourceMappingURL=GthAgentRunner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GthAgentRunner.js","sourceRoot":"","sources":["../../src/core/GthAgentRunner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,gCAAgC,CAAC;AAEzF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"GthAgentRunner.js","sourceRoot":"","sources":["../../src/core/GthAgentRunner.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|