@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.
- package/dist/cli/commands/login.d.ts +4 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +221 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +2 -0
- package/dist/cli/commands/logout.d.ts.map +1 -0
- package/dist/cli/commands/logout.js +14 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/whoami.d.ts +2 -0
- package/dist/cli/commands/whoami.d.ts.map +1 -0
- package/dist/cli/commands/whoami.js +22 -0
- package/dist/cli/commands/whoami.js.map +1 -0
- package/dist/cli/credentials.d.ts +12 -0
- package/dist/cli/credentials.d.ts.map +1 -0
- package/dist/cli/credentials.js +81 -0
- package/dist/cli/credentials.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +33 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +19 -5
- package/dist/client.js.map +1 -1
- package/dist/integrations/anthropic.d.ts +18 -0
- package/dist/integrations/anthropic.d.ts.map +1 -0
- package/dist/integrations/anthropic.js +27 -0
- package/dist/integrations/anthropic.js.map +1 -0
- package/dist/integrations/crewai.d.ts +68 -0
- package/dist/integrations/crewai.d.ts.map +1 -0
- package/dist/integrations/crewai.js +178 -0
- package/dist/integrations/crewai.js.map +1 -0
- package/dist/integrations/google-adk.d.ts +72 -0
- package/dist/integrations/google-adk.d.ts.map +1 -0
- package/dist/integrations/google-adk.js +260 -0
- package/dist/integrations/google-adk.js.map +1 -0
- package/dist/integrations/index.d.ts +29 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +37 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/langchain.d.ts +20 -0
- package/dist/integrations/langchain.d.ts.map +1 -0
- package/dist/integrations/langchain.js +28 -0
- package/dist/integrations/langchain.js.map +1 -0
- package/dist/integrations/openai.d.ts +19 -0
- package/dist/integrations/openai.d.ts.map +1 -0
- package/dist/integrations/openai.js +28 -0
- package/dist/integrations/openai.js.map +1 -0
- package/dist/plan-builder.d.ts +36 -0
- package/dist/plan-builder.d.ts.map +1 -0
- package/dist/plan-builder.js +98 -0
- package/dist/plan-builder.js.map +1 -0
- package/dist/session.d.ts +152 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +547 -0
- package/dist/session.js.map +1 -0
- package/package.json +7 -2
|
@@ -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":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EAEnB,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAYlB;;;;;;;;GAQG;AACH,qBAAa,aAAa;IAExB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAA4B;IACxE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,
|
|
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.
|
|
59
|
-
static DEFAULT_PROXY_ENDPOINT = 'https://
|
|
60
|
-
static DEFAULT_BACKEND_ENDPOINT = 'https://
|
|
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
|
-
'
|
|
123
|
-
'Get your API key from https://
|
|
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_')) {
|