@armoriq/sdk-dev 0.0.1 → 0.2.13

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 (56) hide show
  1. package/dist/cli/commands/login.d.ts +4 -0
  2. package/dist/cli/commands/login.d.ts.map +1 -0
  3. package/dist/cli/commands/login.js +221 -0
  4. package/dist/cli/commands/login.js.map +1 -0
  5. package/dist/cli/commands/logout.d.ts +2 -0
  6. package/dist/cli/commands/logout.d.ts.map +1 -0
  7. package/dist/cli/commands/logout.js +14 -0
  8. package/dist/cli/commands/logout.js.map +1 -0
  9. package/dist/cli/commands/whoami.d.ts +2 -0
  10. package/dist/cli/commands/whoami.d.ts.map +1 -0
  11. package/dist/cli/commands/whoami.js +22 -0
  12. package/dist/cli/commands/whoami.js.map +1 -0
  13. package/dist/cli/credentials.d.ts +12 -0
  14. package/dist/cli/credentials.d.ts.map +1 -0
  15. package/dist/cli/credentials.js +81 -0
  16. package/dist/cli/credentials.js.map +1 -0
  17. package/dist/cli/index.d.ts +3 -0
  18. package/dist/cli/index.d.ts.map +1 -0
  19. package/dist/cli/index.js +33 -0
  20. package/dist/cli/index.js.map +1 -0
  21. package/dist/client.d.ts.map +1 -1
  22. package/dist/client.js +19 -5
  23. package/dist/client.js.map +1 -1
  24. package/dist/integrations/anthropic.d.ts +18 -0
  25. package/dist/integrations/anthropic.d.ts.map +1 -0
  26. package/dist/integrations/anthropic.js +27 -0
  27. package/dist/integrations/anthropic.js.map +1 -0
  28. package/dist/integrations/crewai.d.ts +68 -0
  29. package/dist/integrations/crewai.d.ts.map +1 -0
  30. package/dist/integrations/crewai.js +178 -0
  31. package/dist/integrations/crewai.js.map +1 -0
  32. package/dist/integrations/google-adk.d.ts +72 -0
  33. package/dist/integrations/google-adk.d.ts.map +1 -0
  34. package/dist/integrations/google-adk.js +260 -0
  35. package/dist/integrations/google-adk.js.map +1 -0
  36. package/dist/integrations/index.d.ts +29 -0
  37. package/dist/integrations/index.d.ts.map +1 -0
  38. package/dist/integrations/index.js +37 -0
  39. package/dist/integrations/index.js.map +1 -0
  40. package/dist/integrations/langchain.d.ts +20 -0
  41. package/dist/integrations/langchain.d.ts.map +1 -0
  42. package/dist/integrations/langchain.js +28 -0
  43. package/dist/integrations/langchain.js.map +1 -0
  44. package/dist/integrations/openai.d.ts +19 -0
  45. package/dist/integrations/openai.d.ts.map +1 -0
  46. package/dist/integrations/openai.js +28 -0
  47. package/dist/integrations/openai.js.map +1 -0
  48. package/dist/plan-builder.d.ts +36 -0
  49. package/dist/plan-builder.d.ts.map +1 -0
  50. package/dist/plan-builder.js +98 -0
  51. package/dist/plan-builder.js.map +1 -0
  52. package/dist/session.d.ts +152 -0
  53. package/dist/session.d.ts.map +1 -0
  54. package/dist/session.js +547 -0
  55. package/dist/session.js.map +1 -0
  56. package/package.json +7 -2
@@ -0,0 +1,4 @@
1
+ export declare function loginCommand(options: {
2
+ backend?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AA+GA,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,iBA0E/D"}
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.loginCommand = loginCommand;
40
+ const http = __importStar(require("http"));
41
+ const net = __importStar(require("net"));
42
+ const axios_1 = __importDefault(require("axios"));
43
+ const credentials_1 = require("../credentials");
44
+ const DEFAULT_BACKEND = 'https://staging-api.armoriq.ai';
45
+ function findFreePort() {
46
+ return new Promise((resolve, reject) => {
47
+ const srv = net.createServer();
48
+ srv.listen(0, () => {
49
+ const addr = srv.address();
50
+ srv.close(() => resolve(addr.port));
51
+ });
52
+ srv.on('error', reject);
53
+ });
54
+ }
55
+ const SUCCESS_HTML = `<!DOCTYPE html>
56
+ <html><head><meta charset="utf-8"><title>ArmorIQ</title>
57
+ <link rel="icon" href="https://armoriq.ai/images/favicon.svg" type="image/svg+xml">
58
+ <style>
59
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
60
+ display: flex; align-items: center; justify-content: center; height: 100vh;
61
+ margin: 0; background: #f8fafc; color: #1e293b; }
62
+ .card { text-align: center; padding: 3rem; background: white;
63
+ border-radius: 1rem; box-shadow: 0 1px 3px rgba(0,0,0,0.1);
64
+ max-width: 400px; }
65
+ .check { width: 64px; height: 64px; background: #dcfce7; border-radius: 50%;
66
+ display: flex; align-items: center; justify-content: center;
67
+ margin: 0 auto 1.5rem; }
68
+ .check svg { width: 32px; height: 32px; color: #16a34a; }
69
+ h2 { margin: 0 0 0.5rem; font-size: 1.25rem; }
70
+ p { margin: 0; font-size: 0.875rem; color: #64748b; }
71
+ </style></head><body>
72
+ <div class="card">
73
+ <div class="check">
74
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
75
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
76
+ </svg>
77
+ </div>
78
+ <h2>Authorized</h2>
79
+ <p>You can close this tab and return to your terminal.</p>
80
+ </div>
81
+ </body></html>`;
82
+ function startCallbackServer(port) {
83
+ return new Promise((resolve, reject) => {
84
+ let timeoutHandle;
85
+ const server = http.createServer((req, res) => {
86
+ const url = new URL(req.url || '/', `http://localhost:${port}`);
87
+ if (url.pathname === '/callback') {
88
+ const apiKey = url.searchParams.get('key') || '';
89
+ const email = url.searchParams.get('email') || '';
90
+ const userId = url.searchParams.get('user_id') || '';
91
+ const orgId = url.searchParams.get('org_id') || '';
92
+ res.writeHead(200, {
93
+ 'Content-Type': 'text/html; charset=utf-8',
94
+ 'Connection': 'close',
95
+ });
96
+ res.end(SUCCESS_HTML, () => {
97
+ // Force-close all connections so Node can exit
98
+ clearTimeout(timeoutHandle);
99
+ server.close();
100
+ server.closeAllConnections?.();
101
+ setImmediate(() => {
102
+ if (apiKey) {
103
+ resolve({ apiKey, email, userId, orgId });
104
+ }
105
+ else {
106
+ reject(new Error('No API key received in callback'));
107
+ }
108
+ });
109
+ });
110
+ }
111
+ else {
112
+ res.writeHead(404, { 'Connection': 'close' });
113
+ res.end('Not found');
114
+ }
115
+ });
116
+ server.listen(port, '127.0.0.1');
117
+ server.on('error', reject);
118
+ // Timeout after 15 minutes — use unref() so it doesn't keep Node alive
119
+ timeoutHandle = setTimeout(() => {
120
+ server.close();
121
+ server.closeAllConnections?.();
122
+ reject(new Error('Timed out waiting for authorization'));
123
+ }, 15 * 60 * 1000);
124
+ timeoutHandle.unref();
125
+ });
126
+ }
127
+ async function loginCommand(options) {
128
+ const backend = options.backend || process.env.ARMORIQ_BACKEND_URL || DEFAULT_BACKEND;
129
+ console.log('');
130
+ console.log(' \x1b[1m\x1b[36m┃ ArmorIQ Login\x1b[0m');
131
+ console.log('');
132
+ // Step 1: find a free port and start the local callback server
133
+ const port = await findFreePort();
134
+ const callbackUrl = `http://localhost:${port}/callback`;
135
+ const callbackPromise = startCallbackServer(port);
136
+ // Step 2: request device code from backend (include our callback URL)
137
+ let deviceResponse;
138
+ try {
139
+ const res = await axios_1.default.post(`${backend}/auth/device/code`, { callback_url: callbackUrl }, { timeout: 10000 });
140
+ deviceResponse = res.data;
141
+ }
142
+ catch (err) {
143
+ const msg = err.response?.data?.message || err.response?.statusText || err.message || 'Unknown error';
144
+ const status = err.response?.status || '';
145
+ const detail = err.code || '';
146
+ console.error(` \x1b[31m✘\x1b[0m Failed to request device code: ${msg}${status ? ` (HTTP ${status})` : ''}${detail ? ` [${detail}]` : ''}`);
147
+ process.exit(1);
148
+ }
149
+ const { user_code, verification_uri_complete } = deviceResponse;
150
+ // Step 3: open browser
151
+ const browserUrl = `${verification_uri_complete}&callback=${encodeURIComponent(callbackUrl)}`;
152
+ console.log(` Opening browser...\n`);
153
+ try {
154
+ const open = (await Promise.resolve().then(() => __importStar(require('open')))).default;
155
+ await open(browserUrl);
156
+ }
157
+ catch {
158
+ console.log(' \x1b[33m!\x1b[0m Browser didn\'t open automatically.');
159
+ }
160
+ console.log(` If the browser didn't open, visit:`);
161
+ console.log(` \x1b[36m\x1b[1m${browserUrl}\x1b[0m\n`);
162
+ console.log(` Confirm this code in your browser: \x1b[1m${user_code}\x1b[0m\n`);
163
+ process.stdout.write(' Waiting for authorization...');
164
+ // Step 4: wait for the callback OR poll as fallback
165
+ try {
166
+ const result = await Promise.race([
167
+ callbackPromise,
168
+ pollFallback(backend, deviceResponse.device_code, deviceResponse.interval, deviceResponse.expires_in),
169
+ ]);
170
+ process.stdout.write(' \x1b[32m✔\x1b[0m\n');
171
+ console.log('');
172
+ console.log(` \x1b[32m✔\x1b[0m Logged in as \x1b[1m${result.email || 'unknown'}\x1b[0m`);
173
+ (0, credentials_1.saveCredentials)({
174
+ apiKey: result.apiKey,
175
+ email: result.email,
176
+ userId: result.userId,
177
+ orgId: result.orgId,
178
+ savedAt: new Date().toISOString(),
179
+ });
180
+ console.log(` \x1b[32m✔\x1b[0m API key saved to ${(0, credentials_1.getCredentialsPath)()}`);
181
+ console.log('');
182
+ }
183
+ catch (err) {
184
+ process.stdout.write(' \x1b[31m✘\x1b[0m\n');
185
+ console.error(` \x1b[31m✘\x1b[0m ${err.message || 'Authorization failed'}`);
186
+ process.exit(1);
187
+ }
188
+ }
189
+ async function pollFallback(backend, deviceCode, interval, expiresIn) {
190
+ const pollIntervalMs = (interval || 5) * 1000;
191
+ const deadline = Date.now() + expiresIn * 1000;
192
+ while (Date.now() < deadline) {
193
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
194
+ try {
195
+ const res = await axios_1.default.post(`${backend}/auth/device/token`, { deviceCode }, { timeout: 10000 });
196
+ const data = res.data;
197
+ if (data.error === 'authorization_pending' || data.error === 'slow_down') {
198
+ continue;
199
+ }
200
+ if (data.error) {
201
+ throw new Error(data.error_description || data.error);
202
+ }
203
+ if (data.api_key) {
204
+ return {
205
+ apiKey: data.api_key,
206
+ email: data.email || '',
207
+ userId: data.user_id || '',
208
+ orgId: data.org_id || '',
209
+ };
210
+ }
211
+ }
212
+ catch (err) {
213
+ if (err.code === 'ECONNREFUSED' || err.code === 'ETIMEDOUT') {
214
+ continue;
215
+ }
216
+ throw err;
217
+ }
218
+ }
219
+ throw new Error('Timed out waiting for authorization. Run `armoriq login` again.');
220
+ }
221
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+GA,oCA0EC;AAzLD,2CAA6B;AAC7B,yCAA2B;AAC3B,kDAA0B;AAC1B,gDAAqE;AAErE,MAAM,eAAe,GAAG,gCAAgC,CAAC;AAWzD,SAAS,YAAY;IACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAC/B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE;YACjB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAqB,CAAC;YAC9C,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;eA0BN,CAAC;AAShB,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,aAA6B,CAAC;QAElC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;YAEhE,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClD,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACrD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEnD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;oBACjB,cAAc,EAAE,0BAA0B;oBAC1C,YAAY,EAAE,OAAO;iBACtB,CAAC,CAAC;gBACH,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE;oBACzB,+CAA+C;oBAC/C,YAAY,CAAC,aAAa,CAAC,CAAC;oBAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;oBAC/B,YAAY,CAAC,GAAG,EAAE;wBAChB,IAAI,MAAM,EAAE,CAAC;4BACX,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;wBAC5C,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;wBACvD,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC9C,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE3B,uEAAuE;QACvE,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC3D,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACnB,aAAa,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,OAA6B;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,eAAe,CAAC;IAEtF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,+DAA+D;IAC/D,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,oBAAoB,IAAI,WAAW,CAAC;IACxD,MAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAElD,sEAAsE;IACtE,IAAI,cAAkC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,eAAK,CAAC,IAAI,CAC1B,GAAG,OAAO,mBAAmB,EAC7B,EAAE,YAAY,EAAE,WAAW,EAAE,EAC7B,EAAE,OAAO,EAAE,KAAK,EAAE,CACnB,CAAC;QACF,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,UAAU,IAAI,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC;QACtG,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,qDAAqD,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7I,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,yBAAyB,EAAE,GAAG,cAAc,CAAC;IAEhE,uBAAuB;IACvB,MAAM,UAAU,GAAG,GAAG,yBAAyB,aAAa,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,wDAAa,MAAM,GAAC,CAAC,CAAC,OAAO,CAAC;QAC5C,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,sBAAsB,UAAU,WAAW,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,+CAA+C,SAAS,WAAW,CAAC,CAAC;IAEjF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAEvD,oDAAoD;IACpD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,eAAe;YACf,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC;SACtG,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,0CAA0C,MAAM,CAAC,KAAK,IAAI,SAAS,SAAS,CAAC,CAAC;QAE1F,IAAA,6BAAe,EAAC;YACd,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAClC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,uCAAuC,IAAA,gCAAkB,GAAE,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,OAAO,IAAI,sBAAsB,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,OAAe,EACf,UAAkB,EAClB,QAAgB,EAChB,SAAiB;IAEjB,MAAM,cAAc,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IAE/C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,eAAK,CAAC,IAAI,CAC1B,GAAG,OAAO,oBAAoB,EAC9B,EAAE,UAAU,EAAE,EACd,EAAE,OAAO,EAAE,KAAK,EAAE,CACnB,CAAC;YACF,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAEtB,IAAI,IAAI,CAAC,KAAK,KAAK,uBAAuB,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBACzE,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO;oBACL,MAAM,EAAE,IAAI,CAAC,OAAO;oBACpB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;oBACvB,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;oBAC1B,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;iBACzB,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC5D,SAAS;YACX,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;AACrF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function logoutCommand(): void;
2
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/logout.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,SAO5B"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logoutCommand = logoutCommand;
4
+ const credentials_1 = require("../credentials");
5
+ function logoutCommand() {
6
+ const removed = (0, credentials_1.clearCredentials)();
7
+ if (removed) {
8
+ console.log(` \x1b[32m✔\x1b[0m Credentials removed from ${(0, credentials_1.getCredentialsPath)()}`);
9
+ }
10
+ else {
11
+ console.log(' \x1b[2mNo credentials found — already logged out.\x1b[0m');
12
+ }
13
+ }
14
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/cli/commands/logout.ts"],"names":[],"mappings":";;AAEA,sCAOC;AATD,gDAAsE;AAEtE,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAA,8BAAgB,GAAE,CAAC;IACnC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,+CAA+C,IAAA,gCAAkB,GAAE,EAAE,CAAC,CAAC;IACrF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function whoamiCommand(): void;
2
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/whoami.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,SAgB5B"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.whoamiCommand = whoamiCommand;
4
+ const credentials_1 = require("../credentials");
5
+ function whoamiCommand() {
6
+ const creds = (0, credentials_1.loadCredentials)();
7
+ if (!creds) {
8
+ console.log(' \x1b[2mNot logged in. Run `armoriq login` to authenticate.\x1b[0m');
9
+ return;
10
+ }
11
+ console.log('');
12
+ console.log(' \x1b[1m\x1b[36m┃ ArmorIQ Credentials\x1b[0m');
13
+ console.log('');
14
+ console.log(` Email: \x1b[1m${creds.email || 'unknown'}\x1b[0m`);
15
+ console.log(` API Key: \x1b[2m${creds.apiKey.substring(0, 16)}...\x1b[0m`);
16
+ console.log(` User ID: \x1b[2m${creds.userId || 'n/a'}\x1b[0m`);
17
+ console.log(` Org ID: \x1b[2m${creds.orgId || 'n/a'}\x1b[0m`);
18
+ console.log(` Saved at: \x1b[2m${creds.savedAt || 'n/a'}\x1b[0m`);
19
+ console.log(` File: \x1b[2m${(0, credentials_1.getCredentialsPath)()}\x1b[0m`);
20
+ console.log('');
21
+ }
22
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../../src/cli/commands/whoami.ts"],"names":[],"mappings":";;AAEA,sCAgBC;AAlBD,gDAAqE;AAErE,SAAgB,aAAa;IAC3B,MAAM,KAAK,GAAG,IAAA,6BAAe,GAAE,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,KAAK,IAAI,SAAS,SAAS,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAA,gCAAkB,GAAE,SAAS,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface Credentials {
2
+ apiKey: string;
3
+ email: string;
4
+ userId: string;
5
+ orgId: string;
6
+ savedAt: string;
7
+ }
8
+ export declare function loadCredentials(): Credentials | null;
9
+ export declare function saveCredentials(creds: Credentials): void;
10
+ export declare function clearCredentials(): boolean;
11
+ export declare function getCredentialsPath(): string;
12
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/cli/credentials.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAcpD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAIxD;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAU1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadCredentials = loadCredentials;
37
+ exports.saveCredentials = saveCredentials;
38
+ exports.clearCredentials = clearCredentials;
39
+ exports.getCredentialsPath = getCredentialsPath;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const os = __importStar(require("os"));
43
+ const ARMORIQ_DIR = path.join(os.homedir(), '.armoriq');
44
+ const CREDENTIALS_FILE = path.join(ARMORIQ_DIR, 'credentials.json');
45
+ function loadCredentials() {
46
+ try {
47
+ if (!fs.existsSync(CREDENTIALS_FILE)) {
48
+ return null;
49
+ }
50
+ const raw = fs.readFileSync(CREDENTIALS_FILE, 'utf-8');
51
+ const parsed = JSON.parse(raw);
52
+ if (parsed && typeof parsed.apiKey === 'string' && parsed.apiKey.startsWith('ak_')) {
53
+ return parsed;
54
+ }
55
+ return null;
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ }
61
+ function saveCredentials(creds) {
62
+ fs.mkdirSync(ARMORIQ_DIR, { recursive: true });
63
+ const content = JSON.stringify(creds, null, 2) + '\n';
64
+ fs.writeFileSync(CREDENTIALS_FILE, content, { mode: 0o600 });
65
+ }
66
+ function clearCredentials() {
67
+ try {
68
+ if (fs.existsSync(CREDENTIALS_FILE)) {
69
+ fs.unlinkSync(CREDENTIALS_FILE);
70
+ return true;
71
+ }
72
+ return false;
73
+ }
74
+ catch {
75
+ return false;
76
+ }
77
+ }
78
+ function getCredentialsPath() {
79
+ return CREDENTIALS_FILE;
80
+ }
81
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/cli/credentials.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,0CAcC;AAED,0CAIC;AAED,4CAUC;AAED,gDAEC;AAnDD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACxD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;AAUpE,SAAgB,eAAe;IAC7B,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACnF,OAAO,MAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,KAAkB;IAChD,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACtD,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAgB,gBAAgB;IAC9B,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const login_1 = require("./commands/login");
6
+ const logout_1 = require("./commands/logout");
7
+ const whoami_1 = require("./commands/whoami");
8
+ const program = new commander_1.Command();
9
+ program
10
+ .name('armoriq')
11
+ .description('ArmorIQ CLI — authenticate and manage your ArmorIQ account')
12
+ .version(require('../../package.json').version);
13
+ program
14
+ .command('login')
15
+ .description('Log in to ArmorIQ via browser (OAuth device-code flow)')
16
+ .option('--backend <url>', 'Override backend URL')
17
+ .action(async (options) => {
18
+ await (0, login_1.loginCommand)(options);
19
+ });
20
+ program
21
+ .command('logout')
22
+ .description('Remove saved credentials')
23
+ .action(() => {
24
+ (0, logout_1.logoutCommand)();
25
+ });
26
+ program
27
+ .command('whoami')
28
+ .description('Show current authentication status')
29
+ .action(() => {
30
+ (0, whoami_1.whoamiCommand)();
31
+ });
32
+ program.parse();
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,4CAAgD;AAChD,8CAAkD;AAClD,8CAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC;AAElD,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,GAAG,EAAE;IACX,IAAA,sBAAa,GAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,GAAG,EAAE;IACX,IAAA,sBAAa,GAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -55,9 +55,9 @@ const exceptions_1 = require("./exceptions");
55
55
  */
56
56
  class ArmorIQClient {
57
57
  // Production endpoints (default) - ArmorIQ platform
58
- static DEFAULT_IAP_ENDPOINT = 'https://iap.armoriq.io';
59
- static DEFAULT_PROXY_ENDPOINT = 'https://cloud-run-proxy.armoriq.io';
60
- static DEFAULT_BACKEND_ENDPOINT = 'https://staging-api.armoriq.io';
58
+ static DEFAULT_IAP_ENDPOINT = 'https://iap.armoriq.ai';
59
+ static DEFAULT_PROXY_ENDPOINT = 'https://proxy.armoriq.ai';
60
+ static DEFAULT_BACKEND_ENDPOINT = 'https://api.armoriq.ai';
61
61
  // ArmorClaw standalone product endpoints
62
62
  static ARMORCLAW_IAP_ENDPOINT = 'https://iap.armorclaw.io';
63
63
  static ARMORCLAW_PROXY_ENDPOINT = 'https://proxy.armorclaw.io';
@@ -115,12 +115,26 @@ class ArmorIQClient {
115
115
  this.userId = options.userId || process.env.USER_ID || '';
116
116
  this.agentId = options.agentId || process.env.AGENT_ID || '';
117
117
  this.contextId = options.contextId || process.env.CONTEXT_ID || 'default';
118
+ // API key resolution order: explicit param → env var → credentials file → empty
118
119
  this.apiKey = options.apiKey || process.env.ARMORIQ_API_KEY || '';
120
+ if (!this.apiKey) {
121
+ try {
122
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
123
+ const { loadCredentials } = require('./cli/credentials');
124
+ const creds = loadCredentials();
125
+ if (creds?.apiKey) {
126
+ this.apiKey = creds.apiKey;
127
+ }
128
+ }
129
+ catch {
130
+ // credentials module not available (e.g. bundled build) — ignore
131
+ }
132
+ }
119
133
  // Validate required config
120
134
  if (!this.apiKey) {
121
135
  throw new exceptions_1.ConfigurationException('API key is required for Customer SDK. ' +
122
- 'Set ARMORIQ_API_KEY environment variable or pass apiKey parameter. ' +
123
- 'Get your API key from https://platform.armoriq.ai/dashboard/api-keys');
136
+ 'Run `npx @armoriq/sdk login` to authenticate, or set ARMORIQ_API_KEY, or pass apiKey parameter. ' +
137
+ 'Get your API key from https://dev.armoriq.ai');
124
138
  }
125
139
  // Validate API key format
126
140
  if (!this.apiKey.startsWith('ak_live_') && !this.apiKey.startsWith('ak_test_') && !this.apiKey.startsWith('ak_claw_')) {