@bestdefense/bd-agent 0.1.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.
Files changed (42) hide show
  1. package/README.md +95 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +75 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/chat.d.ts +4 -0
  7. package/dist/commands/chat.d.ts.map +1 -0
  8. package/dist/commands/chat.js +101 -0
  9. package/dist/commands/chat.js.map +1 -0
  10. package/dist/services/bedrock-client.d.ts +22 -0
  11. package/dist/services/bedrock-client.d.ts.map +1 -0
  12. package/dist/services/bedrock-client.js +65 -0
  13. package/dist/services/bedrock-client.js.map +1 -0
  14. package/dist/services/conversation-manager.d.ts +13 -0
  15. package/dist/services/conversation-manager.d.ts.map +1 -0
  16. package/dist/services/conversation-manager.js +41 -0
  17. package/dist/services/conversation-manager.js.map +1 -0
  18. package/dist/services/tool-executor.d.ts +11 -0
  19. package/dist/services/tool-executor.d.ts.map +1 -0
  20. package/dist/services/tool-executor.js +49 -0
  21. package/dist/services/tool-executor.js.map +1 -0
  22. package/dist/tools/file-system.d.ts +127 -0
  23. package/dist/tools/file-system.d.ts.map +1 -0
  24. package/dist/tools/file-system.js +173 -0
  25. package/dist/tools/file-system.js.map +1 -0
  26. package/dist/tools/git.d.ts +163 -0
  27. package/dist/tools/git.d.ts.map +1 -0
  28. package/dist/tools/git.js +169 -0
  29. package/dist/tools/git.js.map +1 -0
  30. package/dist/tools/shell.d.ts +40 -0
  31. package/dist/tools/shell.d.ts.map +1 -0
  32. package/dist/tools/shell.js +55 -0
  33. package/dist/tools/shell.js.map +1 -0
  34. package/dist/utils/config.d.ts +11 -0
  35. package/dist/utils/config.d.ts.map +1 -0
  36. package/dist/utils/config.js +75 -0
  37. package/dist/utils/config.js.map +1 -0
  38. package/dist/utils/prompts.d.ts +2 -0
  39. package/dist/utils/prompts.d.ts.map +1 -0
  40. package/dist/utils/prompts.js +34 -0
  41. package/dist/utils/prompts.js.map +1 -0
  42. package/package.json +52 -0
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.config = void 0;
37
+ exports.validateConfig = validateConfig;
38
+ exports.saveConfig = saveConfig;
39
+ const dotenv = __importStar(require("dotenv"));
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const os = __importStar(require("os"));
43
+ dotenv.config();
44
+ const configDir = path.join(os.homedir(), '.bd-agent');
45
+ const envFile = path.join(configDir, '.env');
46
+ if (fs.existsSync(envFile)) {
47
+ dotenv.config({ path: envFile });
48
+ }
49
+ exports.config = {
50
+ AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID,
51
+ AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY,
52
+ AWS_SESSION_TOKEN: process.env.AWS_SESSION_TOKEN,
53
+ AWS_REGION: process.env.AWS_REGION || 'us-east-1',
54
+ BEDROCK_MODEL_ID: process.env.BEDROCK_MODEL_ID || 'anthropic.claude-3-5-sonnet-20241022-v2:0',
55
+ AWS_BEARER_TOKEN_BEDROCK: process.env.AWS_BEARER_TOKEN_BEDROCK
56
+ };
57
+ function validateConfig() {
58
+ if (!exports.config.AWS_ACCESS_KEY_ID || !exports.config.AWS_SECRET_ACCESS_KEY) {
59
+ console.error('Missing AWS credentials. Please set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY');
60
+ return false;
61
+ }
62
+ return true;
63
+ }
64
+ function saveConfig(updates) {
65
+ if (!fs.existsSync(configDir)) {
66
+ fs.mkdirSync(configDir, { recursive: true });
67
+ }
68
+ const currentConfig = { ...exports.config, ...updates };
69
+ const envContent = Object.entries(currentConfig)
70
+ .filter(([_, value]) => value !== undefined)
71
+ .map(([key, value]) => `${key}=${value}`)
72
+ .join('\n');
73
+ fs.writeFileSync(envFile, envContent);
74
+ }
75
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,wCAMC;AAED,gCAYC;AA3CD,+CAAiC;AACjC,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEzB,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACvD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAE7C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACnC,CAAC;AAEY,QAAA,MAAM,GAAG;IACpB,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IAChD,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACxD,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IAChD,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW;IACjD,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,2CAA2C;IAC7F,wBAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;CAC/D,CAAC;AAEF,SAAgB,cAAc;IAC5B,IAAI,CAAC,cAAM,CAAC,iBAAiB,IAAI,CAAC,cAAM,CAAC,qBAAqB,EAAE,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACjG,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,UAAU,CAAC,OAA+B;IACxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,aAAa,GAAG,EAAE,GAAG,cAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;SAC7C,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;SACxC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function getSystemPrompt(): string;
2
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,IAAI,MAAM,CA6BxC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSystemPrompt = getSystemPrompt;
4
+ function getSystemPrompt() {
5
+ return `You are BD Agent, an AI-powered coding assistant that helps developers with their programming tasks.
6
+
7
+ You have access to various tools to help you:
8
+ - File system tools: read, write, edit files, and list directories
9
+ - Git tools: check status, stage files, commit changes, view logs
10
+ - Shell tools: execute commands
11
+
12
+ When helping users:
13
+ 1. Be concise and direct in your responses
14
+ 2. Use the available tools to understand the codebase and make changes
15
+ 3. Follow existing code conventions and patterns
16
+ 4. Always verify your changes work correctly
17
+ 5. Provide clear explanations of what you're doing
18
+
19
+ You can help with:
20
+ - Writing new code
21
+ - Debugging and fixing issues
22
+ - Refactoring existing code
23
+ - Explaining complex code
24
+ - Managing git workflows
25
+ - Running tests and builds
26
+ - General programming questions
27
+
28
+ Remember to:
29
+ - Ask for clarification when needed
30
+ - Break down complex tasks into smaller steps
31
+ - Use tools efficiently to minimize unnecessary operations
32
+ - Respect the user's existing code style and preferences`;
33
+ }
34
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":";;AAAA,0CA6BC;AA7BD,SAAgB,eAAe;IAC7B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;yDA2BgD,CAAC;AAC1D,CAAC"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@bestdefense/bd-agent",
3
+ "version": "0.1.0",
4
+ "description": "An AI-powered coding assistant CLI that connects to AWS Bedrock",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "bd-agent": "./dist/cli.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "tsx src/cli.ts",
12
+ "prepare": "npm run build",
13
+ "test": "jest"
14
+ },
15
+ "keywords": [
16
+ "ai",
17
+ "coding-assistant",
18
+ "cli",
19
+ "aws-bedrock",
20
+ "developer-tools"
21
+ ],
22
+ "author": "BestDefense, Inc.",
23
+ "license": "MIT",
24
+ "dependencies": {
25
+ "@aws-sdk/client-bedrock-runtime": "^3.0.0",
26
+ "chalk": "^5.3.0",
27
+ "commander": "^12.0.0",
28
+ "dotenv": "^16.4.5",
29
+ "inquirer": "^9.2.23",
30
+ "marked": "^12.0.2",
31
+ "marked-terminal": "^7.0.0",
32
+ "ora": "^8.0.1"
33
+ },
34
+ "devDependencies": {
35
+ "@types/inquirer": "^9.0.7",
36
+ "@types/marked-terminal": "^3.1.3",
37
+ "@types/node": "^20.14.0",
38
+ "jest": "^29.7.0",
39
+ "tsx": "^4.15.0",
40
+ "typescript": "^5.4.5"
41
+ },
42
+ "engines": {
43
+ "node": ">=18.0.0"
44
+ },
45
+ "files": [
46
+ "dist"
47
+ ],
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "https://github.com/bestdefense-io/BD.Agent.git"
51
+ }
52
+ }