@newpeak/barista-cli 0.1.209 → 0.1.210

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 (61) hide show
  1. package/dist/commands/liberica/caturra/clients/approve.d.ts +3 -0
  2. package/dist/commands/liberica/caturra/clients/approve.d.ts.map +1 -0
  3. package/dist/commands/liberica/caturra/clients/approve.js +45 -0
  4. package/dist/commands/liberica/caturra/clients/approve.js.map +1 -0
  5. package/dist/commands/liberica/caturra/clients/index.d.ts +3 -0
  6. package/dist/commands/liberica/caturra/clients/index.d.ts.map +1 -0
  7. package/dist/commands/liberica/caturra/clients/index.js +15 -0
  8. package/dist/commands/liberica/caturra/clients/index.js.map +1 -0
  9. package/dist/commands/liberica/caturra/clients/list.d.ts +3 -0
  10. package/dist/commands/liberica/caturra/clients/list.d.ts.map +1 -0
  11. package/dist/commands/liberica/caturra/clients/list.js +75 -0
  12. package/dist/commands/liberica/caturra/clients/list.js.map +1 -0
  13. package/dist/commands/liberica/caturra/clients/register.d.ts +3 -0
  14. package/dist/commands/liberica/caturra/clients/register.d.ts.map +1 -0
  15. package/dist/commands/liberica/caturra/clients/register.js +57 -0
  16. package/dist/commands/liberica/caturra/clients/register.js.map +1 -0
  17. package/dist/commands/liberica/caturra/clients/revoke.d.ts +3 -0
  18. package/dist/commands/liberica/caturra/clients/revoke.d.ts.map +1 -0
  19. package/dist/commands/liberica/caturra/clients/revoke.js +44 -0
  20. package/dist/commands/liberica/caturra/clients/revoke.js.map +1 -0
  21. package/dist/commands/liberica/caturra/index.d.ts +3 -0
  22. package/dist/commands/liberica/caturra/index.d.ts.map +1 -0
  23. package/dist/commands/liberica/caturra/index.js +23 -0
  24. package/dist/commands/liberica/caturra/index.js.map +1 -0
  25. package/dist/commands/liberica/caturra/metadata/columns.d.ts +3 -0
  26. package/dist/commands/liberica/caturra/metadata/columns.d.ts.map +1 -0
  27. package/dist/commands/liberica/caturra/metadata/columns.js +68 -0
  28. package/dist/commands/liberica/caturra/metadata/columns.js.map +1 -0
  29. package/dist/commands/liberica/caturra/metadata/database-info.d.ts +3 -0
  30. package/dist/commands/liberica/caturra/metadata/database-info.d.ts.map +1 -0
  31. package/dist/commands/liberica/caturra/metadata/database-info.js +44 -0
  32. package/dist/commands/liberica/caturra/metadata/database-info.js.map +1 -0
  33. package/dist/commands/liberica/caturra/metadata/index.d.ts +3 -0
  34. package/dist/commands/liberica/caturra/metadata/index.d.ts.map +1 -0
  35. package/dist/commands/liberica/caturra/metadata/index.js +15 -0
  36. package/dist/commands/liberica/caturra/metadata/index.js.map +1 -0
  37. package/dist/commands/liberica/caturra/metadata/query.d.ts +3 -0
  38. package/dist/commands/liberica/caturra/metadata/query.d.ts.map +1 -0
  39. package/dist/commands/liberica/caturra/metadata/query.js +63 -0
  40. package/dist/commands/liberica/caturra/metadata/query.js.map +1 -0
  41. package/dist/commands/liberica/caturra/metadata/tables.d.ts +3 -0
  42. package/dist/commands/liberica/caturra/metadata/tables.d.ts.map +1 -0
  43. package/dist/commands/liberica/caturra/metadata/tables.js +51 -0
  44. package/dist/commands/liberica/caturra/metadata/tables.js.map +1 -0
  45. package/dist/commands/liberica/index.d.ts.map +1 -1
  46. package/dist/commands/liberica/index.js +3 -0
  47. package/dist/commands/liberica/index.js.map +1 -1
  48. package/dist/commands/liberica/outsourcing-orders/create.d.ts.map +1 -1
  49. package/dist/commands/liberica/outsourcing-orders/create.js +42 -47
  50. package/dist/commands/liberica/outsourcing-orders/create.js.map +1 -1
  51. package/dist/core/api/client.d.ts +34 -0
  52. package/dist/core/api/client.d.ts.map +1 -1
  53. package/dist/core/api/client.js +159 -0
  54. package/dist/core/api/client.js.map +1 -1
  55. package/dist/types/caturra.d.ts +93 -0
  56. package/dist/types/caturra.d.ts.map +1 -0
  57. package/dist/types/caturra.js +6 -0
  58. package/dist/types/caturra.js.map +1 -0
  59. package/package.json +1 -1
  60. package/skills/barista-cli/data/commands.json +49 -1
  61. package/skills/barista-cli/data/commands.yaml +33 -1
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCaturraClientsApproveCommand(): Command;
3
+ //# sourceMappingURL=approve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approve.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/clients/approve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,kCAAkC,IAAI,OAAO,CA4C5D"}
@@ -0,0 +1,45 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { configManager } from '../../../../core/config/manager.js';
4
+ import { apiClient } from '../../../../core/api/client.js';
5
+ import { shouldUseJson } from '../../../../utils/output.js';
6
+ export function createCaturraClientsApproveCommand() {
7
+ const command = new Command('approve');
8
+ command
9
+ .description('Approve a pending Caturra client')
10
+ .argument('<clientId>', 'Client ID or UUID to approve')
11
+ .option('--remark <remark>', 'Approval remark')
12
+ .option('--dry-run', 'Preview without executing')
13
+ .option('--json', 'Output as JSON')
14
+ .action(async (clientId, options) => {
15
+ const context = configManager.getCurrentContext();
16
+ const environment = options.env || context.environment;
17
+ const tenant = options.tenant || context.tenant;
18
+ const outputJson = shouldUseJson(options);
19
+ if (options.dryRun) {
20
+ console.log(chalk.bold('\nšŸ” Dry-run: Approve Caturra Client\n'));
21
+ console.log(chalk.gray(` Client ID: ${clientId}`));
22
+ console.log(chalk.gray(` Remark: ${options.remark || '-'}`));
23
+ console.log();
24
+ return;
25
+ }
26
+ const response = await apiClient.approveCaturraClient(environment, tenant, {
27
+ clientId,
28
+ approverRemark: options.remark,
29
+ });
30
+ if (!response.success) {
31
+ console.error(chalk.red(`\nāœ— Approval failed: ${response.error?.message || 'Unknown error'}`));
32
+ process.exit(1);
33
+ }
34
+ if (outputJson) {
35
+ console.log(JSON.stringify({ success: true, data: response.data }, null, 2));
36
+ return;
37
+ }
38
+ console.log(chalk.bold('\nāœ… Client approved successfully!\n'));
39
+ console.log(chalk.green(' New credentials have been generated.'));
40
+ console.log(chalk.gray(' The client will receive them via polling.'));
41
+ console.log();
42
+ });
43
+ return command;
44
+ }
45
+ //# sourceMappingURL=approve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approve.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/clients/approve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,MAAM,UAAU,kCAAkC;IAChD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO;SACJ,WAAW,CAAC,kCAAkC,CAAC;SAC/C,QAAQ,CAAC,YAAY,EAAE,8BAA8B,CAAC;SACtD,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;SAC9C,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;SAChD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAAO,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAClD,MAAM,WAAW,GAAI,OAAO,CAAC,GAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE;YACzE,QAAQ;YACR,cAAc,EAAE,OAAO,CAAC,MAA4B;SACrD,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC;YAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCaturraClientsCommand(): Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/clients/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,2BAA2B,IAAI,OAAO,CAUrD"}
@@ -0,0 +1,15 @@
1
+ import { Command } from 'commander';
2
+ import { createCaturraClientsListCommand } from './list.js';
3
+ import { createCaturraClientsRegisterCommand } from './register.js';
4
+ import { createCaturraClientsApproveCommand } from './approve.js';
5
+ import { createCaturraClientsRevokeCommand } from './revoke.js';
6
+ export function createCaturraClientsCommand() {
7
+ const clientsCommand = new Command('clients');
8
+ clientsCommand.description('Manage Caturra clients');
9
+ clientsCommand.addCommand(createCaturraClientsListCommand());
10
+ clientsCommand.addCommand(createCaturraClientsRegisterCommand());
11
+ clientsCommand.addCommand(createCaturraClientsApproveCommand());
12
+ clientsCommand.addCommand(createCaturraClientsRevokeCommand());
13
+ return clientsCommand;
14
+ }
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/clients/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,mCAAmC,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,kCAAkC,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,UAAU,2BAA2B;IACzC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,cAAc,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAErD,cAAc,CAAC,UAAU,CAAC,+BAA+B,EAAE,CAAC,CAAC;IAC7D,cAAc,CAAC,UAAU,CAAC,mCAAmC,EAAE,CAAC,CAAC;IACjE,cAAc,CAAC,UAAU,CAAC,kCAAkC,EAAE,CAAC,CAAC;IAChE,cAAc,CAAC,UAAU,CAAC,iCAAiC,EAAE,CAAC,CAAC;IAE/D,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCaturraClientsListCommand(): Command;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/clients/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,+BAA+B,IAAI,OAAO,CAkFzD"}
@@ -0,0 +1,75 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import Table from 'cli-table3';
4
+ import { configManager } from '../../../../core/config/manager.js';
5
+ import { apiClient } from '../../../../core/api/client.js';
6
+ import { shouldUseJson } from '../../../../utils/output.js';
7
+ export function createCaturraClientsListCommand() {
8
+ const command = new Command('list');
9
+ command
10
+ .description('List Caturra clients')
11
+ .option('-p, --page <number>', 'Page number', '1')
12
+ .option('-s, --size <number>', 'Page size', '20')
13
+ .option('--status <status>', 'Filter by status (PENDING/APPROVED/REVOKED)')
14
+ .option('--search <text>', 'Search text')
15
+ .option('--json', 'Output as JSON')
16
+ .action(async (options) => {
17
+ const context = configManager.getCurrentContext();
18
+ const environment = options.env || context.environment;
19
+ const tenant = options.tenant || context.tenant;
20
+ const outputJson = shouldUseJson(options);
21
+ const response = await apiClient.listCaturraClients(environment, tenant, {
22
+ pageNo: parseInt(options.page, 10),
23
+ pageSize: parseInt(options.size, 10),
24
+ status: options.status,
25
+ searchText: options.search,
26
+ });
27
+ if (!response.success) {
28
+ console.error(chalk.red(`\nāœ— Failed to list clients: ${response.error?.message || 'Unknown error'}`));
29
+ process.exit(1);
30
+ }
31
+ const data = response.data;
32
+ if (outputJson) {
33
+ console.log(JSON.stringify({ success: true, data }, null, 2));
34
+ return;
35
+ }
36
+ const records = data?.rows || [];
37
+ console.log(chalk.bold('\nā˜• Caturra Clients\n'));
38
+ if (records.length === 0) {
39
+ console.log(chalk.gray(' No clients found\n'));
40
+ return;
41
+ }
42
+ const table = new Table({
43
+ head: [
44
+ chalk.bold('ID'),
45
+ chalk.bold('Name'),
46
+ chalk.bold('Machine ID'),
47
+ chalk.bold('Status'),
48
+ chalk.bold('API Key'),
49
+ chalk.bold('Email'),
50
+ chalk.bold('Created'),
51
+ ],
52
+ colWidths: [8, 15, 18, 10, 38, 20, 12],
53
+ style: { head: [], border: [] },
54
+ });
55
+ for (const client of records) {
56
+ const statusColor = client.status === 'APPROVED' ? chalk.green :
57
+ client.status === 'PENDING' ? chalk.yellow :
58
+ chalk.red;
59
+ table.push([
60
+ String(client.clientId ?? '-').substring(0, 8),
61
+ String(client.clientName ?? '-').substring(0, 14),
62
+ String(client.machineId ?? '-').substring(0, 17),
63
+ statusColor(String(client.status ?? '-')),
64
+ String(client.apiKey ?? '-').substring(0, 37),
65
+ String(client.contactEmail ?? '-').substring(0, 19),
66
+ String(client.createTime ?? '-').substring(0, 11),
67
+ ]);
68
+ }
69
+ console.log(table.toString());
70
+ console.log(chalk.gray(`\n Total: ${data?.totalRows ?? 0} | Page: ${data?.pageNo ?? 1} / ${Math.ceil((data?.totalRows ?? 0) / (data?.pageSize ?? 20)) || 1} | Size: ${data?.pageSize ?? 20}`));
71
+ console.log();
72
+ });
73
+ return command;
74
+ }
75
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/clients/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,MAAM,UAAU,+BAA+B;IAC7C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO;SACJ,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,qBAAqB,EAAE,aAAa,EAAE,GAAG,CAAC;SACjD,MAAM,CAAC,qBAAqB,EAAE,WAAW,EAAE,IAAI,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAClD,MAAM,WAAW,GAAI,OAAO,CAAC,GAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE;YACvE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAc,EAAE,EAAE,CAAC;YAC5C,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAc,EAAE,EAAE,CAAC;YAC9C,MAAM,EAAE,OAAO,CAAC,MAA4B;YAC5C,UAAU,EAAE,OAAO,CAAC,MAA4B;SACjD,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC;YACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAA4G,CAAC;QAEnI,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QAEjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAEjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,IAAI,EAAE;gBACJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;aACtB;YACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;YACtC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SAChC,CAAC,CAAC;QAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,WAAW,GACf,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC5C,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC5C,KAAK,CAAC,GAAG,CAAC;YAEZ,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBACjD,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBAChD,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;gBACzC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;aAClD,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CACpB,cAAc,IAAI,EAAE,SAAS,IAAI,CAAC,YAAY,IAAI,EAAE,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,CACvK,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCaturraClientsRegisterCommand(): Command;
3
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/clients/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,mCAAmC,IAAI,OAAO,CAyD7D"}
@@ -0,0 +1,57 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { configManager } from '../../../../core/config/manager.js';
4
+ import { apiClient } from '../../../../core/api/client.js';
5
+ import { shouldUseJson } from '../../../../utils/output.js';
6
+ export function createCaturraClientsRegisterCommand() {
7
+ const command = new Command('register');
8
+ command
9
+ .description('Register a new Caturra client')
10
+ .requiredOption('-n, --name <name>', 'Client name')
11
+ .option('-d, --description <desc>', 'Client description')
12
+ .option('-e, --email <email>', 'Contact email')
13
+ .option('--dry-run', 'Preview without executing')
14
+ .option('--json', 'Output as JSON')
15
+ .action(async (options) => {
16
+ const context = configManager.getCurrentContext();
17
+ const environment = options.env || context.environment;
18
+ const tenant = options.tenant || context.tenant;
19
+ const outputJson = shouldUseJson(options);
20
+ if (options.dryRun) {
21
+ console.log(chalk.bold('\nšŸ” Dry-run: Register Caturra Client\n'));
22
+ console.log(chalk.gray(` Name: ${options.name}`));
23
+ console.log(chalk.gray(` Description: ${options.description || '-'}`));
24
+ console.log(chalk.gray(` Email: ${options.email || '-'}`));
25
+ console.log(chalk.gray(` Tenant: ${tenant}`));
26
+ console.log();
27
+ return;
28
+ }
29
+ const response = await apiClient.registerCaturraClient(environment, tenant, {
30
+ clientName: options.name,
31
+ clientDescription: options.description,
32
+ contactEmail: options.email,
33
+ });
34
+ if (!response.success) {
35
+ console.error(chalk.red(`\nāœ— Registration failed: ${response.error?.message || 'Unknown error'}`));
36
+ process.exit(1);
37
+ }
38
+ const client = response.data;
39
+ if (outputJson) {
40
+ console.log(JSON.stringify({ success: true, data: client }, null, 2));
41
+ return;
42
+ }
43
+ console.log(chalk.bold('\nāœ… Client registered successfully!\n'));
44
+ if (client) {
45
+ console.log(chalk.green(` UUID: ${client.clientUuid}`));
46
+ console.log(chalk.green(` Name: ${client.clientName}`));
47
+ console.log(chalk.green(` API Key: ${client.apiKey}`));
48
+ console.log(chalk.yellow(` Status: ${client.status} (requires approval)`));
49
+ console.log();
50
+ console.log(chalk.gray(' The client will receive credentials via polling after approval.'));
51
+ console.log(chalk.gray(' Use "barista liberica caturra clients approve" to approve.'));
52
+ console.log();
53
+ }
54
+ });
55
+ return command;
56
+ }
57
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/clients/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCaturraClientsRevokeCommand(): Command;
3
+ //# sourceMappingURL=revoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revoke.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/clients/revoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,iCAAiC,IAAI,OAAO,CA2C3D"}
@@ -0,0 +1,44 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { configManager } from '../../../../core/config/manager.js';
4
+ import { apiClient } from '../../../../core/api/client.js';
5
+ import { shouldUseJson } from '../../../../utils/output.js';
6
+ export function createCaturraClientsRevokeCommand() {
7
+ const command = new Command('revoke');
8
+ command
9
+ .description('Revoke an approved Caturra client')
10
+ .argument('<clientId>', 'Client ID or UUID to revoke')
11
+ .option('-r, --reason <reason>', 'Revocation reason')
12
+ .option('--dry-run', 'Preview without executing')
13
+ .option('--json', 'Output as JSON')
14
+ .action(async (clientId, options) => {
15
+ const context = configManager.getCurrentContext();
16
+ const environment = options.env || context.environment;
17
+ const tenant = options.tenant || context.tenant;
18
+ const outputJson = shouldUseJson(options);
19
+ if (options.dryRun) {
20
+ console.log(chalk.bold('\nšŸ” Dry-run: Revoke Caturra Client\n'));
21
+ console.log(chalk.gray(` Client ID: ${clientId}`));
22
+ console.log(chalk.gray(` Reason: ${options.reason || '-'}`));
23
+ console.log();
24
+ return;
25
+ }
26
+ const response = await apiClient.revokeCaturraClient(environment, tenant, {
27
+ clientId,
28
+ reason: options.reason,
29
+ });
30
+ if (!response.success) {
31
+ console.error(chalk.red(`\nāœ— Revoke failed: ${response.error?.message || 'Unknown error'}`));
32
+ process.exit(1);
33
+ }
34
+ if (outputJson) {
35
+ console.log(JSON.stringify({ success: true, data: response.data }, null, 2));
36
+ return;
37
+ }
38
+ console.log(chalk.bold('\nāœ… Client revoked successfully!\n'));
39
+ console.log(chalk.yellow(' The client can no longer connect to the server.'));
40
+ console.log();
41
+ });
42
+ return command;
43
+ }
44
+ //# sourceMappingURL=revoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revoke.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/clients/revoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,MAAM,UAAU,iCAAiC;IAC/C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO;SACJ,WAAW,CAAC,mCAAmC,CAAC;SAChD,QAAQ,CAAC,YAAY,EAAE,6BAA6B,CAAC;SACrD,MAAM,CAAC,uBAAuB,EAAE,mBAAmB,CAAC;SACpD,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;SAChD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAAO,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAClD,MAAM,WAAW,GAAI,OAAO,CAAC,GAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE;YACxE,QAAQ;YACR,MAAM,EAAE,OAAO,CAAC,MAA4B;SAC7C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC;YAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCaturraCommand(): Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/liberica/caturra/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,oBAAoB,IAAI,OAAO,CAqB9C"}
@@ -0,0 +1,23 @@
1
+ import { Command } from 'commander';
2
+ import { createCaturraMetadataCommand } from './metadata/index.js';
3
+ import { createCaturraClientsCommand } from './clients/index.js';
4
+ export function createCaturraCommand() {
5
+ const caturraCommand = new Command('caturra');
6
+ caturraCommand.description('Manage Caturra clients and query database metadata');
7
+ caturraCommand.addCommand(createCaturraMetadataCommand());
8
+ caturraCommand.addCommand(createCaturraClientsCommand());
9
+ caturraCommand.action(() => {
10
+ console.log(' Use "barista liberica caturra metadata <command>" for database metadata queries');
11
+ console.log(' Use "barista liberica caturra clients <command>" for client management');
12
+ console.log();
13
+ console.log(' Examples:');
14
+ console.log(' barista liberica caturra metadata tables');
15
+ console.log(' barista liberica caturra metadata columns --table <tableName>');
16
+ console.log(' barista liberica caturra metadata query --client <uuid> --sql "SELECT * FROM ..."');
17
+ console.log(' barista liberica caturra clients list');
18
+ console.log(' barista liberica caturra clients register --name "MyApp"');
19
+ console.log();
20
+ });
21
+ return caturraCommand;
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/liberica/caturra/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,UAAU,oBAAoB;IAClC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,cAAc,CAAC,WAAW,CAAC,oDAAoD,CAAC,CAAC;IAEjF,cAAc,CAAC,UAAU,CAAC,4BAA4B,EAAE,CAAC,CAAC;IAC1D,cAAc,CAAC,UAAU,CAAC,2BAA2B,EAAE,CAAC,CAAC;IAEzD,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;QACrG,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCaturraMetadataColumnsCommand(): Command;
3
+ //# sourceMappingURL=columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/metadata/columns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,mCAAmC,IAAI,OAAO,CAgF7D"}
@@ -0,0 +1,68 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import Table from 'cli-table3';
4
+ import { configManager } from '../../../../core/config/manager.js';
5
+ import { apiClient } from '../../../../core/api/client.js';
6
+ import { shouldUseJson } from '../../../../utils/output.js';
7
+ export function createCaturraMetadataColumnsCommand() {
8
+ const command = new Command('columns');
9
+ command
10
+ .description('Get columns for a specific table')
11
+ .requiredOption('-t, --table <tableName>', 'Table name')
12
+ .option('-c, --client <uuid>', 'Caturra client UUID for real-time query')
13
+ .option('--json', 'Output as JSON')
14
+ .action(async (options) => {
15
+ const context = configManager.getCurrentContext();
16
+ const environment = options.env || context.environment;
17
+ const tenant = options.tenant || context.tenant;
18
+ const outputJson = shouldUseJson(options);
19
+ const response = await apiClient.getCaturraColumns(environment, tenant, {
20
+ tableName: options.table,
21
+ clientId: options.client,
22
+ });
23
+ if (!response.success) {
24
+ console.error(chalk.red(`\nāœ— Failed to get columns: ${response.error?.message || 'Unknown error'}`));
25
+ process.exit(1);
26
+ }
27
+ const columns = response.data || [];
28
+ if (outputJson) {
29
+ console.log(JSON.stringify({ success: true, tableName: options.table, data: columns }, null, 2));
30
+ return;
31
+ }
32
+ console.log(chalk.bold(`\nšŸ“‹ Columns: ${options.table}\n`));
33
+ if (columns.length === 0) {
34
+ console.log(chalk.gray(' No columns found\n'));
35
+ return;
36
+ }
37
+ const table = new Table({
38
+ head: [
39
+ chalk.bold('#'),
40
+ chalk.bold('Column'),
41
+ chalk.bold('Type'),
42
+ chalk.bold('Size'),
43
+ chalk.bold('Nullable'),
44
+ chalk.bold('PK'),
45
+ chalk.bold('Auto'),
46
+ chalk.bold('Default'),
47
+ ],
48
+ colWidths: [4, 22, 12, 8, 8, 4, 5, 12],
49
+ style: { head: [], border: [] },
50
+ });
51
+ columns.forEach((col, i) => {
52
+ table.push([
53
+ String(col.ordinalPosition ?? i + 1),
54
+ col.columnName,
55
+ col.dataType,
56
+ col.columnSize ?? '-',
57
+ col.nullable ? 'YES' : 'NO',
58
+ col.primaryKey ? 'ā˜…' : '',
59
+ col.autoIncrement ? 'āœ“' : '',
60
+ col.defaultValue ?? '-',
61
+ ]);
62
+ });
63
+ console.log(table.toString());
64
+ console.log(chalk.gray(`\n Total: ${columns.length} columns\n`));
65
+ });
66
+ return command;
67
+ }
68
+ //# sourceMappingURL=columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/metadata/columns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCaturraMetadataDatabaseInfoCommand(): Command;
3
+ //# sourceMappingURL=database-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-info.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/metadata/database-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,wCAAwC,IAAI,OAAO,CA8DlE"}
@@ -0,0 +1,44 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import Table from 'cli-table3';
4
+ import { configManager } from '../../../../core/config/manager.js';
5
+ import { apiClient } from '../../../../core/api/client.js';
6
+ import { shouldUseJson } from '../../../../utils/output.js';
7
+ export function createCaturraMetadataDatabaseInfoCommand() {
8
+ const command = new Command('database-info');
9
+ command
10
+ .description('Get database information (version, charset, etc.)')
11
+ .option('-c, --client <uuid>', 'Caturra client UUID for real-time query')
12
+ .option('--json', 'Output as JSON')
13
+ .action(async (options) => {
14
+ const context = configManager.getCurrentContext();
15
+ const environment = options.env || context.environment;
16
+ const tenant = options.tenant || context.tenant;
17
+ const outputJson = shouldUseJson(options);
18
+ const response = await apiClient.getCaturraDatabaseInfo(environment, tenant, {
19
+ clientId: options.client,
20
+ });
21
+ if (!response.success) {
22
+ console.error(chalk.red(`\nāœ— Failed to get database info: ${response.error?.message || 'Unknown error'}`));
23
+ process.exit(1);
24
+ }
25
+ const info = response.data;
26
+ if (outputJson) {
27
+ console.log(JSON.stringify({ success: true, data: info }, null, 2));
28
+ return;
29
+ }
30
+ if (!info) {
31
+ console.log(chalk.gray(' No database info available\n'));
32
+ return;
33
+ }
34
+ console.log(chalk.bold('\nšŸ—„ļø Database Information\n'));
35
+ const table = new Table({
36
+ style: { head: [], border: [] },
37
+ });
38
+ table.push({ 'Database Version': info.databaseVersion }, { 'Charset': info.charset }, { 'Collation': info.collation }, { 'Metadata Version': String(info.metadataVersion) }, { 'Last Updated': info.lastUpdated ? new Date(info.lastUpdated).toISOString() : 'N/A' }, { 'Tables': String(info.tableCount) }, { 'Columns': String(info.columnCount) });
39
+ console.log(table.toString());
40
+ console.log();
41
+ });
42
+ return command;
43
+ }
44
+ //# sourceMappingURL=database-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-info.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/metadata/database-info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCaturraMetadataCommand(): Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,4BAA4B,IAAI,OAAO,CAUtD"}
@@ -0,0 +1,15 @@
1
+ import { Command } from 'commander';
2
+ import { createCaturraMetadataTablesCommand } from './tables.js';
3
+ import { createCaturraMetadataColumnsCommand } from './columns.js';
4
+ import { createCaturraMetadataQueryCommand } from './query.js';
5
+ import { createCaturraMetadataDatabaseInfoCommand } from './database-info.js';
6
+ export function createCaturraMetadataCommand() {
7
+ const metadataCommand = new Command('metadata');
8
+ metadataCommand.description('Query database metadata (tables, columns, etc.)');
9
+ metadataCommand.addCommand(createCaturraMetadataTablesCommand());
10
+ metadataCommand.addCommand(createCaturraMetadataColumnsCommand());
11
+ metadataCommand.addCommand(createCaturraMetadataQueryCommand());
12
+ metadataCommand.addCommand(createCaturraMetadataDatabaseInfoCommand());
13
+ return metadataCommand;
14
+ }
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,mCAAmC,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,wCAAwC,EAAE,MAAM,oBAAoB,CAAC;AAE9E,MAAM,UAAU,4BAA4B;IAC1C,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,eAAe,CAAC,WAAW,CAAC,iDAAiD,CAAC,CAAC;IAE/E,eAAe,CAAC,UAAU,CAAC,kCAAkC,EAAE,CAAC,CAAC;IACjE,eAAe,CAAC,UAAU,CAAC,mCAAmC,EAAE,CAAC,CAAC;IAClE,eAAe,CAAC,UAAU,CAAC,iCAAiC,EAAE,CAAC,CAAC;IAChE,eAAe,CAAC,UAAU,CAAC,wCAAwC,EAAE,CAAC,CAAC;IAEvE,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCaturraMetadataQueryCommand(): Command;
3
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/metadata/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,iCAAiC,IAAI,OAAO,CAkE3D"}
@@ -0,0 +1,63 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import Table from 'cli-table3';
4
+ import { configManager } from '../../../../core/config/manager.js';
5
+ import { apiClient } from '../../../../core/api/client.js';
6
+ import { shouldUseJson } from '../../../../utils/output.js';
7
+ export function createCaturraMetadataQueryCommand() {
8
+ const command = new Command('query');
9
+ command
10
+ .description('Execute SQL query on client database (requires connected client)')
11
+ .requiredOption('-c, --client <uuid>', 'Caturra client UUID (required)')
12
+ .requiredOption('-q, --sql <query>', 'SQL query (SELECT only)')
13
+ .option('--dry-run', 'Show the query without executing')
14
+ .option('--json', 'Output as JSON')
15
+ .action(async (options) => {
16
+ const context = configManager.getCurrentContext();
17
+ const environment = options.env || context.environment;
18
+ const tenant = options.tenant || context.tenant;
19
+ const outputJson = shouldUseJson(options);
20
+ if (options.dryRun) {
21
+ console.log(chalk.bold('\nšŸ” Dry-run: SQL Query\n'));
22
+ console.log(chalk.gray(` Client: ${options.client}`));
23
+ console.log(chalk.gray(` SQL: ${options.sql}`));
24
+ console.log();
25
+ return;
26
+ }
27
+ const response = await apiClient.executeCaturraQuery(environment, tenant, {
28
+ clientId: options.client,
29
+ sql: options.sql,
30
+ });
31
+ if (!response.success) {
32
+ console.error(chalk.red(`\nāœ— Query failed: ${response.error?.message || 'Unknown error'}`));
33
+ process.exit(1);
34
+ }
35
+ const rows = response.data || [];
36
+ if (outputJson) {
37
+ console.log(JSON.stringify({ success: true, rowCount: rows.length, data: rows }, null, 2));
38
+ return;
39
+ }
40
+ console.log(chalk.bold('\nšŸ“Š Query Result\n'));
41
+ if (rows.length === 0) {
42
+ console.log(chalk.gray(' No rows returned\n'));
43
+ return;
44
+ }
45
+ // Extract column names from first row
46
+ const columnNames = Object.keys(rows[0]);
47
+ const table = new Table({
48
+ head: columnNames.map(name => chalk.bold(name)),
49
+ colWidths: columnNames.map(() => Math.min(20, Math.floor(80 / columnNames.length))),
50
+ style: { head: [], border: [] },
51
+ });
52
+ rows.forEach(row => {
53
+ table.push(columnNames.map(col => {
54
+ const val = row[col];
55
+ return val === null ? chalk.gray('NULL') : String(val).substring(0, 40);
56
+ }));
57
+ });
58
+ console.log(table.toString());
59
+ console.log(chalk.gray(`\n Total: ${rows.length} rows\n`));
60
+ });
61
+ return command;
62
+ }
63
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/caturra/metadata/query.ts"],"names":[],"mappings":"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"}