@heossi/qnsi 0.5.2 → 0.5.5

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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # @heossi/qnsi
2
2
 
3
+ ## 0.5.3
4
+
5
+ ### Patch Changes
6
+
7
+ - d9ab7af: Bump `@noble/post-quantum` 0.6.0 → 0.6.1 (the SDK's pure-JS / cross-verification PQC provider).
8
+
9
+ Cryptographically equivalent to 0.6.0: the regenerated NIST ACVP determinism vectors confirm keygen output is byte-identical (every ML-KEM / ML-DSA / SLH-DSA key SHA-256 matched the 0.6.0 values), and the published conformance run is unchanged (noble 435/435 against the official NIST ACVP test vectors). No API or behavior change — the dependency floor moves to the latest patch.
10
+
3
11
  ## 0.3.0
4
12
 
5
13
  ### Minor Changes
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  The official **single-package** Node.js / TypeScript SDK for QNSI. Covers the full customer-facing platform — vault, KMS, audit, auth, tenant, access-control, billing, crypto-inventory, storage, search, and AI orchestrator — plus webhook signature verification. Mirrors the shape of the `qnsi` Python / Go / Rust SDKs byte-for-byte: same wire contracts, same algorithm names, same FIPS 203 / 204 / 205 posture.
7
7
 
8
- > **Free tier available.** Free-forever account at <https://cloud.qnsi.heossi.com/auth> — 60-second signup, no credit card. Includes 10 GB PQC storage, 50 000 API calls/month, 20 KMS keys, 25 vault secrets.
8
+ > **Platform:** <https://qnsi.heossi.com> · **Free tier:** free-forever account at <https://cloud.qnsi.heossi.com/auth> — 60-second signup, no credit card. Includes 10 GB PQC storage, 50 000 API calls/month, 20 KMS keys, 25 vault secrets.
9
9
 
10
10
  ## Why one package?
11
11
 
@@ -1 +1 @@
1
- {"version":3,"file":"kms.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/kms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAO9C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAoK7E"}
1
+ {"version":3,"file":"kms.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/kms.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAO9C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA0L7E"}
@@ -1,3 +1,4 @@
1
+ import { randomUUID } from "node:crypto";
1
2
  import { EXIT_CODES } from "../config.js";
2
3
  import { getAuthHeaders } from "../utils/auth.js";
3
4
  import { getEffectiveConfig } from "../utils/command-config.js";
@@ -115,11 +116,33 @@ export function registerKmsCommands(program, config) {
115
116
  return process.exit(EXIT_CODES.INVALID_ARGUMENTS);
116
117
  }
117
118
  const headers = await getAuthHeaders(effectiveConfig);
119
+ // WIRE CONTRACT (kms-service createKeySchema):
120
+ // { tenantId, keyId (REQUIRED, 1-255), keyType (root|master|data|byok),
121
+ // algorithm, metadata }
122
+ //
123
+ // This sent `{ tenantId, name, algorithm, purpose }` — no keyId, no keyType, and
124
+ // two fields (`name`, `purpose`) the backend does not know. It returned 400
125
+ // EVERY TIME: the command had never created a key. Proven 2026-07-14 against
126
+ // production with a real API key:
127
+ //
128
+ // fieldErrors: { keyId: ["expected string, received undefined"],
129
+ // keyType: ["expected one of root|master|data|byok"] }
130
+ //
131
+ // Identical to the MCP server's qnsp_kms_generate_key. Backend Zod objects are
132
+ // NON-STRICT, so `name`/`purpose` were silently STRIPPED and the two required
133
+ // fields simply never arrived — which is why the failure never named itself.
134
+ // They belong in metadata, exactly as the (proven) SDK does.
135
+ const metadata = {};
136
+ if (options.name)
137
+ metadata["name"] = String(options.name);
138
+ if (options.purpose)
139
+ metadata["purpose"] = String(options.purpose);
118
140
  const body = {
119
141
  tenantId: effectiveConfig.tenantId,
120
- name: options.name ?? `key-${Date.now()}`,
142
+ keyId: randomUUID(),
143
+ keyType: "data",
121
144
  algorithm: options.algorithm,
122
- purpose: options.purpose,
145
+ metadata,
123
146
  };
124
147
  const response = await fetchWithBackendHandling(effectiveConfig, `${effectiveConfig.kmsServiceUrl}/kms/v1/keys`, {
125
148
  method: "POST",
@@ -1 +1 @@
1
- {"version":3,"file":"kms.js","sourceRoot":"","sources":["../../../src/cli/commands/kms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kms.js","sourceRoot":"","sources":["../../../src/cli/commands/kms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErF,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,MAAiB;IACtE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IAE9E,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAE/D,IAAI;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,eAAe,CAAC;SAC5B,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,EAAE,KAAK,CAAC;SAC7D,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtB,UAAU,CAAC,4BAA4B,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,eAAe,CAAC,aAAa,cAAc,CAAC,CAAC;YACpE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YACjE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,eAAe,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE;gBAChF,OAAO;aACP,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAClB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,UAAU,CAAC,wBAAwB,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;gBACnE,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA0C,CAAC;YAE9E,IAAI,eAAe,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpE,OAAO;YACR,CAAC;YACD,UAAU,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;YAC3E,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC,CAAC,CAAC;IAEJ,IAAI;SACF,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,qBAAqB,CAAC;SAClC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;SACrC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtB,UAAU,CAAC,4BAA4B,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5D,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;gBAC/B,UAAU,CAAC,4BAA4B,CAAC,CAAC;gBACzC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,eAAe,CAAC,aAAa,gBAAgB,KAAK,EAAE,CAAC,CAAC;YAC7E,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE3D,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,eAAe,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE;gBAChF,OAAO;aACP,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC7B,UAAU,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;gBACtC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAClB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,UAAU,CAAC,sBAAsB,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;gBACjE,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC;YAEhE,IAAI,eAAe,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpE,OAAO;YACR,CAAC;YACD,UAAU,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;YACzE,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC,CAAC,CAAC;IAEJ,IAAI;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC;SACnC,MAAM,CAAC,yBAAyB,EAAE,eAAe,EAAE,aAAa,CAAC;SACjE,MAAM,CAAC,qBAAqB,EAAE,aAAa,EAAE,YAAY,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtB,UAAU,CAAC,4BAA4B,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5D,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;gBAC/B,UAAU,CAAC,4BAA4B,CAAC,CAAC;gBACzC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;YAEtD,+CAA+C;YAC/C,4EAA4E;YAC5E,8BAA8B;YAC9B,EAAE;YACF,iFAAiF;YACjF,4EAA4E;YAC5E,6EAA6E;YAC7E,kCAAkC;YAClC,EAAE;YACF,qEAAqE;YACrE,0EAA0E;YAC1E,EAAE;YACF,+EAA+E;YAC/E,8EAA8E;YAC9E,6EAA6E;YAC7E,6DAA6D;YAC7D,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,IAAI,OAAO,CAAC,IAAI;gBAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,OAAO,CAAC,OAAO;gBAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEnE,MAAM,IAAI,GAAG;gBACZ,QAAQ,EAAE,eAAe,CAAC,QAAQ;gBAClC,KAAK,EAAE,UAAU,EAAE;gBACnB,OAAO,EAAE,MAAM;gBACf,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ;aACR,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAC9C,eAAe,EACf,GAAG,eAAe,CAAC,aAAa,cAAc,EAC9C;gBACC,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC1B,CACD,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAClB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,UAAU,CAAC,yBAAyB,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;gBACpE,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiD,CAAC;YAErF,IAAI,eAAe,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACP,YAAY,CAAC,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3C,UAAU,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpE,OAAO;YACR,CAAC;YACD,UAAU,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;YAC5E,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,2GAA2G;AAC3G,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC7B;AAGD,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,OAAO,EACb,MAAM,SAAM,EACZ,EAAE,UAAO,EACT,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,QAAQ,CAgBV;AAED,eAAO,MAAM,UAAU,EAAE,SAmBxB,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,eAAe,CAmCtD"}
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,2GAA2G;AAC3G,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC7B;AAGD,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,OAAO,EACb,MAAM,SAAM,EACZ,EAAE,UAAO,EACT,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,QAAQ,CAgBV;AAED,eAAO,MAAM,UAAU,EAAE,SAsBxB,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,eAAe,CAmCtD"}
@@ -20,6 +20,9 @@ export const mockConfig = {
20
20
  edgeGatewayUrl: null,
21
21
  cloudPortalUrl: "https://cloud.qnsi.heossi.com",
22
22
  authServiceUrl: "http://localhost:8081",
23
+ // null = exercise the service-account path, which is what these tests cover.
24
+ // The api-key path is covered separately (utils/auth.test.ts).
25
+ apiKey: null,
23
26
  serviceId: "test-service-id",
24
27
  serviceSecret: "test-secret",
25
28
  tenantId: "test-tenant",
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../../src/cli/commands/test-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../../src/cli/commands/test-utils.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,21 @@ export interface CliConfig {
2
2
  readonly edgeGatewayUrl: string | null;
3
3
  readonly cloudPortalUrl: string;
4
4
  readonly authServiceUrl: string;
5
+ /**
6
+ * A customer's API key (QNSI_API_KEY) — the ONLY credential a customer actually has.
7
+ *
8
+ * The CLI ships as the `qnsi` bin inside @heossi/qnsi, the package every customer
9
+ * installs, yet it had NO api-key path at all: it required QNSI_SERVICE_ID +
10
+ * QNSI_SERVICE_SECRET + QNSI_TENANT_ID — internal service-account credentials. Proven
11
+ * 2026-07-14: `qnsi kms keys list` with a real API key exited with
12
+ * "Error: QNSI_SERVICE_ID must be set". The word `apiKey` appeared exactly once in the
13
+ * whole CLI, in a log-sanitiser regex.
14
+ *
15
+ * When this is set, the CLI activates it (resolving the tenant automatically, like the
16
+ * SDK does) and uses it as the bearer. The service-account path is unchanged for
17
+ * internal/ops use.
18
+ */
19
+ readonly apiKey: string | null;
5
20
  readonly serviceId: string | null;
6
21
  readonly serviceSecret: string | null;
7
22
  readonly tenantId: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAC9C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC1B;AAkBD,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAgFpE;AAED,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAC9C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC1B;AA8CD,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CA2FpE;AAED,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAC"}
@@ -7,6 +7,30 @@ const shouldLoadDotenv = (process.env["NODE_ENV"] ?? "development") !== "product
7
7
  if (shouldLoadDotenv) {
8
8
  loadDotenv();
9
9
  }
10
+ /**
11
+ * Build a service base URL.
12
+ *
13
+ * THE PREFIX MUST NOT BE APPLIED TWICE. The edge gateway strips only `/proxy` and forwards
14
+ * the rest, so a call to `/proxy/kms/v1/keys` reaches kms-service as `/kms/v1/keys` — which
15
+ * is exactly its route. And EVERY CLI command already appends the service-prefixed path
16
+ * (`${kmsServiceUrl}/kms/v1/keys`, `${vaultServiceUrl}/vault/v1/secrets`, …).
17
+ *
18
+ * So `proxyPath` must be EMPTY for those services. It was `/kms`, `/vault`, `/audit`, …, so
19
+ * the CLI built `/proxy/kms` + `/kms/v1/keys` = `/proxy/kms/kms/v1/keys`, and the service
20
+ * answered:
21
+ *
22
+ * 404 Route GET:/kms/kms/v1/keys not found
23
+ *
24
+ * Eight of eleven command groups did this. The CLI had NEVER worked against production — it
25
+ * only ever worked with explicit per-service QNSI_*_SERVICE_URL pointing at localhost, where
26
+ * the command's own prefix is the whole path. Proven 2026-07-14 with a real API key.
27
+ *
28
+ * Two services genuinely DO need a prefix, and they keep it:
29
+ * - storage: production really is `/proxy/storage/storage/v1/...` (the double is real; the
30
+ * storage command appends `/storage/v1/...`).
31
+ * - billing: the billing commands append `/addons`, `/v1/usage` — no service prefix of
32
+ * their own — so the base must carry `/billing`.
33
+ */
10
34
  function deriveViaEdgeGateway(options) {
11
35
  const explicit = process.env[options.envVar];
12
36
  if (explicit && explicit.length > 0) {
@@ -17,38 +41,51 @@ function deriveViaEdgeGateway(options) {
17
41
  }
18
42
  return options.localDefault;
19
43
  }
44
+ /** The production edge gateway — the same default the SDK ships with. */
45
+ const DEFAULT_EDGE_GATEWAY_URL = "https://api.qnsi.heossi.com";
20
46
  export function loadConfig(overrides) {
21
- const edgeGatewayUrl = process.env["QNSI_EDGE_GATEWAY_URL"] ?? null;
47
+ // DEFAULT TO PRODUCTION, exactly as the SDK does (QnsiClientOptions.baseUrl defaults to
48
+ // https://api.qnsi.heossi.com).
49
+ //
50
+ // This was `?? null`, and every service URL derives from it — so with no
51
+ // QNSI_EDGE_GATEWAY_URL the CLI silently pointed at http://localhost:8095 and a
52
+ // customer's very first command died with "fetch failed". A published CLI that defaults
53
+ // to localhost is a CLI that has never been run by anyone outside this repo.
54
+ //
55
+ // Local development still works: set QNSI_EDGE_GATEWAY_URL, or any per-service
56
+ // QNSI_*_SERVICE_URL, and it wins.
57
+ const edgeGatewayUrl = process.env["QNSI_EDGE_GATEWAY_URL"] ?? DEFAULT_EDGE_GATEWAY_URL;
22
58
  const cloudPortalUrl = process.env["QNSI_CLOUD_PORTAL_URL"] ?? "https://cloud.qnsi.heossi.com";
23
59
  const defaults = {
24
60
  edgeGatewayUrl,
25
61
  cloudPortalUrl,
26
62
  authServiceUrl: process.env["QNSI_AUTH_SERVICE_URL"] ?? edgeGatewayUrl ?? "http://localhost:8081",
63
+ apiKey: process.env["QNSI_API_KEY"] ?? process.env["QNSP_API_KEY"] ?? null,
27
64
  serviceId: process.env["QNSI_SERVICE_ID"] ?? null,
28
65
  serviceSecret: process.env["QNSI_SERVICE_SECRET"] ?? null,
29
66
  tenantId: process.env["QNSI_TENANT_ID"] ?? null,
30
67
  kmsServiceUrl: deriveViaEdgeGateway({
31
68
  edgeGatewayUrl,
32
69
  envVar: "QNSI_KMS_SERVICE_URL",
33
- proxyPath: "/kms",
70
+ proxyPath: "",
34
71
  localDefault: "http://localhost:8095",
35
72
  }),
36
73
  vaultServiceUrl: deriveViaEdgeGateway({
37
74
  edgeGatewayUrl,
38
75
  envVar: "QNSI_VAULT_SERVICE_URL",
39
- proxyPath: "/vault",
76
+ proxyPath: "",
40
77
  localDefault: "http://localhost:8090",
41
78
  }),
42
79
  auditServiceUrl: deriveViaEdgeGateway({
43
80
  edgeGatewayUrl,
44
81
  envVar: "QNSI_AUDIT_SERVICE_URL",
45
- proxyPath: "/audit",
82
+ proxyPath: "",
46
83
  localDefault: "http://localhost:8103",
47
84
  }),
48
85
  tenantServiceUrl: deriveViaEdgeGateway({
49
86
  edgeGatewayUrl,
50
87
  envVar: "QNSI_TENANT_SERVICE_URL",
51
- proxyPath: "/tenant",
88
+ proxyPath: "",
52
89
  localDefault: "http://localhost:8108",
53
90
  }),
54
91
  billingServiceUrl: deriveViaEdgeGateway({
@@ -63,13 +100,13 @@ export function loadConfig(overrides) {
63
100
  accessControlServiceUrl: deriveViaEdgeGateway({
64
101
  edgeGatewayUrl,
65
102
  envVar: "QNSI_ACCESS_CONTROL_SERVICE_URL",
66
- proxyPath: "/access",
103
+ proxyPath: "",
67
104
  localDefault: "http://localhost:8102",
68
105
  }),
69
106
  securityMonitoringServiceUrl: deriveViaEdgeGateway({
70
107
  edgeGatewayUrl,
71
108
  envVar: "QNSI_SECURITY_MONITORING_SERVICE_URL",
72
- proxyPath: "/security",
109
+ proxyPath: "",
73
110
  localDefault: "http://localhost:8104",
74
111
  }),
75
112
  storageServiceUrl: deriveViaEdgeGateway({
@@ -81,13 +118,13 @@ export function loadConfig(overrides) {
81
118
  searchServiceUrl: deriveViaEdgeGateway({
82
119
  edgeGatewayUrl,
83
120
  envVar: "QNSI_SEARCH_SERVICE_URL",
84
- proxyPath: "/search",
121
+ proxyPath: "",
85
122
  localDefault: "http://localhost:8101",
86
123
  }),
87
124
  observabilityServiceUrl: deriveViaEdgeGateway({
88
125
  edgeGatewayUrl,
89
126
  envVar: "QNSI_OBSERVABILITY_SERVICE_URL",
90
- proxyPath: "/observability",
127
+ proxyPath: "",
91
128
  localDefault: "http://localhost:8105",
92
129
  }),
93
130
  outputFormat: process.env["QNSI_OUTPUT_FORMAT"] ?? "table",
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -14,6 +14,7 @@ import { registerStorageCommands } from "./commands/storage.js";
14
14
  import { registerTenantCommands } from "./commands/tenant.js";
15
15
  import { registerVaultCommands } from "./commands/vault.js";
16
16
  import { loadConfig } from "./config.js";
17
+ import { resolveApiKeyTenant } from "./utils/auth.js";
17
18
  const program = new Command();
18
19
  program
19
20
  .name("qnsi")
@@ -37,7 +38,22 @@ program
37
38
  .option("--observability-service-url <url>", "Observability service URL")
38
39
  .option("--output <format>", "Output format: json, table, yaml", "table")
39
40
  .option("--verbose", "Enable verbose output");
40
- const config = loadConfig();
41
+ const baseConfig = loadConfig();
42
+ /**
43
+ * With an API key, the tenant resolves from the activation handshake — a customer should
44
+ * never have to look up and export their own tenant UUID.
45
+ *
46
+ * Every command guards on `config.tenantId` and exits with "QNSI_TENANT_ID must be set".
47
+ * That is fine for the service-account path (an ops operator knows the tenant), but a
48
+ * customer holding only an API key had no way through: the CLI demanded QNSI_SERVICE_ID,
49
+ * QNSI_SERVICE_SECRET *and* QNSI_TENANT_ID — none of which they have.
50
+ *
51
+ * Resolving once here, before the commands are registered, means every existing command
52
+ * works with an API key and nothing downstream changes.
53
+ */
54
+ const config = baseConfig.apiKey && !baseConfig.tenantId
55
+ ? { ...baseConfig, tenantId: await resolveApiKeyTenant(baseConfig) }
56
+ : baseConfig;
41
57
  registerAuthCommands(program, config);
42
58
  registerKmsCommands(program, config);
43
59
  registerVaultCommands(program, config);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CliConfig } from "../config.js";
2
2
  export declare function requestServiceToken(config: CliConfig): Promise<string | null>;
3
+ export declare function resolveApiKeyTenant(config: CliConfig): Promise<string | null>;
3
4
  export declare function getAuthHeaders(config: CliConfig): Promise<Record<string, string>>;
4
5
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAc9C,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuFnF;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiBvF"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAc9C,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuFnF;AAQD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwBnF;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA2CvF"}
@@ -82,7 +82,67 @@ export async function requestServiceToken(config) {
82
82
  process.exit(EXIT_CODES.NETWORK_ERROR);
83
83
  }
84
84
  }
85
+ /**
86
+ * Resolve the tenant that owns an API key, by activating it — the same handshake the SDK
87
+ * performs on its first call. Cached for the life of the process.
88
+ */
89
+ let cachedApiKeyTenant = null;
90
+ export async function resolveApiKeyTenant(config) {
91
+ if (!config.apiKey)
92
+ return null;
93
+ if (config.tenantId)
94
+ return config.tenantId; // an explicit tenant always wins
95
+ if (cachedApiKeyTenant?.key === config.apiKey)
96
+ return cachedApiKeyTenant.tenantId;
97
+ const base = (config.edgeGatewayUrl ?? "https://api.qnsi.heossi.com").replace(/\/$/, "");
98
+ try {
99
+ const response = await fetch(`${base}/proxy/billing/v1/sdk/activate`, {
100
+ method: "POST",
101
+ headers: {
102
+ authorization: `Bearer ${config.apiKey}`,
103
+ "content-type": "application/json",
104
+ },
105
+ body: JSON.stringify({ sdkId: "qnsp", sdkVersion: "cli", runtime: "node" }),
106
+ signal: AbortSignal.timeout(15_000),
107
+ });
108
+ if (!response.ok)
109
+ return null;
110
+ const body = (await response.json());
111
+ if (typeof body.tenantId !== "string" || body.tenantId.length === 0)
112
+ return null;
113
+ cachedApiKeyTenant = { key: config.apiKey, tenantId: body.tenantId };
114
+ return body.tenantId;
115
+ }
116
+ catch {
117
+ return null;
118
+ }
119
+ }
85
120
  export async function getAuthHeaders(config) {
121
+ // ── API-KEY PATH (what a CUSTOMER actually has) ──────────────────────────────
122
+ //
123
+ // The CLI ships as the `qnsi` bin inside @heossi/qnsi — the package every customer
124
+ // installs — but it had NO api-key path: it demanded QNSI_SERVICE_ID +
125
+ // QNSI_SERVICE_SECRET, which are INTERNAL service-account credentials. Proven
126
+ // 2026-07-14 against production: `qnsi kms keys list` with a real API key exited
127
+ // "Error: QNSI_SERVICE_ID must be set". The shipped CLI was unusable by the audience
128
+ // it shipped to — advertised-not-built, aimed straight at developers.
129
+ //
130
+ // The API key IS a bearer credential at the edge gateway (that is exactly how every
131
+ // SDK authenticates), and the tenant resolves from the activation handshake — so a
132
+ // customer needs nothing but their key.
133
+ if (config.apiKey) {
134
+ const headers = {
135
+ Authorization: `Bearer ${config.apiKey}`,
136
+ "Content-Type": "application/json",
137
+ };
138
+ const tenantId = await resolveApiKeyTenant(config);
139
+ if (tenantId) {
140
+ headers["x-qnsp-tenant"] = tenantId;
141
+ headers["x-tenant-id"] = tenantId;
142
+ }
143
+ return headers;
144
+ }
145
+ // ── SERVICE-ACCOUNT PATH (internal / ops) — unchanged ────────────────────────
86
146
  const token = await requestServiceToken(config);
87
147
  if (!token) {
88
148
  process.exit(EXIT_CODES.AUTH_ERROR);
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/utils/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/utils/auth.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heossi/qnsi",
3
- "version": "0.5.2",
3
+ "version": "0.5.5",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -48,16 +48,12 @@
48
48
  },
49
49
  "peerDependencies": {
50
50
  "@langchain/core": ">=0.3.0",
51
- "autogen": ">=0.0.1",
52
51
  "llamaindex": ">=0.5.0"
53
52
  },
54
53
  "peerDependenciesMeta": {
55
54
  "@langchain/core": {
56
55
  "optional": true
57
56
  },
58
- "autogen": {
59
- "optional": true
60
- },
61
57
  "llamaindex": {
62
58
  "optional": true
63
59
  }
@@ -99,7 +95,7 @@
99
95
  "url": "https://github.com/heossihq/qnsi-public",
100
96
  "directory": "packages/qnsi"
101
97
  },
102
- "homepage": "https://cloud.qnsi.heossi.com",
98
+ "homepage": "https://qnsi.heossi.com",
103
99
  "bugs": {
104
100
  "url": "https://github.com/heossihq/qnsi-public/issues"
105
101
  },