@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
package/README.md ADDED
@@ -0,0 +1,251 @@
1
+ # @statechange/xano-cli
2
+
3
+ CLI for Xano workspace management, performance analysis, XanoScript generation, and operational insights. Uses Xano's private APIs to provide capabilities not available through the standard Meta API.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g @statechange/xano-cli
9
+ ```
10
+
11
+ Or run directly with npx:
12
+
13
+ ```bash
14
+ npx @statechange/xano-cli <command>
15
+ ```
16
+
17
+ ## Quick Start
18
+
19
+ ```bash
20
+ # 1. Authenticate with your StateChange API key
21
+ sc-xano auth init --api-key <your-api-key>
22
+
23
+ # 2. Verify connection and see available instances
24
+ sc-xano auth whoami
25
+
26
+ # 3. Check your Xano session health
27
+ sc-xano auth status
28
+
29
+ # 4. Run commands (instance, workspace, and token auto-resolve)
30
+ sc-xano inventory workspace
31
+ sc-xano performance top-endpoints
32
+ sc-xano audit workspace
33
+ ```
34
+
35
+ Once authenticated, the CLI auto-resolves your Xano instance, workspace, and token from the StateChange backend. No extra flags needed if you have a single instance.
36
+
37
+ ## Authentication & Session Management
38
+
39
+ The CLI uses a StateChange API key to fetch Xano credentials automatically:
40
+
41
+ ```bash
42
+ # Interactive setup
43
+ sc-xano auth init
44
+
45
+ # Or provide key directly
46
+ sc-xano auth init --api-key <key>
47
+
48
+ # Check auth status
49
+ sc-xano auth whoami
50
+
51
+ # Check Xano token health
52
+ sc-xano auth status
53
+
54
+ # Override defaults
55
+ sc-xano auth set-instance <hostname> --workspace <id>
56
+ ```
57
+
58
+ ### Session Freshness
59
+
60
+ Your Xano session token is refreshed whenever you open Xano in the browser with the StateChange extension active. The CLI monitors token health automatically:
61
+
62
+ - **Fresh token** — commands run normally
63
+ - **Stale token** — a warning is shown, but commands still proceed
64
+ - **Expired token** — a warning is shown; if Xano rejects the request, the CLI prompts you to open Xano and polls until the session is refreshed
65
+ - **401/403 errors** — the CLI advises running `auth status` to diagnose
66
+
67
+ Run `sc-xano auth status` at any time to check your session.
68
+
69
+ ### Fallback Options
70
+
71
+ You can also provide credentials directly via flags or environment variables:
72
+
73
+ | Flag | Environment Variable | Description |
74
+ |------|---------------------|-------------|
75
+ | `--api-key` | `STATECHANGE_API_KEY` | StateChange API key |
76
+ | `--instance` | `XANO_INSTANCE` | Xano instance hostname |
77
+ | `--workspace` | `XANO_WORKSPACE` | Workspace ID |
78
+ | `--token` | `XANO_TOKEN` | Xano API token |
79
+ | `--branch` | — | Branch ID (default: 0) |
80
+ | `--format` | — | Output format: `table`, `json`, or `yaml` |
81
+
82
+ All commands support `--format table` (default, human-readable), `--format json`, and `--format yaml`. The yaml format is recommended for AI/LLM consumption.
83
+
84
+ ## Commands
85
+
86
+ ### `inventory` — Workspace Overview
87
+
88
+ ```bash
89
+ sc-xano inventory workspace # Object counts summary
90
+ sc-xano inventory functions # List functions with tags
91
+ sc-xano inventory tables # List database tables
92
+ sc-xano inventory tasks # List background tasks
93
+ sc-xano inventory triggers # List triggers
94
+ sc-xano inventory addons # List addons
95
+ sc-xano inventory middleware # List middleware
96
+ sc-xano inventory mcp-servers # List MCP/toolset servers
97
+ ```
98
+
99
+ ### `performance` — Performance Analysis
100
+
101
+ Find slow endpoints, trace execution bottlenecks, and deep-dive into request stacks.
102
+
103
+ ```bash
104
+ # Top slowest endpoints (last 24 hours)
105
+ sc-xano performance top-endpoints
106
+ sc-xano performance top-endpoints --lookback 48 --limit 10
107
+
108
+ # Trace: aggregate stack analysis across multiple executions
109
+ sc-xano performance trace endpoint <query-id> --samples 10
110
+ sc-xano performance trace task <task-id> --samples 10
111
+ sc-xano performance trace trigger <trigger-id> --samples 10
112
+
113
+ # Deep-dive: full stack expansion for a single request
114
+ sc-xano performance deep-dive <request-id>
115
+
116
+ # Scan functions for nested slow steps
117
+ sc-xano performance scan-functions
118
+ sc-xano performance scan-functions --min-nesting 3
119
+
120
+ # Use yaml for AI-driven analysis
121
+ sc-xano performance top-endpoints --format yaml
122
+ sc-xano performance deep-dive <request-id> --format yaml
123
+ ```
124
+
125
+ **Trace** aggregates timing data across N samples, showing duration percentiles (avg, p50, p95, p99) and per-step breakdown by `_xsid`.
126
+
127
+ **Deep-dive** expands a single request's stack into a tree with direct vs rollup timing, percentage breakdowns, loop iteration counts, and warnings for slow steps inside loops (N+1 queries, lambda blocks, external API calls).
128
+
129
+ ### `xray` — Function Analysis
130
+
131
+ Analyze function internals: step hierarchy, performance warnings, dependencies.
132
+
133
+ ```bash
134
+ sc-xano xray function --id <function-id>
135
+ sc-xano xray scan-workspace
136
+ sc-xano xray scan-workspace --include-warnings
137
+ ```
138
+
139
+ ### `audit` — Workspace Auditing
140
+
141
+ ```bash
142
+ sc-xano audit workspace # API configurations
143
+ sc-xano audit swagger # Unsecured Swagger endpoints
144
+ sc-xano audit database # Table schemas and indexes
145
+ sc-xano audit middleware
146
+ sc-xano audit addons
147
+ sc-xano audit tasks
148
+ sc-xano audit triggers
149
+ sc-xano audit mcp-servers
150
+ ```
151
+
152
+ ### `secure` — Security Management
153
+
154
+ ```bash
155
+ sc-xano secure swagger --app-id <id> --disable # Disable Swagger
156
+ sc-xano secure swagger --app-id <id> --require-token # Require token
157
+ ```
158
+
159
+ ### `history` — Execution History
160
+
161
+ ```bash
162
+ sc-xano history requests # Recent API requests
163
+ sc-xano history requests --page 2 # Paginate
164
+ sc-xano history request <request-id> # Detailed request info
165
+ sc-xano history tasks <task-id> # Task execution history
166
+ sc-xano history task-run <task-id> <run-id> # Detailed task run
167
+ sc-xano history triggers <trigger-id> # Trigger history
168
+ sc-xano history mcp-servers <tool-id> # MCP server history
169
+ ```
170
+
171
+ ### `logs` — Log Retention Management
172
+
173
+ View and control how much execution history Xano retains per endpoint, task, or trigger.
174
+
175
+ ```bash
176
+ # View retention settings
177
+ sc-xano logs show # All objects
178
+ sc-xano logs show --custom-only # Only non-default settings
179
+ sc-xano logs show endpoint <id> # Single endpoint with parent app context
180
+ sc-xano logs show app <id> # App + all its endpoints
181
+
182
+ # Update retention
183
+ sc-xano logs set endpoint <id> --limit -1 # Unlimited (for debugging)
184
+ sc-xano logs set endpoint <id> --limit 100 # Default
185
+ sc-xano logs set endpoint <id> --limit 0 # Disable
186
+
187
+ # Watch for new executions in real-time
188
+ sc-xano logs watch endpoint <id>
189
+ ```
190
+
191
+ Useful when performance deep-dives show `stack_truncated: true` — set the limit to unlimited, trigger a new execution, then deep-dive the untruncated result.
192
+
193
+ ### `xanoscript` — XanoScript Generation & Conversion
194
+
195
+ ```bash
196
+ sc-xano xanoscript generate function <id>
197
+ sc-xano xanoscript generate table <id>
198
+ sc-xano xanoscript generate api <id>
199
+
200
+ sc-xano xanoscript export-all --type function
201
+ sc-xano xanoscript export-all --type table --output-dir ./backup
202
+
203
+ sc-xano xanoscript convert myfunction.xs
204
+ cat myfunction.xs | sc-xano xanoscript convert
205
+ ```
206
+
207
+ ### `health` — Instance Health (Master API)
208
+
209
+ ```bash
210
+ sc-xano health instances
211
+ sc-xano health database --instance-id <id>
212
+ sc-xano health clear-history --instance-id <id>
213
+ sc-xano health restart-tasks --instance-id <id>
214
+ ```
215
+
216
+ ### `flush` — Cache Management
217
+
218
+ ```bash
219
+ sc-xano flush # Clear cached sink data
220
+ ```
221
+
222
+ ## How It Works
223
+
224
+ This CLI uses Xano's private `api:mvp-admin` endpoints (the same APIs that power the Xano dashboard) to provide operational capabilities beyond the public Meta API.
225
+
226
+ | Capability | This CLI | Xano MCP |
227
+ |-----------|----------|----------|
228
+ | Live workspace data | Yes | No |
229
+ | Performance analysis | Yes | No |
230
+ | Execution history | Yes | No |
231
+ | Log retention management | Yes | No |
232
+ | XanoScript generation | Yes | No |
233
+ | XanoScript validation | No | Yes |
234
+ | XanoScript docs | No | Yes |
235
+ | Meta API docs | No | Yes |
236
+
237
+ ## AI Integration
238
+
239
+ The recommended way to use this CLI with AI coding assistants is to install the skills:
240
+
241
+ ```bash
242
+ npx skills add @statechange/xano-cli
243
+ ```
244
+
245
+ This teaches your AI agent how to use the CLI for workspace management and performance analysis workflows. Skills are included in the `skills/` directory of the package.
246
+
247
+ For manual use, add `--format yaml` to any command for the most token-efficient structured output.
248
+
249
+ ## License
250
+
251
+ MIT
package/dist/auth.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ /**
2
+ * StateChange CLI Authentication
3
+ * Manages long-lived API key from file, env var, or command line
4
+ */
5
+ export interface AuthConfig {
6
+ apiKey: string;
7
+ authToken?: string;
8
+ authTokenExpires?: number;
9
+ xanoInstance?: string;
10
+ xanoWorkspace?: number;
11
+ }
12
+ export declare function getAuthFilePath(): string;
13
+ export declare function loadAuthFromFile(): AuthConfig | null;
14
+ export declare function saveAuthToFile(config: AuthConfig): void;
15
+ export declare function getStateChangeApiKey(options?: {
16
+ apiKey?: string;
17
+ }): string | null;
18
+ /**
19
+ * Exchange API key for auth token
20
+ */
21
+ export declare function getAuthToken(apiKey: string): Promise<string>;
22
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,gBAAgB,IAAI,UAAU,GAAG,IAAI,CASpD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAQvD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CASjF;AAID;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkDlE"}
package/dist/auth.js ADDED
@@ -0,0 +1,94 @@
1
+ /**
2
+ * StateChange CLI Authentication
3
+ * Manages long-lived API key from file, env var, or command line
4
+ */
5
+ import { readFileSync, writeFileSync, mkdirSync } from "fs";
6
+ import { join } from "path";
7
+ import { homedir } from "os";
8
+ const AUTH_FILE_PATH = join(homedir(), ".statechange", "auth.json");
9
+ export function getAuthFilePath() {
10
+ return AUTH_FILE_PATH;
11
+ }
12
+ export function loadAuthFromFile() {
13
+ try {
14
+ const content = readFileSync(AUTH_FILE_PATH, "utf-8");
15
+ const config = JSON.parse(content);
16
+ if (!config.apiKey)
17
+ return null;
18
+ return config;
19
+ }
20
+ catch (e) {
21
+ return null;
22
+ }
23
+ }
24
+ export function saveAuthToFile(config) {
25
+ const dir = join(homedir(), ".statechange");
26
+ try {
27
+ mkdirSync(dir, { recursive: true });
28
+ }
29
+ catch (e) {
30
+ // Directory might already exist
31
+ }
32
+ writeFileSync(AUTH_FILE_PATH, JSON.stringify(config, null, 2), "utf-8");
33
+ }
34
+ export function getStateChangeApiKey(options) {
35
+ // 1. Command line flag
36
+ if (options?.apiKey)
37
+ return options.apiKey;
38
+ // 2. Environment variable
39
+ if (process.env.STATECHANGE_API_KEY)
40
+ return process.env.STATECHANGE_API_KEY;
41
+ // 3. Auth file
42
+ const auth = loadAuthFromFile();
43
+ if (auth?.apiKey)
44
+ return auth.apiKey;
45
+ return null;
46
+ }
47
+ const STATECHANGE_BACKEND_URL = "https://api.statechange.ai/api:jKMCYXQa/";
48
+ /**
49
+ * Exchange API key for auth token
50
+ */
51
+ export async function getAuthToken(apiKey) {
52
+ // Check if we have a cached valid token
53
+ const auth = loadAuthFromFile();
54
+ if (auth?.authToken &&
55
+ auth?.authTokenExpires &&
56
+ Date.now() < auth.authTokenExpires) {
57
+ return auth.authToken;
58
+ }
59
+ // Exchange API key for token
60
+ const response = await fetch(`${STATECHANGE_BACKEND_URL}auth/key`, {
61
+ method: "POST",
62
+ headers: {
63
+ "Content-Type": "application/json",
64
+ },
65
+ body: JSON.stringify({ key: apiKey }),
66
+ });
67
+ if (!response.ok) {
68
+ const errorText = await response.text();
69
+ if (response.status === 401) {
70
+ throw new Error("Invalid or expired API key");
71
+ }
72
+ throw new Error(`Failed to authenticate: ${response.status} ${response.statusText} - ${errorText}`);
73
+ }
74
+ const data = (await response.json());
75
+ const token = data.token;
76
+ // Cache the token (expires in 24 hours, cache for 23 hours to be safe)
77
+ const expiresAt = Date.now() + 23 * 60 * 60 * 1000; // 23 hours in milliseconds
78
+ if (auth) {
79
+ auth.authToken = token;
80
+ auth.authTokenExpires = expiresAt;
81
+ saveAuthToFile(auth);
82
+ }
83
+ else {
84
+ // Create new config with just the token (API key should already be saved)
85
+ const newAuth = loadAuthFromFile();
86
+ if (newAuth) {
87
+ newAuth.authToken = token;
88
+ newAuth.authTokenExpires = expiresAt;
89
+ saveAuthToFile(newAuth);
90
+ }
91
+ }
92
+ return token;
93
+ }
94
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Audit CLI Commands
3
+ */
4
+ import { Command } from "commander";
5
+ export declare function createAuditCommand(program: Command): Command;
6
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAwUlD"}