aui-agent-builder 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.
- package/README.md +311 -0
- package/bin/aui.js +2 -0
- package/dist/api-client/index.d.ts +208 -0
- package/dist/api-client/index.d.ts.map +1 -0
- package/dist/api-client/index.js +219 -0
- package/dist/api-client/index.js.map +1 -0
- package/dist/commands/add-integration.d.ts +26 -0
- package/dist/commands/add-integration.d.ts.map +1 -0
- package/dist/commands/add-integration.js +484 -0
- package/dist/commands/add-integration.js.map +1 -0
- package/dist/commands/add-param.d.ts +13 -0
- package/dist/commands/add-param.d.ts.map +1 -0
- package/dist/commands/add-param.js +140 -0
- package/dist/commands/add-param.js.map +1 -0
- package/dist/commands/add-tool.d.ts +17 -0
- package/dist/commands/add-tool.d.ts.map +1 -0
- package/dist/commands/add-tool.js +239 -0
- package/dist/commands/add-tool.js.map +1 -0
- package/dist/commands/connect.d.ts +20 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +203 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/create-agent.d.ts +25 -0
- package/dist/commands/create-agent.d.ts.map +1 -0
- package/dist/commands/create-agent.js +199 -0
- package/dist/commands/create-agent.js.map +1 -0
- package/dist/commands/diff.d.ts +17 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +261 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/import-agent.d.ts +21 -0
- package/dist/commands/import-agent.d.ts.map +1 -0
- package/dist/commands/import-agent.js +274 -0
- package/dist/commands/import-agent.js.map +1 -0
- package/dist/commands/index.d.ts +15 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +27 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +18 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +173 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list-agents.d.ts +12 -0
- package/dist/commands/list-agents.d.ts.map +1 -0
- package/dist/commands/list-agents.js +68 -0
- package/dist/commands/list-agents.js.map +1 -0
- package/dist/commands/login.d.ts +26 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +200 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/pull.d.ts +17 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +65 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/push.d.ts +24 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +160 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/status.d.ts +10 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +155 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +19 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +114 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/validate.d.ts +20 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +199 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/config/index.d.ts +102 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +205 -0
- package/dist/config/index.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +163 -0
- package/dist/index.js.map +1 -0
- package/dist/mock-data/entities.aui.json +38 -0
- package/dist/mock-data/general_settings.aui.json +11 -0
- package/dist/mock-data/integrations.aui.json +806 -0
- package/dist/mock-data/parameters.aui.json +586 -0
- package/dist/mock-data/rules.aui.json +506 -0
- package/dist/mock-data/tools/conversation_forwarding.aui.json +32 -0
- package/dist/mock-data/tools/create_fraud_dispute.aui.json +112 -0
- package/dist/mock-data/tools/generative_ai.aui.json +29 -0
- package/dist/mock-data/tools/policies.aui.json +45 -0
- package/dist/mock-data/tools/transaction_and_card_details.aui.json +87 -0
- package/dist/mock-data/tools/transaction_search.aui.json +76 -0
- package/dist/mock-data/tools/update_credit_card_status.aui.json +45 -0
- package/dist/mock-data/tools/user_details.aui.json +57 -0
- package/dist/mock-data/tools/web_search.aui.json +54 -0
- package/dist/schema/aui.schema.json +418 -0
- package/dist/types/agent.d.ts +91 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +9 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/base.d.ts +15 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/base.js +7 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/entity.d.ts +25 -0
- package/dist/types/entity.d.ts.map +1 -0
- package/dist/types/entity.js +9 -0
- package/dist/types/entity.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +27 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/integration.d.ts +151 -0
- package/dist/types/integration.d.ts.map +1 -0
- package/dist/types/integration.js +9 -0
- package/dist/types/integration.js.map +1 -0
- package/dist/types/parameter.d.ts +38 -0
- package/dist/types/parameter.d.ts.map +1 -0
- package/dist/types/parameter.js +10 -0
- package/dist/types/parameter.js.map +1 -0
- package/dist/types/rule.d.ts +125 -0
- package/dist/types/rule.d.ts.map +1 -0
- package/dist/types/rule.js +10 -0
- package/dist/types/rule.js.map +1 -0
- package/dist/types/tool.d.ts +95 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +12 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/utils/index.d.ts +47 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +267 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* add-integration command - Import integrations from OpenAPI specs or manually
|
|
4
|
+
*
|
|
5
|
+
* Interactive flow:
|
|
6
|
+
* 1. Choose source: URL, JSON file, or manual entry
|
|
7
|
+
* 2. For OpenAPI: fetch, parse, select endpoints
|
|
8
|
+
* 3. For each endpoint: collect curl for testing
|
|
9
|
+
* 4. Generate integration configuration
|
|
10
|
+
* 5. Save to integrations.aui.json
|
|
11
|
+
*
|
|
12
|
+
* Usage: aui add-integration
|
|
13
|
+
* Options:
|
|
14
|
+
* --url <url> URL to OpenAPI spec
|
|
15
|
+
* --file <path> Path to OpenAPI JSON file
|
|
16
|
+
* --manual Manual integration entry
|
|
17
|
+
*/
|
|
18
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
21
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
22
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
23
|
+
}
|
|
24
|
+
Object.defineProperty(o, k2, desc);
|
|
25
|
+
}) : (function(o, m, k, k2) {
|
|
26
|
+
if (k2 === undefined) k2 = k;
|
|
27
|
+
o[k2] = m[k];
|
|
28
|
+
}));
|
|
29
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
30
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
31
|
+
}) : function(o, v) {
|
|
32
|
+
o["default"] = v;
|
|
33
|
+
});
|
|
34
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
35
|
+
var ownKeys = function(o) {
|
|
36
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
37
|
+
var ar = [];
|
|
38
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
39
|
+
return ar;
|
|
40
|
+
};
|
|
41
|
+
return ownKeys(o);
|
|
42
|
+
};
|
|
43
|
+
return function (mod) {
|
|
44
|
+
if (mod && mod.__esModule) return mod;
|
|
45
|
+
var result = {};
|
|
46
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
47
|
+
__setModuleDefault(result, mod);
|
|
48
|
+
return result;
|
|
49
|
+
};
|
|
50
|
+
})();
|
|
51
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
52
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
53
|
+
};
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
exports.addIntegration = addIntegration;
|
|
56
|
+
const fs = __importStar(require("fs"));
|
|
57
|
+
const path = __importStar(require("path"));
|
|
58
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
59
|
+
const ora_1 = __importDefault(require("ora"));
|
|
60
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
61
|
+
const config_1 = require("../config");
|
|
62
|
+
/**
|
|
63
|
+
* Main add-integration command
|
|
64
|
+
*/
|
|
65
|
+
async function addIntegration(options = {}) {
|
|
66
|
+
console.log(chalk_1.default.blue('\n ┌─────────────────────────────────────────┐'));
|
|
67
|
+
console.log(chalk_1.default.blue(' │ Add Integration to Agent │'));
|
|
68
|
+
console.log(chalk_1.default.blue(' └─────────────────────────────────────────┘\n'));
|
|
69
|
+
const projectRoot = (0, config_1.findProjectRoot)();
|
|
70
|
+
if (!projectRoot) {
|
|
71
|
+
console.log(chalk_1.default.yellow(' Note: No AUI project found. Integration will be saved to current directory.'));
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
// Choose source type
|
|
75
|
+
const { sourceType } = await inquirer_1.default.prompt([{
|
|
76
|
+
type: 'list',
|
|
77
|
+
name: 'sourceType',
|
|
78
|
+
message: 'How would you like to add the integration?',
|
|
79
|
+
choices: [
|
|
80
|
+
{ name: 'Manual entry - Define integration fields step by step', value: 'manual' },
|
|
81
|
+
{ name: 'OpenAPI URL - Import from OpenAPI spec URL', value: 'url' },
|
|
82
|
+
{ name: 'OpenAPI File - Import from local OpenAPI JSON file', value: 'file' }
|
|
83
|
+
]
|
|
84
|
+
}]);
|
|
85
|
+
let integration;
|
|
86
|
+
if (sourceType === 'manual') {
|
|
87
|
+
integration = await createManualIntegration();
|
|
88
|
+
}
|
|
89
|
+
else if (sourceType === 'url') {
|
|
90
|
+
integration = await createFromOpenAPIUrl(options.url);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
integration = await createFromOpenAPIFile(options.file);
|
|
94
|
+
}
|
|
95
|
+
// Preview
|
|
96
|
+
console.log(chalk_1.default.blue('\n ─── Integration Preview ───\n'));
|
|
97
|
+
console.log(chalk_1.default.white(` Type: ${integration.type}`));
|
|
98
|
+
console.log(chalk_1.default.white(` Code: ${integration.code}`));
|
|
99
|
+
if (integration.settings && 'endpoint' in integration.settings && integration.settings.endpoint) {
|
|
100
|
+
console.log(chalk_1.default.white(` Endpoint: ${integration.settings.endpoint.method} ${integration.settings.endpoint.url}`));
|
|
101
|
+
}
|
|
102
|
+
// Confirm and save
|
|
103
|
+
const { confirm } = await inquirer_1.default.prompt([{
|
|
104
|
+
type: 'confirm',
|
|
105
|
+
name: 'confirm',
|
|
106
|
+
message: 'Add this integration to your project?',
|
|
107
|
+
default: true
|
|
108
|
+
}]);
|
|
109
|
+
if (!confirm) {
|
|
110
|
+
console.log(chalk_1.default.gray('\n Cancelled.\n'));
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
await saveIntegration(integration, projectRoot);
|
|
114
|
+
console.log(chalk_1.default.green(`\n ✓ Integration "${integration.code}" added successfully!\n`));
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
console.error(chalk_1.default.red(`\n Error: ${error instanceof Error ? error.message : error}`));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create integration manually step by step
|
|
122
|
+
*/
|
|
123
|
+
async function createManualIntegration() {
|
|
124
|
+
const answers = await inquirer_1.default.prompt([
|
|
125
|
+
{
|
|
126
|
+
type: 'list',
|
|
127
|
+
name: 'type',
|
|
128
|
+
message: 'Integration type:',
|
|
129
|
+
choices: [
|
|
130
|
+
{ name: 'API - REST API endpoint', value: 'API' },
|
|
131
|
+
{ name: 'RAG - Knowledge base retrieval', value: 'RAG' },
|
|
132
|
+
{ name: 'MCP - Model Context Protocol', value: 'MCP' }
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'input',
|
|
137
|
+
name: 'code',
|
|
138
|
+
message: 'Integration code (kebab-case):',
|
|
139
|
+
validate: (input) => /^[a-z][a-z0-9-]*$/.test(input) || 'Use lowercase letters, numbers, and hyphens'
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'input',
|
|
143
|
+
name: 'description',
|
|
144
|
+
message: 'Description (optional):'
|
|
145
|
+
}
|
|
146
|
+
]);
|
|
147
|
+
if (answers.type === 'API') {
|
|
148
|
+
return await createAPIIntegration(answers.code, answers.description);
|
|
149
|
+
}
|
|
150
|
+
if (answers.type === 'RAG') {
|
|
151
|
+
return await createRAGIntegration(answers.code, answers.description);
|
|
152
|
+
}
|
|
153
|
+
// MCP or other
|
|
154
|
+
return {
|
|
155
|
+
type: answers.type,
|
|
156
|
+
code: answers.code,
|
|
157
|
+
description: answers.description || undefined,
|
|
158
|
+
settings: undefined
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Create an API integration with endpoint details
|
|
163
|
+
*/
|
|
164
|
+
async function createAPIIntegration(code, description) {
|
|
165
|
+
const endpointAnswers = await inquirer_1.default.prompt([
|
|
166
|
+
{
|
|
167
|
+
type: 'input',
|
|
168
|
+
name: 'url',
|
|
169
|
+
message: 'Endpoint URL (supports {{param}} placeholders):',
|
|
170
|
+
validate: (input) => input.length > 0 || 'URL is required'
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
type: 'list',
|
|
174
|
+
name: 'method',
|
|
175
|
+
message: 'HTTP Method:',
|
|
176
|
+
choices: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE']
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
type: 'list',
|
|
180
|
+
name: 'authType',
|
|
181
|
+
message: 'Authentication:',
|
|
182
|
+
choices: [
|
|
183
|
+
{ name: 'None', value: 'NONE' },
|
|
184
|
+
{ name: 'API Key', value: 'API_KEY' },
|
|
185
|
+
{ name: 'Bearer Token', value: 'BEARER_TOKEN' },
|
|
186
|
+
{ name: 'Basic Auth', value: 'BASIC' }
|
|
187
|
+
]
|
|
188
|
+
}
|
|
189
|
+
]);
|
|
190
|
+
const endpoint = {
|
|
191
|
+
url: endpointAnswers.url,
|
|
192
|
+
method: endpointAnswers.method,
|
|
193
|
+
};
|
|
194
|
+
if (endpointAnswers.authType !== 'NONE') {
|
|
195
|
+
if (endpointAnswers.authType === 'API_KEY') {
|
|
196
|
+
const { envVar } = await inquirer_1.default.prompt([{
|
|
197
|
+
type: 'input',
|
|
198
|
+
name: 'envVar',
|
|
199
|
+
message: 'Environment variable name for API key:',
|
|
200
|
+
default: `${code.toUpperCase().replace(/-/g, '_')}_API_KEY`
|
|
201
|
+
}]);
|
|
202
|
+
endpoint.authentication = { type: 'API_KEY', apiKey: `$${envVar}` };
|
|
203
|
+
}
|
|
204
|
+
else if (endpointAnswers.authType === 'BEARER_TOKEN') {
|
|
205
|
+
const { envVar } = await inquirer_1.default.prompt([{
|
|
206
|
+
type: 'input',
|
|
207
|
+
name: 'envVar',
|
|
208
|
+
message: 'Environment variable name for token:',
|
|
209
|
+
default: `${code.toUpperCase().replace(/-/g, '_')}_TOKEN`
|
|
210
|
+
}]);
|
|
211
|
+
endpoint.authentication = { type: 'BEARER_TOKEN', token: `$${envVar}` };
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Request schema fields
|
|
215
|
+
const requestSchema = [];
|
|
216
|
+
let addMore = true;
|
|
217
|
+
console.log(chalk_1.default.gray('\n Define request schema fields (the data this API needs):\n'));
|
|
218
|
+
while (addMore) {
|
|
219
|
+
const { wantField } = await inquirer_1.default.prompt([{
|
|
220
|
+
type: 'confirm',
|
|
221
|
+
name: 'wantField',
|
|
222
|
+
message: requestSchema.length === 0 ? 'Add a request field?' : 'Add another request field?',
|
|
223
|
+
default: requestSchema.length === 0
|
|
224
|
+
}]);
|
|
225
|
+
if (!wantField) {
|
|
226
|
+
addMore = false;
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
const fieldAnswers = await inquirer_1.default.prompt([
|
|
230
|
+
{
|
|
231
|
+
type: 'input',
|
|
232
|
+
name: 'key',
|
|
233
|
+
message: 'Field name:',
|
|
234
|
+
validate: (input) => input.length > 0 || 'Field name is required'
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
type: 'confirm',
|
|
238
|
+
name: 'required',
|
|
239
|
+
message: 'Required?',
|
|
240
|
+
default: true
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
type: 'input',
|
|
244
|
+
name: 'description',
|
|
245
|
+
message: 'Description:'
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
type: 'list',
|
|
249
|
+
name: 'type',
|
|
250
|
+
message: 'Type:',
|
|
251
|
+
choices: ['STRING', 'NUMBER', 'BOOLEAN', 'ENUM', 'OBJECT', 'ARRAY']
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
type: 'list',
|
|
255
|
+
name: 'valueSource',
|
|
256
|
+
message: 'Value source:',
|
|
257
|
+
choices: [
|
|
258
|
+
{ name: 'Dynamic - LLM determines value', value: 'dynamic' },
|
|
259
|
+
{ name: 'Default - Fixed value', value: 'default' },
|
|
260
|
+
{ name: 'User Profile - From user context', value: 'user_profile' },
|
|
261
|
+
{ name: 'Context - From conversation context', value: 'context' },
|
|
262
|
+
{ name: 'Entities - From entity data', value: 'entities' }
|
|
263
|
+
]
|
|
264
|
+
}
|
|
265
|
+
]);
|
|
266
|
+
requestSchema.push({
|
|
267
|
+
key: fieldAnswers.key,
|
|
268
|
+
required: fieldAnswers.required,
|
|
269
|
+
description: fieldAnswers.description,
|
|
270
|
+
type: fieldAnswers.type,
|
|
271
|
+
value_source: fieldAnswers.valueSource,
|
|
272
|
+
params: [],
|
|
273
|
+
entities: [],
|
|
274
|
+
values: [],
|
|
275
|
+
default_value: ''
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
// Test curl
|
|
279
|
+
const { testCurl } = await inquirer_1.default.prompt([{
|
|
280
|
+
type: 'input',
|
|
281
|
+
name: 'testCurl',
|
|
282
|
+
message: 'Test curl command (optional - used to generate response mapping):'
|
|
283
|
+
}]);
|
|
284
|
+
return {
|
|
285
|
+
type: 'API',
|
|
286
|
+
code,
|
|
287
|
+
description: description || undefined,
|
|
288
|
+
settings: {
|
|
289
|
+
endpoint,
|
|
290
|
+
request_schema: requestSchema,
|
|
291
|
+
response_mapping: {},
|
|
292
|
+
test_curl: testCurl || undefined
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Create a RAG integration
|
|
298
|
+
*/
|
|
299
|
+
async function createRAGIntegration(code, description) {
|
|
300
|
+
const answers = await inquirer_1.default.prompt([
|
|
301
|
+
{
|
|
302
|
+
type: 'input',
|
|
303
|
+
name: 'knowledgeBaseId',
|
|
304
|
+
message: 'Knowledge base ID:',
|
|
305
|
+
validate: (input) => input.length > 0 || 'Knowledge base ID is required'
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
type: 'number',
|
|
309
|
+
name: 'searchTopK',
|
|
310
|
+
message: 'Search top-k results:',
|
|
311
|
+
default: 7
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
type: 'number',
|
|
315
|
+
name: 'rankerTopK',
|
|
316
|
+
message: 'Ranker top-k results:',
|
|
317
|
+
default: 3
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
type: 'number',
|
|
321
|
+
name: 'confidenceThreshold',
|
|
322
|
+
message: 'Confidence threshold (0-1):',
|
|
323
|
+
default: 0.3
|
|
324
|
+
}
|
|
325
|
+
]);
|
|
326
|
+
return {
|
|
327
|
+
type: 'RAG',
|
|
328
|
+
code,
|
|
329
|
+
description: description || undefined,
|
|
330
|
+
settings: {
|
|
331
|
+
search_top_k: answers.searchTopK,
|
|
332
|
+
ranker_top_k: answers.rankerTopK,
|
|
333
|
+
ranker_model: null,
|
|
334
|
+
confidence_threshold: answers.confidenceThreshold,
|
|
335
|
+
knowledge_base_id: answers.knowledgeBaseId,
|
|
336
|
+
parent_knowledge_base_ids: [],
|
|
337
|
+
allow_multiple_calls: false,
|
|
338
|
+
placeholders: []
|
|
339
|
+
}
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Create integration from OpenAPI URL
|
|
344
|
+
*/
|
|
345
|
+
async function createFromOpenAPIUrl(url) {
|
|
346
|
+
if (!url) {
|
|
347
|
+
const answers = await inquirer_1.default.prompt([{
|
|
348
|
+
type: 'input',
|
|
349
|
+
name: 'url',
|
|
350
|
+
message: 'OpenAPI spec URL:',
|
|
351
|
+
validate: (input) => {
|
|
352
|
+
if (!input.startsWith('http://') && !input.startsWith('https://')) {
|
|
353
|
+
return 'URL must start with http:// or https://';
|
|
354
|
+
}
|
|
355
|
+
return true;
|
|
356
|
+
}
|
|
357
|
+
}]);
|
|
358
|
+
url = answers.url;
|
|
359
|
+
}
|
|
360
|
+
const spinner = (0, ora_1.default)('Fetching OpenAPI spec...').start();
|
|
361
|
+
try {
|
|
362
|
+
// Note: In production, this would fetch and parse the OpenAPI spec
|
|
363
|
+
// For now, we create a placeholder integration
|
|
364
|
+
spinner.succeed('OpenAPI spec loaded');
|
|
365
|
+
console.log(chalk_1.default.yellow('\n OpenAPI import is a work in progress.'));
|
|
366
|
+
console.log(chalk_1.default.yellow(' Creating a placeholder integration from the URL.\n'));
|
|
367
|
+
const { code } = await inquirer_1.default.prompt([{
|
|
368
|
+
type: 'input',
|
|
369
|
+
name: 'code',
|
|
370
|
+
message: 'Integration code:',
|
|
371
|
+
validate: (input) => /^[a-z][a-z0-9-]*$/.test(input) || 'Use kebab-case'
|
|
372
|
+
}]);
|
|
373
|
+
return {
|
|
374
|
+
type: 'API',
|
|
375
|
+
code,
|
|
376
|
+
settings: {
|
|
377
|
+
endpoint: {
|
|
378
|
+
url: url,
|
|
379
|
+
method: 'GET'
|
|
380
|
+
},
|
|
381
|
+
request_schema: [],
|
|
382
|
+
response_mapping: {}
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
spinner.fail('Failed to fetch OpenAPI spec');
|
|
388
|
+
throw error;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Create integration from OpenAPI file
|
|
393
|
+
*/
|
|
394
|
+
async function createFromOpenAPIFile(filePath) {
|
|
395
|
+
if (!filePath) {
|
|
396
|
+
const answers = await inquirer_1.default.prompt([{
|
|
397
|
+
type: 'input',
|
|
398
|
+
name: 'filePath',
|
|
399
|
+
message: 'Path to OpenAPI JSON file:',
|
|
400
|
+
validate: (input) => {
|
|
401
|
+
if (!fs.existsSync(input))
|
|
402
|
+
return `File not found: ${input}`;
|
|
403
|
+
return true;
|
|
404
|
+
}
|
|
405
|
+
}]);
|
|
406
|
+
filePath = answers.filePath;
|
|
407
|
+
}
|
|
408
|
+
console.log(chalk_1.default.yellow('\n OpenAPI file import is a work in progress.'));
|
|
409
|
+
console.log(chalk_1.default.yellow(' Creating a placeholder integration.\n'));
|
|
410
|
+
const { code } = await inquirer_1.default.prompt([{
|
|
411
|
+
type: 'input',
|
|
412
|
+
name: 'code',
|
|
413
|
+
message: 'Integration code:',
|
|
414
|
+
validate: (input) => /^[a-z][a-z0-9-]*$/.test(input) || 'Use kebab-case'
|
|
415
|
+
}]);
|
|
416
|
+
return {
|
|
417
|
+
type: 'API',
|
|
418
|
+
code,
|
|
419
|
+
settings: {
|
|
420
|
+
endpoint: null,
|
|
421
|
+
request_schema: [],
|
|
422
|
+
response_mapping: {}
|
|
423
|
+
}
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Save integration to integrations.aui.json
|
|
428
|
+
*/
|
|
429
|
+
async function saveIntegration(integration, projectRoot) {
|
|
430
|
+
const targetDir = projectRoot || process.cwd();
|
|
431
|
+
const integrationsPath = path.join(targetDir, 'integrations.aui.json');
|
|
432
|
+
let existingIntegrations = [];
|
|
433
|
+
// Load existing file
|
|
434
|
+
if (fs.existsSync(integrationsPath)) {
|
|
435
|
+
try {
|
|
436
|
+
const content = fs.readFileSync(integrationsPath, 'utf-8');
|
|
437
|
+
const parsed = JSON.parse(content);
|
|
438
|
+
existingIntegrations = parsed.integrations || [];
|
|
439
|
+
}
|
|
440
|
+
catch {
|
|
441
|
+
// File exists but couldn't be parsed
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
// Check for duplicate
|
|
445
|
+
const existingIdx = existingIntegrations.findIndex(i => i.code === integration.code);
|
|
446
|
+
if (existingIdx >= 0) {
|
|
447
|
+
const { action } = await inquirer_1.default.prompt([{
|
|
448
|
+
type: 'list',
|
|
449
|
+
name: 'action',
|
|
450
|
+
message: `Integration "${integration.code}" already exists. What would you like to do?`,
|
|
451
|
+
choices: [
|
|
452
|
+
{ name: 'Replace existing', value: 'replace' },
|
|
453
|
+
{ name: 'Rename new integration', value: 'rename' },
|
|
454
|
+
{ name: 'Cancel', value: 'cancel' }
|
|
455
|
+
]
|
|
456
|
+
}]);
|
|
457
|
+
if (action === 'cancel') {
|
|
458
|
+
throw new Error('Cancelled by user');
|
|
459
|
+
}
|
|
460
|
+
if (action === 'replace') {
|
|
461
|
+
existingIntegrations[existingIdx] = integration;
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
const { newCode } = await inquirer_1.default.prompt([{
|
|
465
|
+
type: 'input',
|
|
466
|
+
name: 'newCode',
|
|
467
|
+
message: 'New integration code:',
|
|
468
|
+
validate: (input) => /^[a-z][a-z0-9-]*$/.test(input) || 'Use kebab-case'
|
|
469
|
+
}]);
|
|
470
|
+
integration.code = newCode;
|
|
471
|
+
existingIntegrations.push(integration);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
existingIntegrations.push(integration);
|
|
476
|
+
}
|
|
477
|
+
// Save
|
|
478
|
+
const fileContent = {
|
|
479
|
+
integrations: existingIntegrations
|
|
480
|
+
};
|
|
481
|
+
fs.writeFileSync(integrationsPath, JSON.stringify(fileContent, null, 2) + '\n');
|
|
482
|
+
console.log(chalk_1.default.gray(` Saved to: ${integrationsPath}`));
|
|
483
|
+
}
|
|
484
|
+
//# sourceMappingURL=add-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-integration.js","sourceRoot":"","sources":["../../src/commands/add-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* add-param command - Add a parameter to the agent
|
|
3
|
+
*
|
|
4
|
+
* Interactive wizard to add a new parameter definition
|
|
5
|
+
* to parameters.aui.json.
|
|
6
|
+
*
|
|
7
|
+
* Usage: aui add-param
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Add a new parameter
|
|
11
|
+
*/
|
|
12
|
+
export declare function addParam(): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=add-param.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-param.d.ts","sourceRoot":"","sources":["../../src/commands/add-param.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA4F9C"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* add-param command - Add a parameter to the agent
|
|
4
|
+
*
|
|
5
|
+
* Interactive wizard to add a new parameter definition
|
|
6
|
+
* to parameters.aui.json.
|
|
7
|
+
*
|
|
8
|
+
* Usage: aui add-param
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
44
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
45
|
+
};
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
exports.addParam = addParam;
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
51
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
52
|
+
const config_1 = require("../config");
|
|
53
|
+
const utils_1 = require("../utils");
|
|
54
|
+
/**
|
|
55
|
+
* Add a new parameter
|
|
56
|
+
*/
|
|
57
|
+
async function addParam() {
|
|
58
|
+
console.log(chalk_1.default.blue('\n ┌─────────────────────────────────────────┐'));
|
|
59
|
+
console.log(chalk_1.default.blue(' │ Add Parameter │'));
|
|
60
|
+
console.log(chalk_1.default.blue(' └─────────────────────────────────────────┘\n'));
|
|
61
|
+
const projectRoot = (0, config_1.findProjectRoot)() || process.cwd();
|
|
62
|
+
const answers = await inquirer_1.default.prompt([
|
|
63
|
+
{
|
|
64
|
+
type: 'input',
|
|
65
|
+
name: 'name',
|
|
66
|
+
message: 'Parameter name (e.g. "Transaction Amount"):',
|
|
67
|
+
validate: (input) => input.length > 0 || 'Name is required'
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
type: 'input',
|
|
71
|
+
name: 'description',
|
|
72
|
+
message: 'Description (extraction guidance for the LLM):',
|
|
73
|
+
validate: (input) => input.length > 0 || 'Description is required'
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'list',
|
|
77
|
+
name: 'type',
|
|
78
|
+
message: 'Data type:',
|
|
79
|
+
choices: [
|
|
80
|
+
{ name: 'String - Text data', value: 'string' },
|
|
81
|
+
{ name: 'Numeric - Numbers', value: 'numeric' },
|
|
82
|
+
{ name: 'Boolean - True/False', value: 'boolean' },
|
|
83
|
+
{ name: 'Date - Date/Time', value: 'date' },
|
|
84
|
+
{ name: 'Object - Nested object', value: 'object' },
|
|
85
|
+
{ name: 'List of Objects - Array of objects', value: 'list_of_objects' },
|
|
86
|
+
{ name: 'Enum - Specific allowed values', value: 'enum' }
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: 'list',
|
|
91
|
+
name: 'usage',
|
|
92
|
+
message: 'Usage:',
|
|
93
|
+
choices: [
|
|
94
|
+
{ name: 'All - Both input and output', value: 'all' },
|
|
95
|
+
{ name: 'Input - Collected from user', value: 'input' },
|
|
96
|
+
{ name: 'Output - Returned from integrations', value: 'output' }
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
]);
|
|
100
|
+
const code = (0, utils_1.toKebabCase)(answers.name);
|
|
101
|
+
// For enum type, collect allowed values
|
|
102
|
+
let values;
|
|
103
|
+
if (answers.type === 'enum') {
|
|
104
|
+
const { valuesStr } = await inquirer_1.default.prompt([{
|
|
105
|
+
type: 'input',
|
|
106
|
+
name: 'valuesStr',
|
|
107
|
+
message: 'Allowed values (comma-separated):',
|
|
108
|
+
validate: (input) => input.length > 0 || 'At least one value is required'
|
|
109
|
+
}]);
|
|
110
|
+
values = valuesStr.split(',').map((v) => v.trim()).filter(Boolean);
|
|
111
|
+
}
|
|
112
|
+
const parameter = {
|
|
113
|
+
code,
|
|
114
|
+
description: answers.description,
|
|
115
|
+
type: answers.type,
|
|
116
|
+
usage: answers.usage,
|
|
117
|
+
...(values ? { values } : {})
|
|
118
|
+
};
|
|
119
|
+
// Load and update parameters file
|
|
120
|
+
const paramsPath = path.join(projectRoot, 'parameters.aui.json');
|
|
121
|
+
let parameters = [];
|
|
122
|
+
if (fs.existsSync(paramsPath)) {
|
|
123
|
+
try {
|
|
124
|
+
const content = JSON.parse(fs.readFileSync(paramsPath, 'utf-8'));
|
|
125
|
+
parameters = content.parameters || [];
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// Start fresh
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Check for duplicate
|
|
132
|
+
if (parameters.some(p => p.code === code)) {
|
|
133
|
+
console.log(chalk_1.default.yellow(`\n Parameter "${code}" already exists.\n`));
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
parameters.push(parameter);
|
|
137
|
+
fs.writeFileSync(paramsPath, JSON.stringify({ parameters }, null, 2) + '\n');
|
|
138
|
+
console.log(chalk_1.default.green(`\n ✓ Parameter "${code}" added to parameters.aui.json\n`));
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=add-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-param.js","sourceRoot":"","sources":["../../src/commands/add-param.ts"],"names":[],"mappings":"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"}
|