gaunt-sloth-assistant 0.2.2 → 0.3.1

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 (55) hide show
  1. package/.gsloth.guidelines.md +127 -0
  2. package/.gsloth.review.md +13 -0
  3. package/README.md +1 -1
  4. package/dist/commands/askCommand.js +4 -4
  5. package/dist/commands/askCommand.js.map +1 -1
  6. package/dist/commands/reviewCommand.js +20 -8
  7. package/dist/commands/reviewCommand.js.map +1 -1
  8. package/dist/config.d.ts +8 -4
  9. package/dist/config.js +49 -19
  10. package/dist/config.js.map +1 -1
  11. package/dist/configs/anthropic.d.ts +2 -3
  12. package/dist/configs/anthropic.js.map +1 -1
  13. package/dist/configs/vertexai.d.ts +2 -2
  14. package/dist/configs/vertexai.js.map +1 -1
  15. package/dist/filePathUtils.d.ts +25 -0
  16. package/dist/filePathUtils.js +66 -0
  17. package/dist/filePathUtils.js.map +1 -0
  18. package/dist/index.js +11 -2
  19. package/dist/index.js.map +1 -1
  20. package/dist/llmUtils.d.ts +4 -0
  21. package/dist/llmUtils.js +39 -0
  22. package/dist/llmUtils.js.map +1 -0
  23. package/dist/modules/questionAnsweringModule.d.ts +0 -11
  24. package/dist/modules/questionAnsweringModule.js +8 -47
  25. package/dist/modules/questionAnsweringModule.js.map +1 -1
  26. package/dist/modules/reviewModule.d.ts +0 -3
  27. package/dist/modules/reviewModule.js +8 -38
  28. package/dist/modules/reviewModule.js.map +1 -1
  29. package/dist/prompt.d.ts +3 -2
  30. package/dist/prompt.js +28 -12
  31. package/dist/prompt.js.map +1 -1
  32. package/dist/systemUtils.d.ts +10 -0
  33. package/dist/systemUtils.js +34 -0
  34. package/dist/systemUtils.js.map +1 -1
  35. package/dist/utils.d.ts +15 -5
  36. package/dist/utils.js +74 -47
  37. package/dist/utils.js.map +1 -1
  38. package/docs/CONFIGURATION.md +25 -4
  39. package/docs/RELEASE-HOWTO.md +13 -5
  40. package/package.json +1 -1
  41. package/src/commands/askCommand.ts +4 -4
  42. package/src/commands/reviewCommand.ts +21 -9
  43. package/src/config.ts +59 -28
  44. package/src/configs/anthropic.ts +5 -3
  45. package/src/configs/vertexai.ts +2 -2
  46. package/src/filePathUtils.ts +79 -0
  47. package/src/index.ts +12 -3
  48. package/src/llmUtils.ts +54 -0
  49. package/src/modules/questionAnsweringModule.ts +10 -66
  50. package/src/modules/reviewModule.ts +8 -60
  51. package/src/prompt.ts +35 -17
  52. package/src/systemUtils.ts +38 -0
  53. package/src/utils.ts +82 -50
  54. package/.gsloth.preamble.review.md +0 -125
  55. package/UX-RESEARCH.md +0 -78
@@ -0,0 +1,127 @@
1
+ # Development Guidelines of Gaunt Sloth Assistant
2
+
3
+ Gaunt Sloth Assistant is a command-line Node.js utility helping developers to access LLM from the command line.
4
+
5
+ ## Technologies Used
6
+ - NodeJS 22 (LTS)
7
+ - Vitest 3 for tests
8
+ - Typescript 5
9
+ - LangChain and LangGraph 0.3
10
+
11
+ Please refer to package.json to check exact versions
12
+
13
+ ## Core Development Principles
14
+
15
+ Vendor and system abstractions and wrappers should be used in most cases.
16
+
17
+ ### Imports
18
+
19
+ Project uses import alias with `#src/*.js` pointing to `src/` and after build resolving to generated `dist/`.
20
+ Please abstain from using relative imports, only use them when no other choices are available
21
+ (currently the only exception is entry point index.js)
22
+
23
+ ### Architecture and Flow
24
+ - Make sure proper separation of LangChain components (LLMs, chains, agents, tools)
25
+ - Check for clear data flow between components
26
+ - Ensure proper state management in LangGraph workflows
27
+ - Validate error handling and fallback mechanisms
28
+
29
+ ### Security
30
+ - Make sure API key handling and environment variables
31
+ - Make sure no personal data is present in code
32
+ - ** Make sure that API keys are accidentally not included into diff.**
33
+ - Check for proper input sanitization
34
+ - Verify output validation and sanitization
35
+
36
+ ### Output
37
+
38
+ Use [consoleUtils.ts](src/consoleUtils.ts) to output to users.
39
+ Do not use console.log directly.
40
+
41
+ ### System
42
+
43
+ Use [systemUtils.ts](src/systemUtils.ts) to access system variables and functions such as
44
+ process.env, process.stdout, etc.
45
+
46
+ ### LLM
47
+
48
+ Use [llmUtils.ts](src/llmUtils.ts) to access LLM.
49
+
50
+ ## Testing (Important)
51
+
52
+ - In spec files never import mocked files themselves, mock them, and a tested file should import them.
53
+ - Always import the tested file dynamically within the test.
54
+ - Mocks are hoisted, so it is better to simply place them at the top of the file to avoid confusion.
55
+ - Make sure that beforeEach is always present and always calls vi.resetAllMocks(); as a first thing.
56
+ - Create variables with vi.fn() without adding implementations to them, then apply these functions with vi.mock outside of the describe.
57
+ - Apply mock implementations and return values to mocks within individual tests.
58
+ - When mock implementations are common for all test cases, apply them in beforeEach.
59
+ - Make sure test actually testing a function, rather than simply testing the mock.
60
+
61
+ Example test
62
+
63
+ ```typescript
64
+ import {beforeEach, describe, expect, it, vi} from 'vitest';
65
+ import {writeFileSync} from "node:fs";
66
+
67
+ const consoleUtilsMock = {
68
+ display: vi.fn(),
69
+ displayError: vi.fn(),
70
+ displayInfo: vi.fn(),
71
+ displayWarning: vi.fn(),
72
+ displaySuccess: vi.fn(),
73
+ displayDebug: vi.fn(),
74
+ };
75
+ vi.mock('#src/consoleUtils.js', () => consoleUtilsMock);
76
+
77
+ let fsUtilsMock = {
78
+ existsSync: vi.fn(),
79
+ readFileSync: vi.fn(),
80
+ writeFileSync: vi.fn(),
81
+ };
82
+ vi.mock('node:fs', () => fsUtilsMock);
83
+
84
+ describe('specialUtil', () => {
85
+ beforeEach(() => {
86
+ vi.resetAllMocks(); // Always reset all mocks in beforeEach
87
+
88
+ // Set up default mock values
89
+ fsUtilsMock.existsSync.mockImplementation(() => true);
90
+ });
91
+
92
+ it('specialFunction should eventually write test contents to a file', async () => {
93
+ fsMock.readFileSync.mockImplementation((path: string) => {
94
+ if (path.includes('inputFile.txt')) return 'TEST CONTENT';
95
+ return '';
96
+ });
97
+
98
+ const {specialFunction} = await import('#src/specialUtil.js'); // Always import tested file within the test
99
+
100
+ // Function under test
101
+ specialFunction();
102
+
103
+ expect(fsUtilsMock.writeFileSync).toHaveBeenCalledWith('outputFile.txt', 'TEST CONTENT\nEXTRA CONTENT');
104
+ expect(consoleUtilsMock.displayDebug).not.toHaveBeenCalled();
105
+ expect(consoleUtilsMock.displayWarning).not.toHaveBeenCalled();
106
+ expect(consoleUtilsMock.display).not.toHaveBeenCalled();
107
+ expect(consoleUtilsMock.displayError).not.toHaveBeenCalled();
108
+ expect(consoleUtilsMock.displayInfo).not.toHaveBeenCalled();
109
+ expect(consoleUtilsMock.displaySuccess).toHaveBeenCalledWith('Successfully transferred to outputFile.txt');
110
+ });
111
+ });
112
+ ```
113
+
114
+ ## Development Workflow
115
+
116
+ Please follow this workflow:
117
+
118
+ - Analyze requirements.
119
+ - Develop changes.
120
+ - Make sure all tests pass `npm run test` and fix if possible.
121
+ - Request relevant documentation if some of the test failures are unclear.
122
+ - Once all tests are green check lint with `npm run lint`.
123
+ - If any lint failures are present try fixing them with `npm run lint -- --fix`.
124
+ - If autofix didn't help, try fixing them yourself.
125
+ - Prefer testing all user outputs, including testing absence of unexpected outputs.
126
+
127
+ ---
@@ -0,0 +1,13 @@
1
+ If requirements were provided, first check that the implemented code implements these requirements.
2
+ Document that you checked the code to implement requirements.
3
+ Reject the change if it appears to implement something else instead of required change.
4
+
5
+ Provide specific feedback on any areas of concern or suggestions for improvement.
6
+ Please categorize your feedback (e.g., "Bug," "Suggestion," "Nitpick").
7
+
8
+ Important! In the end, conclude if you would recommend approving this PR or not.
9
+ Use ✅⚠️❌ symbols to highlight your feedback appropriately.
10
+
11
+ Thank you for your thorough review!
12
+
13
+ Important! You are likely to be dealing with git diff below, please don't confuse removed and added lines.
package/README.md CHANGED
@@ -135,7 +135,7 @@ npm install gaunt-sloth-assistant -g
135
135
 
136
136
  ## Configuration
137
137
 
138
- > 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.preamble.review.md`.
138
+ > 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`.
139
139
  > Global configuration to invoke gsloth anywhere is in [ROADMAP](ROADMAP.md).
140
140
 
141
141
  Configuration can be created with `gsloth init [vendor]` command.
@@ -1,6 +1,6 @@
1
- import { readInternalPreamble } from '#src/prompt.js';
1
+ import { readBackstory, readGuidelines } from '#src/prompt.js';
2
2
  import { readMultipleFilesFromCurrentDir } from '#src/utils.js';
3
- import { initConfig } from '#src/config.js';
3
+ import { initConfig, slothContext } from '#src/config.js';
4
4
  /**
5
5
  * Adds the ask command to the program
6
6
  * @param program - The commander program
@@ -13,14 +13,14 @@ export function askCommand(program) {
13
13
  .option('-f, --file [files...]', 'Input files. Content of these files will be added BEFORE the message')
14
14
  // TODO add option consuming extra message as argument
15
15
  .action(async (message, options) => {
16
- const preamble = [readInternalPreamble()];
16
+ const preamble = [readBackstory(), readGuidelines(slothContext.config.projectGuidelines)];
17
17
  const content = [message];
18
18
  if (options.file) {
19
19
  content.push(readMultipleFilesFromCurrentDir(options.file));
20
20
  }
21
21
  await initConfig();
22
22
  const { askQuestion } = await import('#src/modules/questionAnsweringModule.js');
23
- await askQuestion('sloth-ASK', preamble.join('\n'), content.join('\n'));
23
+ await askQuestion('ASK', preamble.join('\n'), content.join('\n'));
24
24
  });
25
25
  }
26
26
  //# sourceMappingURL=askCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"askCommand.js","sourceRoot":"","sources":["../../src/commands/askCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAM5C;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,gBAAgB,CAAC;SAC7B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;SAClC,MAAM,CACL,uBAAuB,EACvB,sEAAsE,CACvE;QACD,sDAAsD;SACrD,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAA0B,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAC;QAChF,MAAM,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"askCommand.js","sourceRoot":"","sources":["../../src/commands/askCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAM1D;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,gBAAgB,CAAC;SAC7B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;SAClC,MAAM,CACL,uBAAuB,EACvB,sEAAsE,CACvE;QACD,sDAAsD;SACrD,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAA0B,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,CAAC,aAAa,EAAE,EAAE,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1F,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAC;QAChF,MAAM,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { Option } from 'commander';
2
- import { USER_PROJECT_REVIEW_PREAMBLE } from '#src/config.js';
3
- import { readInternalPreamble, readPreamble } from '#src/prompt.js';
2
+ import { slothContext } from '#src/config.js';
3
+ import { readBackstory, readGuidelines, readReviewInstructions } from '#src/prompt.js';
4
4
  import { readMultipleFilesFromCurrentDir } from '#src/utils.js';
5
5
  import { displayError } from '#src/consoleUtils.js';
6
+ import { getStringFromStdin } from '#src/systemUtils.js';
6
7
  /**
7
8
  * Requirements providers. Expected to be in `.providers/` dir
8
9
  */
@@ -36,7 +37,11 @@ export function reviewCommand(program, context) {
36
37
  .action(async (contentId, options) => {
37
38
  const { initConfig } = await import('#src/config.js');
38
39
  await initConfig();
39
- const preamble = [readInternalPreamble(), readPreamble(USER_PROJECT_REVIEW_PREAMBLE)];
40
+ const systemMessage = [
41
+ readBackstory(),
42
+ readGuidelines(slothContext.config.projectGuidelines),
43
+ readReviewInstructions(slothContext.config.projectReviewInstructions),
44
+ ];
40
45
  const content = [];
41
46
  const requirementsId = options.requirements;
42
47
  const requirementsProvider = options.requirementsProvider ??
@@ -57,14 +62,15 @@ export function reviewCommand(program, context) {
57
62
  if (options.file) {
58
63
  content.push(readMultipleFilesFromCurrentDir(options.file));
59
64
  }
60
- if (context.stdin) {
61
- content.push(context.stdin);
65
+ let stringFromStdin = getStringFromStdin();
66
+ if (stringFromStdin) {
67
+ content.push(stringFromStdin);
62
68
  }
63
69
  if (options.message) {
64
70
  content.push(options.message);
65
71
  }
66
72
  const { review } = await import('#src/modules/reviewModule.js');
67
- await review('sloth-DIFF-review', preamble.join('\n'), content.join('\n'));
73
+ await review('REVIEW', systemMessage.join('\n'), content.join('\n'));
68
74
  });
69
75
  program
70
76
  .command('pr')
@@ -78,7 +84,11 @@ export function reviewCommand(program, context) {
78
84
  .action(async (prId, requirementsId, options) => {
79
85
  const { initConfig } = await import('#src/config.js');
80
86
  await initConfig();
81
- const preamble = [readInternalPreamble(), readPreamble(USER_PROJECT_REVIEW_PREAMBLE)];
87
+ const systemMessage = [
88
+ readBackstory(),
89
+ readGuidelines(slothContext.config.projectGuidelines),
90
+ readReviewInstructions(slothContext.config.projectReviewInstructions),
91
+ ];
82
92
  const content = [];
83
93
  const requirementsProvider = options.requirementsProvider ??
84
94
  context.config?.pr?.requirementsProvider ??
@@ -96,7 +106,9 @@ export function reviewCommand(program, context) {
96
106
  const { get } = await import(providerPath);
97
107
  content.push(await get(null, prId));
98
108
  const { review } = await import('#src/modules/reviewModule.js');
99
- await review(`sloth-PR-${prId}-review`, preamble.join('\n'), content.join('\n'));
109
+ // TODO consider including requirements id
110
+ // TODO sanitize prId
111
+ await review(`PR-${prId}`, systemMessage.join('\n'), content.join('\n'));
100
112
  });
101
113
  async function getRequirementsFromProvider(requirementsProvider, requirementsId) {
102
114
  return getFromProvider(requirementsProvider, requirementsId, (context.config?.requirementsProviderConfig ?? {})[requirementsProvider], REQUIREMENTS_PROVIDERS);
@@ -1 +1 @@
1
- {"version":3,"file":"reviewCommand.js","sourceRoot":"","sources":["../../src/commands/reviewCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reviewCommand.js","sourceRoot":"","sources":["../../src/commands/reviewCommand.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,8 +1,10 @@
1
- import { LanguageModelLike } from '@langchain/core/language_models/base';
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
2
  export interface SlothConfig extends BaseSlothConfig {
3
- llm: LanguageModelLike;
3
+ llm: BaseChatModel;
4
4
  contentProvider: string;
5
5
  requirementsProvider: string;
6
+ projectGuidelines: string;
7
+ projectReviewInstructions: string;
6
8
  commands: {
7
9
  pr: {
8
10
  contentProvider: string;
@@ -22,6 +24,8 @@ interface BaseSlothConfig {
22
24
  llm: unknown;
23
25
  contentProvider?: string;
24
26
  requirementsProvider?: string;
27
+ projectGuidelines?: string;
28
+ projectReviewInstructions?: string;
25
29
  commands?: {
26
30
  pr: {
27
31
  contentProvider: string;
@@ -43,7 +47,6 @@ interface BaseSlothConfig {
43
47
  */
44
48
  export interface SlothContext {
45
49
  config: SlothConfig;
46
- stdin: string;
47
50
  session: {
48
51
  configurable: {
49
52
  thread_id: string;
@@ -58,7 +61,8 @@ export declare const USER_PROJECT_CONFIG_JS = ".gsloth.config.js";
58
61
  export declare const USER_PROJECT_CONFIG_JSON = ".gsloth.config.json";
59
62
  export declare const USER_PROJECT_CONFIG_MJS = ".gsloth.config.mjs";
60
63
  export declare const GSLOTH_BACKSTORY = ".gsloth.backstory.md";
61
- export declare const USER_PROJECT_REVIEW_PREAMBLE = ".gsloth.preamble.review.md";
64
+ export declare const PROJECT_GUIDELINES = ".gsloth.guidelines.md";
65
+ export declare const PROJECT_REVIEW_INSTRUCTIONS = ".gsloth.review.md";
62
66
  export declare const availableDefaultConfigs: readonly ["vertexai", "anthropic", "groq"];
63
67
  export type ConfigType = (typeof availableDefaultConfigs)[number];
64
68
  export declare const DEFAULT_CONFIG: Partial<SlothConfig>;
package/dist/config.js CHANGED
@@ -1,19 +1,22 @@
1
- import path from 'node:path/posix';
2
1
  import { v4 as uuidv4 } from 'uuid';
3
2
  import { displayDebug, displayError, displayInfo, displayWarning } from '#src/consoleUtils.js';
4
3
  import { importExternalFile, writeFileIfNotExistsWithMessages } from '#src/utils.js';
5
4
  import { existsSync, readFileSync } from 'node:fs';
6
- import { error, exit, getCurrentDir } from '#src/systemUtils.js';
5
+ import { error, exit } from '#src/systemUtils.js';
6
+ import { getGslothConfigWritePath, getGslothConfigReadPath } from '#src/filePathUtils.js';
7
7
  export const USER_PROJECT_CONFIG_JS = '.gsloth.config.js';
8
8
  export const USER_PROJECT_CONFIG_JSON = '.gsloth.config.json';
9
9
  export const USER_PROJECT_CONFIG_MJS = '.gsloth.config.mjs';
10
10
  export const GSLOTH_BACKSTORY = '.gsloth.backstory.md';
11
- export const USER_PROJECT_REVIEW_PREAMBLE = '.gsloth.preamble.review.md';
11
+ export const PROJECT_GUIDELINES = '.gsloth.guidelines.md';
12
+ export const PROJECT_REVIEW_INSTRUCTIONS = '.gsloth.review.md';
12
13
  export const availableDefaultConfigs = ['vertexai', 'anthropic', 'groq'];
13
14
  export const DEFAULT_CONFIG = {
14
15
  llm: undefined,
15
16
  contentProvider: 'file',
16
17
  requirementsProvider: 'file',
18
+ projectGuidelines: PROJECT_GUIDELINES,
19
+ projectReviewInstructions: PROJECT_REVIEW_INSTRUCTIONS,
17
20
  commands: {
18
21
  pr: {
19
22
  contentProvider: 'gh',
@@ -31,10 +34,9 @@ export const slothContext = {
31
34
  session: { configurable: { thread_id: uuidv4() } },
32
35
  };
33
36
  export async function initConfig() {
34
- const currentDir = getCurrentDir();
35
- const jsonConfigPath = path.join(currentDir, USER_PROJECT_CONFIG_JSON);
36
- const jsConfigPath = path.join(currentDir, USER_PROJECT_CONFIG_JS);
37
- const mjsConfigPath = path.join(currentDir, USER_PROJECT_CONFIG_MJS);
37
+ const jsonConfigPath = getGslothConfigReadPath(USER_PROJECT_CONFIG_JSON);
38
+ const jsConfigPath = getGslothConfigReadPath(USER_PROJECT_CONFIG_JS);
39
+ const mjsConfigPath = getGslothConfigReadPath(USER_PROJECT_CONFIG_MJS);
38
40
  // Try loading JSON config file first
39
41
  if (existsSync(jsonConfigPath)) {
40
42
  try {
@@ -141,7 +143,7 @@ export async function tryJsonConfig(jsonConfig) {
141
143
  export async function createProjectConfig(configType) {
142
144
  displayInfo(`Setting up your project\n`);
143
145
  writeProjectReviewPreamble();
144
- displayWarning(`Make sure you add as much detail as possible to your ${USER_PROJECT_REVIEW_PREAMBLE}.\n`);
146
+ displayWarning(`Make sure you add as much detail as possible to your ${PROJECT_GUIDELINES}.\n`);
145
147
  // Check if the config type is in availableDefaultConfigs
146
148
  if (!availableDefaultConfigs.includes(configType)) {
147
149
  displayError(`Unsupported config type: ${configType}. Available types are: ${availableDefaultConfigs.join(', ')}`);
@@ -150,18 +152,47 @@ export async function createProjectConfig(configType) {
150
152
  }
151
153
  displayInfo(`Creating project config for ${configType}`);
152
154
  const vendorConfig = await import(`./configs/${configType}.js`);
153
- vendorConfig.init(USER_PROJECT_CONFIG_JSON, slothContext);
155
+ vendorConfig.init(getGslothConfigWritePath(USER_PROJECT_CONFIG_JSON), slothContext);
154
156
  }
155
157
  export function writeProjectReviewPreamble() {
156
- const currentDir = getCurrentDir();
157
- const reviewPreamblePath = path.join(currentDir, USER_PROJECT_REVIEW_PREAMBLE);
158
- writeFileIfNotExistsWithMessages(reviewPreamblePath, 'You are doing generic code review.\n' +
159
- ' Important! Please remind user to prepare proper AI preamble in' +
160
- USER_PROJECT_REVIEW_PREAMBLE +
161
- ' for this project. Use decent amount of ⚠️ to highlight lack of config.' +
162
- ' Explicitly mention `' +
163
- USER_PROJECT_REVIEW_PREAMBLE +
164
- '`.');
158
+ const guidelinesPath = getGslothConfigWritePath(PROJECT_GUIDELINES);
159
+ const reviewPath = getGslothConfigWritePath(PROJECT_REVIEW_INSTRUCTIONS);
160
+ /**
161
+ * Development Guidelines.
162
+ * Please do not remove the warning from this template,
163
+ * it is crucial to describe project specifics to get high-quality reviews.
164
+ */
165
+ const guidelinesTemplate = `# Development Guidelines
166
+
167
+ This file should include general development guidelines for this project.
168
+
169
+ Important! Please remind the user to prepare proper AI guidelines to the ${PROJECT_GUIDELINES} file
170
+ for this project. Use a decent amount of ⚠️ to highlight the lack of config.
171
+ Explicitly mention ${PROJECT_GUIDELINES}.
172
+ `;
173
+ /**
174
+ * Code Review Guidelines.
175
+ * This code review does not have a warning, like Development Guidelines, because
176
+ * this one should be good to start with.
177
+ */
178
+ const reviewTemplate = `# Code Review Guidelines
179
+
180
+ If requirements were provided, first check that the implemented code implements these requirements.
181
+ Document that you checked the code to implement requirements.
182
+ Reject the change if it appears to implement something else instead of required change.
183
+
184
+ Provide specific feedback on any areas of concern or suggestions for improvement.
185
+ Please categorize your feedback (e.g., "Bug," "Suggestion," "Nitpick").
186
+
187
+ Important! In the end, conclude if you would recommend approving this PR or not.
188
+ Use ✅⚠️❌ symbols to highlight your feedback appropriately.
189
+
190
+ Thank you for your thorough review!
191
+
192
+ Important! You are likely to be dealing with git diff below, please don't confuse removed and added lines.
193
+ `;
194
+ writeFileIfNotExistsWithMessages(guidelinesPath, guidelinesTemplate);
195
+ writeFileIfNotExistsWithMessages(reviewPath, reviewTemplate);
165
196
  }
166
197
  /**
167
198
  * @deprecated test only
@@ -172,7 +203,6 @@ export function reset() {
172
203
  delete slothContext[key];
173
204
  });
174
205
  slothContext.config = DEFAULT_CONFIG;
175
- slothContext.stdin = '';
176
206
  slothContext.session = { configurable: { thread_id: uuidv4() } };
177
207
  }
178
208
  //# 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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"}
@@ -1,5 +1,4 @@
1
- import { LanguageModelLike } from '@langchain/core/language_models/base';
2
1
  import type { AnthropicInput } from '@langchain/anthropic';
3
- import type { BaseChatModelParams } from '@langchain/core/language_models/chat_models';
4
- export declare function processJsonConfig(llmConfig: AnthropicInput & BaseChatModelParams): Promise<LanguageModelLike>;
2
+ import type { BaseChatModel, BaseChatModelParams } from '@langchain/core/language_models/chat_models';
3
+ export declare function processJsonConfig(llmConfig: AnthropicInput & BaseChatModelParams): Promise<BaseChatModel>;
5
4
  export declare function init(configFileName: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/configs/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAKjE,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAA+C;IAE/C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACvD,wEAAwE;IACxE,MAAM,eAAe,GAAG,GAAG,CAAC,iBAAiB,IAAI,SAAS,CAAC,MAAM,CAAC;IAClE,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC;QACjC,GAAG,SAAS;QACZ,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,4BAA4B;KACvD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,SAAS,GAAG;;;;;;;;;;;;;CAajB,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;EAMlB,CAAC;AAEH,MAAM,UAAU,IAAI,CAAC,cAAsB;IACzC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAEtC,yDAAyD;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3E,gCAAgC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC1D,cAAc,CAAC,2BAA2B,cAAc,iCAAiC,CAAC,CAAC;AAC7F,CAAC"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/configs/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAOjE,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAA+C;IAE/C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACvD,wEAAwE;IACxE,MAAM,eAAe,GAAG,GAAG,CAAC,iBAAiB,IAAI,SAAS,CAAC,MAAM,CAAC;IAClE,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC;QACjC,GAAG,SAAS;QACZ,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,4BAA4B;KACvD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,SAAS,GAAG;;;;;;;;;;;;;CAajB,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;EAMlB,CAAC;AAEH,MAAM,UAAU,IAAI,CAAC,cAAsB;IACzC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAEtC,yDAAyD;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3E,gCAAgC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC1D,cAAc,CAAC,2BAA2B,cAAc,iCAAiC,CAAC,CAAC;AAC7F,CAAC"}
@@ -1,4 +1,4 @@
1
- import { LanguageModelLike } from '@langchain/core/language_models/base';
2
1
  import { ChatVertexAIInput } from '@langchain/google-vertexai';
2
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
3
3
  export declare function init(configFileName: string): void;
4
- export declare function processJsonConfig(llmConfig: ChatVertexAIInput): Promise<LanguageModelLike>;
4
+ export declare function processJsonConfig(llmConfig: ChatVertexAIInput): Promise<BaseChatModel>;
@@ -1 +1 @@
1
- {"version":3,"file":"vertexai.js","sourceRoot":"","sources":["../../src/configs/vertexai.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAGjE,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;CAejB,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;EAMlB,CAAC;AAEH,MAAM,UAAU,IAAI,CAAC,cAAsB;IACzC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAEtC,yDAAyD;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3E,gCAAgC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC1D,cAAc,CACZ,+GAA+G,CAChH,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAA4B;IAClE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC5D,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC;QAC/B,GAAG,SAAS;QACZ,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,8BAA8B;KACzD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"vertexai.js","sourceRoot":"","sources":["../../src/configs/vertexai.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAIjE,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;CAejB,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;EAMlB,CAAC;AAEH,MAAM,UAAU,IAAI,CAAC,cAAsB;IACzC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAEtC,yDAAyD;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3E,gCAAgC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC1D,cAAc,CACZ,+GAA+G,CAChH,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAA4B;IAClE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC5D,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC;QAC/B,GAAG,SAAS;QACZ,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,8BAA8B;KACzD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Checks if .gsloth directory exists in the project root
3
+ * @returns Boolean indicating whether .gsloth directory exists
4
+ */
5
+ export declare function gslothDirExists(): boolean;
6
+ /**
7
+ * Gets the path where gsloth should write files based on .gsloth directory existence
8
+ * @param filename The filename to append to the path
9
+ * @returns The resolved path where the file should be written
10
+ */
11
+ export declare function getGslothFilePath(filename: string): string;
12
+ /**
13
+ * Gets the path where gsloth should write configuration files based on .gsloth directory existence.
14
+ * The main difference from {@link #getGslothConfigReadPath} is that this getGslothConfigWritePath
15
+ * method creates internal settings directory if it does not exist.
16
+ * @param filename The configuration filename
17
+ * @returns The resolved path where the configuration file should be written
18
+ */
19
+ export declare function getGslothConfigWritePath(filename: string): string;
20
+ /**
21
+ * Gets the path where gsloth should look for configuration files based on .gsloth directory existence
22
+ * @param filename The configuration filename to look for
23
+ * @returns The resolved path where the configuration file should be found
24
+ */
25
+ export declare function getGslothConfigReadPath(filename: string): string;
@@ -0,0 +1,66 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { mkdirSync } from 'node:fs';
4
+ import { getCurrentDir } from '#src/systemUtils.js';
5
+ const GSLOTH_DIR = '.gsloth';
6
+ const GSLOTH_SETTINGS_DIR = '.gsloth-settings';
7
+ /**
8
+ * Checks if .gsloth directory exists in the project root
9
+ * @returns Boolean indicating whether .gsloth directory exists
10
+ */
11
+ export function gslothDirExists() {
12
+ const currentDir = getCurrentDir();
13
+ const gslothDirPath = resolve(currentDir, GSLOTH_DIR);
14
+ return existsSync(gslothDirPath);
15
+ }
16
+ /**
17
+ * Gets the path where gsloth should write files based on .gsloth directory existence
18
+ * @param filename The filename to append to the path
19
+ * @returns The resolved path where the file should be written
20
+ */
21
+ export function getGslothFilePath(filename) {
22
+ const currentDir = getCurrentDir();
23
+ if (gslothDirExists()) {
24
+ const gslothDirPath = resolve(currentDir, GSLOTH_DIR);
25
+ return resolve(gslothDirPath, filename);
26
+ }
27
+ return resolve(currentDir, filename);
28
+ }
29
+ /**
30
+ * Gets the path where gsloth should write configuration files based on .gsloth directory existence.
31
+ * The main difference from {@link #getGslothConfigReadPath} is that this getGslothConfigWritePath
32
+ * method creates internal settings directory if it does not exist.
33
+ * @param filename The configuration filename
34
+ * @returns The resolved path where the configuration file should be written
35
+ */
36
+ export function getGslothConfigWritePath(filename) {
37
+ const currentDir = getCurrentDir();
38
+ if (gslothDirExists()) {
39
+ const gslothDirPath = resolve(currentDir, GSLOTH_DIR);
40
+ const gslothSettingsPath = resolve(gslothDirPath, GSLOTH_SETTINGS_DIR);
41
+ // Create .gsloth-settings directory if it doesn't exist
42
+ if (!existsSync(gslothSettingsPath)) {
43
+ mkdirSync(gslothSettingsPath, { recursive: true });
44
+ }
45
+ return resolve(gslothSettingsPath, filename);
46
+ }
47
+ return resolve(currentDir, filename);
48
+ }
49
+ /**
50
+ * Gets the path where gsloth should look for configuration files based on .gsloth directory existence
51
+ * @param filename The configuration filename to look for
52
+ * @returns The resolved path where the configuration file should be found
53
+ */
54
+ export function getGslothConfigReadPath(filename) {
55
+ const currentDir = getCurrentDir();
56
+ if (gslothDirExists()) {
57
+ const gslothDirPath = resolve(currentDir, GSLOTH_DIR);
58
+ const gslothSettingsPath = resolve(gslothDirPath, GSLOTH_SETTINGS_DIR);
59
+ const configPath = resolve(gslothSettingsPath, filename);
60
+ if (existsSync(configPath)) {
61
+ return configPath;
62
+ }
63
+ }
64
+ return resolve(currentDir, filename);
65
+ }
66
+ //# sourceMappingURL=filePathUtils.js.map
@@ -0,0 +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;AAEpD,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAE/C;;;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"}
package/dist/index.js CHANGED
@@ -3,12 +3,21 @@ 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
5
  import { slothContext } from '#src/config.js';
6
- import { getSlothVersion, readStdin } from '#src/utils.js';
6
+ import { getSlothVersion } from '#src/utils.js';
7
+ import { argv, readStdin } from '#src/systemUtils.js';
8
+ import { setVerbose } from '#src/llmUtils.js';
7
9
  const program = new Command();
8
10
  program
9
11
  .name('gsloth')
10
12
  .description('Gaunt Sloth Assistant reviewing your PRs')
11
- .version(getSlothVersion());
13
+ .version(getSlothVersion())
14
+ .option('--verbose', 'Print entire prompt sent to LLM.');
15
+ // Parse global options before binding any commands
16
+ program.parseOptions(argv);
17
+ if (program.getOptionValue('verbose')) {
18
+ // Set global prompt debug
19
+ setVerbose(true);
20
+ }
12
21
  initCommand(program);
13
22
  reviewCommand(program, slothContext);
14
23
  askCommand(program);
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,SAAS,EAAE,MAAM,eAAe,CAAC;AAE3D,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,CAAC;AAE9B,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACrC,UAAU,CAAC,OAAO,CAAC,CAAC;AAEpB,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,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"}
@@ -0,0 +1,4 @@
1
+ import { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import { BaseLanguageModelCallOptions } from '@langchain/core/language_models/base';
3
+ export declare function invoke(llm: BaseChatModel, options: Partial<BaseLanguageModelCallOptions>, systemMessage: string, prompt: string): Promise<string>;
4
+ export declare function setVerbose(debug: boolean): void;