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.
Files changed (130) hide show
  1. package/README.md +311 -0
  2. package/bin/aui.js +2 -0
  3. package/dist/api-client/index.d.ts +208 -0
  4. package/dist/api-client/index.d.ts.map +1 -0
  5. package/dist/api-client/index.js +219 -0
  6. package/dist/api-client/index.js.map +1 -0
  7. package/dist/commands/add-integration.d.ts +26 -0
  8. package/dist/commands/add-integration.d.ts.map +1 -0
  9. package/dist/commands/add-integration.js +484 -0
  10. package/dist/commands/add-integration.js.map +1 -0
  11. package/dist/commands/add-param.d.ts +13 -0
  12. package/dist/commands/add-param.d.ts.map +1 -0
  13. package/dist/commands/add-param.js +140 -0
  14. package/dist/commands/add-param.js.map +1 -0
  15. package/dist/commands/add-tool.d.ts +17 -0
  16. package/dist/commands/add-tool.d.ts.map +1 -0
  17. package/dist/commands/add-tool.js +239 -0
  18. package/dist/commands/add-tool.js.map +1 -0
  19. package/dist/commands/connect.d.ts +20 -0
  20. package/dist/commands/connect.d.ts.map +1 -0
  21. package/dist/commands/connect.js +203 -0
  22. package/dist/commands/connect.js.map +1 -0
  23. package/dist/commands/create-agent.d.ts +25 -0
  24. package/dist/commands/create-agent.d.ts.map +1 -0
  25. package/dist/commands/create-agent.js +199 -0
  26. package/dist/commands/create-agent.js.map +1 -0
  27. package/dist/commands/diff.d.ts +17 -0
  28. package/dist/commands/diff.d.ts.map +1 -0
  29. package/dist/commands/diff.js +261 -0
  30. package/dist/commands/diff.js.map +1 -0
  31. package/dist/commands/import-agent.d.ts +21 -0
  32. package/dist/commands/import-agent.d.ts.map +1 -0
  33. package/dist/commands/import-agent.js +274 -0
  34. package/dist/commands/import-agent.js.map +1 -0
  35. package/dist/commands/index.d.ts +15 -0
  36. package/dist/commands/index.d.ts.map +1 -0
  37. package/dist/commands/index.js +27 -0
  38. package/dist/commands/index.js.map +1 -0
  39. package/dist/commands/init.d.ts +18 -0
  40. package/dist/commands/init.d.ts.map +1 -0
  41. package/dist/commands/init.js +173 -0
  42. package/dist/commands/init.js.map +1 -0
  43. package/dist/commands/list-agents.d.ts +12 -0
  44. package/dist/commands/list-agents.d.ts.map +1 -0
  45. package/dist/commands/list-agents.js +68 -0
  46. package/dist/commands/list-agents.js.map +1 -0
  47. package/dist/commands/login.d.ts +26 -0
  48. package/dist/commands/login.d.ts.map +1 -0
  49. package/dist/commands/login.js +200 -0
  50. package/dist/commands/login.js.map +1 -0
  51. package/dist/commands/pull.d.ts +17 -0
  52. package/dist/commands/pull.d.ts.map +1 -0
  53. package/dist/commands/pull.js +65 -0
  54. package/dist/commands/pull.js.map +1 -0
  55. package/dist/commands/push.d.ts +24 -0
  56. package/dist/commands/push.d.ts.map +1 -0
  57. package/dist/commands/push.js +160 -0
  58. package/dist/commands/push.js.map +1 -0
  59. package/dist/commands/status.d.ts +10 -0
  60. package/dist/commands/status.d.ts.map +1 -0
  61. package/dist/commands/status.js +155 -0
  62. package/dist/commands/status.js.map +1 -0
  63. package/dist/commands/sync.d.ts +19 -0
  64. package/dist/commands/sync.d.ts.map +1 -0
  65. package/dist/commands/sync.js +114 -0
  66. package/dist/commands/sync.js.map +1 -0
  67. package/dist/commands/validate.d.ts +20 -0
  68. package/dist/commands/validate.d.ts.map +1 -0
  69. package/dist/commands/validate.js +199 -0
  70. package/dist/commands/validate.js.map +1 -0
  71. package/dist/config/index.d.ts +102 -0
  72. package/dist/config/index.d.ts.map +1 -0
  73. package/dist/config/index.js +205 -0
  74. package/dist/config/index.js.map +1 -0
  75. package/dist/index.d.ts +18 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +163 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/mock-data/entities.aui.json +38 -0
  80. package/dist/mock-data/general_settings.aui.json +11 -0
  81. package/dist/mock-data/integrations.aui.json +806 -0
  82. package/dist/mock-data/parameters.aui.json +586 -0
  83. package/dist/mock-data/rules.aui.json +506 -0
  84. package/dist/mock-data/tools/conversation_forwarding.aui.json +32 -0
  85. package/dist/mock-data/tools/create_fraud_dispute.aui.json +112 -0
  86. package/dist/mock-data/tools/generative_ai.aui.json +29 -0
  87. package/dist/mock-data/tools/policies.aui.json +45 -0
  88. package/dist/mock-data/tools/transaction_and_card_details.aui.json +87 -0
  89. package/dist/mock-data/tools/transaction_search.aui.json +76 -0
  90. package/dist/mock-data/tools/update_credit_card_status.aui.json +45 -0
  91. package/dist/mock-data/tools/user_details.aui.json +57 -0
  92. package/dist/mock-data/tools/web_search.aui.json +54 -0
  93. package/dist/schema/aui.schema.json +418 -0
  94. package/dist/types/agent.d.ts +91 -0
  95. package/dist/types/agent.d.ts.map +1 -0
  96. package/dist/types/agent.js +9 -0
  97. package/dist/types/agent.js.map +1 -0
  98. package/dist/types/base.d.ts +15 -0
  99. package/dist/types/base.d.ts.map +1 -0
  100. package/dist/types/base.js +7 -0
  101. package/dist/types/base.js.map +1 -0
  102. package/dist/types/entity.d.ts +25 -0
  103. package/dist/types/entity.d.ts.map +1 -0
  104. package/dist/types/entity.js +9 -0
  105. package/dist/types/entity.js.map +1 -0
  106. package/dist/types/index.d.ts +11 -0
  107. package/dist/types/index.d.ts.map +1 -0
  108. package/dist/types/index.js +27 -0
  109. package/dist/types/index.js.map +1 -0
  110. package/dist/types/integration.d.ts +151 -0
  111. package/dist/types/integration.d.ts.map +1 -0
  112. package/dist/types/integration.js +9 -0
  113. package/dist/types/integration.js.map +1 -0
  114. package/dist/types/parameter.d.ts +38 -0
  115. package/dist/types/parameter.d.ts.map +1 -0
  116. package/dist/types/parameter.js +10 -0
  117. package/dist/types/parameter.js.map +1 -0
  118. package/dist/types/rule.d.ts +125 -0
  119. package/dist/types/rule.d.ts.map +1 -0
  120. package/dist/types/rule.js +10 -0
  121. package/dist/types/rule.js.map +1 -0
  122. package/dist/types/tool.d.ts +95 -0
  123. package/dist/types/tool.d.ts.map +1 -0
  124. package/dist/types/tool.js +12 -0
  125. package/dist/types/tool.js.map +1 -0
  126. package/dist/utils/index.d.ts +47 -0
  127. package/dist/utils/index.d.ts.map +1 -0
  128. package/dist/utils/index.js +267 -0
  129. package/dist/utils/index.js.map +1 -0
  130. 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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"}