@bestdefense/bd-agent 0.1.0 → 0.1.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.
package/dist/cli.js
CHANGED
@@ -47,9 +47,9 @@ async function runSetup() {
|
|
47
47
|
validate: (input) => input.length > 0 || 'Secret Access Key is required'
|
48
48
|
},
|
49
49
|
{
|
50
|
-
type: '
|
50
|
+
type: 'editor',
|
51
51
|
name: 'AWS_SESSION_TOKEN',
|
52
|
-
message: 'AWS Session Token (optional):'
|
52
|
+
message: 'AWS Session Token (optional - press Enter to open editor for long tokens):'
|
53
53
|
},
|
54
54
|
{
|
55
55
|
type: 'input',
|
@@ -58,12 +58,55 @@ async function runSetup() {
|
|
58
58
|
default: 'us-east-1'
|
59
59
|
},
|
60
60
|
{
|
61
|
-
type: '
|
61
|
+
type: 'list',
|
62
62
|
name: 'BEDROCK_MODEL_ID',
|
63
63
|
message: 'Bedrock Model ID:',
|
64
|
+
choices: [
|
65
|
+
{ name: 'Claude 3.5 Sonnet v2 (Latest)', value: 'anthropic.claude-3-5-sonnet-20241022-v2:0' },
|
66
|
+
{ name: 'Claude 3.5 Sonnet v1', value: 'anthropic.claude-3-5-sonnet-20240620-v1:0' },
|
67
|
+
{ name: 'Claude 3 Sonnet', value: 'anthropic.claude-3-sonnet-20240229-v1:0' },
|
68
|
+
{ name: 'Claude 3 Haiku', value: 'anthropic.claude-3-haiku-20240307-v1:0' },
|
69
|
+
{ name: 'Claude Instant', value: 'anthropic.claude-instant-v1' },
|
70
|
+
{ name: '--- Inference Profile Required ---', value: 'divider', disabled: true },
|
71
|
+
{ name: 'Claude Opus 4 (requires setup)', value: 'opus-setup' },
|
72
|
+
{ name: 'Custom Model/Profile (enter manually)', value: 'custom' }
|
73
|
+
],
|
64
74
|
default: 'anthropic.claude-3-5-sonnet-20241022-v2:0'
|
75
|
+
},
|
76
|
+
{
|
77
|
+
type: 'input',
|
78
|
+
name: 'CUSTOM_MODEL_ID',
|
79
|
+
message: 'Enter custom model ID:',
|
80
|
+
when: (answers) => answers.BEDROCK_MODEL_ID === 'custom'
|
65
81
|
}
|
66
82
|
]);
|
83
|
+
// Handle special cases
|
84
|
+
if (answers.BEDROCK_MODEL_ID === 'opus-setup') {
|
85
|
+
console.log(chalk_1.default.yellow('\n⚠️ Claude Opus 4 requires an inference profile.'));
|
86
|
+
console.log(chalk_1.default.blue('\nOption 1: Try region-prefixed model ID'));
|
87
|
+
console.log(chalk_1.default.gray(`Example: ${answers.AWS_REGION}.anthropic.claude-opus-4-20250514-v1:0`));
|
88
|
+
const useRegionPrefix = await inquirer_1.default.prompt([{
|
89
|
+
type: 'confirm',
|
90
|
+
name: 'usePrefix',
|
91
|
+
message: 'Try using region-prefixed model ID?',
|
92
|
+
default: true
|
93
|
+
}]);
|
94
|
+
if (useRegionPrefix.usePrefix) {
|
95
|
+
answers.BEDROCK_MODEL_ID = `${answers.AWS_REGION}.anthropic.claude-opus-4-20250514-v1:0`;
|
96
|
+
}
|
97
|
+
else {
|
98
|
+
console.log(chalk_1.default.blue('\nOption 2: Create an inference profile'));
|
99
|
+
console.log('1. Go to: https://console.aws.amazon.com/bedrock/');
|
100
|
+
console.log('2. Create an inference profile for Claude Opus 4');
|
101
|
+
console.log('3. Copy the ARN and run bd-agent setup again');
|
102
|
+
console.log('\nFor now, using Claude 3.5 Sonnet as fallback.');
|
103
|
+
answers.BEDROCK_MODEL_ID = 'anthropic.claude-3-5-sonnet-20241022-v2:0';
|
104
|
+
}
|
105
|
+
}
|
106
|
+
else if (answers.BEDROCK_MODEL_ID === 'custom' && answers.CUSTOM_MODEL_ID) {
|
107
|
+
answers.BEDROCK_MODEL_ID = answers.CUSTOM_MODEL_ID;
|
108
|
+
delete answers.CUSTOM_MODEL_ID;
|
109
|
+
}
|
67
110
|
(0, config_1.saveConfig)(answers);
|
68
111
|
console.log(chalk_1.default.green('\n✓ Configuration saved successfully!'));
|
69
112
|
console.log(chalk_1.default.gray('You can now use: bd-agent chat'));
|
package/dist/cli.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,wDAAgC;AAChC,2CAA4D;AAC5D,0CAA4C;AAC5C,kDAA0C;AAE1C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,sBAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC,IAAA,uBAAc,GAAE,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC,CAAC;QAC9E,MAAM,QAAQ,EAAE,CAAC;IACnB,CAAC;IACD,MAAM,IAAA,gBAAS,EAAC,OAAO,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEpB,KAAK,UAAU,QAAQ;IACrB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;IAE/E,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QACpC;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,2BAA2B;SACrE;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,wBAAwB;YACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,+BAA+B;SACzE;QACD;YACE,IAAI,EAAE,
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bedrock-client.d.ts","sourceRoot":"","sources":["../../src/services/bedrock-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,qBAAqB,EAErB,YAAY,EAEZ,YAAY,EAGb,MAAM,iCAAiC,CAAC;
|
1
|
+
{"version":3,"file":"bedrock-client.d.ts","sourceRoot":"","sources":["../../src/services/bedrock-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,qBAAqB,EAErB,YAAY,EAEZ,YAAY,EAGb,MAAM,iCAAiC,CAAC;AAIzC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAS;;IAoClB,WAAW,CACf,QAAQ,EAAE,cAAc,EAAE,EAC1B,KAAK,CAAC,EAAE,WAAW,EAAE,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,qBAAqB,CAAC;IAwC1B,aAAa,CAClB,QAAQ,EAAE,cAAc,EAAE,EAC1B,KAAK,CAAC,EAAE,WAAW,EAAE,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,cAAc,CAAC,MAAM,GAAG,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC;CAaxD"}
|
@@ -1,51 +1,81 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
6
|
exports.BedrockClient = void 0;
|
4
7
|
const client_bedrock_runtime_1 = require("@aws-sdk/client-bedrock-runtime");
|
5
8
|
const config_1 = require("../utils/config");
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
6
10
|
class BedrockClient {
|
7
11
|
client;
|
8
12
|
modelId;
|
9
13
|
constructor() {
|
10
|
-
|
11
|
-
region: config_1.config.AWS_REGION || 'us-east-1'
|
12
|
-
|
14
|
+
const clientConfig = {
|
15
|
+
region: config_1.config.AWS_REGION || 'us-east-1'
|
16
|
+
};
|
17
|
+
// Only add credentials if they are properly defined
|
18
|
+
if (config_1.config.AWS_ACCESS_KEY_ID && config_1.config.AWS_SECRET_ACCESS_KEY) {
|
19
|
+
clientConfig.credentials = {
|
13
20
|
accessKeyId: config_1.config.AWS_ACCESS_KEY_ID,
|
14
|
-
secretAccessKey: config_1.config.AWS_SECRET_ACCESS_KEY
|
15
|
-
|
21
|
+
secretAccessKey: config_1.config.AWS_SECRET_ACCESS_KEY
|
22
|
+
};
|
23
|
+
// Only add session token if it exists and is not empty
|
24
|
+
if (config_1.config.AWS_SESSION_TOKEN && config_1.config.AWS_SESSION_TOKEN.trim()) {
|
25
|
+
clientConfig.credentials.sessionToken = config_1.config.AWS_SESSION_TOKEN.trim();
|
16
26
|
}
|
17
|
-
}
|
27
|
+
}
|
28
|
+
try {
|
29
|
+
this.client = new client_bedrock_runtime_1.BedrockRuntimeClient(clientConfig);
|
30
|
+
}
|
31
|
+
catch (error) {
|
32
|
+
console.error('Failed to initialize Bedrock client:', error);
|
33
|
+
throw new Error('Invalid AWS credentials. Please check your configuration.');
|
34
|
+
}
|
35
|
+
// Support both model IDs and inference profile ARNs
|
18
36
|
this.modelId = config_1.config.BEDROCK_MODEL_ID || 'anthropic.claude-3-5-sonnet-20241022-v2:0';
|
37
|
+
// Log if using an inference profile
|
38
|
+
if (this.modelId.startsWith('arn:') || this.modelId.includes('.anthropic.')) {
|
39
|
+
console.log(chalk_1.default.gray(`Using inference profile: ${this.modelId}`));
|
40
|
+
}
|
19
41
|
}
|
20
42
|
async sendMessage(messages, tools, systemPrompt) {
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
43
|
+
try {
|
44
|
+
const formattedMessages = messages.map(msg => ({
|
45
|
+
role: msg.role,
|
46
|
+
content: typeof msg.content === 'string'
|
47
|
+
? [{ text: msg.content }]
|
48
|
+
: msg.content
|
49
|
+
}));
|
50
|
+
const input = {
|
51
|
+
modelId: this.modelId,
|
52
|
+
messages: formattedMessages,
|
53
|
+
system: systemPrompt ? [{ text: systemPrompt }] : undefined,
|
54
|
+
toolConfig: tools ? {
|
55
|
+
tools: tools.map(tool => ({
|
56
|
+
toolSpec: {
|
57
|
+
name: tool.name,
|
58
|
+
description: tool.description,
|
59
|
+
inputSchema: {
|
60
|
+
json: tool.input_schema
|
61
|
+
}
|
38
62
|
}
|
39
|
-
}
|
40
|
-
}
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
63
|
+
}))
|
64
|
+
} : undefined,
|
65
|
+
inferenceConfig: {
|
66
|
+
maxTokens: 4096,
|
67
|
+
temperature: 0.0
|
68
|
+
}
|
69
|
+
};
|
70
|
+
const command = new client_bedrock_runtime_1.ConverseCommand(input);
|
71
|
+
return await this.client.send(command);
|
72
|
+
}
|
73
|
+
catch (error) {
|
74
|
+
if (error.name === 'CredentialsProviderError' || error.message?.includes('credential')) {
|
75
|
+
throw new Error('AWS credentials are invalid or expired. Please run: bd-agent setup');
|
45
76
|
}
|
46
|
-
|
47
|
-
|
48
|
-
return await this.client.send(command);
|
77
|
+
throw error;
|
78
|
+
}
|
49
79
|
}
|
50
80
|
async *streamMessage(messages, tools, systemPrompt) {
|
51
81
|
const response = await this.sendMessage(messages, tools, systemPrompt);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bedrock-client.js","sourceRoot":"","sources":["../../src/services/bedrock-client.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"bedrock-client.js","sourceRoot":"","sources":["../../src/services/bedrock-client.ts"],"names":[],"mappings":"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"}
|