@loxtep/sdk 0.7.12 → 0.7.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/CHANGELOG.md +12 -0
- package/dist/cli/commands/instances-cmd.d.ts.map +1 -1
- package/dist/cli/commands/instances-cmd.js +5 -15
- package/dist/cli/commands/instances-cmd.js.map +1 -1
- package/dist/cli/commands/whoami.d.ts.map +1 -1
- package/dist/cli/commands/whoami.js +46 -18
- package/dist/cli/commands/whoami.js.map +1 -1
- package/dist/cli/create-cli-client.d.ts +14 -1
- package/dist/cli/create-cli-client.d.ts.map +1 -1
- package/dist/cli/create-cli-client.js +80 -45
- package/dist/cli/create-cli-client.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
6
6
|
and this project adheres to
|
|
7
7
|
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
8
8
|
|
|
9
|
+
## [0.7.13] - 2026-07-23
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **CLI HTTP auth** — `whoami` and `instances list` no longer use hardcoded dummy
|
|
14
|
+
SigV4 (`cli`/`cli`). They share `createCliHttpClient`, which loads STS credentials
|
|
15
|
+
from `credentials.json`, proactively refreshes when missing/expired, and warns when
|
|
16
|
+
only dummy creds remain (empty HTTP 200 bodies).
|
|
17
|
+
- **`whoami`** — debug prints the resolved request URL; detects empty/non-JSON
|
|
18
|
+
`{ "message": "OK" }` bodies; fetches organization name when JWT only has
|
|
19
|
+
`organization_id`.
|
|
20
|
+
|
|
9
21
|
## [0.7.12] - 2026-07-23
|
|
10
22
|
|
|
11
23
|
### Fixed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instances-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/instances-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"instances-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/instances-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAgB,MAAM,iCAAiC,CAAC;AAEzF,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gGAAgG;IAChG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,KAAK,CAAC;CACzB;AAMD,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCvF;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,oBAAoB,CACxC,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAYf;AAID,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,mBAAmB,CA2D3E"}
|
|
@@ -21,35 +21,25 @@
|
|
|
21
21
|
* # step 2: register the user's role ARN at the org level
|
|
22
22
|
* loxtep instances registration # optional check: read registered ARN + external ID
|
|
23
23
|
*/
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import { createCliAuthContext, requireCliClient } from '../create-cli-client.js';
|
|
27
|
-
const DUMMY_SIGV4 = { accessKeyId: 'cli', secretAccessKey: 'cli' };
|
|
24
|
+
import { parseInstancesListResponse } from '../../client/instances-list-response.js';
|
|
25
|
+
import { createCliHttpClient, requireCliClient } from '../create-cli-client.js';
|
|
28
26
|
function isDebugEnabled(options) {
|
|
29
27
|
return options.debug === true || process.env.LOXTEP_DEBUG === '1';
|
|
30
28
|
}
|
|
31
29
|
export async function runInstancesList(options = {}) {
|
|
32
30
|
try {
|
|
33
|
-
const
|
|
31
|
+
const cli = await createCliHttpClient({
|
|
34
32
|
configFilePath: options.configFilePath,
|
|
35
33
|
credentialsPath: options.credentialsPath,
|
|
36
34
|
customerMcpPath: options.customerMcpPath,
|
|
37
35
|
fetch_fn: options.fetch_fn,
|
|
38
36
|
});
|
|
39
|
-
if (!
|
|
37
|
+
if (!cli) {
|
|
40
38
|
console.error('Missing api_url or access token. Run: pnpm exec loxtep login');
|
|
41
39
|
process.exitCode = 1;
|
|
42
40
|
return;
|
|
43
41
|
}
|
|
44
|
-
const
|
|
45
|
-
base_url: authCtx.api_url,
|
|
46
|
-
use_platform_path_resolution: true,
|
|
47
|
-
get_token: authCtx.get_token,
|
|
48
|
-
refresh_auth: authCtx.refresh_auth,
|
|
49
|
-
credentials: DUMMY_SIGV4,
|
|
50
|
-
fetch_fn: options.fetch_fn ?? fetch,
|
|
51
|
-
});
|
|
52
|
-
const raw = await http.get('/organizations/instances');
|
|
42
|
+
const raw = await cli.http.get('/organizations/instances');
|
|
53
43
|
if (isDebugEnabled(options)) {
|
|
54
44
|
console.error('[loxtep instances debug] GET /organizations/instances response:');
|
|
55
45
|
console.error(JSON.stringify(raw, null, 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instances-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/instances-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"instances-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/instances-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,uCAAuC,CAAC;AAM/C,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,KAAK,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA0CD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8D1E"}
|
|
@@ -1,14 +1,41 @@
|
|
|
1
|
-
import { mergeJwtIdentityFallback, parseCurrentUserResponse, } from '../../client/current-user-response.js';
|
|
1
|
+
import { mergeJwtIdentityFallback, parseCurrentUserResponse, unwrapApiEnvelope, } from '../../client/current-user-response.js';
|
|
2
2
|
import { decodeJwtClaims } from '../../auth/jwt.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
const DUMMY_SIGV4 = { accessKeyId: 'cli', secretAccessKey: 'cli' };
|
|
3
|
+
import { buildPlatformRequestUrl } from '../../config/platform-request-url.js';
|
|
4
|
+
import { createCliHttpClient } from '../create-cli-client.js';
|
|
6
5
|
function isDebugEnabled(options) {
|
|
7
6
|
return options.debug === true || process.env.LOXTEP_DEBUG === '1';
|
|
8
7
|
}
|
|
9
8
|
function isPlaceholderIdentity(data) {
|
|
10
9
|
return !data.email && !data.first_name && !data.last_name && !data.organization_name && !data.organization_id;
|
|
11
10
|
}
|
|
11
|
+
function responseLooksEmpty(raw) {
|
|
12
|
+
if (raw == null)
|
|
13
|
+
return true;
|
|
14
|
+
if (typeof raw === 'object' && !Array.isArray(raw) && Object.keys(raw).length === 0) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
const msg = raw.message;
|
|
18
|
+
return msg === 'OK' && Object.keys(raw).length <= 1;
|
|
19
|
+
}
|
|
20
|
+
async function enrichOrganizationName(data, http) {
|
|
21
|
+
if (data.organization_name || !data.organization_id)
|
|
22
|
+
return data;
|
|
23
|
+
try {
|
|
24
|
+
const orgRaw = await http.get(`/organizations/organizations/${encodeURIComponent(data.organization_id)}`);
|
|
25
|
+
const org = unwrapApiEnvelope(orgRaw);
|
|
26
|
+
const name = typeof org?.name === 'string'
|
|
27
|
+
? org.name
|
|
28
|
+
: typeof org?.organization_name === 'string'
|
|
29
|
+
? org.organization_name
|
|
30
|
+
: undefined;
|
|
31
|
+
if (name)
|
|
32
|
+
return { ...data, organization_name: name };
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Non-fatal — UUID is still useful
|
|
36
|
+
}
|
|
37
|
+
return data;
|
|
38
|
+
}
|
|
12
39
|
/**
|
|
13
40
|
* Run whoami: unified auth + GET /organizations/users/me, print user and org.
|
|
14
41
|
*/
|
|
@@ -17,35 +44,36 @@ export async function runWhoami(options = {}) {
|
|
|
17
44
|
const data = options.fetchUser
|
|
18
45
|
? await options.fetchUser()
|
|
19
46
|
: await (async () => {
|
|
20
|
-
const
|
|
47
|
+
const cli = await createCliHttpClient({
|
|
21
48
|
configFilePath: options.configFilePath,
|
|
22
49
|
credentialsPath: options.credentialsPath,
|
|
23
50
|
customerMcpPath: options.customerMcpPath,
|
|
51
|
+
fetch_fn: options.fetch_fn ?? options.fetchFn,
|
|
24
52
|
});
|
|
25
|
-
if (!
|
|
53
|
+
if (!cli) {
|
|
26
54
|
console.error('Missing api_url or access token. Set LOXTEP_API_URL / LOXTEP_AUTH_TOKEN, or run: loxtep config set api_url <url> ; loxtep login');
|
|
27
55
|
process.exitCode = 1;
|
|
28
56
|
return null;
|
|
29
57
|
}
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
credentials: DUMMY_SIGV4,
|
|
37
|
-
fetch_fn: fetchImpl,
|
|
38
|
-
});
|
|
39
|
-
const raw = await client.get('/organizations/users/me');
|
|
58
|
+
const path = '/organizations/users/me';
|
|
59
|
+
if (isDebugEnabled(options)) {
|
|
60
|
+
const url = buildPlatformRequestUrl(cli.auth.api_url, path);
|
|
61
|
+
console.error(`[loxtep whoami debug] GET ${url}`);
|
|
62
|
+
}
|
|
63
|
+
const raw = await cli.http.get(path);
|
|
40
64
|
if (isDebugEnabled(options)) {
|
|
41
65
|
console.error('[loxtep whoami debug] GET /organizations/users/me response:');
|
|
66
|
+
if (responseLooksEmpty(raw)) {
|
|
67
|
+
console.error('(empty or non-JSON body — HTTP 200 with no payload; check SigV4 credentials in credentials.json)');
|
|
68
|
+
}
|
|
42
69
|
console.error(JSON.stringify(raw, null, 2));
|
|
43
70
|
}
|
|
44
71
|
let parsed = parseCurrentUserResponse(raw);
|
|
45
|
-
const token = await
|
|
46
|
-
if (token && isPlaceholderIdentity(parsed)) {
|
|
72
|
+
const token = await cli.auth.get_token();
|
|
73
|
+
if (token && (isPlaceholderIdentity(parsed) || responseLooksEmpty(raw))) {
|
|
47
74
|
parsed = mergeJwtIdentityFallback(parsed, decodeJwtClaims(token));
|
|
48
75
|
}
|
|
76
|
+
parsed = await enrichOrganizationName(parsed, cli.http);
|
|
49
77
|
return parsed;
|
|
50
78
|
})();
|
|
51
79
|
if (data == null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../../src/cli/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../../src/cli/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,iBAAiB,GAElB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAsB9D,SAAS,cAAc,CAAC,OAAsB;IAC5C,OAAO,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC;AACpE,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAuB;IACpD,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAChH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAY;IACtC,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAI,GAA6B,CAAC,OAAO,CAAC;IACnD,OAAO,GAAG,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,IAAuB,EACvB,IAAsB;IAEtB,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAC3B,gCAAgC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAC3E,CAAC;QACF,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAmC,CAAC;QACxE,MAAM,IAAI,GACR,OAAO,GAAG,EAAE,IAAI,KAAK,QAAQ;YAC3B,CAAC,CAAC,GAAG,CAAC,IAAI;YACV,CAAC,CAAC,OAAO,GAAG,EAAE,iBAAiB,KAAK,QAAQ;gBAC1C,CAAC,CAAC,GAAG,CAAC,iBAAiB;gBACvB,CAAC,CAAC,SAAS,CAAC;QAClB,IAAI,IAAI;YAAE,OAAO,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAAyB,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS;YAC5B,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE;YAC3B,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC;oBACpC,cAAc,EAAE,OAAO,CAAC,cAAc;oBACtC,eAAe,EAAE,OAAO,CAAC,eAAe;oBACxC,eAAe,EAAE,OAAO,CAAC,eAAe;oBACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO;iBAC9C,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,OAAO,CAAC,KAAK,CACX,iIAAiI,CAClI,CAAC;oBACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,MAAM,IAAI,GAAG,yBAAyB,CAAC;gBACvC,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,MAAM,GAAG,GAAG,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC5D,OAAO,CAAC,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;gBACpD,CAAC;gBAED,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAU,IAAI,CAAC,CAAC;gBAC9C,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;oBAC7E,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC5B,OAAO,CAAC,KAAK,CACX,kGAAkG,CACnG,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9C,CAAC;gBAED,IAAI,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzC,IAAI,KAAK,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACxE,MAAM,GAAG,wBAAwB,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpE,CAAC;gBACD,MAAM,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,EAAE,CAAC;QACT,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO;QACzB,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,GAAG,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,EAAE,iBAAiB,IAAI,IAAI,EAAE,eAAe,IAAI,GAAG,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAClC,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CACX,oIAAoI,CACrI,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Build LoxtepClient for CLI commands: merged auth
|
|
2
|
+
* Build LoxtepClient for CLI commands: merged auth, JWT, and STS SigV4 from login.
|
|
3
3
|
*/
|
|
4
4
|
import { loadConfig } from '../config/load.js';
|
|
5
5
|
import { type RefreshResponse } from '../auth/login.js';
|
|
6
6
|
import { LoxtepClient } from '../client/loxtep-client.js';
|
|
7
|
+
import { LoxtepHttpClient } from '../http/client.js';
|
|
7
8
|
export interface CreateCliClientOptions {
|
|
8
9
|
configFilePath?: string;
|
|
9
10
|
credentialsPath?: string;
|
|
@@ -20,6 +21,18 @@ export interface CliAuthContext {
|
|
|
20
21
|
get_token: () => Promise<string | null>;
|
|
21
22
|
refresh_auth: () => Promise<boolean>;
|
|
22
23
|
}
|
|
24
|
+
export type CliSigV4Credentials = {
|
|
25
|
+
accessKeyId: string;
|
|
26
|
+
secretAccessKey: string;
|
|
27
|
+
sessionToken?: string;
|
|
28
|
+
};
|
|
29
|
+
/** Load STS credentials from credentials.json (with expiry refresh), or dummy dev fallback. */
|
|
30
|
+
export declare function resolveCliSigV4Credentials(options?: CreateCliClientOptions): Promise<CliSigV4Credentials>;
|
|
31
|
+
/** HTTP client for CLI commands: platform URL resolution, JWT, and STS SigV4 from login. */
|
|
32
|
+
export declare function createCliHttpClient(options?: CreateCliClientOptions): Promise<{
|
|
33
|
+
http: LoxtepHttpClient;
|
|
34
|
+
auth: CliAuthContext;
|
|
35
|
+
} | null>;
|
|
23
36
|
/**
|
|
24
37
|
* Shared CLI auth: proactive refresh near JWT expiry + {@link LoxtepHttpClient} 401 retry via refresh_auth.
|
|
25
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-cli-client.d.ts","sourceRoot":"","sources":["../../src/cli/create-cli-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,OAAO,EAAW,KAAK,eAAe,EAA4B,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"create-cli-client.d.ts","sourceRoot":"","sources":["../../src/cli/create-cli-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,OAAO,EAAW,KAAK,eAAe,EAA4B,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8FAA8F;IAC9F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,KAAK,CAAC;IACxB,mGAAmG;IACnG,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CACtD;AA4BD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAQF,+FAA+F;AAC/F,wBAAsB,0BAA0B,CAC9C,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,mBAAmB,CAAC,CAkD9B;AAED,4FAA4F;AAC5F,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GAAG,IAAI,CAAC,CA2BlE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAsEhC;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC;IACnF,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;CAChD,GAAG,IAAI,CAAC,CA0CR;AAED,mDAAmD;AACnD,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC;IACpF,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;CAChD,CAAC,CAUD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Build LoxtepClient for CLI commands: merged auth
|
|
2
|
+
* Build LoxtepClient for CLI commands: merged auth, JWT, and STS SigV4 from login.
|
|
3
3
|
*/
|
|
4
4
|
import { loadConfig } from '../config/load.js';
|
|
5
5
|
import { resolveCliAccessToken } from './auth-resolve.js';
|
|
@@ -8,6 +8,7 @@ import { TokenManager } from '../auth/token-manager.js';
|
|
|
8
8
|
import { refresh } from '../auth/login.js';
|
|
9
9
|
import { decodeJwtPayload } from '../auth/jwt.js';
|
|
10
10
|
import { LoxtepClient } from '../client/loxtep-client.js';
|
|
11
|
+
import { LoxtepHttpClient } from '../http/client.js';
|
|
11
12
|
import { resolveCliApiUrl } from './resolve-api-url.js';
|
|
12
13
|
function jwtExpSeconds(token) {
|
|
13
14
|
const { exp } = decodeJwtPayload(token);
|
|
@@ -24,6 +25,83 @@ async function persistRefreshedTokens(source, access_token, refresh_token, expir
|
|
|
24
25
|
aws_credentials: aws_credentials ?? prev?.aws_credentials,
|
|
25
26
|
}, credentialsPath);
|
|
26
27
|
}
|
|
28
|
+
const DUMMY_SIGV4 = { accessKeyId: 'cli', secretAccessKey: 'cli' };
|
|
29
|
+
function isDummySigV4(creds) {
|
|
30
|
+
return creds.accessKeyId === 'cli' && creds.secretAccessKey === 'cli';
|
|
31
|
+
}
|
|
32
|
+
/** Load STS credentials from credentials.json (with expiry refresh), or dummy dev fallback. */
|
|
33
|
+
export async function resolveCliSigV4Credentials(options = {}) {
|
|
34
|
+
const credsPath = options.credentialsPath ?? resolveCredentialsPath(options.cwd).path;
|
|
35
|
+
let fileCreds = await readCredentials(credsPath);
|
|
36
|
+
const cliSigv4 = fileCreds?.aws_credentials
|
|
37
|
+
? {
|
|
38
|
+
accessKeyId: fileCreds.aws_credentials.access_key_id,
|
|
39
|
+
secretAccessKey: fileCreds.aws_credentials.secret_access_key,
|
|
40
|
+
sessionToken: fileCreds.aws_credentials.session_token,
|
|
41
|
+
}
|
|
42
|
+
: { ...DUMMY_SIGV4 };
|
|
43
|
+
const expired = fileCreds?.aws_credentials?.expiration &&
|
|
44
|
+
new Date(fileCreds.aws_credentials.expiration).getTime() < Date.now();
|
|
45
|
+
if (!fileCreds?.aws_credentials || expired) {
|
|
46
|
+
const authCtxForRefresh = await createCliAuthContext({
|
|
47
|
+
...options,
|
|
48
|
+
on_after_refresh: r => {
|
|
49
|
+
options.on_after_refresh?.(r);
|
|
50
|
+
if (r.aws_credentials) {
|
|
51
|
+
Object.assign(cliSigv4, {
|
|
52
|
+
accessKeyId: r.aws_credentials.access_key_id,
|
|
53
|
+
secretAccessKey: r.aws_credentials.secret_access_key,
|
|
54
|
+
sessionToken: r.aws_credentials.session_token,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
if (authCtxForRefresh) {
|
|
60
|
+
await authCtxForRefresh.refresh_auth();
|
|
61
|
+
fileCreds = await readCredentials(credsPath);
|
|
62
|
+
if (fileCreds?.aws_credentials) {
|
|
63
|
+
Object.assign(cliSigv4, {
|
|
64
|
+
accessKeyId: fileCreds.aws_credentials.access_key_id,
|
|
65
|
+
secretAccessKey: fileCreds.aws_credentials.secret_access_key,
|
|
66
|
+
sessionToken: fileCreds.aws_credentials.session_token,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (isDummySigV4(cliSigv4)) {
|
|
72
|
+
console.error('[loxtep] No AWS SigV4 credentials in credentials.json — API calls may return empty responses. ' +
|
|
73
|
+
'Run `loxtep login` again (browser login should mint STS creds via refresh).');
|
|
74
|
+
}
|
|
75
|
+
return cliSigv4;
|
|
76
|
+
}
|
|
77
|
+
/** HTTP client for CLI commands: platform URL resolution, JWT, and STS SigV4 from login. */
|
|
78
|
+
export async function createCliHttpClient(options = {}) {
|
|
79
|
+
const config = await loadConfig(options.configFilePath);
|
|
80
|
+
const sigv4 = await resolveCliSigV4Credentials(options);
|
|
81
|
+
const authCtx = await createCliAuthContext({
|
|
82
|
+
...options,
|
|
83
|
+
on_after_refresh: r => {
|
|
84
|
+
options.on_after_refresh?.(r);
|
|
85
|
+
if (r.aws_credentials) {
|
|
86
|
+
sigv4.accessKeyId = r.aws_credentials.access_key_id;
|
|
87
|
+
sigv4.secretAccessKey = r.aws_credentials.secret_access_key;
|
|
88
|
+
sigv4.sessionToken = r.aws_credentials.session_token;
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
if (!authCtx)
|
|
93
|
+
return null;
|
|
94
|
+
const http = new LoxtepHttpClient({
|
|
95
|
+
base_url: authCtx.api_url,
|
|
96
|
+
use_platform_path_resolution: true,
|
|
97
|
+
get_token: authCtx.get_token,
|
|
98
|
+
refresh_auth: authCtx.refresh_auth,
|
|
99
|
+
credentials: sigv4,
|
|
100
|
+
region: config.region,
|
|
101
|
+
...(options.fetch_fn ? { fetch_fn: options.fetch_fn } : {}),
|
|
102
|
+
});
|
|
103
|
+
return { http, auth: authCtx };
|
|
104
|
+
}
|
|
27
105
|
/**
|
|
28
106
|
* Shared CLI auth: proactive refresh near JWT expiry + {@link LoxtepHttpClient} 401 retry via refresh_auth.
|
|
29
107
|
*/
|
|
@@ -91,50 +169,7 @@ export async function createCliAuthContext(options = {}) {
|
|
|
91
169
|
}
|
|
92
170
|
export async function createCliClient(options = {}) {
|
|
93
171
|
const config = await loadConfig(options.configFilePath);
|
|
94
|
-
const
|
|
95
|
-
const fileCreds = await readCredentials(credsPath);
|
|
96
|
-
const cliSigv4 = fileCreds?.aws_credentials
|
|
97
|
-
? {
|
|
98
|
-
accessKeyId: fileCreds.aws_credentials.access_key_id,
|
|
99
|
-
secretAccessKey: fileCreds.aws_credentials.secret_access_key,
|
|
100
|
-
sessionToken: fileCreds.aws_credentials.session_token,
|
|
101
|
-
}
|
|
102
|
-
: {
|
|
103
|
-
accessKeyId: 'cli',
|
|
104
|
-
secretAccessKey: 'cli',
|
|
105
|
-
};
|
|
106
|
-
// Check if STS credentials are expired and proactively refresh
|
|
107
|
-
if (fileCreds?.aws_credentials?.expiration) {
|
|
108
|
-
const expMs = new Date(fileCreds.aws_credentials.expiration).getTime();
|
|
109
|
-
if (expMs < Date.now()) {
|
|
110
|
-
// STS expired — trigger a refresh to get fresh credentials
|
|
111
|
-
const authCtxForRefresh = await createCliAuthContext(options);
|
|
112
|
-
if (authCtxForRefresh) {
|
|
113
|
-
const refreshed = await authCtxForRefresh.refresh_auth();
|
|
114
|
-
if (refreshed) {
|
|
115
|
-
// Re-read credentials file to pick up any new aws_credentials from refresh
|
|
116
|
-
const refreshedCreds = await readCredentials(credsPath);
|
|
117
|
-
if (refreshedCreds?.aws_credentials) {
|
|
118
|
-
const exp2 = new Date(refreshedCreds.aws_credentials.expiration || 0).getTime();
|
|
119
|
-
if (exp2 > Date.now()) {
|
|
120
|
-
Object.assign(cliSigv4, {
|
|
121
|
-
accessKeyId: refreshedCreds.aws_credentials.access_key_id,
|
|
122
|
-
secretAccessKey: refreshedCreds.aws_credentials.secret_access_key,
|
|
123
|
-
sessionToken: refreshedCreds.aws_credentials.session_token,
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// If still expired after refresh, warn but continue (API calls may still work via JWT)
|
|
130
|
-
const stillExpired = cliSigv4.accessKeyId === fileCreds.aws_credentials.access_key_id &&
|
|
131
|
-
expMs < Date.now();
|
|
132
|
-
if (stillExpired) {
|
|
133
|
-
console.error('[loxtep] AWS credentials expired and refresh did not return new ones. ' +
|
|
134
|
-
'Stream bus writes will fail. Run `pnpm exec loxtep login` to get fresh credentials.');
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
172
|
+
const cliSigv4 = await resolveCliSigV4Credentials(options);
|
|
138
173
|
const authCtx = await createCliAuthContext({
|
|
139
174
|
...options,
|
|
140
175
|
on_after_refresh: r => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-cli-client.js","sourceRoot":"","sources":["../../src/cli/create-cli-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAsB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAkD,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAcxD,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,MAAqB,EACrB,YAAoB,EACpB,aAAiC,EACjC,UAA8B,EAC9B,eAAgD,EAChD,eAAuB;IAEvB,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO;IACrC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,gBAAgB,CACpB;QACE,YAAY;QACZ,aAAa;QACb,UAAU;QACV,eAAe,EAAE,eAAe,IAAI,IAAI,EAAE,eAAe;KAC1D,EACD,eAAe,CAChB,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"create-cli-client.js","sourceRoot":"","sources":["../../src/cli/create-cli-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loxtep/sdk",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.13",
|
|
4
4
|
"description": "Loxtep SDK for Node.js — the Enterprise Context Layer: data products, workflows, projects, queues, and machine-usable context for AI",
|
|
5
5
|
"author": "Loxtep <engineering@loxtep.io>",
|
|
6
6
|
"homepage": "https://loxtep.io",
|