@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,333 @@
1
+ /**
2
+ * StateChange Backend Client - Fetch Xano token from StateChange backend
3
+ */
4
+ import { getStateChangeApiKey, getAuthToken, loadAuthFromFile, saveAuthToFile } from "./auth.js";
5
+ import { XanoClient } from "./xano-client.js";
6
+ import { resolve as dnsResolve } from "dns/promises";
7
+ const STATECHANGE_BACKEND_URL = "https://api.statechange.ai/api:jKMCYXQa/";
8
+ // Token health thresholds
9
+ const STALE_THRESHOLD_MS = 60 * 60 * 1000; // warn when < 1h remaining
10
+ async function fetchWithAuth(path, options = {}, apiKey) {
11
+ // Exchange API key for auth token
12
+ const authToken = await getAuthToken(apiKey);
13
+ const url = `${STATECHANGE_BACKEND_URL}${path}`;
14
+ return fetch(url, {
15
+ ...options,
16
+ headers: {
17
+ ...(options.headers || {}),
18
+ Authorization: `Bearer ${authToken}`,
19
+ "Content-Type": "application/json",
20
+ },
21
+ });
22
+ }
23
+ export async function listXanoTokens(apiKey) {
24
+ const res = await fetchWithAuth("xano-tokens", { method: "GET" }, apiKey);
25
+ if (!res.ok) {
26
+ const errorText = await res.text();
27
+ throw new Error(`Failed to list tokens: ${res.status} ${res.statusText} - ${errorText}`);
28
+ }
29
+ return (await res.json());
30
+ }
31
+ export async function getXanoToken(instanceId, apiKey) {
32
+ const res = await fetchWithAuth(`xano-tokens/${encodeURIComponent(instanceId)}`, { method: "GET" }, apiKey);
33
+ if (!res.ok) {
34
+ if (res.status === 404) {
35
+ throw new Error(`No token found for instance: ${instanceId}`);
36
+ }
37
+ const errorText = await res.text();
38
+ throw new Error(`Failed to get token: ${res.status} ${res.statusText} - ${errorText}`);
39
+ }
40
+ return (await res.json());
41
+ }
42
+ export async function getXanoMasterToken(apiKey) {
43
+ const res = await fetchWithAuth("xano-master-token", { method: "GET" }, apiKey);
44
+ if (!res.ok) {
45
+ const errorText = await res.text();
46
+ throw new Error(`Failed to get master token: ${res.status} ${res.statusText} - ${errorText}`);
47
+ }
48
+ return (await res.json());
49
+ }
50
+ export async function resolveMasterToken(options) {
51
+ // Direct token takes precedence
52
+ if (options.token)
53
+ return options.token;
54
+ // Environment variable
55
+ const envToken = process.env.XANO_MASTER_TOKEN;
56
+ if (envToken)
57
+ return envToken;
58
+ // Try StateChange backend
59
+ const apiKey = getStateChangeApiKey({ apiKey: options.apiKey });
60
+ if (apiKey) {
61
+ try {
62
+ const tokenData = await getXanoMasterToken(apiKey);
63
+ return tokenData.rawXanoToken;
64
+ }
65
+ catch (e) {
66
+ // Silently fail and fall through
67
+ }
68
+ }
69
+ return "";
70
+ }
71
+ /**
72
+ * Resolve a custom domain to its underlying .xano.io hostname via CNAME.
73
+ * Xano admin APIs (api:mvp-admin) are only served on the raw hostname,
74
+ * not on custom domains.
75
+ */
76
+ async function resolveXanoHostname(hostname) {
77
+ if (hostname.endsWith(".xano.io"))
78
+ return hostname;
79
+ try {
80
+ const records = await dnsResolve(hostname, "CNAME");
81
+ if (records.length > 0) {
82
+ // CNAME may have trailing dot, strip it
83
+ const cname = records[0].replace(/\.$/, "");
84
+ if (cname.endsWith(".xano.io"))
85
+ return cname;
86
+ // Could be chained (e.g. custom -> x.n7.xano.io -> n7.xano.io)
87
+ // The first xano.io CNAME is what we want
88
+ }
89
+ }
90
+ catch (e) {
91
+ // No CNAME record — hostname might already be correct
92
+ }
93
+ return hostname;
94
+ }
95
+ // Cache the token list to avoid redundant API calls within the same CLI invocation
96
+ let cachedTokenList = null;
97
+ async function getTokenList(apiKey) {
98
+ if (cachedTokenList)
99
+ return cachedTokenList;
100
+ const response = await listXanoTokens(apiKey);
101
+ cachedTokenList = response.tokens || [];
102
+ return cachedTokenList;
103
+ }
104
+ function freshTokenList(apiKey) {
105
+ cachedTokenList = null;
106
+ return getTokenList(apiKey);
107
+ }
108
+ export function checkTokenHealth(token) {
109
+ const updatedAt = token.updated_at ?? token.updatedAt ?? 0;
110
+ const ttl = (token.ttl ?? 86400) * 1000; // seconds → ms
111
+ const expiresAt = updatedAt + ttl;
112
+ const now = Date.now();
113
+ const ageHours = Math.round(((now - updatedAt) / 3600000) * 10) / 10;
114
+ const remainingMs = expiresAt - now;
115
+ const remainingHours = Math.round((remainingMs / 3600000) * 10) / 10;
116
+ if (updatedAt === 0) {
117
+ return { status: "unknown", updatedAt, ttl: token.ttl ?? 86400, expiresAt, ageHours, remainingHours, message: "Token age unknown" };
118
+ }
119
+ if (remainingMs > STALE_THRESHOLD_MS) {
120
+ return { status: "fresh", updatedAt, ttl: token.ttl ?? 86400, expiresAt, ageHours, remainingHours, message: "" };
121
+ }
122
+ if (remainingMs > 0) {
123
+ const mins = Math.floor(remainingMs / 60000);
124
+ return { status: "stale", updatedAt, ttl: token.ttl ?? 86400, expiresAt, ageHours, remainingHours, message: `Token expires in ${mins} minutes` };
125
+ }
126
+ const expiredAgo = Math.round((-remainingMs / 3600000) * 10) / 10;
127
+ return { status: "expired", updatedAt, ttl: token.ttl ?? 86400, expiresAt, ageHours, remainingHours, message: `Token expired ${expiredAgo} hours ago` };
128
+ }
129
+ export async function getTokenHealthForInstance(apiKey, instanceId) {
130
+ const tokens = await getTokenList(apiKey);
131
+ let token;
132
+ if (instanceId) {
133
+ token = tokens.find((t) => (t.instanceId || t.instance_id) === instanceId);
134
+ }
135
+ if (!token && tokens.length === 1) {
136
+ token = tokens[0];
137
+ }
138
+ if (!token)
139
+ return null;
140
+ return { token, health: checkTokenHealth(token) };
141
+ }
142
+ /** Print a refresh prompt and poll until the token is updated. Returns the fresh raw token. */
143
+ export async function waitForFreshToken(apiKey, instanceId, staleUpdatedAt, { timeoutMs = 300000, intervalMs = 5000 } = {}) {
144
+ console.error("");
145
+ console.error(" Your Xano session has expired.");
146
+ console.error(" To refresh it, open your Xano workspace in the browser");
147
+ console.error(" with the StateChange extension active:");
148
+ console.error("");
149
+ console.error(" https://app.xano.com");
150
+ console.error("");
151
+ console.error(" Waiting for token refresh... (Ctrl+C to cancel)");
152
+ console.error("");
153
+ const deadline = Date.now() + timeoutMs;
154
+ while (Date.now() < deadline) {
155
+ await new Promise((r) => setTimeout(r, intervalMs));
156
+ const tokens = await freshTokenList(apiKey);
157
+ const match = tokens.find((t) => (t.instanceId || t.instance_id) === instanceId);
158
+ if (match) {
159
+ const newUpdatedAt = match.updated_at ?? match.updatedAt ?? 0;
160
+ if (newUpdatedAt > staleUpdatedAt) {
161
+ const rawToken = match.rawXanoToken || match.raw_xano_token;
162
+ console.error(" Token refreshed! Continuing...");
163
+ console.error("");
164
+ return rawToken;
165
+ }
166
+ }
167
+ }
168
+ throw new Error("Timed out waiting for token refresh. Please open Xano with the StateChange extension and try again.");
169
+ }
170
+ export async function resolveInstance(options) {
171
+ let hostname = "";
172
+ // Direct flag takes precedence
173
+ if (options.instance) {
174
+ hostname = options.instance;
175
+ }
176
+ // Environment variable
177
+ if (!hostname && process.env.XANO_INSTANCE) {
178
+ hostname = process.env.XANO_INSTANCE;
179
+ }
180
+ // Saved instance from auth config
181
+ const auth = loadAuthFromFile();
182
+ if (!hostname && auth?.xanoInstance) {
183
+ hostname = auth.xanoInstance;
184
+ }
185
+ // Try StateChange backend — auto-select if only one instance
186
+ if (!hostname) {
187
+ const apiKey = getStateChangeApiKey({ apiKey: options.apiKey });
188
+ if (apiKey) {
189
+ try {
190
+ const tokens = await getTokenList(apiKey);
191
+ if (tokens.length === 1) {
192
+ const t = tokens[0];
193
+ hostname = t.instanceId || t.instance_id || "";
194
+ }
195
+ }
196
+ catch (e) {
197
+ // Silently fail
198
+ }
199
+ }
200
+ }
201
+ if (!hostname)
202
+ return "";
203
+ // Resolve custom domains to the real .xano.io hostname
204
+ // (admin APIs are only served on the raw Xano hostname)
205
+ hostname = await resolveXanoHostname(hostname);
206
+ // Cache the resolved hostname
207
+ if (auth && auth.xanoInstance !== hostname) {
208
+ auth.xanoInstance = hostname;
209
+ saveAuthToFile(auth);
210
+ }
211
+ return hostname;
212
+ }
213
+ export async function resolveWorkspace(options) {
214
+ if (options.workspace)
215
+ return parseInt(options.workspace);
216
+ if (process.env.XANO_WORKSPACE)
217
+ return parseInt(process.env.XANO_WORKSPACE);
218
+ // Saved workspace from auth config
219
+ const auth = loadAuthFromFile();
220
+ if (auth?.xanoWorkspace)
221
+ return auth.xanoWorkspace;
222
+ // Try from token list
223
+ const apiKey = getStateChangeApiKey({ apiKey: options.apiKey });
224
+ if (apiKey) {
225
+ try {
226
+ const tokens = await getTokenList(apiKey);
227
+ if (tokens.length === 1) {
228
+ const wsId = tokens[0].workspaceId || tokens[0].workspace_id;
229
+ if (wsId) {
230
+ if (auth) {
231
+ auth.xanoWorkspace = wsId;
232
+ saveAuthToFile(auth);
233
+ }
234
+ return wsId;
235
+ }
236
+ }
237
+ }
238
+ catch (e) {
239
+ // Silently fail
240
+ }
241
+ }
242
+ return 0;
243
+ }
244
+ export async function resolveXanoToken(options) {
245
+ const { instance, token } = options;
246
+ // Direct token takes precedence (no health check — user-provided)
247
+ if (token)
248
+ return token;
249
+ // Environment variable token (no health check — user-managed)
250
+ const envToken = process.env.XANO_TOKEN;
251
+ if (envToken)
252
+ return envToken;
253
+ // Try StateChange backend if authenticated — find matching token from list
254
+ const apiKey = getStateChangeApiKey({ apiKey: options.apiKey });
255
+ if (apiKey) {
256
+ try {
257
+ const tokens = await getTokenList(apiKey);
258
+ // Find token matching the instance, handling both camelCase and snake_case
259
+ let match = tokens.find((t) => {
260
+ const id = t.instanceId || t.instance_id;
261
+ return id === instance;
262
+ });
263
+ // Fallback: if only one token, use it regardless of instance match
264
+ if (!match && tokens.length === 1) {
265
+ match = tokens[0];
266
+ }
267
+ if (match) {
268
+ const rawToken = match.rawXanoToken || match.raw_xano_token;
269
+ if (!rawToken)
270
+ return "";
271
+ // Health check: warn if token is stale/expired (but still try — Xano may accept it)
272
+ if (!options.skipHealthCheck) {
273
+ const health = checkTokenHealth(match);
274
+ if (health.status === "expired") {
275
+ console.error(`⚠️ Xano token looks expired (${health.message}). Will try anyway...`);
276
+ }
277
+ else if (health.status === "stale") {
278
+ console.error(`⚠️ ${health.message}. Consider opening Xano to refresh your session.`);
279
+ }
280
+ }
281
+ return rawToken;
282
+ }
283
+ }
284
+ catch (e) {
285
+ // Silently fail and fall through
286
+ }
287
+ }
288
+ return "";
289
+ }
290
+ /**
291
+ * Resolve instance/workspace/token and create a XanoClient with auto-refresh on 401.
292
+ * Replaces the per-command makeClient() boilerplate.
293
+ */
294
+ export async function makeClient(options) {
295
+ const instance = await resolveInstance({ instance: options.instance, apiKey: options.apiKey });
296
+ if (!instance) {
297
+ console.error("Error: Xano instance required (--instance or XANO_INSTANCE env var)");
298
+ process.exit(1);
299
+ }
300
+ const token = await resolveXanoToken({ instance, token: options.token, apiKey: options.apiKey });
301
+ if (!token) {
302
+ console.error("Error: Xano token required (--token, XANO_TOKEN, or StateChange backend via 'sc-xano auth init')");
303
+ process.exit(1);
304
+ }
305
+ const workspace = await resolveWorkspace({ workspace: options.workspace, apiKey: options.apiKey });
306
+ if (!workspace) {
307
+ console.error("Error: Workspace ID required (--workspace or XANO_WORKSPACE env var)");
308
+ process.exit(1);
309
+ }
310
+ const branchId = parseInt(options.branch || "0");
311
+ // Wire up 401 refresh: on Xano token rejection, poll SC backend for a fresh token
312
+ const apiKey = getStateChangeApiKey({ apiKey: options.apiKey });
313
+ const onTokenExpired = apiKey
314
+ ? async () => {
315
+ // First, check if backend has a newer token already (e.g. user refreshed recently)
316
+ const tokens = await freshTokenList(apiKey);
317
+ const match = tokens.find((t) => (t.instanceId || t.instance_id) === instance) || (tokens.length === 1 ? tokens[0] : null);
318
+ if (!match)
319
+ throw new Error("No token found");
320
+ const matchInstance = match.instanceId || match.instance_id || instance;
321
+ const currentUpdatedAt = match.updated_at ?? match.updatedAt ?? 0;
322
+ // If the backend token is recent (updated in last 60s), just return it
323
+ if (Date.now() - currentUpdatedAt < 60000) {
324
+ return match.rawXanoToken || match.raw_xano_token || "";
325
+ }
326
+ // Otherwise, prompt user and poll for refresh
327
+ return await waitForFreshToken(apiKey, matchInstance, currentUpdatedAt);
328
+ }
329
+ : undefined;
330
+ const client = new XanoClient({ instance, token, onTokenExpired });
331
+ return { client, instance, workspace, branchId };
332
+ }
333
+ //# sourceMappingURL=registry-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-client.js","sourceRoot":"","sources":["../src/registry-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Xano API Client - Portable version for CLI use
3
+ * Based on src/workers/xanoapi.ts
4
+ */
5
+ export interface XanoClientConfig {
6
+ instance: string;
7
+ token: string;
8
+ }
9
+ /** Flush all sink caches (or a specific key) */
10
+ export declare function flushSinkCache(key?: string): void;
11
+ export declare class XanoClient {
12
+ private instance;
13
+ private token;
14
+ private onTokenExpired?;
15
+ constructor(config: XanoClientConfig & {
16
+ onTokenExpired?: () => Promise<string>;
17
+ });
18
+ /** Flush the sink cache (call after writes) */
19
+ flushCache(): void;
20
+ private getCached;
21
+ private setCache;
22
+ fetch(path: string, options?: RequestInit): Promise<Response>;
23
+ fetchJson<T = Record<string, any>>(path: string, options?: RequestInit, attempts?: number, attemptTimeout?: number): Promise<T>;
24
+ getWorkspaces(): Promise<Record<string, any>>;
25
+ getFunctions(workspaceId: number, branchId?: number): Promise<{
26
+ functions: any[];
27
+ }>;
28
+ /** Get a single function by plucking from the sink list */
29
+ getFunction(functionId: number, workspaceId?: number, branchId?: number): Promise<any>;
30
+ getAPIAppsAndQueries(workspaceId: number, branchId?: number): Promise<{
31
+ apps: any[];
32
+ queries: any[];
33
+ }>;
34
+ getApp(appId: number, branchId: number): Promise<Record<string, any>>;
35
+ updateApp(app: any): Promise<Record<string, any>>;
36
+ getQuery(queryId: number): Promise<Record<string, any>>;
37
+ updateQuery(query: any): Promise<Record<string, any>>;
38
+ updateTask(task: any): Promise<Record<string, any>>;
39
+ updateTrigger(trigger: any): Promise<Record<string, any>>;
40
+ getRequestHistory(workspaceId: number, page?: number, branchId?: number): Promise<{
41
+ curPage: number;
42
+ items: any[];
43
+ nextPage?: number;
44
+ }>;
45
+ getRequestHistoryForQuery(queryId: number, page?: number, branchId?: number): Promise<{
46
+ curPage: number;
47
+ items: any[];
48
+ nextPage?: number;
49
+ }>;
50
+ getRequest(requestId: number): Promise<Record<string, any>>;
51
+ getTasks(workspaceId: number, branchId?: number): Promise<any[]>;
52
+ getTaskHistory(taskId: number, page?: number): Promise<{
53
+ curPage: number;
54
+ items: any[];
55
+ nextPage?: number;
56
+ }>;
57
+ getTriggers(workspaceId: number, branchId?: number): Promise<any[]>;
58
+ getTriggerHistory(triggerId: number, branchId?: number, page?: number): Promise<{
59
+ curPage: number;
60
+ items: any[];
61
+ nextPage?: number;
62
+ }>;
63
+ getMCPServers(workspaceId: number, branchId?: number): Promise<any[]>;
64
+ getMCPServerHistory(toolId: number, branchId?: number, page?: number): Promise<{
65
+ curPage: number;
66
+ items: any[];
67
+ nextPage?: number;
68
+ }>;
69
+ getMiddleware(workspaceId: number, branchId?: number): Promise<any[]>;
70
+ getAddons(workspaceId: number, branchId?: number): Promise<any[]>;
71
+ getWorkspaceSink(workspaceId: number): Promise<{
72
+ dbos: any[];
73
+ workspace?: any;
74
+ branch?: any;
75
+ }>;
76
+ /** Get a single table by plucking from the workspace sink */
77
+ getTable(tableId: number, workspaceId?: number): Promise<any>;
78
+ getTaskHistoryItem(taskId: number, runId: number): Promise<any>;
79
+ generateXanoScript(workspaceId: number, data: any, kind: string): Promise<{
80
+ status: string;
81
+ payload: any;
82
+ }>;
83
+ convertXanoScript(workspaceId: number, script: string): Promise<{
84
+ status: string;
85
+ payload: any;
86
+ }>;
87
+ }
88
+ /**
89
+ * Xano Master API Client - for api:master endpoints on app.xano.com
90
+ */
91
+ export interface MasterClientConfig {
92
+ token: string;
93
+ }
94
+ export declare class XanoMasterClient {
95
+ private token;
96
+ constructor(config: MasterClientConfig);
97
+ private fetchJson;
98
+ getInstances(): Promise<any[]>;
99
+ getInstanceDatabases(instanceId: number): Promise<any>;
100
+ clearInstanceDatabases(instanceId: number, tables: string[], force?: boolean): Promise<void>;
101
+ restartDeployment(instanceId: number, name: string): Promise<void>;
102
+ }
103
+ //# sourceMappingURL=xano-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xano-client.d.ts","sourceRoot":"","sources":["../src/xano-client.ts"],"names":[],"mappings":"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"}