gaunt-sloth-assistant 0.7.2 → 0.8.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.config_.json +2 -2
- package/.gsloth.config_.mjs +18 -0
- package/.gsloth.config_claude.mjs +18 -0
- package/.gsloth.config_vertex.json +6 -0
- package/README.md +8 -1
- package/assets/release-notes/v0_7_3.md +64 -0
- package/assets/release-notes/v0_8_0.md +13 -0
- package/dist/builtInToolsConfig.d.ts +6 -0
- package/dist/builtInToolsConfig.js +73 -0
- package/dist/builtInToolsConfig.js.map +1 -0
- package/dist/commands/prCommand.js +14 -1
- package/dist/commands/prCommand.js.map +1 -1
- package/dist/config.d.ts +18 -7
- package/dist/config.js +1 -41
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +3 -0
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -1
- package/dist/core/Invocation.d.ts +1 -1
- package/dist/core/Invocation.js +27 -9
- package/dist/core/Invocation.js.map +1 -1
- package/dist/filePathUtils.js +1 -2
- package/dist/filePathUtils.js.map +1 -1
- package/dist/globalConfigUtils.d.ts +28 -0
- package/dist/globalConfigUtils.js +61 -0
- package/dist/globalConfigUtils.js.map +1 -0
- package/dist/helpers/jira/jiraClient.d.ts +4 -0
- package/dist/helpers/jira/jiraClient.js +75 -0
- package/dist/helpers/jira/jiraClient.js.map +1 -0
- package/dist/helpers/jira/jiraLogWork.d.ts +2 -0
- package/dist/helpers/jira/jiraLogWork.js +53 -0
- package/dist/helpers/jira/jiraLogWork.js.map +1 -0
- package/dist/mcp/OAuthClientProviderImpl.d.ts +36 -0
- package/dist/mcp/OAuthClientProviderImpl.js +197 -0
- package/dist/mcp/OAuthClientProviderImpl.js.map +1 -0
- package/dist/providers/jiraIssueProvider.js +9 -52
- package/dist/providers/jiraIssueProvider.js.map +1 -1
- package/dist/tools/gthJiraLogWorkTool.d.ts +3 -0
- package/dist/tools/gthJiraLogWorkTool.js +37 -0
- package/dist/tools/gthJiraLogWorkTool.js.map +1 -0
- package/dist/tools/gthStatusUpdateTool.d.ts +2 -0
- package/dist/tools/gthStatusUpdateTool.js +16 -0
- package/dist/tools/gthStatusUpdateTool.js.map +1 -0
- package/docs/CONFIGURATION.md +37 -2
- package/docs/DEVELOPMENT.md +26 -0
- package/eslint.config.js +7 -1
- package/package.json +3 -1
- package/src/builtInToolsConfig.ts +99 -0
- package/src/commands/prCommand.ts +28 -3
- package/src/config.ts +20 -62
- package/src/constants.ts +3 -0
- package/src/core/Invocation.ts +30 -11
- package/src/filePathUtils.ts +1 -3
- package/src/globalConfigUtils.ts +71 -0
- package/src/helpers/jira/jiraClient.ts +99 -0
- package/src/helpers/jira/jiraLogWork.ts +81 -0
- package/src/mcp/OAuthClientProviderImpl.ts +236 -0
- package/src/providers/jiraIssueProvider.ts +13 -70
- package/src/tools/gthJiraLogWorkTool.ts +51 -0
- package/src/tools/gthStatusUpdateTool.ts +18 -0
- package/vitest-it.config.ts +1 -1
- package/vitest.config.ts +1 -0
- package/dist/tools/statusUpdate.d.ts +0 -1
- package/dist/tools/statusUpdate.js +0 -12
- package/dist/tools/statusUpdate.js.map +0 -1
- package/src/tools/statusUpdate.ts +0 -15
package/.gsloth.config_.json
CHANGED
package/.gsloth.config_.mjs
CHANGED
|
@@ -13,3 +13,21 @@ export async function configure() {
|
|
|
13
13
|
]
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
"jira": {
|
|
19
|
+
"url": "https://mcp.atlassian.com/v1/sse",
|
|
20
|
+
"authProvider": "OAuth",
|
|
21
|
+
"transport": "sse"
|
|
22
|
+
}
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/*
|
|
26
|
+
"jira": {
|
|
27
|
+
"command": "npx",
|
|
28
|
+
"args": [
|
|
29
|
+
"mcp-remote",
|
|
30
|
+
"https://mcp.atlassian.com/v1/sse"
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
*/
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export async function configure() {
|
|
2
|
+
const { ChatAnthropic } = await import('@langchain/anthropic');
|
|
3
|
+
|
|
4
|
+
const model = new ChatAnthropic({
|
|
5
|
+
model: 'claude-sonnet-4-20250514',
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
return {
|
|
9
|
+
llm: model,
|
|
10
|
+
tools: [
|
|
11
|
+
{
|
|
12
|
+
type: 'web_search_20250305',
|
|
13
|
+
name: 'web_search',
|
|
14
|
+
max_uses: 10,
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
};
|
|
18
|
+
}
|
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Gaunt Sloth Assistant
|
|
2
|
-
[](https://github.com/andruhon/gaunt-sloth-assistant/actions/workflows/ci.yml)
|
|
2
|
+
[](https://github.com/andruhon/gaunt-sloth-assistant/actions/workflows/ci.yml) [](https://github.com/andruhon/gaunt-sloth-assistant/actions/workflows/it.yml)
|
|
3
3
|
|
|
4
4
|
Gaunt GSloth Assistant is a lightweight **command line AI assistant**
|
|
5
5
|
built with TypeScript (JavaScript) and distributed via NPM with minimum dependencies.
|
|
@@ -151,6 +151,13 @@ It is recommended to obtain API key from DeepSeek official website rather than f
|
|
|
151
151
|
### Other AI providers
|
|
152
152
|
Any other AI provider supported by Langchain.js can be configured with js [Config](./docs/CONFIGURATION.md).
|
|
153
153
|
|
|
154
|
+
## MCP (Model Context Protocol) Servers
|
|
155
|
+
|
|
156
|
+
Gaunt Sloth supports connecting to MCP servers, including those requiring OAuth authentication.
|
|
157
|
+
|
|
158
|
+
This has been tested with the Atlassian Jira MCP server.
|
|
159
|
+
See the [MCP configuration section](./docs/CONFIGURATION.md#model-context-protocol-mcp) for detailed setup instructions.
|
|
160
|
+
|
|
154
161
|
## Contributing
|
|
155
162
|
Contributors are needed! Feel free to create a PR.
|
|
156
163
|
If you are not sure where to start, look for issues with a "good first issue" label.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# v0.7.3 Prebuilt Tools and automatic Jira Worklogs
|
|
2
|
+
|
|
3
|
+
## New Features
|
|
4
|
+
|
|
5
|
+
### Prebuilt Tools
|
|
6
|
+
Introduced a new feature of prebuilt tools, which can be enabled in config:
|
|
7
|
+
|
|
8
|
+
For example, this config below will allow doing something like `gth ask "log time to jira BO-4242 with comment research"`:
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"llm": {
|
|
12
|
+
"type": "vertexai",
|
|
13
|
+
"model": "gemini-2.5-pro"
|
|
14
|
+
},
|
|
15
|
+
"requirementsProviderConfig": {
|
|
16
|
+
"jira": {
|
|
17
|
+
"cloudId": "77777777-7777-7777-77aa-424242424242",
|
|
18
|
+
"displayUrl": "https://yourcompany.atlassian.net/browse/"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"commands": {
|
|
22
|
+
"pr": {
|
|
23
|
+
"contentProvider": "github",
|
|
24
|
+
"requirementsProvider": "jira"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"builtInTools": [
|
|
28
|
+
"gth_jira_log_work"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Currently `gth_jira_log_work` and `gth_status_update` are the only prebuilt tools available.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Automatically log time to Jira when after doing PR review
|
|
37
|
+
|
|
38
|
+
Similarly, this config below will allow automatically allow time to be logged after completing PR review with `gth pr 4242 BO-4242`:
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"llm": {
|
|
42
|
+
"type": "vertexai",
|
|
43
|
+
"model": "gemini-2.5-pro"
|
|
44
|
+
},
|
|
45
|
+
"requirementsProviderConfig": {
|
|
46
|
+
"jira": {
|
|
47
|
+
"cloudId": "77777777-7777-7777-77aa-424242424242",
|
|
48
|
+
"displayUrl": "https://yourcompany.atlassian.net/browse/"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"commands": {
|
|
52
|
+
"pr": {
|
|
53
|
+
"contentProvider": "github",
|
|
54
|
+
"requirementsProvider": "jira",
|
|
55
|
+
"logWorkForReviewInSeconds": 600
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"builtInTools": [
|
|
59
|
+
"gth_jira_log_work"
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`logWorkForReviewInSeconds` is a number of seconds to be logged every time to reviewed Jira.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# v0.8.0 OAuth Support for MCP Servers
|
|
2
|
+
|
|
3
|
+
## New Features
|
|
4
|
+
|
|
5
|
+
### OAuth Authentication for MCP Servers
|
|
6
|
+
Gaunt Sloth Assistant now supports OAuth authentication for MCP (Model Context Protocol) servers!
|
|
7
|
+
This feature enables secure connections to remote MCP servers that require OAuth authentication,
|
|
8
|
+
such as the Atlassian Jira MCP server.
|
|
9
|
+
|
|
10
|
+
- OAuth tokens are stored in JSON files under `~/.gsloth/.gsloth-auth/`
|
|
11
|
+
- Each server's tokens are stored in a separate file named after the server URL
|
|
12
|
+
- Support for authorization code flow with PKCE
|
|
13
|
+
erver and provides a foundation for connecting to any OAuth-enabled MCP server.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { StructuredToolInterface } from '@langchain/core/tools';
|
|
2
|
+
import { SlothConfig } from '#src/config.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get default tools based on filesystem and built-in tools configuration
|
|
5
|
+
*/
|
|
6
|
+
export declare function getDefaultTools(config: SlothConfig): Promise<StructuredToolInterface[]>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import GthFileSystemToolkit from '#src/tools/GthFileSystemToolkit.js';
|
|
2
|
+
import { displayWarning } from '#src/consoleUtils.js';
|
|
3
|
+
import { getCurrentDir } from '#src/systemUtils.js';
|
|
4
|
+
const AVAILABLE_BUILT_IN_TOOLS = {
|
|
5
|
+
gth_status_update: '#src/tools/gthStatusUpdateTool.js',
|
|
6
|
+
gth_jira_log_work: '#src/tools/gthJiraLogWorkTool.js',
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Get default tools based on filesystem and built-in tools configuration
|
|
10
|
+
*/
|
|
11
|
+
export async function getDefaultTools(config) {
|
|
12
|
+
const filesystemTools = filterFilesystemTools(new GthFileSystemToolkit([getCurrentDir()]), config.filesystem);
|
|
13
|
+
const builtInTools = await getBuiltInTools(config);
|
|
14
|
+
return [...filesystemTools, ...builtInTools];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Filter filesystem tools based on configuration
|
|
18
|
+
*/
|
|
19
|
+
function filterFilesystemTools(toolkit, filesystemConfig) {
|
|
20
|
+
if (filesystemConfig === 'all') {
|
|
21
|
+
return toolkit.getTools();
|
|
22
|
+
}
|
|
23
|
+
if (filesystemConfig === 'none') {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
if (filesystemConfig === 'read') {
|
|
27
|
+
// Read-only: only allow read operations
|
|
28
|
+
return toolkit.getFilteredTools(['read']);
|
|
29
|
+
}
|
|
30
|
+
if (!Array.isArray(filesystemConfig)) {
|
|
31
|
+
return toolkit.getTools();
|
|
32
|
+
}
|
|
33
|
+
if (filesystemConfig.includes('all')) {
|
|
34
|
+
return toolkit.getTools();
|
|
35
|
+
}
|
|
36
|
+
// Handle an array of specific tool names or 'read'/'all'
|
|
37
|
+
const allowedTools = filesystemConfig.includes('read')
|
|
38
|
+
? toolkit.getFilteredTools(['read'])
|
|
39
|
+
: [];
|
|
40
|
+
// Also allow specific tool names
|
|
41
|
+
const allowedToolNames = new Set(filesystemConfig.filter((name) => name !== 'read' && name !== 'all'));
|
|
42
|
+
const specificNamedTools = toolkit.getTools().filter((tool) => {
|
|
43
|
+
return tool.name && allowedToolNames.has(tool.name);
|
|
44
|
+
});
|
|
45
|
+
// Combine and deduplicate
|
|
46
|
+
const allAllowedTools = [...allowedTools, ...specificNamedTools];
|
|
47
|
+
return allAllowedTools.filter((tool, index, arr) => arr.findIndex((t) => t.name === tool.name) === index);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get built-in tools based on configuration
|
|
51
|
+
*/
|
|
52
|
+
async function getBuiltInTools(config) {
|
|
53
|
+
const tools = [];
|
|
54
|
+
if (!config.builtInTools) {
|
|
55
|
+
return tools;
|
|
56
|
+
}
|
|
57
|
+
for (const toolName of config.builtInTools) {
|
|
58
|
+
if (toolName in AVAILABLE_BUILT_IN_TOOLS) {
|
|
59
|
+
try {
|
|
60
|
+
const tool = await import(AVAILABLE_BUILT_IN_TOOLS[toolName]);
|
|
61
|
+
tools.push(tool.get(config));
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
displayWarning(`Failed to load built-in tool '${toolName}': ${error}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
displayWarning(`Unknown built-in tool: ${toolName}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return tools;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=builtInToolsConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtInToolsConfig.js","sourceRoot":"","sources":["../src/builtInToolsConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Option } from 'commander';
|
|
2
2
|
import { readBackstory, readGuidelines, readReviewInstructions, readSystemPrompt, } from '#src/prompt.js';
|
|
3
3
|
import { readMultipleFilesFromCurrentDir } from '#src/utils.js';
|
|
4
|
-
import {
|
|
4
|
+
import { CONTENT_PROVIDERS, getRequirementsFromProvider, REQUIREMENTS_PROVIDERS, } from './commandUtils.js';
|
|
5
|
+
import jiraLogWork from '#src/helpers/jira/jiraLogWork.js';
|
|
5
6
|
export function prCommand(program) {
|
|
6
7
|
program
|
|
7
8
|
.command('pr')
|
|
@@ -12,6 +13,7 @@ export function prCommand(program) {
|
|
|
12
13
|
.argument('[requirementsId]', 'Optional requirements ID argument to retrieve requirements with requirements provider')
|
|
13
14
|
.addOption(new Option('-p, --requirements-provider <requirementsProvider>', 'Requirements provider for this review.').choices(Object.keys(REQUIREMENTS_PROVIDERS)))
|
|
14
15
|
.option('-f, --file [files...]', 'Input files. Content of these files will be added BEFORE the diff, but after requirements')
|
|
16
|
+
.option('-m, --message <message>', 'Extra message to provide just before the content')
|
|
15
17
|
.action(async (prId, requirementsId, options) => {
|
|
16
18
|
const { initConfig } = await import('#src/config.js');
|
|
17
19
|
const config = await initConfig(); // Initialize and get config
|
|
@@ -43,10 +45,21 @@ export function prCommand(program) {
|
|
|
43
45
|
const providerPath = `#src/providers/${CONTENT_PROVIDERS[contentProvider]}`;
|
|
44
46
|
const { get } = await import(providerPath);
|
|
45
47
|
content.push(await get(null, prId));
|
|
48
|
+
if (options.message) {
|
|
49
|
+
content.push(options.message);
|
|
50
|
+
}
|
|
46
51
|
const { review } = await import('#src/modules/reviewModule.js');
|
|
47
52
|
// TODO consider including requirements id
|
|
48
53
|
// TODO sanitize prId
|
|
49
54
|
await review(`PR-${prId}`, systemMessage.join('\n'), content.join('\n'), config, 'pr');
|
|
55
|
+
if (requirementsId &&
|
|
56
|
+
(config.commands?.pr?.requirementsProvider ?? config.requirementsProvider) === 'jira' &&
|
|
57
|
+
config.commands?.pr?.logWorkForReviewInSeconds) {
|
|
58
|
+
// TODO we need to figure out some sort of post-processors
|
|
59
|
+
let jiraConfig = config.prebuiltToolsConfig?.jira ||
|
|
60
|
+
config.requirementsProviderConfig?.jira;
|
|
61
|
+
await jiraLogWork(jiraConfig, requirementsId, config.commands?.pr?.logWorkForReviewInSeconds, 'code review');
|
|
62
|
+
}
|
|
50
63
|
});
|
|
51
64
|
}
|
|
52
65
|
//# sourceMappingURL=prCommand.js.map
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"prCommand.js","sourceRoot":"","sources":["../../src/commands/prCommand.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
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
|
+
import { JiraConfig } from '#src/providers/types.js';
|
|
4
5
|
export interface SlothConfig extends BaseSlothConfig {
|
|
5
6
|
llm: BaseChatModel;
|
|
6
7
|
contentProvider: string;
|
|
@@ -9,6 +10,7 @@ export interface SlothConfig extends BaseSlothConfig {
|
|
|
9
10
|
projectReviewInstructions: string;
|
|
10
11
|
streamOutput: boolean;
|
|
11
12
|
filesystem: string[] | 'all' | 'read' | 'none';
|
|
13
|
+
builtInTools?: string[];
|
|
12
14
|
tools?: StructuredToolInterface[] | BaseToolkit[];
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
@@ -28,31 +30,44 @@ interface BaseSlothConfig {
|
|
|
28
30
|
projectReviewInstructions?: string;
|
|
29
31
|
streamOutput?: boolean;
|
|
30
32
|
filesystem?: string[] | 'all' | 'read' | 'none';
|
|
33
|
+
prebuiltToolsConfig?: PreBuiltToolsConfig;
|
|
34
|
+
customToolsConfig?: CustomToolsConfig;
|
|
35
|
+
requirementsProviderConfig?: Record<string, unknown>;
|
|
36
|
+
contentProviderConfig?: Record<string, unknown>;
|
|
37
|
+
mcpServers?: Record<string, Connection>;
|
|
38
|
+
builtInTools?: string[];
|
|
31
39
|
commands?: {
|
|
32
40
|
pr?: {
|
|
33
41
|
contentProvider?: string;
|
|
34
42
|
requirementsProvider?: string;
|
|
35
43
|
filesystem?: string[] | 'all' | 'read' | 'none';
|
|
44
|
+
builtInTools?: string[];
|
|
45
|
+
logWorkForReviewInSeconds?: number;
|
|
36
46
|
};
|
|
37
47
|
review?: {
|
|
38
48
|
requirementsProvider?: string;
|
|
39
49
|
contentProvider?: string;
|
|
40
50
|
filesystem?: string[] | 'all' | 'read' | 'none';
|
|
51
|
+
builtInTools?: string[];
|
|
41
52
|
};
|
|
42
53
|
ask?: {
|
|
43
54
|
filesystem?: string[] | 'all' | 'read' | 'none';
|
|
55
|
+
builtInTools?: string[];
|
|
44
56
|
};
|
|
45
57
|
chat?: {
|
|
46
58
|
filesystem?: string[] | 'all' | 'read' | 'none';
|
|
59
|
+
builtInTools?: string[];
|
|
47
60
|
};
|
|
48
61
|
code?: {
|
|
49
62
|
filesystem?: string[] | 'all' | 'read' | 'none';
|
|
63
|
+
builtInTools?: string[];
|
|
50
64
|
};
|
|
51
65
|
};
|
|
52
|
-
requirementsProviderConfig?: Record<string, unknown>;
|
|
53
|
-
contentProviderConfig?: Record<string, unknown>;
|
|
54
|
-
mcpServers?: Record<string, Connection>;
|
|
55
66
|
}
|
|
67
|
+
export type CustomToolsConfig = Record<string, object>;
|
|
68
|
+
export type PreBuiltToolsConfig = {
|
|
69
|
+
jira: JiraConfig;
|
|
70
|
+
};
|
|
56
71
|
export interface LLMConfig extends Record<string, unknown> {
|
|
57
72
|
type: string;
|
|
58
73
|
model: string;
|
|
@@ -73,8 +88,4 @@ export declare function initConfig(): Promise<SlothConfig>;
|
|
|
73
88
|
export declare function tryJsonConfig(jsonConfig: RawSlothConfig): Promise<SlothConfig>;
|
|
74
89
|
export declare function createProjectConfig(configType: string): Promise<void>;
|
|
75
90
|
export declare function writeProjectReviewPreamble(): void;
|
|
76
|
-
/**
|
|
77
|
-
* Get default tools based on filesystem configuration
|
|
78
|
-
*/
|
|
79
|
-
export declare function getDefaultTools(filesystemConfig?: string[] | 'all' | 'read' | 'none'): StructuredToolInterface[];
|
|
80
91
|
export {};
|
package/dist/config.js
CHANGED
|
@@ -4,8 +4,6 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
4
4
|
import { error, exit } from '#src/systemUtils.js';
|
|
5
5
|
import { getGslothConfigReadPath, getGslothConfigWritePath } from '#src/filePathUtils.js';
|
|
6
6
|
import { PROJECT_GUIDELINES, PROJECT_REVIEW_INSTRUCTIONS, USER_PROJECT_CONFIG_JS, USER_PROJECT_CONFIG_JSON, USER_PROJECT_CONFIG_MJS, } from '#src/constants.js';
|
|
7
|
-
import { getCurrentDir } from '#src/systemUtils.js';
|
|
8
|
-
import GthFileSystemToolkit from '#src/tools/GthFileSystemToolkit.js';
|
|
9
7
|
export const availableDefaultConfigs = ['vertexai', 'anthropic', 'groq', 'deepseek'];
|
|
10
8
|
export const DEFAULT_CONFIG = {
|
|
11
9
|
llm: undefined,
|
|
@@ -45,6 +43,7 @@ export async function initConfig() {
|
|
|
45
43
|
exit(1);
|
|
46
44
|
// noinspection ExceptionCaughtLocallyJS
|
|
47
45
|
// This throw is unreachable due to exit(1) above, but satisfies TS type analysis and prevents tests from exiting
|
|
46
|
+
// noinspection ExceptionCaughtLocallyJS
|
|
48
47
|
throw new Error('Unexpected error occurred.');
|
|
49
48
|
}
|
|
50
49
|
}
|
|
@@ -221,43 +220,4 @@ function mergeConfig(partialConfig) {
|
|
|
221
220
|
function mergeRawConfig(config, llm) {
|
|
222
221
|
return mergeConfig({ ...config, llm });
|
|
223
222
|
}
|
|
224
|
-
/**
|
|
225
|
-
* Filter filesystem tools based on configuration
|
|
226
|
-
*/
|
|
227
|
-
function filterFilesystemTools(toolkit, filesystemConfig) {
|
|
228
|
-
if (filesystemConfig === 'all') {
|
|
229
|
-
return toolkit.getTools();
|
|
230
|
-
}
|
|
231
|
-
if (filesystemConfig === 'none') {
|
|
232
|
-
return [];
|
|
233
|
-
}
|
|
234
|
-
if (filesystemConfig === 'read') {
|
|
235
|
-
// Read-only: only allow read operations
|
|
236
|
-
return toolkit.getFilteredTools(['read']);
|
|
237
|
-
}
|
|
238
|
-
if (!Array.isArray(filesystemConfig)) {
|
|
239
|
-
return toolkit.getTools();
|
|
240
|
-
}
|
|
241
|
-
if (filesystemConfig.includes('all')) {
|
|
242
|
-
return toolkit.getTools();
|
|
243
|
-
}
|
|
244
|
-
// Handle an array of specific tool names or 'read'/'all'
|
|
245
|
-
const allowedTools = filesystemConfig.includes('read')
|
|
246
|
-
? toolkit.getFilteredTools(['read'])
|
|
247
|
-
: [];
|
|
248
|
-
// Also allow specific tool names
|
|
249
|
-
const allowedToolNames = new Set(filesystemConfig.filter((name) => name !== 'read' && name !== 'all'));
|
|
250
|
-
const specificNamedTools = toolkit.getTools().filter((tool) => {
|
|
251
|
-
return tool.name && allowedToolNames.has(tool.name);
|
|
252
|
-
});
|
|
253
|
-
// Combine and deduplicate
|
|
254
|
-
const allAllowedTools = [...allowedTools, ...specificNamedTools];
|
|
255
|
-
return allAllowedTools.filter((tool, index, arr) => arr.findIndex((t) => t.name === tool.name) === index);
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Get default tools based on filesystem configuration
|
|
259
|
-
*/
|
|
260
|
-
export function getDefaultTools(filesystemConfig = 'none') {
|
|
261
|
-
return [...filterFilesystemTools(new GthFileSystemToolkit([getCurrentDir()]), filesystemConfig)];
|
|
262
|
-
}
|
|
263
223
|
//# sourceMappingURL=config.js.map
|
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,MAAM,qBAAqB,CAAC;AAElD,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;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export declare const GSLOTH_DIR = ".gsloth";
|
|
2
|
+
export declare const GSLOTH_SETTINGS_DIR = ".gsloth-settings";
|
|
3
|
+
export declare const GSLOTH_AUTH = ".gsloth-auth";
|
|
1
4
|
export declare const USER_PROJECT_CONFIG_JS = ".gsloth.config.js";
|
|
2
5
|
export declare const USER_PROJECT_CONFIG_JSON = ".gsloth.config.json";
|
|
3
6
|
export declare const USER_PROJECT_CONFIG_MJS = ".gsloth.config.mjs";
|
package/dist/constants.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export const GSLOTH_DIR = '.gsloth';
|
|
2
|
+
export const GSLOTH_SETTINGS_DIR = '.gsloth-settings';
|
|
3
|
+
export const GSLOTH_AUTH = '.gsloth-auth';
|
|
1
4
|
export const USER_PROJECT_CONFIG_JS = '.gsloth.config.js';
|
|
2
5
|
export const USER_PROJECT_CONFIG_JSON = '.gsloth.config.json';
|
|
3
6
|
export const USER_PROJECT_CONFIG_MJS = '.gsloth.config.mjs';
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AAC1D,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACxD,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AACtD,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC;AAC1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AAC1D,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACxD,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC"}
|
|
@@ -23,5 +23,5 @@ export declare class Invocation {
|
|
|
23
23
|
*/
|
|
24
24
|
private extractAndFlattenTools;
|
|
25
25
|
protected getDefaultMcpServers(): Record<string, Connection>;
|
|
26
|
-
protected getMcpClient(config: SlothConfig): MultiServerMCPClient | null
|
|
26
|
+
protected getMcpClient(config: SlothConfig): Promise<MultiServerMCPClient | null>;
|
|
27
27
|
}
|
package/dist/core/Invocation.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { isAIMessage } from '@langchain/core/messages';
|
|
2
|
-
import { getDefaultTools } from '#src/config.js';
|
|
3
2
|
import { MultiServerMCPClient } from '@langchain/mcp-adapters';
|
|
4
3
|
import { createReactAgent } from '@langchain/langgraph/prebuilt';
|
|
5
4
|
import { formatToolCalls, ProgressIndicator } from '#src/utils.js';
|
|
5
|
+
import { getDefaultTools } from '#src/builtInToolsConfig.js';
|
|
6
|
+
import { createAuthProviderAndAuthenticate } from '#src/mcp/OAuthClientProviderImpl.js';
|
|
7
|
+
import { displayInfo } from '#src/consoleUtils.js';
|
|
6
8
|
export class Invocation {
|
|
7
9
|
statusUpdate;
|
|
8
10
|
verbose = false;
|
|
@@ -22,9 +24,9 @@ export class Invocation {
|
|
|
22
24
|
}
|
|
23
25
|
// Merge command-specific filesystem config if provided
|
|
24
26
|
this.config = this.getEffectiveConfig(config, command);
|
|
25
|
-
this.mcpClient = this.getMcpClient(this.config);
|
|
27
|
+
this.mcpClient = await this.getMcpClient(this.config);
|
|
26
28
|
// Get default filesystem tools (filtered based on config)
|
|
27
|
-
const defaultTools = getDefaultTools(
|
|
29
|
+
const defaultTools = await getDefaultTools(config);
|
|
28
30
|
// Get user config tools
|
|
29
31
|
const flattenedConfigTools = this.extractAndFlattenTools(this.config.tools || []);
|
|
30
32
|
// Get MCP tools
|
|
@@ -55,6 +57,9 @@ export class Invocation {
|
|
|
55
57
|
filesystem: command && config.commands?.[command]?.filesystem !== undefined
|
|
56
58
|
? config.commands[command].filesystem
|
|
57
59
|
: config.filesystem,
|
|
60
|
+
builtInTools: command && config.commands?.[command]?.builtInTools !== undefined
|
|
61
|
+
? config.commands[command].builtInTools
|
|
62
|
+
: config.builtInTools,
|
|
58
63
|
};
|
|
59
64
|
}
|
|
60
65
|
async invoke(messages, runConfig) {
|
|
@@ -141,20 +146,33 @@ export class Invocation {
|
|
|
141
146
|
getDefaultMcpServers() {
|
|
142
147
|
return {};
|
|
143
148
|
}
|
|
144
|
-
getMcpClient(config) {
|
|
149
|
+
async getMcpClient(config) {
|
|
145
150
|
const defaultServers = this.getDefaultMcpServers();
|
|
146
151
|
// Merge with user's mcpServers
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
152
|
+
const rawMcpServers = { ...defaultServers, ...(config.mcpServers || {}) };
|
|
153
|
+
const mcpServers = {};
|
|
154
|
+
for (const serverName of Object.keys(rawMcpServers)) {
|
|
155
|
+
const server = rawMcpServers[serverName];
|
|
156
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
157
|
+
if (server.url && server && server.authProvider === 'OAuth') {
|
|
158
|
+
displayInfo(`Starting OAuth for for ${server.url}`);
|
|
159
|
+
const authProvider = await createAuthProviderAndAuthenticate(server);
|
|
160
|
+
mcpServers[serverName] = {
|
|
161
|
+
...server,
|
|
162
|
+
authProvider,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
// Add non-OAuth servers as-is
|
|
167
|
+
mcpServers[serverName] = server;
|
|
168
|
+
}
|
|
151
169
|
}
|
|
152
170
|
if (Object.keys(mcpServers).length > 0) {
|
|
153
171
|
return new MultiServerMCPClient({
|
|
154
172
|
throwOnLoadError: true,
|
|
155
173
|
prefixToolNameWithServerName: true,
|
|
156
174
|
additionalToolNamePrefix: 'mcp',
|
|
157
|
-
mcpServers,
|
|
175
|
+
mcpServers: mcpServers,
|
|
158
176
|
});
|
|
159
177
|
}
|
|
160
178
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Invocation.js","sourceRoot":"","sources":["../../src/core/Invocation.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"Invocation.js","sourceRoot":"","sources":["../../src/core/Invocation.ts"],"names":[],"mappings":"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"}
|
package/dist/filePathUtils.js
CHANGED
|
@@ -2,8 +2,7 @@ import { existsSync } from 'node:fs';
|
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
3
|
import { mkdirSync } from 'node:fs';
|
|
4
4
|
import { getCurrentDir } from '#src/systemUtils.js';
|
|
5
|
-
|
|
6
|
-
const GSLOTH_SETTINGS_DIR = '.gsloth-settings';
|
|
5
|
+
import { GSLOTH_DIR, GSLOTH_SETTINGS_DIR } from '#src/constants.js';
|
|
7
6
|
/**
|
|
8
7
|
* Checks if .gsloth directory exists in the project root
|
|
9
8
|
* @returns Boolean indicating whether .gsloth directory exists
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filePathUtils.js","sourceRoot":"","sources":["../src/filePathUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"filePathUtils.js","sourceRoot":"","sources":["../src/filePathUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QAEvE,wDAAwD;QACxD,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACpC,SAAS,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAEzD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC"}
|