@quarri/claude-data-tools 1.0.1 → 1.1.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.
- package/.claude-plugin/plugin.json +12 -1
- package/README.md +2 -2
- package/dist/api/client.d.ts +36 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +58 -2
- package/dist/api/client.js.map +1 -1
- package/dist/auth-cli.d.ts +7 -0
- package/dist/auth-cli.d.ts.map +1 -0
- package/dist/auth-cli.js +361 -0
- package/dist/auth-cli.js.map +1 -0
- package/dist/index.js +227 -17
- package/dist/index.js.map +1 -1
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +199 -283
- package/dist/tools/definitions.js.map +1 -1
- package/package.json +8 -2
- package/skills/SKILL_CHAINING_DEMO.md +335 -0
- package/skills/TEST_SCENARIOS.md +189 -0
- package/skills/quarri-analyze/SKILL.md +274 -0
- package/skills/quarri-chart/SKILL.md +415 -0
- package/skills/quarri-debug-connector/SKILL.md +338 -0
- package/skills/quarri-diagnose/SKILL.md +372 -0
- package/skills/quarri-explain/SKILL.md +184 -0
- package/skills/quarri-extract/SKILL.md +353 -0
- package/skills/quarri-insights/SKILL.md +328 -0
- package/skills/quarri-metric/SKILL.md +400 -0
- package/skills/quarri-query/SKILL.md +159 -0
|
@@ -15,5 +15,16 @@
|
|
|
15
15
|
"args": ["${pluginDir}/dist/index.js"]
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
|
-
"skills": [
|
|
18
|
+
"skills": [
|
|
19
|
+
"quarri-guide",
|
|
20
|
+
"quarri-query",
|
|
21
|
+
"quarri-analyze",
|
|
22
|
+
"quarri-chart",
|
|
23
|
+
"quarri-explain",
|
|
24
|
+
"quarri-insights",
|
|
25
|
+
"quarri-metric",
|
|
26
|
+
"quarri-diagnose",
|
|
27
|
+
"quarri-extract",
|
|
28
|
+
"quarri-debug-connector"
|
|
29
|
+
]
|
|
19
30
|
}
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ claude /install quarri
|
|
|
13
13
|
### Manual Installation
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
npm install -g @
|
|
16
|
+
npm install -g @quarri/claude-data-tools
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
Then add to your Claude Code configuration:
|
|
@@ -160,6 +160,6 @@ MIT
|
|
|
160
160
|
|
|
161
161
|
## Support
|
|
162
162
|
|
|
163
|
-
- GitHub Issues: https://github.com/
|
|
163
|
+
- GitHub Issues: https://github.com/djayatillake/quarri-claude-plugin/issues
|
|
164
164
|
- Documentation: https://docs.quarri.ai
|
|
165
165
|
- Email: support@quarri.ai
|
package/dist/api/client.d.ts
CHANGED
|
@@ -22,6 +22,25 @@ interface AuthResponse {
|
|
|
22
22
|
display_name: string;
|
|
23
23
|
access_level: string;
|
|
24
24
|
}>;
|
|
25
|
+
trial_info?: {
|
|
26
|
+
is_trial: boolean;
|
|
27
|
+
expires_at: string;
|
|
28
|
+
days_remaining: number;
|
|
29
|
+
max_data_gb: number;
|
|
30
|
+
upgrade_contact: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
interface TrialStatusResponse {
|
|
34
|
+
is_trial: boolean;
|
|
35
|
+
database_name?: string;
|
|
36
|
+
display_name?: string;
|
|
37
|
+
days_remaining?: number;
|
|
38
|
+
expires_at?: string;
|
|
39
|
+
data_limit_bytes?: number;
|
|
40
|
+
data_limit_gb?: number;
|
|
41
|
+
signup_type?: string;
|
|
42
|
+
upgrade_contact?: string;
|
|
43
|
+
message?: string;
|
|
25
44
|
}
|
|
26
45
|
interface ToolResult {
|
|
27
46
|
success: boolean;
|
|
@@ -37,7 +56,7 @@ export declare class QuarriApiClient {
|
|
|
37
56
|
*/
|
|
38
57
|
setToken(token: string): void;
|
|
39
58
|
/**
|
|
40
|
-
* Make an HTTP request to the API
|
|
59
|
+
* Make an HTTP request to the API with timeout support
|
|
41
60
|
*/
|
|
42
61
|
private request;
|
|
43
62
|
/**
|
|
@@ -56,6 +75,22 @@ export declare class QuarriApiClient {
|
|
|
56
75
|
* Validate an existing token
|
|
57
76
|
*/
|
|
58
77
|
validateToken(token: string): Promise<AuthResponse>;
|
|
78
|
+
/**
|
|
79
|
+
* Initiate signup for a new organization
|
|
80
|
+
*/
|
|
81
|
+
initiateSignup(email: string, orgName: string, includeDemoData: boolean): Promise<AuthResponse>;
|
|
82
|
+
/**
|
|
83
|
+
* Complete signup by verifying the code
|
|
84
|
+
*/
|
|
85
|
+
completeSignup(email: string, code: string): Promise<AuthResponse>;
|
|
86
|
+
/**
|
|
87
|
+
* Get trial status for the authenticated user
|
|
88
|
+
*/
|
|
89
|
+
getTrialStatus(): Promise<ApiResponse<TrialStatusResponse>>;
|
|
90
|
+
/**
|
|
91
|
+
* Delete the authenticated user's trial account and organization
|
|
92
|
+
*/
|
|
93
|
+
deleteAccount(): Promise<AuthResponse>;
|
|
59
94
|
/**
|
|
60
95
|
* List available tools
|
|
61
96
|
*/
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,UAAU,WAAW,CAAC,CAAC,GAAG,OAAO;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,CAAC,CAAC;CACV;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,UAAU,CAAC,EAAE;QACX,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAuB;gBAExB,OAAO,CAAC,EAAE,MAAM;IAI5B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;OAEG;YACW,OAAO;IAsDrB;;OAEG;IACG,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAenE;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsBpE;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsB7E;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2BzD;;OAEG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,OAAO,GACvB,OAAO,CAAC,YAAY,CAAC;IAexB;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAuBxE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAIjE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC;IAiB5C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAI5E;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAI1C;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,UAAU,CAAC;IAmBtB;;OAEG;IACG,aAAa,IAAI,OAAO,CAC5B,WAAW,CAAC;QACV,SAAS,EAAE,KAAK,CAAC;YACf,aAAa,EAAE,MAAM,CAAC;YACtB,YAAY,EAAE,MAAM,CAAC;YACrB,YAAY,EAAE,MAAM,CAAC;SACtB,CAAC,CAAC;KACJ,CAAC,CACH;IAID;;OAEG;IACG,YAAY,CAChB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,EAC7D,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,UAAQ,GAClB,OAAO,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC,CAAC;IASlD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAGlE"}
|
package/dist/api/client.js
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.QuarriApiClient = void 0;
|
|
8
8
|
const DEFAULT_API_URL = 'https://app.quarri.ai';
|
|
9
|
+
const DEFAULT_TIMEOUT = 60000; // 60 seconds for most operations
|
|
10
|
+
const LONG_TIMEOUT = 180000; // 3 minutes for analysis pipelines
|
|
9
11
|
class QuarriApiClient {
|
|
10
12
|
baseUrl;
|
|
11
13
|
token = null;
|
|
@@ -19,9 +21,9 @@ class QuarriApiClient {
|
|
|
19
21
|
this.token = token;
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
22
|
-
* Make an HTTP request to the API
|
|
24
|
+
* Make an HTTP request to the API with timeout support
|
|
23
25
|
*/
|
|
24
|
-
async request(method, path, body, useAuth = true) {
|
|
26
|
+
async request(method, path, body, useAuth = true, timeout = DEFAULT_TIMEOUT) {
|
|
25
27
|
const url = `${this.baseUrl}${path}`;
|
|
26
28
|
const headers = {
|
|
27
29
|
'Content-Type': 'application/json',
|
|
@@ -29,12 +31,17 @@ class QuarriApiClient {
|
|
|
29
31
|
if (useAuth && this.token) {
|
|
30
32
|
headers['Authorization'] = `Bearer ${this.token}`;
|
|
31
33
|
}
|
|
34
|
+
// Create abort controller for timeout
|
|
35
|
+
const controller = new AbortController();
|
|
36
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
32
37
|
try {
|
|
33
38
|
const response = await fetch(url, {
|
|
34
39
|
method,
|
|
35
40
|
headers,
|
|
36
41
|
body: body ? JSON.stringify(body) : undefined,
|
|
42
|
+
signal: controller.signal,
|
|
37
43
|
});
|
|
44
|
+
clearTimeout(timeoutId);
|
|
38
45
|
const data = await response.json();
|
|
39
46
|
if (!response.ok) {
|
|
40
47
|
return {
|
|
@@ -45,6 +52,10 @@ class QuarriApiClient {
|
|
|
45
52
|
return { success: true, data: data };
|
|
46
53
|
}
|
|
47
54
|
catch (error) {
|
|
55
|
+
clearTimeout(timeoutId);
|
|
56
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
57
|
+
return { success: false, error: `Request timeout after ${timeout / 1000}s` };
|
|
58
|
+
}
|
|
48
59
|
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
49
60
|
return { success: false, error: message };
|
|
50
61
|
}
|
|
@@ -112,6 +123,51 @@ class QuarriApiClient {
|
|
|
112
123
|
databases: data.databases,
|
|
113
124
|
};
|
|
114
125
|
}
|
|
126
|
+
// ==================== Self-Service Signup Methods ====================
|
|
127
|
+
/**
|
|
128
|
+
* Initiate signup for a new organization
|
|
129
|
+
*/
|
|
130
|
+
async initiateSignup(email, orgName, includeDemoData) {
|
|
131
|
+
const result = await this.request('POST', '/api/auth/cli/initiate-signup', { email, org_name: orgName, include_demo_data: includeDemoData }, false);
|
|
132
|
+
if (!result.success) {
|
|
133
|
+
return { success: false, error: result.error };
|
|
134
|
+
}
|
|
135
|
+
return { success: true, ...result.data };
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Complete signup by verifying the code
|
|
139
|
+
*/
|
|
140
|
+
async completeSignup(email, code) {
|
|
141
|
+
const result = await this.request('POST', '/api/auth/cli/complete-signup', { email, code }, false);
|
|
142
|
+
if (!result.success) {
|
|
143
|
+
return { success: false, error: result.error };
|
|
144
|
+
}
|
|
145
|
+
const data = result.data;
|
|
146
|
+
return {
|
|
147
|
+
success: true,
|
|
148
|
+
token: data.token,
|
|
149
|
+
expiresAt: data.expiresAt,
|
|
150
|
+
user: data.user,
|
|
151
|
+
databases: data.databases,
|
|
152
|
+
trial_info: data.trial_info,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get trial status for the authenticated user
|
|
157
|
+
*/
|
|
158
|
+
async getTrialStatus() {
|
|
159
|
+
return this.request('GET', '/api/auth/cli/trial-status');
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Delete the authenticated user's trial account and organization
|
|
163
|
+
*/
|
|
164
|
+
async deleteAccount() {
|
|
165
|
+
const result = await this.request('DELETE', '/api/auth/cli/delete-account', undefined, true);
|
|
166
|
+
if (!result.success) {
|
|
167
|
+
return { success: false, error: result.error };
|
|
168
|
+
}
|
|
169
|
+
return { success: true, ...result.data };
|
|
170
|
+
}
|
|
115
171
|
// ==================== Tool Methods ====================
|
|
116
172
|
/**
|
|
117
173
|
* List available tools
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,MAAM,eAAe,GAAG,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAChD,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,iCAAiC;AAChE,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,mCAAmC;AAmDhE,MAAa,eAAe;IAClB,OAAO,CAAS;IAChB,KAAK,GAAkB,IAAI,CAAC;IAEpC,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,eAAe,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CACnB,MAAc,EACd,IAAY,EACZ,IAAc,EACd,OAAO,GAAG,IAAI,EACd,OAAO,GAAG,eAAe;QAEzB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;QACpD,CAAC;QAED,sCAAsC;QACtC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7C,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA4B,CAAC;YAE7D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE;iBACvE,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAS,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YAC/E,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,yDAAyD;IAEzD;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAC,KAAa;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,MAAM,EACN,4BAA4B,EAC5B,EAAE,KAAK,EAAE,EACT,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,IAAY;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,MAAM,EACN,2BAA2B,EAC3B,EAAE,KAAK,EAAE,IAAI,EAAE,EACf,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAoB,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,WAAmB;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,MAAM,EACN,6BAA6B,EAC7B,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,EACpC,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAoB,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,MAAM,EACN,8BAA8B,EAC9B,EAAE,EACF,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QAEtB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAoB,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,wEAAwE;IAExE;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,KAAa,EACb,OAAe,EACf,eAAwB;QAExB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,MAAM,EACN,+BAA+B,EAC/B,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,EAChE,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,KAAa,EAAE,IAAY;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,MAAM,EACN,+BAA+B,EAC/B,EAAE,KAAK,EAAE,IAAI,EAAE,EACf,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAoB,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,OAAO,CAAsB,KAAK,EAAE,4BAA4B,CAAC,CAAC;IAChF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,QAAQ,EACR,8BAA8B,EAC9B,SAAS,EACT,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,yDAAyD;IAEzD;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,QAAgB;QAEhB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,QAAgB,EAChB,IAA6B,EAC7B,YAAqB;QAErB,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,CAAC;QAC/C,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QACpC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,MAAM,EACN,iBAAiB,QAAQ,EAAE,EAC3B,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,OAAO,MAAM,CAAC,IAAkB,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QASjB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,KAA6D,EAC7D,YAAqB,EACrB,WAAW,GAAG,KAAK;QAEnB,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;QAC5E,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;CACF;AApUD,0CAoUC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-cli.d.ts","sourceRoot":"","sources":["../src/auth-cli.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|
package/dist/auth-cli.js
ADDED
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Quarri CLI Authentication Tool
|
|
5
|
+
* Run with: npx @quarri/claude-data-tools auth
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
const client_js_1 = require("./api/client.js");
|
|
42
|
+
const token_store_js_1 = require("./auth/token-store.js");
|
|
43
|
+
const readline = __importStar(require("readline"));
|
|
44
|
+
const client = new client_js_1.QuarriApiClient();
|
|
45
|
+
function createReadline() {
|
|
46
|
+
return readline.createInterface({
|
|
47
|
+
input: process.stdin,
|
|
48
|
+
output: process.stdout,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async function prompt(rl, question) {
|
|
52
|
+
return new Promise((resolve) => {
|
|
53
|
+
rl.question(question, (answer) => {
|
|
54
|
+
resolve(answer.trim());
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async function login() {
|
|
59
|
+
const rl = createReadline();
|
|
60
|
+
try {
|
|
61
|
+
console.log('\n🔐 Quarri CLI Authentication\n');
|
|
62
|
+
// Check for existing credentials
|
|
63
|
+
const existing = (0, token_store_js_1.loadCredentials)();
|
|
64
|
+
if (existing) {
|
|
65
|
+
console.log(`Currently authenticated as: ${existing.email}`);
|
|
66
|
+
const answer = await prompt(rl, 'Re-authenticate? (y/n): ');
|
|
67
|
+
if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
|
|
68
|
+
console.log('Keeping existing credentials.');
|
|
69
|
+
rl.close();
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const email = await prompt(rl, 'Enter your email: ');
|
|
74
|
+
if (!email || !email.includes('@')) {
|
|
75
|
+
console.error('Invalid email address');
|
|
76
|
+
rl.close();
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
console.log('\nRequesting verification code...');
|
|
80
|
+
const requestResult = await client.requestVerificationCode(email);
|
|
81
|
+
if (!requestResult.success) {
|
|
82
|
+
console.error(`Failed to request code: ${requestResult.error}`);
|
|
83
|
+
rl.close();
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
console.log('✓ Verification code sent to your email.\n');
|
|
87
|
+
const code = await prompt(rl, 'Enter the 6-digit code: ');
|
|
88
|
+
if (!code || code.length !== 6) {
|
|
89
|
+
console.error('Invalid verification code');
|
|
90
|
+
rl.close();
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
console.log('Verifying...');
|
|
94
|
+
const verifyResult = await client.verifyCode(email, code);
|
|
95
|
+
if (!verifyResult.success) {
|
|
96
|
+
console.error(`Verification failed: ${verifyResult.error}`);
|
|
97
|
+
rl.close();
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
const credentials = {
|
|
101
|
+
token: verifyResult.token,
|
|
102
|
+
email: verifyResult.user.email,
|
|
103
|
+
role: verifyResult.user.role,
|
|
104
|
+
databases: verifyResult.databases,
|
|
105
|
+
expiresAt: verifyResult.expiresAt,
|
|
106
|
+
};
|
|
107
|
+
(0, token_store_js_1.saveCredentials)(credentials);
|
|
108
|
+
console.log('\n✓ Authenticated successfully!\n');
|
|
109
|
+
console.log(` Email: ${credentials.email}`);
|
|
110
|
+
console.log(` Role: ${credentials.role}`);
|
|
111
|
+
console.log(` Databases: ${credentials.databases.map(d => d.display_name || d.database_name).join(', ')}`);
|
|
112
|
+
console.log('\nYou can now use Quarri tools in Claude Code.');
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
rl.close();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async function logout() {
|
|
119
|
+
(0, token_store_js_1.clearCredentials)();
|
|
120
|
+
console.log('✓ Logged out. Credentials cleared.');
|
|
121
|
+
}
|
|
122
|
+
async function status() {
|
|
123
|
+
const credentials = (0, token_store_js_1.loadCredentials)();
|
|
124
|
+
if (!credentials) {
|
|
125
|
+
console.log('Not authenticated.');
|
|
126
|
+
console.log('Run: npx @quarri/claude-data-tools auth');
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
console.log('\n🔐 Quarri Authentication Status\n');
|
|
130
|
+
console.log(` Email: ${credentials.email}`);
|
|
131
|
+
console.log(` Role: ${credentials.role}`);
|
|
132
|
+
console.log(` Expires: ${credentials.expiresAt}`);
|
|
133
|
+
console.log(` Databases:`);
|
|
134
|
+
for (const db of credentials.databases) {
|
|
135
|
+
console.log(` - ${db.display_name || db.database_name} (${db.access_level})`);
|
|
136
|
+
}
|
|
137
|
+
if (credentials.selectedDatabase) {
|
|
138
|
+
console.log(` Selected: ${credentials.selectedDatabase}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async function verify(email, code) {
|
|
142
|
+
if (!email || !code) {
|
|
143
|
+
console.error('Usage: quarri-auth verify <email> <code>');
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
console.log('Verifying...');
|
|
147
|
+
const verifyResult = await client.verifyCode(email, code);
|
|
148
|
+
if (!verifyResult.success) {
|
|
149
|
+
console.error(`Verification failed: ${verifyResult.error}`);
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
const credentials = {
|
|
153
|
+
token: verifyResult.token,
|
|
154
|
+
email: verifyResult.user.email,
|
|
155
|
+
role: verifyResult.user.role,
|
|
156
|
+
databases: verifyResult.databases,
|
|
157
|
+
expiresAt: verifyResult.expiresAt,
|
|
158
|
+
};
|
|
159
|
+
(0, token_store_js_1.saveCredentials)(credentials);
|
|
160
|
+
console.log('\n✓ Authenticated successfully!\n');
|
|
161
|
+
console.log(` Email: ${credentials.email}`);
|
|
162
|
+
console.log(` Role: ${credentials.role}`);
|
|
163
|
+
console.log(` Databases: ${credentials.databases.map(d => d.display_name || d.database_name).join(', ')}`);
|
|
164
|
+
}
|
|
165
|
+
async function requestCode(email) {
|
|
166
|
+
if (!email) {
|
|
167
|
+
console.error('Usage: quarri-auth request <email>');
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
console.log(`Requesting verification code for ${email}...`);
|
|
171
|
+
const result = await client.requestVerificationCode(email);
|
|
172
|
+
if (!result.success) {
|
|
173
|
+
console.error(`Failed to request code: ${result.error}`);
|
|
174
|
+
process.exit(1);
|
|
175
|
+
}
|
|
176
|
+
console.log('✓ Verification code sent. Check your email.');
|
|
177
|
+
console.log(`\nThen run: quarri-auth verify ${email} <code>`);
|
|
178
|
+
}
|
|
179
|
+
async function signup() {
|
|
180
|
+
const rl = createReadline();
|
|
181
|
+
try {
|
|
182
|
+
console.log('\n🚀 Create a Quarri Organization\n');
|
|
183
|
+
console.log('Start a 7-day free trial with up to 1GB of data.\n');
|
|
184
|
+
const email = await prompt(rl, 'Email: ');
|
|
185
|
+
if (!email || !email.includes('@')) {
|
|
186
|
+
console.error('Invalid email address');
|
|
187
|
+
rl.close();
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
const orgName = await prompt(rl, 'Organization name: ');
|
|
191
|
+
if (!orgName || orgName.length < 2) {
|
|
192
|
+
console.error('Organization name must be at least 2 characters');
|
|
193
|
+
rl.close();
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
196
|
+
// Explain the two paths clearly
|
|
197
|
+
console.log('\nChoose your setup:\n');
|
|
198
|
+
console.log(' 1. Superstore Demo (Recommended for trying Quarri)');
|
|
199
|
+
console.log(' A ready-to-use retail analytics dataset with:');
|
|
200
|
+
console.log(' - 51,000+ orders across global markets');
|
|
201
|
+
console.log(' - Sales, profit, shipping, and customer data');
|
|
202
|
+
console.log(' - Pre-configured for immediate querying');
|
|
203
|
+
console.log('');
|
|
204
|
+
console.log(' 2. Custom Setup (For your own data)');
|
|
205
|
+
console.log(' An empty database where you can:');
|
|
206
|
+
console.log(' - Connect your own data sources');
|
|
207
|
+
console.log(' - Upload CSVs');
|
|
208
|
+
console.log(' - Build your data model from scratch');
|
|
209
|
+
console.log('');
|
|
210
|
+
const choice = await prompt(rl, 'Enter 1 or 2: ');
|
|
211
|
+
const useSuperstore = choice === '1';
|
|
212
|
+
console.log('\nRequesting verification code...');
|
|
213
|
+
const initResult = await client.initiateSignup(email, orgName, useSuperstore);
|
|
214
|
+
if (!initResult.success) {
|
|
215
|
+
console.error(`Failed to initiate signup: ${initResult.error}`);
|
|
216
|
+
rl.close();
|
|
217
|
+
process.exit(1);
|
|
218
|
+
}
|
|
219
|
+
console.log('\n✓ Verification code sent to your email.\n');
|
|
220
|
+
const code = await prompt(rl, 'Enter 6-digit code: ');
|
|
221
|
+
if (!code || code.length !== 6) {
|
|
222
|
+
console.error('Invalid verification code');
|
|
223
|
+
rl.close();
|
|
224
|
+
process.exit(1);
|
|
225
|
+
}
|
|
226
|
+
console.log('Creating organization...');
|
|
227
|
+
const result = await client.completeSignup(email, code);
|
|
228
|
+
if (!result.success) {
|
|
229
|
+
console.error(`Signup failed: ${result.error}`);
|
|
230
|
+
rl.close();
|
|
231
|
+
process.exit(1);
|
|
232
|
+
}
|
|
233
|
+
// Save credentials
|
|
234
|
+
const credentials = {
|
|
235
|
+
token: result.token,
|
|
236
|
+
email: result.user.email,
|
|
237
|
+
role: result.user.role,
|
|
238
|
+
databases: result.databases,
|
|
239
|
+
expiresAt: result.expiresAt,
|
|
240
|
+
};
|
|
241
|
+
(0, token_store_js_1.saveCredentials)(credentials);
|
|
242
|
+
// Display success message
|
|
243
|
+
console.log('\n✓ Organization created!\n');
|
|
244
|
+
console.log(` Database: ${result.databases[0]?.display_name || result.databases[0]?.database_name}`);
|
|
245
|
+
if (result.trial_info) {
|
|
246
|
+
// Parse and format the expiration date
|
|
247
|
+
const expiresDate = new Date(result.trial_info.expires_at);
|
|
248
|
+
const formattedDate = expiresDate.toLocaleDateString('en-US', {
|
|
249
|
+
year: 'numeric',
|
|
250
|
+
month: 'long',
|
|
251
|
+
day: 'numeric',
|
|
252
|
+
});
|
|
253
|
+
console.log(` Trial expires: ${formattedDate}`);
|
|
254
|
+
console.log(` Data limit: ${result.trial_info.max_data_gb}GB`);
|
|
255
|
+
}
|
|
256
|
+
if (useSuperstore) {
|
|
257
|
+
console.log('\n Your database is ready! Try asking questions like:');
|
|
258
|
+
console.log(' "Show me total sales by category"');
|
|
259
|
+
console.log(' "Which products have the highest profit margin?"');
|
|
260
|
+
console.log(' "What are the sales trends by region?"');
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
console.log('\n Your empty database is ready. Next steps:');
|
|
264
|
+
console.log(' - Use /quarri-extract to connect data sources');
|
|
265
|
+
console.log(' - Upload CSVs with quarri_upload_csv');
|
|
266
|
+
console.log(' - Build your data model with /quarri-model');
|
|
267
|
+
}
|
|
268
|
+
console.log(`\n To upgrade to a full account: contact ${result.trial_info?.upgrade_contact || 'theo@quarri.ai'}\n`);
|
|
269
|
+
console.log('You can now use Quarri tools in Claude Code.');
|
|
270
|
+
}
|
|
271
|
+
finally {
|
|
272
|
+
rl.close();
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
async function deleteAccount() {
|
|
276
|
+
const rl = createReadline();
|
|
277
|
+
try {
|
|
278
|
+
const credentials = (0, token_store_js_1.loadCredentials)();
|
|
279
|
+
if (!credentials) {
|
|
280
|
+
console.error('Not authenticated. Nothing to delete.');
|
|
281
|
+
rl.close();
|
|
282
|
+
process.exit(1);
|
|
283
|
+
}
|
|
284
|
+
console.log('\n⚠️ Delete Account\n');
|
|
285
|
+
console.log(`You are about to permanently delete your account: ${credentials.email}`);
|
|
286
|
+
console.log('This will delete:');
|
|
287
|
+
console.log(' - Your user account');
|
|
288
|
+
console.log(' - Your organization and all its data');
|
|
289
|
+
console.log(' - All databases and configurations');
|
|
290
|
+
console.log('\nThis action cannot be undone.\n');
|
|
291
|
+
const confirm = await prompt(rl, 'Type "DELETE" to confirm: ');
|
|
292
|
+
if (confirm !== 'DELETE') {
|
|
293
|
+
console.log('Deletion cancelled.');
|
|
294
|
+
rl.close();
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
client.setToken(credentials.token);
|
|
298
|
+
console.log('\nDeleting account...');
|
|
299
|
+
const result = await client.deleteAccount();
|
|
300
|
+
if (!result.success) {
|
|
301
|
+
console.error(`Failed to delete account: ${result.error}`);
|
|
302
|
+
rl.close();
|
|
303
|
+
process.exit(1);
|
|
304
|
+
}
|
|
305
|
+
// Clear local credentials
|
|
306
|
+
(0, token_store_js_1.clearCredentials)();
|
|
307
|
+
console.log('\n✓ Account deleted successfully.\n');
|
|
308
|
+
}
|
|
309
|
+
finally {
|
|
310
|
+
rl.close();
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
async function main() {
|
|
314
|
+
const args = process.argv.slice(2);
|
|
315
|
+
const command = args[0] || 'login';
|
|
316
|
+
switch (command) {
|
|
317
|
+
case 'auth':
|
|
318
|
+
case 'login':
|
|
319
|
+
await login();
|
|
320
|
+
break;
|
|
321
|
+
case 'signup':
|
|
322
|
+
case 'create':
|
|
323
|
+
await signup();
|
|
324
|
+
break;
|
|
325
|
+
case 'delete-account':
|
|
326
|
+
await deleteAccount();
|
|
327
|
+
break;
|
|
328
|
+
case 'logout':
|
|
329
|
+
await logout();
|
|
330
|
+
break;
|
|
331
|
+
case 'status':
|
|
332
|
+
case 'whoami':
|
|
333
|
+
await status();
|
|
334
|
+
break;
|
|
335
|
+
case 'request':
|
|
336
|
+
await requestCode(args[1]);
|
|
337
|
+
break;
|
|
338
|
+
case 'verify':
|
|
339
|
+
await verify(args[1], args[2]);
|
|
340
|
+
break;
|
|
341
|
+
default:
|
|
342
|
+
console.log('Usage: npx @quarri/claude-data-tools <command>');
|
|
343
|
+
console.log('');
|
|
344
|
+
console.log('Commands:');
|
|
345
|
+
console.log(' signup, create Create a new organization (7-day trial)');
|
|
346
|
+
console.log(' auth, login Authenticate existing account');
|
|
347
|
+
console.log(' logout Clear stored credentials');
|
|
348
|
+
console.log(' status Show authentication status');
|
|
349
|
+
console.log(' delete-account Permanently delete your trial account');
|
|
350
|
+
console.log('');
|
|
351
|
+
console.log('Advanced:');
|
|
352
|
+
console.log(' request <email> Request verification code');
|
|
353
|
+
console.log(' verify <email> <code> Complete verification');
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
main().catch((error) => {
|
|
358
|
+
console.error('Error:', error.message);
|
|
359
|
+
process.exit(1);
|
|
360
|
+
});
|
|
361
|
+
//# sourceMappingURL=auth-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-cli.js","sourceRoot":"","sources":["../src/auth-cli.ts"],"names":[],"mappings":"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"}
|