@statechange/xano-cli 0.2.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 (72) hide show
  1. package/README.md +251 -0
  2. package/dist/auth.d.ts +22 -0
  3. package/dist/auth.d.ts.map +1 -0
  4. package/dist/auth.js +94 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/commands/audit.d.ts +6 -0
  7. package/dist/commands/audit.d.ts.map +1 -0
  8. package/dist/commands/audit.js +316 -0
  9. package/dist/commands/audit.js.map +1 -0
  10. package/dist/commands/auth.d.ts +6 -0
  11. package/dist/commands/auth.d.ts.map +1 -0
  12. package/dist/commands/auth.js +179 -0
  13. package/dist/commands/auth.js.map +1 -0
  14. package/dist/commands/health.d.ts +6 -0
  15. package/dist/commands/health.d.ts.map +1 -0
  16. package/dist/commands/health.js +115 -0
  17. package/dist/commands/health.js.map +1 -0
  18. package/dist/commands/history.d.ts +6 -0
  19. package/dist/commands/history.d.ts.map +1 -0
  20. package/dist/commands/history.js +250 -0
  21. package/dist/commands/history.js.map +1 -0
  22. package/dist/commands/inventory.d.ts +6 -0
  23. package/dist/commands/inventory.d.ts.map +1 -0
  24. package/dist/commands/inventory.js +282 -0
  25. package/dist/commands/inventory.js.map +1 -0
  26. package/dist/commands/logs.d.ts +6 -0
  27. package/dist/commands/logs.d.ts.map +1 -0
  28. package/dist/commands/logs.js +411 -0
  29. package/dist/commands/logs.js.map +1 -0
  30. package/dist/commands/performance.d.ts +6 -0
  31. package/dist/commands/performance.d.ts.map +1 -0
  32. package/dist/commands/performance.js +520 -0
  33. package/dist/commands/performance.js.map +1 -0
  34. package/dist/commands/secure.d.ts +6 -0
  35. package/dist/commands/secure.d.ts.map +1 -0
  36. package/dist/commands/secure.js +52 -0
  37. package/dist/commands/secure.js.map +1 -0
  38. package/dist/commands/xanoscript.d.ts +6 -0
  39. package/dist/commands/xanoscript.d.ts.map +1 -0
  40. package/dist/commands/xanoscript.js +216 -0
  41. package/dist/commands/xanoscript.js.map +1 -0
  42. package/dist/commands/xray.d.ts +6 -0
  43. package/dist/commands/xray.d.ts.map +1 -0
  44. package/dist/commands/xray.js +194 -0
  45. package/dist/commands/xray.js.map +1 -0
  46. package/dist/format.d.ts +10 -0
  47. package/dist/format.d.ts.map +1 -0
  48. package/dist/format.js +59 -0
  49. package/dist/format.js.map +1 -0
  50. package/dist/index.d.ts +7 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +43 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/performance/load-analysis.d.ts +33 -0
  55. package/dist/performance/load-analysis.d.ts.map +1 -0
  56. package/dist/performance/load-analysis.js +290 -0
  57. package/dist/performance/load-analysis.js.map +1 -0
  58. package/dist/performance/stack-rollup.d.ts +57 -0
  59. package/dist/performance/stack-rollup.d.ts.map +1 -0
  60. package/dist/performance/stack-rollup.js +108 -0
  61. package/dist/performance/stack-rollup.js.map +1 -0
  62. package/dist/registry-client.d.ts +81 -0
  63. package/dist/registry-client.d.ts.map +1 -0
  64. package/dist/registry-client.js +333 -0
  65. package/dist/registry-client.js.map +1 -0
  66. package/dist/xano-client.d.ts +103 -0
  67. package/dist/xano-client.d.ts.map +1 -0
  68. package/dist/xano-client.js +399 -0
  69. package/dist/xano-client.js.map +1 -0
  70. package/package.json +49 -0
  71. package/skills/performance-analysis/SKILL.md +135 -0
  72. package/skills/xano-cli/SKILL.md +158 -0
@@ -0,0 +1,411 @@
1
+ /**
2
+ * Log Retention CLI Commands — View and update history/logging settings
3
+ */
4
+ import { makeClient } from "../registry-client.js";
5
+ import { FORMAT_HELP, parseFormat, outputFormatted } from "../format.js";
6
+ const stdOptions = (cmd) => cmd
7
+ .option("--instance <instance>", "Xano instance")
8
+ .option("--workspace <workspace>", "Workspace ID")
9
+ .option("--branch <branch>", "Branch ID", "0")
10
+ .option("--token <token>", "Xano API token")
11
+ .option("--api-key <key>", "StateChange API key")
12
+ .option("--format <format>", FORMAT_HELP, "table");
13
+ function formatLimit(limit) {
14
+ if (limit === -1)
15
+ return "unlimited";
16
+ if (limit === 0)
17
+ return "disabled";
18
+ if (limit == null)
19
+ return "default";
20
+ return `${limit}`;
21
+ }
22
+ function historyToRecord(obj, type) {
23
+ const h = obj.history || {};
24
+ return {
25
+ id: obj.id,
26
+ name: obj.name || obj.canonical || `${type} ${obj.id}`,
27
+ type,
28
+ description: obj.description || undefined,
29
+ history_inherit: h.inherit ?? true,
30
+ history_enabled: type === "app" ? (h.query_enabled ?? true) : (h.enabled ?? true),
31
+ history_limit: type === "app" ? (h.query_limit ?? 100) : (h.limit ?? 100),
32
+ };
33
+ }
34
+ async function showSingleObject(client, type, id, workspace, branchId) {
35
+ const { apps, queries } = await client.getAPIAppsAndQueries(workspace, branchId);
36
+ if (type === "endpoint") {
37
+ const query = queries.find((q) => q.id === id);
38
+ if (!query)
39
+ throw new Error(`Endpoint ${id} not found in workspace`);
40
+ const h = query.history || {};
41
+ const parentApp = apps.find((a) => a.id === query.app?.id);
42
+ const parentHistory = parentApp?.history || {};
43
+ const effectiveLimit = h.inherit
44
+ ? (parentHistory.query_limit ?? 100)
45
+ : (h.limit ?? 100);
46
+ return {
47
+ type: "endpoint",
48
+ id: query.id,
49
+ name: query.name,
50
+ description: query.description || undefined,
51
+ history: {
52
+ inherit: h.inherit ?? true,
53
+ enabled: h.enabled ?? true,
54
+ limit: h.limit ?? 100,
55
+ },
56
+ parent_app: parentApp ? {
57
+ id: parentApp.id,
58
+ name: parentApp.name,
59
+ history: {
60
+ inherit: parentHistory.inherit ?? true,
61
+ query_enabled: parentHistory.query_enabled ?? true,
62
+ query_limit: parentHistory.query_limit ?? 100,
63
+ },
64
+ } : undefined,
65
+ effective_limit: effectiveLimit,
66
+ };
67
+ }
68
+ if (type === "app") {
69
+ const app = apps.find((a) => a.id === id);
70
+ if (!app)
71
+ throw new Error(`App ${id} not found in workspace`);
72
+ const h = app.history || {};
73
+ const appQueries = queries.filter((q) => q.app?.id === id);
74
+ return {
75
+ type: "app",
76
+ id: app.id,
77
+ name: app.name,
78
+ description: app.description || undefined,
79
+ history: {
80
+ inherit: h.inherit ?? true,
81
+ query_enabled: h.query_enabled ?? true,
82
+ query_limit: h.query_limit ?? 100,
83
+ },
84
+ endpoints: appQueries.map((q) => {
85
+ const qh = q.history || {};
86
+ return {
87
+ id: q.id,
88
+ name: q.name,
89
+ history_inherit: qh.inherit ?? true,
90
+ history_enabled: qh.enabled ?? true,
91
+ history_limit: qh.limit ?? 100,
92
+ effective_limit: (qh.inherit ?? true) ? (h.query_limit ?? 100) : (qh.limit ?? 100),
93
+ };
94
+ }),
95
+ };
96
+ }
97
+ if (type === "task") {
98
+ const tasks = await client.getTasks(workspace, branchId);
99
+ const task = tasks.find((t) => t.id === id);
100
+ if (!task)
101
+ throw new Error(`Task ${id} not found`);
102
+ const h = task.history || {};
103
+ return {
104
+ type: "task",
105
+ id: task.id,
106
+ name: task.name,
107
+ description: task.description || undefined,
108
+ history: {
109
+ inherit: h.inherit ?? true,
110
+ enabled: h.enabled ?? true,
111
+ limit: h.limit ?? 100,
112
+ },
113
+ effective_limit: h.limit ?? 100,
114
+ };
115
+ }
116
+ // trigger
117
+ const triggers = await client.getTriggers(workspace, branchId);
118
+ const trigger = triggers.find((t) => t.id === id);
119
+ if (!trigger)
120
+ throw new Error(`Trigger ${id} not found`);
121
+ const h = trigger.history || {};
122
+ return {
123
+ type: "trigger",
124
+ id: trigger.id,
125
+ name: trigger.name,
126
+ description: trigger.description || undefined,
127
+ history: {
128
+ inherit: h.inherit ?? true,
129
+ enabled: h.enabled ?? true,
130
+ limit: h.limit ?? 100,
131
+ },
132
+ effective_limit: h.limit ?? 100,
133
+ };
134
+ }
135
+ export function createLogsCommand(program) {
136
+ const logs = program
137
+ .command("logs")
138
+ .description("View and manage history/logging retention settings");
139
+ // --- logs show: display settings for a specific object or list all ---
140
+ stdOptions(logs
141
+ .command("show")
142
+ .description("Show history retention settings. Use with <type> <id> for a single object, or --type/--custom-only to list.")
143
+ .argument("[type]", "Object type: endpoint, task, trigger, or app")
144
+ .argument("[id]", "Object ID")
145
+ .option("--type <type>", "Filter list by type: app, endpoint, task, trigger, all", "all")
146
+ .option("--custom-only", "Only show objects with non-default settings")).action(async (argType, argId, options) => {
147
+ try {
148
+ const { client, workspace, branchId } = await makeClient(options);
149
+ const format = parseFormat(options.format);
150
+ // Single-object mode: logs show endpoint 1025
151
+ if (argType && argId) {
152
+ if (!["endpoint", "task", "trigger", "app"].includes(argType)) {
153
+ console.error("Error: type must be endpoint, task, trigger, or app");
154
+ process.exit(1);
155
+ }
156
+ const objectId = parseInt(argId);
157
+ const result = await showSingleObject(client, argType, objectId, workspace, branchId);
158
+ if (outputFormatted(format, result))
159
+ return;
160
+ // Table format
161
+ console.log(`\n${result.type} "${result.name}" (ID: ${result.id}):\n`);
162
+ const h = result.history;
163
+ if (result.type === "app") {
164
+ console.log(` query_enabled: ${h.query_enabled ? "on" : "OFF"}`);
165
+ console.log(` query_limit: ${formatLimit(h.query_limit)}`);
166
+ console.log(` inherit: ${h.inherit ? "yes" : "no (custom)"}`);
167
+ if (result.endpoints && result.endpoints.length > 0) {
168
+ console.log(`\n Endpoints (${result.endpoints.length}):\n`);
169
+ for (const ep of result.endpoints) {
170
+ const effStr = formatLimit(ep.effective_limit);
171
+ const inhStr = ep.history_inherit ? "inherit" : "custom";
172
+ console.log(` ${ep.name} (ID: ${ep.id}) — limit: ${formatLimit(ep.history_limit)} (${inhStr}) → effective: ${effStr}`);
173
+ }
174
+ }
175
+ }
176
+ else {
177
+ console.log(` enabled: ${h.enabled ? "on" : "OFF"}`);
178
+ console.log(` limit: ${formatLimit(h.limit)}`);
179
+ console.log(` inherit: ${h.inherit ? "yes (from parent app)" : "no (custom)"}`);
180
+ if (result.parent_app) {
181
+ const pa = result.parent_app;
182
+ console.log(`\n Parent app: "${pa.name}" (ID: ${pa.id})`);
183
+ console.log(` query_enabled: ${pa.history.query_enabled ? "on" : "OFF"}`);
184
+ console.log(` query_limit: ${formatLimit(pa.history.query_limit)}`);
185
+ }
186
+ if (result.effective_limit != null) {
187
+ const suffix = h.inherit && result.parent_app ? " (inherited from app)" : "";
188
+ console.log(`\n Effective limit: ${formatLimit(result.effective_limit)}${suffix}`);
189
+ }
190
+ }
191
+ return;
192
+ }
193
+ // List mode
194
+ const type = options.type;
195
+ const customOnly = options.customOnly || false;
196
+ const records = [];
197
+ if (type === "all" || type === "app") {
198
+ const { apps } = await client.getAPIAppsAndQueries(workspace, branchId);
199
+ for (const app of apps) {
200
+ records.push(historyToRecord(app, "app"));
201
+ }
202
+ }
203
+ if (type === "all" || type === "endpoint") {
204
+ const { queries } = await client.getAPIAppsAndQueries(workspace, branchId);
205
+ for (const q of queries) {
206
+ records.push(historyToRecord(q, "endpoint"));
207
+ }
208
+ }
209
+ if (type === "all" || type === "task") {
210
+ const tasks = await client.getTasks(workspace, branchId);
211
+ for (const t of tasks) {
212
+ records.push(historyToRecord(t, "task"));
213
+ }
214
+ }
215
+ if (type === "all" || type === "trigger") {
216
+ const triggers = await client.getTriggers(workspace, branchId);
217
+ for (const t of triggers) {
218
+ records.push(historyToRecord(t, "trigger"));
219
+ }
220
+ }
221
+ const filtered = customOnly
222
+ ? records.filter(r => r.history_limit !== 100 || !r.history_inherit || !r.history_enabled)
223
+ : records;
224
+ if (outputFormatted(format, { objects: filtered, total: filtered.length }))
225
+ return;
226
+ // Table format
227
+ if (filtered.length === 0) {
228
+ console.log("No objects found" + (customOnly ? " with custom history settings." : "."));
229
+ return;
230
+ }
231
+ console.log(`History retention settings${customOnly ? " (custom only)" : ""}:\n`);
232
+ for (const r of filtered) {
233
+ const enabledStr = r.history_enabled ? "on" : "OFF";
234
+ const limitStr = formatLimit(r.history_limit);
235
+ const inheritStr = r.history_inherit ? "inherit" : "custom";
236
+ console.log(` [${r.type}] ${r.name} (ID: ${r.id})`);
237
+ console.log(` enabled: ${enabledStr} | limit: ${limitStr} | ${inheritStr}`);
238
+ }
239
+ }
240
+ catch (error) {
241
+ console.error("Error:", error.message);
242
+ process.exit(1);
243
+ }
244
+ });
245
+ // --- logs set: update history settings for a specific object ---
246
+ stdOptions(logs
247
+ .command("set")
248
+ .description("Update history retention for an endpoint, task, or trigger")
249
+ .argument("<type>", "Object type: endpoint, task, trigger, or app")
250
+ .argument("<id>", "Object ID")
251
+ .option("--limit <n>", "Stack retention limit: number, -1 (unlimited), or 0 (disabled)")
252
+ .option("--enabled <bool>", "Enable/disable history recording (true/false)")
253
+ .option("--inherit <bool>", "Inherit from parent app (true/false)")).action(async (type, id, options) => {
254
+ if (!["endpoint", "task", "trigger", "app"].includes(type)) {
255
+ console.error("Error: type must be endpoint, task, trigger, or app");
256
+ process.exit(1);
257
+ }
258
+ if (options.limit == null && options.enabled == null && options.inherit == null) {
259
+ console.error("Error: provide at least one of --limit, --enabled, or --inherit");
260
+ process.exit(1);
261
+ }
262
+ const { client, workspace, branchId } = await makeClient(options);
263
+ const format = parseFormat(options.format);
264
+ const objectId = parseInt(id);
265
+ try {
266
+ let obj;
267
+ let before;
268
+ if (type === "endpoint") {
269
+ obj = await client.getQuery(objectId);
270
+ }
271
+ else if (type === "task") {
272
+ const tasks = await client.getTasks(workspace, branchId);
273
+ obj = tasks.find((t) => t.id === objectId);
274
+ if (!obj)
275
+ throw new Error(`Task ${objectId} not found`);
276
+ }
277
+ else if (type === "trigger") {
278
+ const triggers = await client.getTriggers(workspace, branchId);
279
+ obj = triggers.find((t) => t.id === objectId);
280
+ if (!obj)
281
+ throw new Error(`Trigger ${objectId} not found`);
282
+ }
283
+ else {
284
+ obj = await client.getApp(objectId, branchId);
285
+ }
286
+ before = { ...(obj.history || {}) };
287
+ // Apply changes
288
+ if (!obj.history)
289
+ obj.history = {};
290
+ if (options.limit != null) {
291
+ const limit = parseInt(options.limit);
292
+ if (type === "app") {
293
+ obj.history.query_limit = limit;
294
+ }
295
+ else {
296
+ obj.history.limit = limit;
297
+ }
298
+ }
299
+ if (options.enabled != null) {
300
+ const enabled = options.enabled === "true";
301
+ if (type === "app") {
302
+ obj.history.query_enabled = enabled;
303
+ }
304
+ else {
305
+ obj.history.enabled = enabled;
306
+ }
307
+ }
308
+ if (options.inherit != null) {
309
+ obj.history.inherit = options.inherit === "true";
310
+ }
311
+ // Save
312
+ if (type === "endpoint") {
313
+ await client.updateQuery(obj);
314
+ }
315
+ else if (type === "task") {
316
+ await client.updateTask(obj);
317
+ }
318
+ else if (type === "trigger") {
319
+ await client.updateTrigger(obj);
320
+ }
321
+ else {
322
+ await client.updateApp(obj);
323
+ }
324
+ const after = obj.history;
325
+ const result = {
326
+ type,
327
+ id: objectId,
328
+ name: obj.name || obj.canonical || `${type} ${objectId}`,
329
+ before,
330
+ after,
331
+ };
332
+ if (outputFormatted(format, result))
333
+ return;
334
+ console.log(`Updated ${type} ${objectId} (${result.name}):`);
335
+ console.log(` Before: ${JSON.stringify(before)}`);
336
+ console.log(` After: ${JSON.stringify(after)}`);
337
+ }
338
+ catch (error) {
339
+ console.error("Error:", error.message);
340
+ process.exit(1);
341
+ }
342
+ });
343
+ // --- logs watch: monitor history changes in real-time ---
344
+ stdOptions(logs
345
+ .command("watch")
346
+ .description("Poll and display new request history entries for an endpoint")
347
+ .argument("<type>", "Object type: endpoint, task, or trigger")
348
+ .argument("<id>", "Object ID")
349
+ .option("--interval <seconds>", "Poll interval in seconds", "5")).action(async (type, id, options) => {
350
+ if (!["endpoint", "task", "trigger"].includes(type)) {
351
+ console.error("Error: type must be endpoint, task, or trigger");
352
+ process.exit(1);
353
+ }
354
+ const { client, workspace, branchId } = await makeClient(options);
355
+ const objectId = parseInt(id);
356
+ const intervalMs = parseInt(options.interval) * 1000;
357
+ let lastSeenId = 0;
358
+ console.log(`Watching ${type} ${objectId} for new executions (poll every ${options.interval}s)...`);
359
+ console.log(`Press Ctrl+C to stop.\n`);
360
+ const poll = async () => {
361
+ try {
362
+ let result;
363
+ if (type === "endpoint") {
364
+ result = await client.getRequestHistoryForQuery(objectId, 1, branchId);
365
+ }
366
+ else if (type === "task") {
367
+ result = await client.getTaskHistory(objectId, 1);
368
+ }
369
+ else {
370
+ result = await client.getTriggerHistory(objectId, branchId, 1);
371
+ }
372
+ if (!result.items || result.items.length === 0)
373
+ return;
374
+ // On first poll, just record the latest ID
375
+ if (lastSeenId === 0) {
376
+ lastSeenId = result.items[0].id;
377
+ console.log(` (baseline: latest ID is ${lastSeenId})`);
378
+ return;
379
+ }
380
+ // Show new items
381
+ const newItems = result.items.filter((item) => item.id > lastSeenId);
382
+ if (newItems.length > 0) {
383
+ lastSeenId = Math.max(...newItems.map((i) => i.id));
384
+ for (const item of newItems.reverse()) {
385
+ const dur = item.duration != null ? `${item.duration.toFixed(3)}s` : "?";
386
+ const status = item.status ?? "—";
387
+ const verb = item.verb || "";
388
+ const truncated = item.stack_maxed ? " [TRUNCATED]" : "";
389
+ const date = new Date(item.created_at).toLocaleTimeString();
390
+ console.log(` ${date} [${item.id}] ${verb} ${status} (${dur})${truncated}`);
391
+ }
392
+ }
393
+ }
394
+ catch (error) {
395
+ console.error(` Poll error: ${error.message}`);
396
+ }
397
+ };
398
+ await poll();
399
+ const timer = setInterval(poll, intervalMs);
400
+ // Handle graceful shutdown
401
+ process.on("SIGINT", () => {
402
+ clearInterval(timer);
403
+ console.log("\nStopped watching.");
404
+ process.exit(0);
405
+ });
406
+ // Keep alive
407
+ await new Promise(() => { });
408
+ });
409
+ return logs;
410
+ }
411
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Performance CLI Commands
3
+ */
4
+ import { Command } from "commander";
5
+ export declare function createPerformanceCommand(program: Command): Command;
6
+ //# sourceMappingURL=performance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../src/commands/performance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,WA0fxD"}