gipity 1.0.93 → 1.0.123

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 (81) hide show
  1. package/README.md +6 -3
  2. package/dist/__tests__/sync.test.js +12 -0
  3. package/dist/__tests__/sync.test.js.map +1 -1
  4. package/dist/api.d.ts +2 -0
  5. package/dist/api.js +16 -0
  6. package/dist/api.js.map +1 -1
  7. package/dist/banner.js +145 -71
  8. package/dist/banner.js.map +1 -1
  9. package/dist/colors.js +1 -1
  10. package/dist/commands/agent.js +89 -123
  11. package/dist/commands/agent.js.map +1 -1
  12. package/dist/commands/api.js +71 -100
  13. package/dist/commands/api.js.map +1 -1
  14. package/dist/commands/audit.js +31 -50
  15. package/dist/commands/audit.js.map +1 -1
  16. package/dist/commands/browser.js +58 -63
  17. package/dist/commands/browser.js.map +1 -1
  18. package/dist/commands/chat.js +2 -7
  19. package/dist/commands/chat.js.map +1 -1
  20. package/dist/commands/claude.js +28 -10
  21. package/dist/commands/claude.js.map +1 -1
  22. package/dist/commands/credits.js +23 -44
  23. package/dist/commands/credits.js.map +1 -1
  24. package/dist/commands/db.js +111 -68
  25. package/dist/commands/db.js.map +1 -1
  26. package/dist/commands/deploy.js +65 -39
  27. package/dist/commands/deploy.js.map +1 -1
  28. package/dist/commands/domain.d.ts +2 -0
  29. package/dist/commands/domain.js +131 -0
  30. package/dist/commands/domain.js.map +1 -0
  31. package/dist/commands/file.js +95 -81
  32. package/dist/commands/file.js.map +1 -1
  33. package/dist/commands/fn.js +33 -68
  34. package/dist/commands/fn.js.map +1 -1
  35. package/dist/commands/logs.js +22 -27
  36. package/dist/commands/logs.js.map +1 -1
  37. package/dist/commands/memory.js +52 -82
  38. package/dist/commands/memory.js.map +1 -1
  39. package/dist/commands/project.js +69 -97
  40. package/dist/commands/project.js.map +1 -1
  41. package/dist/commands/rbac.js +44 -65
  42. package/dist/commands/rbac.js.map +1 -1
  43. package/dist/commands/records.js +53 -93
  44. package/dist/commands/records.js.map +1 -1
  45. package/dist/commands/sandbox.js +26 -31
  46. package/dist/commands/sandbox.js.map +1 -1
  47. package/dist/commands/scaffold.js +23 -28
  48. package/dist/commands/scaffold.js.map +1 -1
  49. package/dist/commands/skills.js +20 -43
  50. package/dist/commands/skills.js.map +1 -1
  51. package/dist/commands/test.d.ts +2 -0
  52. package/dist/commands/test.js +183 -0
  53. package/dist/commands/test.js.map +1 -0
  54. package/dist/commands/workflow.js +70 -118
  55. package/dist/commands/workflow.js.map +1 -1
  56. package/dist/help-skills.js +0 -1
  57. package/dist/help-skills.js.map +1 -1
  58. package/dist/helpers/command.d.ts +12 -0
  59. package/dist/helpers/command.js +19 -0
  60. package/dist/helpers/command.js.map +1 -0
  61. package/dist/helpers/index.d.ts +6 -0
  62. package/dist/helpers/index.js +7 -0
  63. package/dist/helpers/index.js.map +1 -0
  64. package/dist/helpers/output.d.ts +18 -0
  65. package/dist/helpers/output.js +34 -0
  66. package/dist/helpers/output.js.map +1 -0
  67. package/dist/helpers/sync.d.ts +11 -0
  68. package/dist/helpers/sync.js +18 -0
  69. package/dist/helpers/sync.js.map +1 -0
  70. package/dist/index.js +12 -7
  71. package/dist/index.js.map +1 -1
  72. package/dist/setup.d.ts +1 -1
  73. package/dist/setup.js +5 -3
  74. package/dist/setup.js.map +1 -1
  75. package/dist/sync.d.ts +5 -1
  76. package/dist/sync.js +99 -34
  77. package/dist/sync.js.map +1 -1
  78. package/dist/utils.d.ts +5 -0
  79. package/dist/utils.js +15 -0
  80. package/dist/utils.js.map +1 -1
  81. package/package.json +4 -2
@@ -2,164 +2,130 @@ import { Command } from 'commander';
2
2
  import { get, post, put, del } from '../api.js';
3
3
  import { requireConfig, saveConfig } from '../config.js';
4
4
  import { error as clrError } from '../colors.js';
5
+ import { run, printList } from '../helpers/index.js';
6
+ import { confirm } from '../utils.js';
5
7
  export const agentCommand = new Command('agent')
6
8
  .description('Manage agents')
7
9
  .argument('[name]', 'Switch to agent by name')
8
10
  .option('--json', 'Output as JSON')
9
- .action(async (name, opts) => {
10
- try {
11
- if (name) {
12
- // Switch to agent
13
- const res = await get('/agents');
14
- const match = res.data.find(a => a.name === name || a.short_guid === name);
15
- if (!match) {
16
- console.error(clrError(`Agent "${name}" not found.`));
17
- process.exit(1);
18
- }
19
- const config = requireConfig();
20
- saveConfig({ ...config, agentGuid: match.short_guid, conversationGuid: null });
21
- if (opts.json) {
22
- console.log(JSON.stringify({ switched: match.name, guid: match.short_guid }));
23
- }
24
- else {
25
- console.log(`Switched to ${match.name}`);
26
- }
27
- return;
28
- }
29
- // List agents
11
+ .action((name, opts) => run('Agent', async () => {
12
+ if (name) {
13
+ // Switch to agent
30
14
  const res = await get('/agents');
15
+ const match = res.data.find(a => a.name === name || a.short_guid === name);
16
+ if (!match) {
17
+ console.error(clrError(`Agent "${name}" not found.`));
18
+ process.exit(1);
19
+ }
31
20
  const config = requireConfig();
21
+ saveConfig({ ...config, agentGuid: match.short_guid, conversationGuid: null });
32
22
  if (opts.json) {
33
- console.log(JSON.stringify(res.data));
23
+ console.log(JSON.stringify({ switched: match.name, guid: match.short_guid }));
34
24
  }
35
25
  else {
36
- if (res.data.length === 0) {
37
- console.log('No agents.');
38
- }
39
- else {
40
- for (const a of res.data) {
41
- const active = a.short_guid === config.agentGuid ? ' *' : '';
42
- const def = a.is_default ? ' (default)' : '';
43
- const model = a.model_preference ? ` [${a.model_preference}]` : '';
44
- console.log(`${a.name}${active}${def}${model}`);
45
- }
46
- }
26
+ console.log(`Switched to ${match.name}`);
47
27
  }
28
+ return;
48
29
  }
49
- catch (err) {
50
- console.error(clrError(`Failed: ${err.message}`));
51
- process.exit(1);
52
- }
53
- });
30
+ // List agents
31
+ const res = await get('/agents');
32
+ const config = requireConfig();
33
+ printList(res.data, opts, 'No agents.', a => {
34
+ const active = a.short_guid === config.agentGuid ? ' *' : '';
35
+ const def = a.is_default ? ' (default)' : '';
36
+ const model = a.model_preference ? ` [${a.model_preference}]` : '';
37
+ return `${a.name}${active}${def}${model}`;
38
+ });
39
+ }));
54
40
  agentCommand
55
41
  .command('create <name>')
56
42
  .description('Create a new agent')
57
43
  .option('--model <model>', 'Model preference')
58
44
  .option('--switch', 'Switch to new agent after creation')
59
45
  .option('--json', 'Output as JSON')
60
- .action(async (name, opts) => {
61
- try {
62
- const body = { name };
63
- if (opts.model)
64
- body.modelPreference = opts.model;
65
- const res = await post('/agents', body);
66
- if (opts.switch) {
67
- const config = requireConfig();
68
- saveConfig({ ...config, agentGuid: res.data.short_guid, conversationGuid: null });
69
- }
70
- if (opts.json) {
71
- console.log(JSON.stringify(res.data));
72
- }
73
- else {
74
- console.log(`Created "${res.data.name}" (${res.data.short_guid})`);
75
- if (opts.switch)
76
- console.log('Switched.');
77
- }
46
+ .action((name, opts) => run('Create', async () => {
47
+ const body = { name };
48
+ if (opts.model)
49
+ body.modelPreference = opts.model;
50
+ const res = await post('/agents', body);
51
+ if (opts.switch) {
52
+ const config = requireConfig();
53
+ saveConfig({ ...config, agentGuid: res.data.short_guid, conversationGuid: null });
78
54
  }
79
- catch (err) {
80
- console.error(clrError(`Create failed: ${err.message}`));
81
- process.exit(1);
55
+ if (opts.json) {
56
+ console.log(JSON.stringify(res.data));
57
+ }
58
+ else {
59
+ console.log(`Created "${res.data.name}" (${res.data.short_guid})`);
60
+ if (opts.switch)
61
+ console.log('Switched.');
82
62
  }
83
- });
63
+ }));
84
64
  agentCommand
85
65
  .command('set <field> <value>')
86
66
  .description('Set agent field (model, temp)')
87
67
  .option('--json', 'Output as JSON')
88
- .action(async (field, value, opts) => {
89
- try {
90
- const config = requireConfig();
91
- const body = {};
92
- if (field === 'model')
93
- body.modelPreference = value;
94
- else if (field === 'temp' || field === 'temperature')
95
- body.temperature = parseFloat(value);
96
- else {
97
- console.error(clrError(`Unknown field: ${field}. Use: model, temp`));
98
- process.exit(1);
99
- }
100
- await put(`/agents/${config.agentGuid}`, body);
101
- if (opts.json) {
102
- console.log(JSON.stringify({ success: true, field, value }));
103
- }
104
- else {
105
- console.log(`Set ${field} = ${value}`);
106
- }
107
- }
108
- catch (err) {
109
- console.error(clrError(`Set failed: ${err.message}`));
68
+ .action((field, value, opts) => run('Set', async () => {
69
+ const config = requireConfig();
70
+ const body = {};
71
+ if (field === 'model')
72
+ body.modelPreference = value;
73
+ else if (field === 'temp' || field === 'temperature')
74
+ body.temperature = parseFloat(value);
75
+ else {
76
+ console.error(clrError(`Unknown field: ${field}. Use: model, temp`));
110
77
  process.exit(1);
111
78
  }
112
- });
79
+ await put(`/agents/${config.agentGuid}`, body);
80
+ if (opts.json) {
81
+ console.log(JSON.stringify({ success: true, field, value }));
82
+ }
83
+ else {
84
+ console.log(`Set ${field} = ${value}`);
85
+ }
86
+ }));
113
87
  agentCommand
114
88
  .command('info')
115
89
  .description('Show current agent details')
116
90
  .option('--json', 'Output as JSON')
117
- .action(async (opts) => {
118
- try {
119
- const config = requireConfig();
120
- const res = await get(`/agents/${config.agentGuid}`);
121
- if (opts.json) {
122
- console.log(JSON.stringify(res.data));
123
- }
124
- else {
125
- const a = res.data;
126
- console.log(`Name: ${a.name}`);
127
- console.log(`GUID: ${a.short_guid}`);
128
- console.log(`Model: ${a.model_preference || '(default)'}`);
129
- console.log(`Temp: ${a.temperature ?? '(default)'}`);
130
- if (a.voice_provider)
131
- console.log(`Voice: ${a.voice_provider}/${a.voice_id}`);
132
- console.log(`Created: ${new Date(a.created_at).toLocaleDateString()}`);
133
- }
91
+ .action((opts) => run('Info', async () => {
92
+ const config = requireConfig();
93
+ const res = await get(`/agents/${config.agentGuid}`);
94
+ if (opts.json) {
95
+ console.log(JSON.stringify(res.data));
134
96
  }
135
- catch (err) {
136
- console.error(clrError(`Info failed: ${err.message}`));
137
- process.exit(1);
97
+ else {
98
+ const a = res.data;
99
+ console.log(`Name: ${a.name}`);
100
+ console.log(`GUID: ${a.short_guid}`);
101
+ console.log(`Model: ${a.model_preference || '(default)'}`);
102
+ console.log(`Temp: ${a.temperature ?? '(default)'}`);
103
+ if (a.voice_provider)
104
+ console.log(`Voice: ${a.voice_provider}/${a.voice_id}`);
105
+ console.log(`Created: ${new Date(a.created_at).toLocaleDateString()}`);
138
106
  }
139
- });
107
+ }));
140
108
  agentCommand
141
109
  .command('delete <name>')
142
110
  .description('Delete an agent')
143
111
  .option('--json', 'Output as JSON')
144
- .action(async (name, opts) => {
145
- try {
146
- const res = await get('/agents');
147
- const match = res.data.find(a => a.name === name || a.short_guid === name);
148
- if (!match) {
149
- console.error(`Agent "${name}" not found.`);
150
- process.exit(1);
151
- }
152
- await del(`/agents/${match.short_guid}`);
153
- if (opts.json) {
154
- console.log(JSON.stringify({ deleted: match.name }));
155
- }
156
- else {
157
- console.log(`Deleted "${match.name}".`);
158
- }
159
- }
160
- catch (err) {
161
- console.error(clrError(`Delete failed: ${err.message}`));
112
+ .action((name, opts) => run('Delete', async () => {
113
+ const res = await get('/agents');
114
+ const match = res.data.find(a => a.name === name || a.short_guid === name);
115
+ if (!match) {
116
+ console.error(`Agent "${name}" not found.`);
162
117
  process.exit(1);
163
118
  }
164
- });
119
+ if (!await confirm(`Delete agent "${match.name}"? (y/N) `)) {
120
+ console.log('Cancelled.');
121
+ return;
122
+ }
123
+ await del(`/agents/${match.short_guid}`);
124
+ if (opts.json) {
125
+ console.log(JSON.stringify({ deleted: match.name }));
126
+ }
127
+ else {
128
+ console.log(`Deleted "${match.name}".`);
129
+ }
130
+ }));
165
131
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAatC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,eAAe,CAAC;KAC5B,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;KAC7C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,IAAwB,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;IAClE,IAAI,IAAI,EAAE,CAAC;QACT,kBAAkB;QAClB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAwB,SAAS,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO;IACT,CAAC;IAED,cAAc;IACd,MAAM,GAAG,GAAG,MAAM,GAAG,CAAwB,SAAS,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE;QAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC;AAEN,YAAY;KACT,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C,MAAM,CAAC,UAAU,EAAE,oCAAoC,CAAC;KACxD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,IAAY,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IACvD,MAAM,IAAI,GAAQ,EAAE,IAAI,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAsB,SAAS,EAAE,IAAI,CAAC,CAAC;IAE7D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC,CAAC,CAAC,CAAC;AAEN,YAAY;KACT,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,KAAa,EAAE,KAAa,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;IACpE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAQ,EAAE,CAAC;IACrB,IAAI,KAAK,KAAK,OAAO;QAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC/C,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,aAAa;QAAE,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;SACtF,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,KAAK,oBAAoB,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,CAAC,WAAW,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,MAAM,KAAK,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC,CAAC,CAAC,CAAC;AAEN,YAAY;KACT,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;IACvC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAsB,WAAW,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1E,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,gBAAgB,IAAI,WAAW,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,WAAW,IAAI,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,CAAC,cAAc;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC,CAAC,CAAC,CAAC;AAEN,YAAY;KACT,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,IAAY,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IACvD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAwB,SAAS,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;IAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,MAAM,OAAO,CAAC,iBAAiB,KAAK,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IACD,MAAM,GAAG,CAAC,WAAW,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC,CAAC,CAAC,CAAC"}
@@ -3,70 +3,49 @@ import { readFileSync } from 'fs';
3
3
  import { get, put, del } from '../api.js';
4
4
  import { requireConfig } from '../config.js';
5
5
  import { error as clrError, bold, muted } from '../colors.js';
6
+ import { confirm } from '../utils.js';
7
+ import { run, printList } from '../helpers/index.js';
6
8
  export const apiCommand = new Command('api')
7
9
  .description('Manage API procedures');
8
10
  apiCommand
9
11
  .command('list')
10
12
  .description('List API procedures')
11
13
  .option('--json', 'Output as JSON')
12
- .action(async (opts) => {
13
- try {
14
- const config = requireConfig();
15
- const res = await get(`/projects/${config.projectGuid}/procedures`);
16
- if (opts.json) {
17
- console.log(JSON.stringify(res.data));
18
- }
19
- else {
20
- if (res.data.length === 0) {
21
- console.log('No API procedures defined.');
22
- }
23
- else {
24
- for (const p of res.data) {
25
- const paramStr = p.params.length > 0
26
- ? ` (${p.params.map(pr => `${pr.name}:${pr.type}`).join(', ')})`
27
- : '';
28
- console.log(`${bold(p.name)} ${muted(`${p.method}/${p.auth_level}`)} → ${p.database_name}${paramStr}`);
29
- if (p.description)
30
- console.log(` ${muted(p.description)}`);
31
- }
32
- }
33
- }
34
- }
35
- catch (err) {
36
- console.error(clrError(`List failed: ${err.message}`));
37
- process.exit(1);
38
- }
39
- });
14
+ .action((opts) => run('List', async () => {
15
+ const config = requireConfig();
16
+ const res = await get(`/projects/${config.projectGuid}/procedures`);
17
+ printList(res.data, opts, 'No API procedures defined.', p => {
18
+ const paramStr = p.params.length > 0
19
+ ? ` (${p.params.map(pr => `${pr.name}:${pr.type}`).join(', ')})`
20
+ : '';
21
+ const line = `${bold(p.name)} ${muted(`${p.method}/${p.auth_level}`)} → ${p.database_name}${paramStr}`;
22
+ return p.description ? `${line}\n ${muted(p.description)}` : line;
23
+ });
24
+ }));
40
25
  apiCommand
41
26
  .command('get <name>')
42
27
  .description('Show procedure details')
43
28
  .option('--json', 'Output as JSON')
44
- .action(async (name, opts) => {
45
- try {
46
- const config = requireConfig();
47
- const res = await get(`/projects/${config.projectGuid}/procedures/${encodeURIComponent(name)}`);
48
- if (opts.json) {
49
- console.log(JSON.stringify(res.data, null, 2));
50
- }
51
- else {
52
- const p = res.data;
53
- console.log(`Name: ${p.name}`);
54
- console.log(`Method: ${p.method}`);
55
- console.log(`Auth: ${p.auth_level}`);
56
- console.log(`Database: ${p.database_name}`);
57
- if (p.description)
58
- console.log(`Desc: ${p.description}`);
59
- if (p.params.length > 0) {
60
- console.log(`Params: ${p.params.map(pr => `${pr.name}:${pr.type}${pr.source ? ` (${pr.source})` : ''}`).join(', ')}`);
61
- }
62
- console.log(`SQL:\n${p.sql_text}`);
63
- }
29
+ .action((name, opts) => run('Get', async () => {
30
+ const config = requireConfig();
31
+ const res = await get(`/projects/${config.projectGuid}/procedures/${encodeURIComponent(name)}`);
32
+ if (opts.json) {
33
+ console.log(JSON.stringify(res.data, null, 2));
64
34
  }
65
- catch (err) {
66
- console.error(clrError(`Get failed: ${err.message}`));
67
- process.exit(1);
35
+ else {
36
+ const p = res.data;
37
+ console.log(`Name: ${p.name}`);
38
+ console.log(`Method: ${p.method}`);
39
+ console.log(`Auth: ${p.auth_level}`);
40
+ console.log(`Database: ${p.database_name}`);
41
+ if (p.description)
42
+ console.log(`Desc: ${p.description}`);
43
+ if (p.params.length > 0) {
44
+ console.log(`Params: ${p.params.map(pr => `${pr.name}:${pr.type}${pr.source ? ` (${pr.source})` : ''}`).join(', ')}`);
45
+ }
46
+ console.log(`SQL:\n${p.sql_text}`);
68
47
  }
69
- });
48
+ }));
70
49
  apiCommand
71
50
  .command('define <name>')
72
51
  .description('Create or update an API procedure')
@@ -77,62 +56,54 @@ apiCommand
77
56
  .option('--params <params>', 'Param definitions as JSON array: [{"name":"x","type":"string"}]', '[]')
78
57
  .option('--description <desc>', 'Procedure description')
79
58
  .option('--json', 'Output as JSON')
80
- .action(async (name, opts) => {
59
+ .action((name, opts) => run('Define', async () => {
60
+ const config = requireConfig();
61
+ // Read SQL from file if prefixed with @
62
+ let sql = opts.sql;
63
+ if (sql.startsWith('@')) {
64
+ sql = readFileSync(sql.slice(1), 'utf-8');
65
+ }
66
+ let params;
81
67
  try {
82
- const config = requireConfig();
83
- // Read SQL from file if prefixed with @
84
- let sql = opts.sql;
85
- if (sql.startsWith('@')) {
86
- sql = readFileSync(sql.slice(1), 'utf-8');
87
- }
88
- let params;
89
- try {
90
- params = JSON.parse(opts.params);
91
- }
92
- catch {
93
- console.error(clrError('Invalid --params JSON. Example: \'[{"name":"color","type":"string"},{"name":"count","type":"int"}]\''));
94
- process.exit(1);
95
- }
96
- const body = {
97
- sql,
98
- database: opts.database,
99
- method: opts.method,
100
- auth_level: opts.auth,
101
- params,
102
- description: opts.description || null,
103
- };
104
- const res = await put(`/projects/${config.projectGuid}/procedures/${encodeURIComponent(name)}`, body);
105
- if (opts.json) {
106
- console.log(JSON.stringify(res.data));
107
- }
108
- else {
109
- console.log(`${res.data.action === 'created' ? 'Created' : 'Updated'} procedure "${name}".`);
110
- console.log(`URL: https://a.gipity.ai/api/${config.projectGuid}/call/${name}`);
111
- }
68
+ params = JSON.parse(opts.params);
112
69
  }
113
- catch (err) {
114
- console.error(clrError(`Define failed: ${err.message}`));
70
+ catch {
71
+ console.error(clrError('Invalid --params JSON. Example: \'[{"name":"color","type":"string"},{"name":"count","type":"int"}]\''));
115
72
  process.exit(1);
116
73
  }
117
- });
74
+ const body = {
75
+ sql,
76
+ database: opts.database,
77
+ method: opts.method,
78
+ auth_level: opts.auth,
79
+ params,
80
+ description: opts.description || null,
81
+ };
82
+ const res = await put(`/projects/${config.projectGuid}/procedures/${encodeURIComponent(name)}`, body);
83
+ if (opts.json) {
84
+ console.log(JSON.stringify(res.data));
85
+ }
86
+ else {
87
+ console.log(`${res.data.action === 'created' ? 'Created' : 'Updated'} procedure "${name}".`);
88
+ console.log(`URL: https://a.gipity.ai/api/${config.projectGuid}/call/${name}`);
89
+ }
90
+ }));
118
91
  apiCommand
119
92
  .command('delete <name>')
120
93
  .description('Delete an API procedure')
121
94
  .option('--json', 'Output as JSON')
122
- .action(async (name, opts) => {
123
- try {
124
- const config = requireConfig();
125
- await del(`/projects/${config.projectGuid}/procedures/${encodeURIComponent(name)}`);
126
- if (opts.json) {
127
- console.log(JSON.stringify({ success: true, name }));
128
- }
129
- else {
130
- console.log(`Deleted "${name}".`);
131
- }
95
+ .action((name, opts) => run('Delete', async () => {
96
+ const config = requireConfig();
97
+ if (!await confirm(`Delete procedure "${name}"? (y/N) `)) {
98
+ console.log('Cancelled.');
99
+ return;
132
100
  }
133
- catch (err) {
134
- console.error(clrError(`Delete failed: ${err.message}`));
135
- process.exit(1);
101
+ await del(`/projects/${config.projectGuid}/procedures/${encodeURIComponent(name)}`);
102
+ if (opts.json) {
103
+ console.log(JSON.stringify({ success: true, name }));
104
+ }
105
+ else {
106
+ console.log(`Deleted "${name}".`);
136
107
  }
137
- });
108
+ }));
138
109
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAkB9D,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AAExC,UAAU;KACP,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAwB,aAAa,MAAM,CAAC,WAAW,aAAa,CAAC,CAAC;QAE3F,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;oBACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;wBAClC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;wBAChE,CAAC,CAAC,EAAE,CAAC;oBACP,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,aAAa,GAAG,QAAQ,EAAE,CAAC,CAAC;oBACzG,IAAI,CAAC,CAAC,WAAW;wBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,UAAU;KACP,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAI,EAAE,EAAE;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAsB,aAAa,MAAM,CAAC,WAAW,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,CAAC,WAAW;gBAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3H,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,UAAU;KACP,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,mCAAmC,CAAC;KAChD,cAAc,CAAC,aAAa,EAAE,oEAAoE,CAAC;KACnG,cAAc,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACzD,MAAM,CAAC,mBAAmB,EAAE,eAAe,EAAE,OAAO,CAAC;KACrD,MAAM,CAAC,gBAAgB,EAAE,yBAAyB,EAAE,QAAQ,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,iEAAiE,EAAE,IAAI,CAAC;KACpG,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;KACvD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAI,EAAE,EAAE;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAE/B,wCAAwC;QACxC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,MAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,sGAAsG,CAAC,CAAC,CAAC;YAChI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG;YACX,GAAG;YACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,MAAM;YACN,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;SACtC,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,GAAG,CACnB,aAAa,MAAM,CAAC,WAAW,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,EACxE,IAAI,CACL,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,eAAe,IAAI,IAAI,CAAC,CAAC;YAC7F,OAAO,CAAC,GAAG,CAAC,gCAAgC,MAAM,CAAC,WAAW,SAAS,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,UAAU;KACP,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAI,EAAE,EAAE;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,GAAG,CAAuB,aAAa,MAAM,CAAC,WAAW,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE1G,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAkBrD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AAExC,UAAU;KACP,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;IACvC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAwB,aAAa,MAAM,CAAC,WAAW,aAAa,CAAC,CAAC;IAE3F,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC,EAAE;QAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAClC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAChE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,aAAa,GAAG,QAAQ,EAAE,CAAC;QACzG,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC;AAEN,UAAU;KACP,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,IAAY,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;IACpD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAsB,aAAa,MAAM,CAAC,WAAW,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAErH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,WAAW;YAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3H,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrC,CAAC;AACH,CAAC,CAAC,CAAC,CAAC;AAEN,UAAU;KACP,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,mCAAmC,CAAC;KAChD,cAAc,CAAC,aAAa,EAAE,oEAAoE,CAAC;KACnG,cAAc,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACzD,MAAM,CAAC,mBAAmB,EAAE,eAAe,EAAE,OAAO,CAAC;KACrD,MAAM,CAAC,gBAAgB,EAAE,yBAAyB,EAAE,QAAQ,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,iEAAiE,EAAE,IAAI,CAAC;KACpG,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;KACvD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,IAAY,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IACvD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,wCAAwC;IACxC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,MAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,sGAAsG,CAAC,CAAC,CAAC;QAChI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG;QACX,GAAG;QACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,IAAI;QACrB,MAAM;QACN,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;KACtC,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,GAAG,CACnB,aAAa,MAAM,CAAC,WAAW,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,EACxE,IAAI,CACL,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,eAAe,IAAI,IAAI,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,gCAAgC,MAAM,CAAC,WAAW,SAAS,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;AACH,CAAC,CAAC,CAAC,CAAC;AAEN,UAAU;KACP,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,IAAY,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IACvD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM,OAAO,CAAC,qBAAqB,IAAI,WAAW,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IACD,MAAM,GAAG,CAAuB,aAAa,MAAM,CAAC,WAAW,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1G,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CAAC,CAAC,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { Command } from 'commander';
2
2
  import { get } from '../api.js';
3
3
  import { requireConfig } from '../config.js';
4
- import { error as clrError, muted } from '../colors.js';
4
+ import { muted } from '../colors.js';
5
+ import { run, printList } from '../helpers/index.js';
5
6
  export const auditCommand = new Command('audit')
6
7
  .description('Query audit logs');
7
8
  auditCommand
@@ -13,59 +14,39 @@ auditCommand
13
14
  .option('--since <date>', 'Start date (ISO format)')
14
15
  .option('--limit <n>', 'Max entries', '20')
15
16
  .option('--json', 'Output as JSON')
16
- .action(async (opts) => {
17
- try {
18
- const config = requireConfig();
19
- const params = new URLSearchParams();
20
- if (opts.type)
21
- params.set('type', opts.type);
22
- if (opts.entity)
23
- params.set('entity_type', opts.entity);
24
- if (opts.action)
25
- params.set('action', opts.action);
26
- if (opts.since)
27
- params.set('since', opts.since);
28
- params.set('limit', opts.limit);
29
- const res = await get(`/projects/${config.projectGuid}/audit?${params}`);
30
- if (opts.json) {
31
- console.log(JSON.stringify(res.data));
32
- }
33
- else if (res.data.length === 0) {
34
- console.log('No audit events found.');
35
- }
36
- else {
37
- for (const e of res.data) {
38
- const ts = new Date(e.created_at).toLocaleString();
39
- const entity = e.entity_type ? `${e.entity_type}${e.entity_id ? ':' + e.entity_id : ''}` : '';
40
- console.log(`${muted(ts)} ${e.event_type} ${e.action} ${muted(entity)}`);
41
- }
42
- }
43
- }
44
- catch (err) {
45
- console.error(clrError(`List failed: ${err.message}`));
46
- process.exit(1);
47
- }
48
- });
17
+ .action((opts) => run('List', async () => {
18
+ const config = requireConfig();
19
+ const params = new URLSearchParams();
20
+ if (opts.type)
21
+ params.set('type', opts.type);
22
+ if (opts.entity)
23
+ params.set('entity_type', opts.entity);
24
+ if (opts.action)
25
+ params.set('action', opts.action);
26
+ if (opts.since)
27
+ params.set('since', opts.since);
28
+ params.set('limit', opts.limit);
29
+ const res = await get(`/projects/${config.projectGuid}/audit?${params}`);
30
+ printList(res.data, opts, 'No audit events found.', e => {
31
+ const ts = new Date(e.created_at).toLocaleString();
32
+ const entity = e.entity_type ? `${e.entity_type}${e.entity_id ? ':' + e.entity_id : ''}` : '';
33
+ return `${muted(ts)} ${e.event_type} ${e.action} ${muted(entity)}`;
34
+ });
35
+ }));
49
36
  auditCommand
50
37
  .command('count')
51
38
  .description('Count audit events')
52
39
  .option('--type <type>', 'Filter by event type')
53
40
  .option('--entity <type>', 'Filter by entity type')
54
41
  .option('--json', 'Output as JSON')
55
- .action(async (opts) => {
56
- try {
57
- const config = requireConfig();
58
- const params = new URLSearchParams();
59
- if (opts.type)
60
- params.set('type', opts.type);
61
- if (opts.entity)
62
- params.set('entity_type', opts.entity);
63
- const res = await get(`/projects/${config.projectGuid}/audit/count?${params}`);
64
- console.log(opts.json ? JSON.stringify(res.data) : `${res.data.count} events`);
65
- }
66
- catch (err) {
67
- console.error(clrError(`Count failed: ${err.message}`));
68
- process.exit(1);
69
- }
70
- });
42
+ .action((opts) => run('Count', async () => {
43
+ const config = requireConfig();
44
+ const params = new URLSearchParams();
45
+ if (opts.type)
46
+ params.set('type', opts.type);
47
+ if (opts.entity)
48
+ params.set('entity_type', opts.entity);
49
+ const res = await get(`/projects/${config.projectGuid}/audit/count?${params}`);
50
+ console.log(opts.json ? JSON.stringify(res.data) : `${res.data.count} events`);
51
+ }));
71
52
  //# sourceMappingURL=audit.js.map