gaunt-sloth-assistant 0.5.0 → 0.5.2

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 (139) hide show
  1. package/.gsloth.backstory.md +0 -0
  2. package/.gsloth.guidelines.md +0 -0
  3. package/.gsloth.review.md +0 -0
  4. package/.gsloth.system.md +10 -0
  5. package/.prettierrc.json +0 -0
  6. package/LICENSE +0 -0
  7. package/README.md +9 -0
  8. package/assets/gaunt-sloth-logo.png +0 -0
  9. package/assets/release-notes/v0_4_0.md +0 -0
  10. package/assets/release-notes/v0_5_0.md +0 -0
  11. package/assets/release-notes/v0_5_1.md +47 -0
  12. package/assets/release-notes/v0_5_2.md +23 -0
  13. package/dist/commands/askCommand.d.ts +0 -0
  14. package/dist/commands/askCommand.js +9 -5
  15. package/dist/commands/askCommand.js.map +1 -1
  16. package/dist/commands/chatCommand.d.ts +2 -0
  17. package/dist/commands/chatCommand.js +78 -0
  18. package/dist/commands/chatCommand.js.map +1 -0
  19. package/dist/commands/commandUtils.d.ts +25 -0
  20. package/dist/commands/commandUtils.js +48 -0
  21. package/dist/commands/commandUtils.js.map +1 -0
  22. package/dist/commands/initCommand.d.ts +0 -0
  23. package/dist/commands/initCommand.js +0 -0
  24. package/dist/commands/initCommand.js.map +0 -0
  25. package/dist/commands/prCommand.d.ts +2 -0
  26. package/dist/commands/prCommand.js +52 -0
  27. package/dist/commands/prCommand.js.map +1 -0
  28. package/dist/commands/reviewCommand.d.ts +1 -2
  29. package/dist/commands/reviewCommand.js +17 -98
  30. package/dist/commands/reviewCommand.js.map +1 -1
  31. package/dist/config.d.ts +21 -36
  32. package/dist/config.js +104 -84
  33. package/dist/config.js.map +1 -1
  34. package/dist/configs/anthropic.d.ts +0 -0
  35. package/dist/configs/anthropic.js +0 -0
  36. package/dist/configs/anthropic.js.map +0 -0
  37. package/dist/configs/fake.d.ts +0 -0
  38. package/dist/configs/fake.js +0 -0
  39. package/dist/configs/fake.js.map +0 -0
  40. package/dist/configs/groq.d.ts +0 -0
  41. package/dist/configs/groq.js +0 -0
  42. package/dist/configs/groq.js.map +0 -0
  43. package/dist/configs/vertexai.d.ts +0 -0
  44. package/dist/configs/vertexai.js +0 -0
  45. package/dist/configs/vertexai.js.map +0 -0
  46. package/dist/consoleUtils.d.ts +0 -0
  47. package/dist/consoleUtils.js +0 -0
  48. package/dist/consoleUtils.js.map +0 -0
  49. package/dist/constants.d.ts +7 -0
  50. package/dist/constants.js +8 -0
  51. package/dist/constants.js.map +1 -0
  52. package/dist/filePathUtils.d.ts +0 -0
  53. package/dist/filePathUtils.js +0 -0
  54. package/dist/filePathUtils.js.map +0 -0
  55. package/dist/index.d.ts +0 -0
  56. package/dist/index.js +6 -3
  57. package/dist/index.js.map +1 -1
  58. package/dist/llmUtils.d.ts +4 -2
  59. package/dist/llmUtils.js +88 -25
  60. package/dist/llmUtils.js.map +1 -1
  61. package/dist/modules/questionAnsweringModule.d.ts +2 -1
  62. package/dist/modules/questionAnsweringModule.js +7 -8
  63. package/dist/modules/questionAnsweringModule.js.map +1 -1
  64. package/dist/modules/reviewModule.d.ts +2 -1
  65. package/dist/modules/reviewModule.js +7 -8
  66. package/dist/modules/reviewModule.js.map +1 -1
  67. package/dist/modules/types.d.ts +0 -0
  68. package/dist/modules/types.js +0 -0
  69. package/dist/modules/types.js.map +0 -0
  70. package/dist/prompt.d.ts +1 -0
  71. package/dist/prompt.js +4 -1
  72. package/dist/prompt.js.map +1 -1
  73. package/dist/providers/file.d.ts +0 -0
  74. package/dist/providers/file.js +0 -0
  75. package/dist/providers/file.js.map +0 -0
  76. package/dist/providers/ghIssueProvider.d.ts +0 -0
  77. package/dist/providers/ghIssueProvider.js +3 -1
  78. package/dist/providers/ghIssueProvider.js.map +1 -1
  79. package/dist/providers/ghPrDiffProvider.d.ts +0 -0
  80. package/dist/providers/ghPrDiffProvider.js +3 -1
  81. package/dist/providers/ghPrDiffProvider.js.map +1 -1
  82. package/dist/providers/jiraIssueLegacyProvider.d.ts +0 -0
  83. package/dist/providers/jiraIssueLegacyProvider.js +0 -0
  84. package/dist/providers/jiraIssueLegacyProvider.js.map +0 -0
  85. package/dist/providers/jiraIssueProvider.d.ts +0 -0
  86. package/dist/providers/jiraIssueProvider.js +0 -0
  87. package/dist/providers/jiraIssueProvider.js.map +0 -0
  88. package/dist/providers/text.d.ts +0 -0
  89. package/dist/providers/text.js +0 -0
  90. package/dist/providers/text.js.map +0 -0
  91. package/dist/providers/types.d.ts +0 -0
  92. package/dist/providers/types.js +0 -0
  93. package/dist/providers/types.js.map +0 -0
  94. package/dist/systemUtils.d.ts +3 -0
  95. package/dist/systemUtils.js +2 -0
  96. package/dist/systemUtils.js.map +1 -1
  97. package/dist/utils.d.ts +1 -0
  98. package/dist/utils.js +13 -1
  99. package/dist/utils.js.map +1 -1
  100. package/docs/CONFIGURATION.md +0 -0
  101. package/docs/DEVELOPMENT.md +0 -0
  102. package/docs/RELEASE-HOWTO.md +0 -0
  103. package/eslint.config.js +0 -0
  104. package/index.js +1 -1
  105. package/maintenance/doc-maintenance.md +0 -0
  106. package/package.json +10 -8
  107. package/src/commands/askCommand.ts +9 -5
  108. package/src/commands/chatCommand.ts +90 -0
  109. package/src/commands/commandUtils.ts +77 -0
  110. package/src/commands/initCommand.ts +0 -0
  111. package/src/commands/prCommand.ts +93 -0
  112. package/src/commands/reviewCommand.ts +33 -155
  113. package/src/config.ts +124 -119
  114. package/src/configs/anthropic.ts +0 -0
  115. package/src/configs/fake.ts +0 -0
  116. package/src/configs/groq.ts +0 -0
  117. package/src/configs/vertexai.ts +0 -0
  118. package/src/consoleUtils.ts +0 -0
  119. package/src/constants.ts +7 -0
  120. package/src/filePathUtils.ts +0 -0
  121. package/src/index.ts +6 -3
  122. package/src/llmUtils.ts +110 -30
  123. package/src/modules/questionAnsweringModule.ts +9 -13
  124. package/src/modules/reviewModule.ts +14 -8
  125. package/src/modules/types.ts +0 -0
  126. package/src/prompt.ts +5 -1
  127. package/src/providers/file.ts +0 -0
  128. package/src/providers/ghIssueProvider.ts +3 -1
  129. package/src/providers/ghPrDiffProvider.ts +3 -1
  130. package/src/providers/jiraIssueLegacyProvider.ts +0 -0
  131. package/src/providers/jiraIssueProvider.ts +0 -0
  132. package/src/providers/text.ts +0 -0
  133. package/src/providers/types.ts +0 -0
  134. package/src/systemUtils.ts +3 -0
  135. package/src/utils.ts +13 -1
  136. package/tsconfig.json +0 -0
  137. package/vitest-it.config.ts +0 -0
  138. package/vitest.config.ts +0 -0
  139. package/ROADMAP.md +0 -36
package/dist/config.d.ts CHANGED
@@ -7,16 +7,7 @@ export interface SlothConfig extends BaseSlothConfig {
7
7
  projectGuidelines: string;
8
8
  projectReviewInstructions: string;
9
9
  streamOutput: boolean;
10
- commands: {
11
- pr: {
12
- contentProvider: string;
13
- requirementsProvider?: string;
14
- };
15
- review?: {
16
- requirementsProvider?: string;
17
- contentProvider?: string;
18
- };
19
- };
10
+ filesystem: string[] | 'all' | 'none';
20
11
  }
21
12
  /**
22
13
  * Raw, unprocessed sloth config
@@ -34,53 +25,47 @@ interface BaseSlothConfig {
34
25
  projectGuidelines?: string;
35
26
  projectReviewInstructions?: string;
36
27
  streamOutput?: boolean;
28
+ filesystem?: string[] | 'all' | 'none';
37
29
  commands?: {
38
- pr: {
39
- contentProvider: string;
30
+ pr?: {
31
+ contentProvider?: string;
40
32
  requirementsProvider?: string;
33
+ filesystem?: string[] | 'all' | 'none';
41
34
  };
42
35
  review?: {
43
36
  requirementsProvider?: string;
44
37
  contentProvider?: string;
38
+ filesystem?: string[] | 'all' | 'none';
39
+ };
40
+ ask?: {
41
+ filesystem?: string[] | 'all' | 'none';
42
+ };
43
+ chat?: {
44
+ filesystem?: string[] | 'all' | 'none';
45
45
  };
46
46
  };
47
47
  requirementsProviderConfig?: Record<string, unknown>;
48
48
  contentProviderConfig?: Record<string, unknown>;
49
49
  mcpServers?: Record<string, Connection>;
50
50
  }
51
- /**
52
- * @deprecated
53
- * this object has blurred responsibility lines and bad name.
54
- */
55
- export interface SlothContext {
56
- config: SlothConfig;
57
- }
58
51
  export interface LLMConfig extends Record<string, unknown> {
59
52
  type: string;
60
53
  model: string;
61
54
  }
62
- export declare const USER_PROJECT_CONFIG_JS = ".gsloth.config.js";
63
- export declare const USER_PROJECT_CONFIG_JSON = ".gsloth.config.json";
64
- export declare const USER_PROJECT_CONFIG_MJS = ".gsloth.config.mjs";
65
- export declare const GSLOTH_BACKSTORY = ".gsloth.backstory.md";
66
- export declare const PROJECT_GUIDELINES = ".gsloth.guidelines.md";
67
- export declare const PROJECT_REVIEW_INSTRUCTIONS = ".gsloth.review.md";
68
55
  export declare const availableDefaultConfigs: readonly ["vertexai", "anthropic", "groq"];
69
56
  export type ConfigType = (typeof availableDefaultConfigs)[number];
70
57
  export declare const DEFAULT_CONFIG: Partial<SlothConfig>;
71
58
  /**
72
- * @deprecated
73
- * this object has blurred responsibility lines and bad name.
74
- * TODO this should be reworked to something more robust
59
+ * Initialize configuration by loading from available config files
60
+ * @returns The loaded SlothConfig
75
61
  */
76
- export declare const slothContext: SlothContext;
77
- export declare function initConfig(): Promise<void>;
78
- export declare function tryJsonConfig(jsonConfig: RawSlothConfig): Promise<void>;
79
- export declare function createProjectConfig(configType: string): Promise<void>;
80
- export declare function writeProjectReviewPreamble(): void;
62
+ export declare function initConfig(): Promise<SlothConfig>;
81
63
  /**
82
- * @deprecated test only
83
- * TODO should be gone together with slothContext itself
64
+ * Process JSON LLM config by creating the appropriate LLM instance
65
+ * @param jsonConfig - The parsed JSON config
66
+ * @returns Promise<SlothConfig>
84
67
  */
85
- export declare function reset(): void;
68
+ export declare function tryJsonConfig(jsonConfig: RawSlothConfig): Promise<SlothConfig>;
69
+ export declare function createProjectConfig(configType: string): Promise<void>;
70
+ export declare function writeProjectReviewPreamble(): void;
86
71
  export {};
package/dist/config.js CHANGED
@@ -3,12 +3,7 @@ import { importExternalFile, writeFileIfNotExistsWithMessages } from '#src/utils
3
3
  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
- export const USER_PROJECT_CONFIG_JS = '.gsloth.config.js';
7
- export const USER_PROJECT_CONFIG_JSON = '.gsloth.config.json';
8
- export const USER_PROJECT_CONFIG_MJS = '.gsloth.config.mjs';
9
- export const GSLOTH_BACKSTORY = '.gsloth.backstory.md';
10
- export const PROJECT_GUIDELINES = '.gsloth.guidelines.md';
11
- export const PROJECT_REVIEW_INSTRUCTIONS = '.gsloth.review.md';
6
+ import { USER_PROJECT_CONFIG_JS, USER_PROJECT_CONFIG_JSON, USER_PROJECT_CONFIG_MJS, PROJECT_GUIDELINES, PROJECT_REVIEW_INSTRUCTIONS, } from '#src/constants.js';
12
7
  export const availableDefaultConfigs = ['vertexai', 'anthropic', 'groq'];
13
8
  export const DEFAULT_CONFIG = {
14
9
  llm: undefined,
@@ -17,6 +12,15 @@ export const DEFAULT_CONFIG = {
17
12
  projectGuidelines: PROJECT_GUIDELINES,
18
13
  projectReviewInstructions: PROJECT_REVIEW_INSTRUCTIONS,
19
14
  streamOutput: true,
15
+ filesystem: [
16
+ 'read_file',
17
+ 'read_multiple_files',
18
+ 'list_directory',
19
+ 'directory_tree',
20
+ 'search_files',
21
+ 'get_file_info',
22
+ 'list_allowed_directories',
23
+ ],
20
24
  commands: {
21
25
  pr: {
22
26
  contentProvider: 'github', // gh pr diff NN
@@ -25,29 +29,26 @@ export const DEFAULT_CONFIG = {
25
29
  },
26
30
  };
27
31
  /**
28
- * @deprecated
29
- * this object has blurred responsibility lines and bad name.
30
- * TODO this should be reworked to something more robust
32
+ * Initialize configuration by loading from available config files
33
+ * @returns The loaded SlothConfig
31
34
  */
32
- export const slothContext = {
33
- config: DEFAULT_CONFIG,
34
- };
35
35
  export async function initConfig() {
36
36
  const jsonConfigPath = getGslothConfigReadPath(USER_PROJECT_CONFIG_JSON);
37
- const jsConfigPath = getGslothConfigReadPath(USER_PROJECT_CONFIG_JS);
38
- const mjsConfigPath = getGslothConfigReadPath(USER_PROJECT_CONFIG_MJS);
39
- // Try loading JSON config file first
37
+ // Try loading the JSON config file first
40
38
  if (existsSync(jsonConfigPath)) {
41
39
  try {
42
40
  // TODO makes sense to employ ZOD to validate config
43
41
  const jsonConfig = JSON.parse(readFileSync(jsonConfigPath, 'utf8'));
44
42
  // If the config has an LLM with a type, create the appropriate LLM instance
45
43
  if (jsonConfig.llm && typeof jsonConfig.llm === 'object' && 'type' in jsonConfig.llm) {
46
- await tryJsonConfig(jsonConfig);
44
+ return await tryJsonConfig(jsonConfig);
47
45
  }
48
46
  else {
49
47
  error(`${jsonConfigPath} is not in valid format. Should at least define llm.type`);
50
48
  exit(1);
49
+ // noinspection ExceptionCaughtLocallyJS
50
+ // This throw is unreachable due to exit(1) above, but satisfies TS type analysis and prevents tests from exiting
51
+ throw new Error('Unexpected error occurred.');
51
52
  }
52
53
  }
53
54
  catch (e) {
@@ -61,98 +62,110 @@ export async function initConfig() {
61
62
  // JSON config not found, try JS
62
63
  return tryJsConfig();
63
64
  }
64
- // Helper function to try loading JS config
65
- async function tryJsConfig() {
66
- if (existsSync(jsConfigPath)) {
67
- return importExternalFile(jsConfigPath)
68
- .then((i) => i.configure(jsConfigPath))
69
- .then((config) => {
70
- slothContext.config = { ...slothContext.config, ...config };
71
- })
72
- .catch((e) => {
73
- displayDebug(e instanceof Error ? e : String(e));
74
- displayError(`Failed to read config from ${USER_PROJECT_CONFIG_JS}, will try other formats.`);
75
- // Continue to try other formats
76
- return tryMjsConfig();
77
- });
65
+ }
66
+ // Helper function to try loading JS config
67
+ async function tryJsConfig() {
68
+ const jsConfigPath = getGslothConfigReadPath(USER_PROJECT_CONFIG_JS);
69
+ if (existsSync(jsConfigPath)) {
70
+ try {
71
+ const i = await importExternalFile(jsConfigPath);
72
+ const customConfig = await i.configure(jsConfigPath);
73
+ return mergeConfig(customConfig);
78
74
  }
79
- else {
80
- // JS config not found, try MJS
75
+ catch (e) {
76
+ displayDebug(e instanceof Error ? e : String(e));
77
+ displayError(`Failed to read config from ${USER_PROJECT_CONFIG_JS}, will try other formats.`);
78
+ // Continue to try other formats
81
79
  return tryMjsConfig();
82
80
  }
83
81
  }
84
- // Helper function to try loading MJS config
85
- async function tryMjsConfig() {
86
- if (existsSync(mjsConfigPath)) {
87
- return importExternalFile(mjsConfigPath)
88
- .then((i) => i.configure(mjsConfigPath))
89
- .then((config) => {
90
- slothContext.config = { ...slothContext.config, ...config };
91
- })
92
- .catch((e) => {
93
- displayDebug(e instanceof Error ? e : String(e));
94
- displayError(`Failed to read config from ${USER_PROJECT_CONFIG_MJS}.`);
95
- displayError(`No valid configuration found. Please create a valid configuration file.`);
96
- exit();
97
- });
82
+ else {
83
+ // JS config not found, try MJS
84
+ return tryMjsConfig();
85
+ }
86
+ }
87
+ // Helper function to try loading MJS config
88
+ async function tryMjsConfig() {
89
+ const mjsConfigPath = getGslothConfigReadPath(USER_PROJECT_CONFIG_MJS);
90
+ if (existsSync(mjsConfigPath)) {
91
+ try {
92
+ const i = await importExternalFile(mjsConfigPath);
93
+ const customConfig = await i.configure(mjsConfigPath);
94
+ return mergeConfig(customConfig);
98
95
  }
99
- else {
100
- // No config files found
101
- displayError('No configuration file found. Please create one of: ' +
102
- `${USER_PROJECT_CONFIG_JSON}, ${USER_PROJECT_CONFIG_JS}, or ${USER_PROJECT_CONFIG_MJS} ` +
103
- 'in your project directory.');
104
- exit();
96
+ catch (e) {
97
+ displayDebug(e instanceof Error ? e : String(e));
98
+ displayError(`Failed to read config from ${USER_PROJECT_CONFIG_MJS}.`);
99
+ displayError(`No valid configuration found. Please create a valid configuration file.`);
100
+ exit(1);
105
101
  }
106
102
  }
107
- }
108
- // Process JSON LLM config by creating the appropriate LLM instance
109
- export async function tryJsonConfig(jsonConfig) {
110
- const llmConfig = jsonConfig?.llm;
111
- const llmType = llmConfig?.type?.toLowerCase();
112
- // Check if the LLM type is in availableDefaultConfigs
113
- if (!llmType || !availableDefaultConfigs.includes(llmType)) {
114
- displayError(`Unsupported LLM type: ${llmType}. Available types are: ${availableDefaultConfigs.join(', ')}`);
103
+ else {
104
+ // No config files found
105
+ displayError('No configuration file found. Please create one of: ' +
106
+ `${USER_PROJECT_CONFIG_JSON}, ${USER_PROJECT_CONFIG_JS}, or ${USER_PROJECT_CONFIG_MJS} ` +
107
+ 'in your project directory.');
115
108
  exit(1);
116
- return;
117
109
  }
110
+ // This throw is unreachable due to exit(1) above, but satisfies TS type analysis and prevents tests from exiting
111
+ throw new Error('Unexpected error occurred.');
112
+ }
113
+ /**
114
+ * Process JSON LLM config by creating the appropriate LLM instance
115
+ * @param jsonConfig - The parsed JSON config
116
+ * @returns Promise<SlothConfig>
117
+ */
118
+ export async function tryJsonConfig(jsonConfig) {
118
119
  try {
119
- // Import the appropriate config module based on the LLM type
120
- try {
120
+ if (jsonConfig.llm && typeof jsonConfig.llm === 'object') {
121
+ // Get the type of LLM (e.g., 'vertexai', 'anthropic') - this should exist
122
+ const llmType = jsonConfig.llm.type;
123
+ if (!llmType) {
124
+ displayError('LLM type not specified in config.');
125
+ exit(1);
126
+ }
127
+ // Get the configuration for the specific LLM type
128
+ const llmConfig = jsonConfig.llm;
129
+ // Import the appropriate config module
121
130
  const configModule = await import(`./configs/${llmType}.js`);
122
131
  if (configModule.processJsonConfig) {
123
132
  const llm = (await configModule.processJsonConfig(llmConfig));
124
- slothContext.config = { ...slothContext.config, ...jsonConfig, llm };
133
+ return mergeRawConfig(jsonConfig, llm);
125
134
  }
126
135
  else {
127
136
  displayWarning(`Config module for ${llmType} does not have processJsonConfig function.`);
128
137
  exit(1);
129
138
  }
130
139
  }
131
- catch (importError) {
132
- displayDebug(importError instanceof Error ? importError : String(importError));
133
- displayWarning(`Could not import config module for ${llmType}.`);
140
+ else {
141
+ displayError('No LLM configuration found in config.');
134
142
  exit(1);
135
143
  }
136
144
  }
137
- catch (error) {
138
- displayDebug(error instanceof Error ? error : String(error));
139
- displayError(`Error creating LLM instance for type ${llmType}.`);
145
+ catch (e) {
146
+ if (e instanceof Error && e.message.includes('Cannot find module')) {
147
+ displayError(`LLM type '${jsonConfig.llm.type}' not supported.`);
148
+ }
149
+ else {
150
+ displayError(`Error processing LLM config: ${e instanceof Error ? e.message : String(e)}`);
151
+ }
140
152
  exit(1);
141
153
  }
154
+ // This throw is unreachable due to exit(1) above, but satisfies TS type analysis and prevents tests from exiting
155
+ throw new Error('Unexpected error occurred.');
142
156
  }
143
157
  export async function createProjectConfig(configType) {
144
- displayInfo(`Setting up your project\n`);
145
- writeProjectReviewPreamble();
146
- displayWarning(`Make sure you add as much detail as possible to your ${PROJECT_GUIDELINES}.\n`);
147
- // Check if the config type is in availableDefaultConfigs
158
+ // Check if the config type is valid
148
159
  if (!availableDefaultConfigs.includes(configType)) {
149
- displayError(`Unsupported config type: ${configType}. Available types are: ${availableDefaultConfigs.join(', ')}`);
160
+ displayError(`Unknown config type: ${configType}. Available options: ${availableDefaultConfigs.join(', ')}`);
150
161
  exit(1);
151
- return;
152
162
  }
163
+ displayInfo(`Setting up your project\n`);
164
+ writeProjectReviewPreamble();
165
+ displayWarning(`Make sure you add as much detail as possible to your ${PROJECT_GUIDELINES}.\n`);
153
166
  displayInfo(`Creating project config for ${configType}`);
154
167
  const vendorConfig = await import(`./configs/${configType}.js`);
155
- vendorConfig.init(getGslothConfigWritePath(USER_PROJECT_CONFIG_JSON), slothContext);
168
+ vendorConfig.init(getGslothConfigWritePath(USER_PROJECT_CONFIG_JSON));
156
169
  }
157
170
  export function writeProjectReviewPreamble() {
158
171
  const guidelinesPath = getGslothConfigWritePath(PROJECT_GUIDELINES);
@@ -195,13 +208,20 @@ Important! You are likely to be dealing with git diff below, please don't confus
195
208
  writeFileIfNotExistsWithMessages(reviewPath, reviewTemplate);
196
209
  }
197
210
  /**
198
- * @deprecated test only
199
- * TODO should be gone together with slothContext itself
211
+ * Merge config with default config
212
+ */
213
+ function mergeConfig(partialConfig) {
214
+ const config = partialConfig;
215
+ return {
216
+ ...DEFAULT_CONFIG,
217
+ ...config,
218
+ commands: { ...DEFAULT_CONFIG.commands, ...(config?.commands ?? {}) },
219
+ };
220
+ }
221
+ /**
222
+ * Merge raw with default config
200
223
  */
201
- export function reset() {
202
- Object.keys(slothContext).forEach((key) => {
203
- delete slothContext[key];
204
- });
205
- slothContext.config = DEFAULT_CONFIG;
224
+ function mergeRawConfig(config, llm) {
225
+ return mergeConfig({ ...config, llm });
206
226
  }
207
227
  //# sourceMappingURL=config.js.map
@@ -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
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
@@ -0,0 +1,7 @@
1
+ export declare const USER_PROJECT_CONFIG_JS = ".gsloth.config.js";
2
+ export declare const USER_PROJECT_CONFIG_JSON = ".gsloth.config.json";
3
+ export declare const USER_PROJECT_CONFIG_MJS = ".gsloth.config.mjs";
4
+ export declare const GSLOTH_BACKSTORY = ".gsloth.backstory.md";
5
+ export declare const PROJECT_GUIDELINES = ".gsloth.guidelines.md";
6
+ export declare const PROJECT_REVIEW_INSTRUCTIONS = ".gsloth.review.md";
7
+ export declare const GSLOTH_SYSTEM_PROMPT = ".gsloth.system.md";
@@ -0,0 +1,8 @@
1
+ export const USER_PROJECT_CONFIG_JS = '.gsloth.config.js';
2
+ export const USER_PROJECT_CONFIG_JSON = '.gsloth.config.json';
3
+ export const USER_PROJECT_CONFIG_MJS = '.gsloth.config.mjs';
4
+ export const GSLOTH_BACKSTORY = '.gsloth.backstory.md';
5
+ export const PROJECT_GUIDELINES = '.gsloth.guidelines.md';
6
+ export const PROJECT_REVIEW_INSTRUCTIONS = '.gsloth.review.md';
7
+ export const GSLOTH_SYSTEM_PROMPT = '.gsloth.system.md';
8
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +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"}
File without changes
File without changes
File without changes
package/dist/index.d.ts CHANGED
File without changes
package/dist/index.js CHANGED
@@ -2,7 +2,8 @@ import { Command } from 'commander';
2
2
  import { askCommand } from '#src/commands/askCommand.js';
3
3
  import { initCommand } from '#src/commands/initCommand.js';
4
4
  import { reviewCommand } from '#src/commands/reviewCommand.js';
5
- import { slothContext } from '#src/config.js';
5
+ import { prCommand } from '#src/commands/prCommand.js';
6
+ import { chatCommand } from '#src/commands/chatCommand.js';
6
7
  import { getSlothVersion } from '#src/utils.js';
7
8
  import { argv, readStdin } from '#src/systemUtils.js';
8
9
  import { setVerbose } from '#src/llmUtils.js';
@@ -18,9 +19,11 @@ if (program.getOptionValue('verbose')) {
18
19
  // Set global prompt debug
19
20
  setVerbose(true);
20
21
  }
22
+ // Initialize all commands - they will handle their own config loading
21
23
  initCommand(program);
22
- reviewCommand(program, slothContext);
24
+ reviewCommand(program);
25
+ prCommand(program);
23
26
  askCommand(program);
24
- // TODO add general interactive chat command
27
+ chatCommand(program);
25
28
  await readStdin(program);
26
29
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,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,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,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;AAE9C,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,CAAC;AAE3D,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;AAED,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACrC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,4CAA4C;AAE5C,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,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,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,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,CAAC;AAE3D,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;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;AAErB,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC"}
@@ -1,4 +1,6 @@
1
- import { BaseChatModel } from '@langchain/core/language_models/chat_models';
1
+ import type { Message } from '#src/modules/types.js';
2
2
  import { SlothConfig } from '#src/config.js';
3
- export declare function invoke(llm: BaseChatModel, systemMessage: string, prompt: string, config: SlothConfig): Promise<string>;
3
+ import { type RunnableConfig } from '@langchain/core/runnables';
4
+ import { BaseCheckpointSaver } from '@langchain/langgraph';
5
+ export declare function invoke(command: 'ask' | 'pr' | 'review' | 'chat' | undefined, messages: Message[], config: SlothConfig, runConfig?: RunnableConfig, checkpointSaver?: BaseCheckpointSaver | undefined): Promise<string>;
4
6
  export declare function setVerbose(debug: boolean): void;