@praveencs/agent 0.8.5 → 0.8.7
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/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +128 -5
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/index.js +1 -1
- package/dist/src/cli/repl.js +1 -1
- package/dist/src/llm/providers/azure.d.ts.map +1 -1
- package/dist/src/llm/providers/azure.js +9 -6
- package/dist/src/llm/providers/azure.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAQvD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAc9D;AAED,wBAAgB,iBAAiB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAQvD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAc9D;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAuO3C"}
|
|
@@ -31,6 +31,82 @@ export function createInitCommand() {
|
|
|
31
31
|
.description('Initialize agent configuration in the current project')
|
|
32
32
|
.action(async () => {
|
|
33
33
|
console.log(chalk.bold.cyan('\n▶ Initializing Agent Runtime\n'));
|
|
34
|
+
// Onboarding Prompts
|
|
35
|
+
const { default: inquirer } = await import('inquirer');
|
|
36
|
+
const answers = await inquirer.prompt([
|
|
37
|
+
{
|
|
38
|
+
type: 'list',
|
|
39
|
+
name: 'modelProvider',
|
|
40
|
+
message: 'Select your preferred LLM provider:',
|
|
41
|
+
choices: ['openai', 'anthropic', 'azure', 'ollama'],
|
|
42
|
+
default: 'openai'
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
type: 'input',
|
|
46
|
+
name: 'modelName',
|
|
47
|
+
message: 'Enter the model name (e.g., gpt-4o, claude-3-5-sonnet-20241022, llama3.2):',
|
|
48
|
+
default: (ans) => {
|
|
49
|
+
if (ans.modelProvider === 'openai')
|
|
50
|
+
return 'gpt-4o';
|
|
51
|
+
if (ans.modelProvider === 'anthropic')
|
|
52
|
+
return 'claude-3-5-sonnet-20241022';
|
|
53
|
+
if (ans.modelProvider === 'azure')
|
|
54
|
+
return 'gpt-4o';
|
|
55
|
+
if (ans.modelProvider === 'ollama')
|
|
56
|
+
return 'llama3.2';
|
|
57
|
+
return '';
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
type: 'input',
|
|
62
|
+
name: 'azureEndpoint',
|
|
63
|
+
message: 'Enter your Azure OpenAI Endpoint (e.g., https://your-resource.openai.azure.com):',
|
|
64
|
+
when: (ans) => ans.modelProvider === 'azure',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
type: 'input',
|
|
68
|
+
name: 'azureApiVersion',
|
|
69
|
+
message: 'Enter your Azure API Version:',
|
|
70
|
+
default: '2024-02-15-preview',
|
|
71
|
+
when: (ans) => ans.modelProvider === 'azure',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
type: 'password',
|
|
75
|
+
name: 'apiKey',
|
|
76
|
+
message: 'Enter your API Key (leave empty to use Environment Variables or Ollama):',
|
|
77
|
+
mask: '*'
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'list',
|
|
81
|
+
name: 'policyApproval',
|
|
82
|
+
message: 'Select the default policy approval level:',
|
|
83
|
+
choices: [
|
|
84
|
+
{ name: 'Confirm (Ask before running tools)', value: 'confirm' },
|
|
85
|
+
{ name: 'Allow (Autonomous run)', value: 'allow' },
|
|
86
|
+
{ name: 'Deny (Strict mode)', value: 'deny' }
|
|
87
|
+
],
|
|
88
|
+
default: 'confirm'
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: 'checkbox',
|
|
92
|
+
name: 'tools',
|
|
93
|
+
message: 'Select the core tools to enable by default:',
|
|
94
|
+
choices: [
|
|
95
|
+
{ name: 'Filesystem (fs.*)', value: 'fs.*', checked: true },
|
|
96
|
+
{ name: 'Execute Commands (cmd.run)', value: 'cmd.run', checked: true },
|
|
97
|
+
{ name: 'Git (git.*)', value: 'git.*', checked: true },
|
|
98
|
+
{ name: 'Project Info (project.*)', value: 'project.*', checked: true },
|
|
99
|
+
{ name: 'CLI Tools (cli.*) [AI wrappers]', value: 'cli.*', checked: true },
|
|
100
|
+
]
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
type: 'confirm',
|
|
104
|
+
name: 'updateGitignore',
|
|
105
|
+
message: 'Add .agent/ and agent.config.json to your project root .gitignore?',
|
|
106
|
+
default: true
|
|
107
|
+
}
|
|
108
|
+
]);
|
|
109
|
+
console.log(chalk.cyan('\n⚙️ Applying configuration...\n'));
|
|
34
110
|
const agentDir = getAgentDir();
|
|
35
111
|
const dirs = [
|
|
36
112
|
agentDir,
|
|
@@ -46,8 +122,27 @@ export function createInitCommand() {
|
|
|
46
122
|
console.log(chalk.green(' ✓ Created ') + chalk.dim(path.relative(process.cwd(), dir) + '/'));
|
|
47
123
|
}
|
|
48
124
|
// Create config file
|
|
125
|
+
const config = JSON.parse(JSON.stringify(DEFAULT_CONFIG));
|
|
126
|
+
config.models.routing.defaultProvider = answers.modelProvider;
|
|
127
|
+
if (!config.models.providers[answers.modelProvider]) {
|
|
128
|
+
config.models.providers[answers.modelProvider] = { type: answers.modelProvider };
|
|
129
|
+
}
|
|
130
|
+
config.models.providers[answers.modelProvider].model = answers.modelName;
|
|
131
|
+
if (answers.apiKey) {
|
|
132
|
+
config.models.providers[answers.modelProvider].apiKey = answers.apiKey;
|
|
133
|
+
}
|
|
134
|
+
if (answers.modelProvider === 'azure') {
|
|
135
|
+
if (answers.azureEndpoint)
|
|
136
|
+
config.models.providers.azure.baseUrl = answers.azureEndpoint;
|
|
137
|
+
if (answers.azureApiVersion)
|
|
138
|
+
config.models.providers.azure.apiVersion = answers.azureApiVersion;
|
|
139
|
+
// For Azure, model acts as deploymentName in our schema by default unless overridden
|
|
140
|
+
config.models.providers.azure.deploymentName = answers.modelName;
|
|
141
|
+
}
|
|
142
|
+
config.policy.defaultApproval = answers.policyApproval;
|
|
143
|
+
config.tools.enabled = answers.tools;
|
|
49
144
|
const configPath = getConfigPath();
|
|
50
|
-
await writeFile(configPath, JSON.stringify(
|
|
145
|
+
await writeFile(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
51
146
|
console.log(chalk.green(' ✓ Created ') + chalk.dim('agent.config.json'));
|
|
52
147
|
// Create example plan
|
|
53
148
|
const examplePlan = `name: example
|
|
@@ -99,14 +194,42 @@ trigger:
|
|
|
99
194
|
}, null, 2) + '\n', 'utf-8');
|
|
100
195
|
await writeFile(path.join(skillDir, 'prompt.md'), '# Hello World\n\nRead the README.md file and summarize its contents.\n', 'utf-8');
|
|
101
196
|
console.log(chalk.green(' ✓ Created ') + chalk.dim('.agent/skills/hello-world/'));
|
|
102
|
-
// Create .gitignore for .agent
|
|
197
|
+
// Create local .gitignore for .agent
|
|
103
198
|
await writeFile(path.join(agentDir, '.gitignore'), 'runs/\nlogs/\ndaemon.pid\n.secrets\n', 'utf-8');
|
|
104
199
|
console.log(chalk.green(' ✓ Created ') + chalk.dim('.agent/.gitignore'));
|
|
200
|
+
// Update root .gitignore
|
|
201
|
+
if (answers.updateGitignore) {
|
|
202
|
+
const rootGitignore = path.join(process.cwd(), '.gitignore');
|
|
203
|
+
try {
|
|
204
|
+
const fs = await import('node:fs/promises');
|
|
205
|
+
let gitignoreStr = '';
|
|
206
|
+
try {
|
|
207
|
+
gitignoreStr = await fs.readFile(rootGitignore, 'utf-8');
|
|
208
|
+
}
|
|
209
|
+
catch { /* ignore if not exists */ }
|
|
210
|
+
const entriesToAdd = [];
|
|
211
|
+
// Check if already exactly present (crude check to prevent duplicates)
|
|
212
|
+
if (!gitignoreStr.includes('.agent/'))
|
|
213
|
+
entriesToAdd.push('.agent/');
|
|
214
|
+
if (!gitignoreStr.includes('agent.config.json'))
|
|
215
|
+
entriesToAdd.push('agent.config.json');
|
|
216
|
+
if (entriesToAdd.length > 0) {
|
|
217
|
+
const appendStr = (gitignoreStr && !gitignoreStr.endsWith('\n') ? '\n' : '') + '\n# Agent Runtime\n' + entriesToAdd.join('\n') + '\n';
|
|
218
|
+
await fs.appendFile(rootGitignore, appendStr, 'utf-8');
|
|
219
|
+
console.log(chalk.green(' ✓ Updated ') + chalk.dim('.gitignore ') + chalk.dim('(root)'));
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
console.log(chalk.green(' ✓ Root ') + chalk.dim('.gitignore ') + chalk.dim('already up to date'));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch (e) {
|
|
226
|
+
console.error(chalk.red(' ✗ Failed to update root .gitignore'), e);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
105
229
|
console.log(chalk.bold.green('\n✓ Agent Runtime initialized!\n'));
|
|
106
230
|
console.log(chalk.dim(' Next steps:'));
|
|
107
|
-
console.log(chalk.dim(' 1.
|
|
108
|
-
console.log(chalk.dim(' 2.
|
|
109
|
-
console.log(chalk.dim(' 3. Create skills: agent skills create <name>'));
|
|
231
|
+
console.log(chalk.dim(' 1. Run: agent plan run example'));
|
|
232
|
+
console.log(chalk.dim(' 2. Create skills: agent skills create <name>'));
|
|
110
233
|
console.log();
|
|
111
234
|
});
|
|
112
235
|
return cmd;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpI,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAGzD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAsB;IACpD,MAAM,QAAQ,GAAqB;QAC/B,GAAG,OAA2B;QAC9B,GAAG,QAA4B;QAC/B,GAAG,QAA4B;QAC/B,GAAG,YAAgC;QACnC,GAAG,QAA4B;KAClC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC7B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;SAC1B,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,KAAK,IAAI,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG;YACT,QAAQ;YACR,YAAY,EAAE;YACd,WAAW,EAAE;YACb,UAAU,EAAE;YACZ,UAAU,EAAE;YACZ,aAAa,EAAE;SAClB,CAAC;QAEF,qBAAqB;QACrB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAClG,CAAC;QAED,qBAAqB;QACrB,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli/index.js
CHANGED
|
@@ -21,7 +21,7 @@ export function createCLI() {
|
|
|
21
21
|
program
|
|
22
22
|
.name('agent')
|
|
23
23
|
.description('Agent Runtime — autonomous, goal-oriented AI agent with skills, plans, memory, and permissioned tools')
|
|
24
|
-
.version('0.8.
|
|
24
|
+
.version('0.8.7')
|
|
25
25
|
.option('--verbose', 'Enable verbose output')
|
|
26
26
|
.option('--no-color', 'Disable colored output')
|
|
27
27
|
.option('--config <path>', 'Path to config file');
|
package/dist/src/cli/repl.js
CHANGED
|
@@ -48,7 +48,7 @@ export async function startREPL() {
|
|
|
48
48
|
const providerConfig = config.models.providers[defaultProvider];
|
|
49
49
|
const modelName = providerConfig?.model ?? defaultProvider;
|
|
50
50
|
renderBanner(config, {
|
|
51
|
-
version: '0.8.
|
|
51
|
+
version: '0.8.7',
|
|
52
52
|
project: projectName,
|
|
53
53
|
skillCount: skillLoader.list().length,
|
|
54
54
|
commandCount: commandLoader.list().length,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure.d.ts","sourceRoot":"","sources":["../../../../src/llm/providers/azure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACnD,IAAI,SAAW;IACf,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAI3B,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"azure.d.ts","sourceRoot":"","sources":["../../../../src/llm/providers/azure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACnD,IAAI,SAAW;IACf,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAI3B,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAqG/C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAKxC"}
|
|
@@ -11,10 +11,13 @@ export class AzureOpenAIProvider {
|
|
|
11
11
|
async chat(request) {
|
|
12
12
|
const openaiModule = await import('openai');
|
|
13
13
|
const AzureOpenAI = openaiModule.AzureOpenAI;
|
|
14
|
-
const apiKey = this.config.apiKey
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
const apiKey = this.config.apiKey || process.env['AZURE_API_KEY'] || process.env['AZURE_OPENAI_API_KEY'];
|
|
15
|
+
// Remove trailing slashes from endpoint as the SDK expects a base URL
|
|
16
|
+
let endpoint = this.config.baseUrl || process.env['AZURE_API_BASE'] || process.env['AZURE_OPENAI_ENDPOINT'] || '';
|
|
17
|
+
if (endpoint.endsWith('/'))
|
|
18
|
+
endpoint = endpoint.slice(0, -1);
|
|
19
|
+
const apiVersion = this.config.apiVersion || process.env['AZURE_API_VERSION'] || process.env['AZURE_OPENAI_API_VERSION'] || '2024-02-15-preview';
|
|
20
|
+
const deploymentName = this.config.deploymentName || process.env['AZURE_DEPLOYMENT_NAME'] || this.config.model;
|
|
18
21
|
const client = new AzureOpenAI({
|
|
19
22
|
apiKey,
|
|
20
23
|
endpoint,
|
|
@@ -90,8 +93,8 @@ export class AzureOpenAIProvider {
|
|
|
90
93
|
};
|
|
91
94
|
}
|
|
92
95
|
async isAvailable() {
|
|
93
|
-
const key = this.config.apiKey
|
|
94
|
-
const base = this.config.baseUrl
|
|
96
|
+
const key = this.config.apiKey || process.env['AZURE_API_KEY'] || process.env['AZURE_OPENAI_API_KEY'];
|
|
97
|
+
const base = this.config.baseUrl || process.env['AZURE_API_BASE'] || process.env['AZURE_OPENAI_ENDPOINT'];
|
|
95
98
|
return !!(key && base);
|
|
96
99
|
}
|
|
97
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure.js","sourceRoot":"","sources":["../../../../src/llm/providers/azure.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IAC5B,IAAI,GAAG,OAAO,CAAC;IACP,MAAM,CAAgB;IAE9B,YAAY,MAAqB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAmB;QAC1B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;QAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"azure.js","sourceRoot":"","sources":["../../../../src/llm/providers/azure.ts"],"names":[],"mappings":"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"}
|