@heossi/qnsi 0.3.2
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 +67 -0
- package/LICENSE.md +8 -0
- package/README.md +200 -0
- package/dist/_activation/activation-client.d.ts +65 -0
- package/dist/_activation/activation-client.d.ts.map +1 -0
- package/dist/_activation/activation-client.js +164 -0
- package/dist/_activation/activation-client.js.map +1 -0
- package/dist/_activation/index.d.ts +10 -0
- package/dist/_activation/index.d.ts.map +1 -0
- package/dist/_activation/index.js +10 -0
- package/dist/_activation/index.js.map +1 -0
- package/dist/_activation/types.d.ts +128 -0
- package/dist/_activation/types.d.ts.map +1 -0
- package/dist/_activation/types.js +94 -0
- package/dist/_activation/types.js.map +1 -0
- package/dist/_internal.d.ts +52 -0
- package/dist/_internal.d.ts.map +1 -0
- package/dist/_internal.js +235 -0
- package/dist/_internal.js.map +1 -0
- package/dist/access.d.ts +32 -0
- package/dist/access.d.ts.map +1 -0
- package/dist/access.js +33 -0
- package/dist/access.js.map +1 -0
- package/dist/ai.d.ts +51 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +53 -0
- package/dist/ai.js.map +1 -0
- package/dist/audit.d.ts +18 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +21 -0
- package/dist/audit.js.map +1 -0
- package/dist/auth.d.ts +31 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +69 -0
- package/dist/auth.js.map +1 -0
- package/dist/autogen/executor.d.ts +200 -0
- package/dist/autogen/executor.d.ts.map +1 -0
- package/dist/autogen/executor.js +277 -0
- package/dist/autogen/executor.js.map +1 -0
- package/dist/autogen/index.d.ts +18 -0
- package/dist/autogen/index.d.ts.map +1 -0
- package/dist/autogen/index.js +17 -0
- package/dist/autogen/index.js.map +1 -0
- package/dist/billing.d.ts +22 -0
- package/dist/billing.d.ts.map +1 -0
- package/dist/billing.js +33 -0
- package/dist/billing.js.map +1 -0
- package/dist/browser/encrypt.d.ts +68 -0
- package/dist/browser/encrypt.d.ts.map +1 -0
- package/dist/browser/encrypt.js +191 -0
- package/dist/browser/encrypt.js.map +1 -0
- package/dist/browser/index.d.ts +39 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +41 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/noble-provider.d.ts +10 -0
- package/dist/browser/noble-provider.d.ts.map +1 -0
- package/dist/browser/noble-provider.js +130 -0
- package/dist/browser/noble-provider.js.map +1 -0
- package/dist/browser/pqc-types.d.ts +40 -0
- package/dist/browser/pqc-types.d.ts.map +1 -0
- package/dist/browser/pqc-types.js +2 -0
- package/dist/browser/pqc-types.js.map +1 -0
- package/dist/browser/provider-setup.d.ts +70 -0
- package/dist/browser/provider-setup.d.ts.map +1 -0
- package/dist/browser/provider-setup.js +101 -0
- package/dist/browser/provider-setup.js.map +1 -0
- package/dist/browser/sdk-package-version.d.ts +12 -0
- package/dist/browser/sdk-package-version.d.ts.map +1 -0
- package/dist/browser/sdk-package-version.js +12 -0
- package/dist/browser/sdk-package-version.js.map +1 -0
- package/dist/browser/sign.d.ts +65 -0
- package/dist/browser/sign.d.ts.map +1 -0
- package/dist/browser/sign.js +124 -0
- package/dist/browser/sign.js.map +1 -0
- package/dist/browser/telemetry.d.ts +98 -0
- package/dist/browser/telemetry.d.ts.map +1 -0
- package/dist/browser/telemetry.js +93 -0
- package/dist/browser/telemetry.js.map +1 -0
- package/dist/cli/commands/access-control.d.ts +4 -0
- package/dist/cli/commands/access-control.d.ts.map +1 -0
- package/dist/cli/commands/access-control.js +183 -0
- package/dist/cli/commands/access-control.js.map +1 -0
- package/dist/cli/commands/audit.d.ts +4 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +70 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +4 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +46 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/billing.d.ts +4 -0
- package/dist/cli/commands/billing.d.ts.map +1 -0
- package/dist/cli/commands/billing.js +179 -0
- package/dist/cli/commands/billing.js.map +1 -0
- package/dist/cli/commands/crypto-policy.d.ts +4 -0
- package/dist/cli/commands/crypto-policy.d.ts.map +1 -0
- package/dist/cli/commands/crypto-policy.js +130 -0
- package/dist/cli/commands/crypto-policy.js.map +1 -0
- package/dist/cli/commands/kms.d.ts +4 -0
- package/dist/cli/commands/kms.d.ts.map +1 -0
- package/dist/cli/commands/kms.js +153 -0
- package/dist/cli/commands/kms.js.map +1 -0
- package/dist/cli/commands/observability.d.ts +4 -0
- package/dist/cli/commands/observability.d.ts.map +1 -0
- package/dist/cli/commands/observability.js +97 -0
- package/dist/cli/commands/observability.js.map +1 -0
- package/dist/cli/commands/search.d.ts +4 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +66 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/security.d.ts +4 -0
- package/dist/cli/commands/security.d.ts.map +1 -0
- package/dist/cli/commands/security.js +136 -0
- package/dist/cli/commands/security.js.map +1 -0
- package/dist/cli/commands/storage.d.ts +4 -0
- package/dist/cli/commands/storage.d.ts.map +1 -0
- package/dist/cli/commands/storage.js +85 -0
- package/dist/cli/commands/storage.js.map +1 -0
- package/dist/cli/commands/tenant.d.ts +4 -0
- package/dist/cli/commands/tenant.d.ts.map +1 -0
- package/dist/cli/commands/tenant.js +82 -0
- package/dist/cli/commands/tenant.js.map +1 -0
- package/dist/cli/commands/test-utils.d.ts +15 -0
- package/dist/cli/commands/test-utils.d.ts.map +1 -0
- package/dist/cli/commands/test-utils.js +72 -0
- package/dist/cli/commands/test-utils.js.map +1 -0
- package/dist/cli/commands/vault.d.ts +4 -0
- package/dist/cli/commands/vault.d.ts.map +1 -0
- package/dist/cli/commands/vault.js +111 -0
- package/dist/cli/commands/vault.js.map +1 -0
- package/dist/cli/config.d.ts +32 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +105 -0
- package/dist/cli/config.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 +54 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/audit-logger.d.ts +17 -0
- package/dist/cli/utils/audit-logger.d.ts.map +1 -0
- package/dist/cli/utils/audit-logger.js +52 -0
- package/dist/cli/utils/audit-logger.js.map +1 -0
- package/dist/cli/utils/auth.d.ts +4 -0
- package/dist/cli/utils/auth.d.ts.map +1 -0
- package/dist/cli/utils/auth.js +100 -0
- package/dist/cli/utils/auth.js.map +1 -0
- package/dist/cli/utils/backend-validator.d.ts +19 -0
- package/dist/cli/utils/backend-validator.d.ts.map +1 -0
- package/dist/cli/utils/backend-validator.js +72 -0
- package/dist/cli/utils/backend-validator.js.map +1 -0
- package/dist/cli/utils/command-config.d.ts +4 -0
- package/dist/cli/utils/command-config.d.ts.map +1 -0
- package/dist/cli/utils/command-config.js +29 -0
- package/dist/cli/utils/command-config.js.map +1 -0
- package/dist/cli/utils/fetcher.d.ts +3 -0
- package/dist/cli/utils/fetcher.d.ts.map +1 -0
- package/dist/cli/utils/fetcher.js +30 -0
- package/dist/cli/utils/fetcher.js.map +1 -0
- package/dist/cli/utils/https-validator.d.ts +9 -0
- package/dist/cli/utils/https-validator.d.ts.map +1 -0
- package/dist/cli/utils/https-validator.js +35 -0
- package/dist/cli/utils/https-validator.js.map +1 -0
- package/dist/cli/utils/output.d.ts +6 -0
- package/dist/cli/utils/output.d.ts.map +1 -0
- package/dist/cli/utils/output.js +29 -0
- package/dist/cli/utils/output.js.map +1 -0
- package/dist/cli/utils/pqc-validator.d.ts +17 -0
- package/dist/cli/utils/pqc-validator.d.ts.map +1 -0
- package/dist/cli/utils/pqc-validator.js +62 -0
- package/dist/cli/utils/pqc-validator.js.map +1 -0
- package/dist/cli/utils/prompt.d.ts +4 -0
- package/dist/cli/utils/prompt.d.ts.map +1 -0
- package/dist/cli/utils/prompt.js +30 -0
- package/dist/cli/utils/prompt.js.map +1 -0
- package/dist/cli/utils/rate-limiter.d.ts +15 -0
- package/dist/cli/utils/rate-limiter.d.ts.map +1 -0
- package/dist/cli/utils/rate-limiter.js +46 -0
- package/dist/cli/utils/rate-limiter.js.map +1 -0
- package/dist/cli/utils/sanitize.d.ts +3 -0
- package/dist/cli/utils/sanitize.d.ts.map +1 -0
- package/dist/cli/utils/sanitize.js +44 -0
- package/dist/cli/utils/sanitize.js.map +1 -0
- package/dist/cli/utils/security-headers.d.ts +18 -0
- package/dist/cli/utils/security-headers.d.ts.map +1 -0
- package/dist/cli/utils/security-headers.js +32 -0
- package/dist/cli/utils/security-headers.js.map +1 -0
- package/dist/cli/utils/token-cache.d.ts +4 -0
- package/dist/cli/utils/token-cache.d.ts.map +1 -0
- package/dist/cli/utils/token-cache.js +22 -0
- package/dist/cli/utils/token-cache.js.map +1 -0
- package/dist/client.d.ts +52 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +78 -0
- package/dist/client.js.map +1 -0
- package/dist/crypto-inventory.d.ts +21 -0
- package/dist/crypto-inventory.d.ts.map +1 -0
- package/dist/crypto-inventory.js +28 -0
- package/dist/crypto-inventory.js.map +1 -0
- package/dist/errors.d.ts +35 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +64 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/kms.d.ts +30 -0
- package/dist/kms.d.ts.map +1 -0
- package/dist/kms.js +92 -0
- package/dist/kms.js.map +1 -0
- package/dist/langchain/index.d.ts +22 -0
- package/dist/langchain/index.d.ts.map +1 -0
- package/dist/langchain/index.js +23 -0
- package/dist/langchain/index.js.map +1 -0
- package/dist/langchain/toolkit.d.ts +85 -0
- package/dist/langchain/toolkit.d.ts.map +1 -0
- package/dist/langchain/toolkit.js +146 -0
- package/dist/langchain/toolkit.js.map +1 -0
- package/dist/langchain/tools/audit.d.ts +43 -0
- package/dist/langchain/tools/audit.d.ts.map +1 -0
- package/dist/langchain/tools/audit.js +78 -0
- package/dist/langchain/tools/audit.js.map +1 -0
- package/dist/langchain/tools/kms.d.ts +62 -0
- package/dist/langchain/tools/kms.d.ts.map +1 -0
- package/dist/langchain/tools/kms.js +120 -0
- package/dist/langchain/tools/kms.js.map +1 -0
- package/dist/langchain/tools/vault.d.ts +69 -0
- package/dist/langchain/tools/vault.d.ts.map +1 -0
- package/dist/langchain/tools/vault.js +107 -0
- package/dist/langchain/tools/vault.js.map +1 -0
- package/dist/langchain/vault-client.d.ts +82 -0
- package/dist/langchain/vault-client.d.ts.map +1 -0
- package/dist/langchain/vault-client.js +133 -0
- package/dist/langchain/vault-client.js.map +1 -0
- package/dist/llamaindex/index.d.ts +16 -0
- package/dist/llamaindex/index.d.ts.map +1 -0
- package/dist/llamaindex/index.js +15 -0
- package/dist/llamaindex/index.js.map +1 -0
- package/dist/llamaindex/sse.d.ts +36 -0
- package/dist/llamaindex/sse.d.ts.map +1 -0
- package/dist/llamaindex/sse.js +151 -0
- package/dist/llamaindex/sse.js.map +1 -0
- package/dist/llamaindex/vector-store.d.ts +101 -0
- package/dist/llamaindex/vector-store.d.ts.map +1 -0
- package/dist/llamaindex/vector-store.js +348 -0
- package/dist/llamaindex/vector-store.js.map +1 -0
- package/dist/search.d.ts +32 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +27 -0
- package/dist/search.js.map +1 -0
- package/dist/storage.d.ts +32 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +58 -0
- package/dist/storage.js.map +1 -0
- package/dist/tenant.d.ts +25 -0
- package/dist/tenant.d.ts.map +1 -0
- package/dist/tenant.js +36 -0
- package/dist/tenant.js.map +1 -0
- package/dist/vault.d.ts +22 -0
- package/dist/vault.d.ts.map +1 -0
- package/dist/vault.js +43 -0
- package/dist/vault.js.map +1 -0
- package/dist/webhooks.d.ts +32 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +77 -0
- package/dist/webhooks.js.map +1 -0
- package/package.json +118 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const tokenCache = new Map();
|
|
2
|
+
const DEFAULT_TOKEN_TTL_MS = 3600000;
|
|
3
|
+
export function getCachedToken(serviceId) {
|
|
4
|
+
const cached = tokenCache.get(serviceId);
|
|
5
|
+
if (cached && Date.now() < cached.expiresAt) {
|
|
6
|
+
return cached.token;
|
|
7
|
+
}
|
|
8
|
+
if (cached) {
|
|
9
|
+
tokenCache.delete(serviceId);
|
|
10
|
+
}
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
export function setCachedToken(serviceId, token, ttlMs = DEFAULT_TOKEN_TTL_MS) {
|
|
14
|
+
tokenCache.set(serviceId, {
|
|
15
|
+
token,
|
|
16
|
+
expiresAt: Date.now() + ttlMs,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export function clearTokenCache() {
|
|
20
|
+
tokenCache.clear();
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=token-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-cache.js","sourceRoot":"","sources":["../../../src/cli/utils/token-cache.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;AAElD,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAErC,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAC7C,OAAO,MAAM,CAAC,KAAK,CAAC;IACrB,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACZ,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAC7B,SAAiB,EACjB,KAAa,EACb,KAAK,GAAG,oBAAoB;IAE5B,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE;QACzB,KAAK;QACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;KAC7B,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC9B,UAAU,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Top-level QNSP SDK entry point.
|
|
3
|
+
*
|
|
4
|
+
* One client owns one HTTP connection pool and one activation cache;
|
|
5
|
+
* the eleven service sub-clients (`vault`, `kms`, `audit`, `auth`,
|
|
6
|
+
* `tenant`, `access`, `billing`, `cryptoInventory`, `storage`,
|
|
7
|
+
* `search`, `ai`) share both. Mirrors the `qnsp` Python / Go / Rust
|
|
8
|
+
* SDK shape byte-for-byte.
|
|
9
|
+
*/
|
|
10
|
+
import type { SdkActivationResponse } from "./_activation/index.js";
|
|
11
|
+
import { type QnspClientOptions } from "./_internal.js";
|
|
12
|
+
import { AccessClient } from "./access.js";
|
|
13
|
+
import { AiClient } from "./ai.js";
|
|
14
|
+
import { AuditClient } from "./audit.js";
|
|
15
|
+
import { AuthClient } from "./auth.js";
|
|
16
|
+
import { BillingClient } from "./billing.js";
|
|
17
|
+
import { CryptoInventoryClient } from "./crypto-inventory.js";
|
|
18
|
+
import { KmsClient } from "./kms.js";
|
|
19
|
+
import { SearchClient } from "./search.js";
|
|
20
|
+
import { StorageClient } from "./storage.js";
|
|
21
|
+
import { TenantClient } from "./tenant.js";
|
|
22
|
+
import { VaultClient } from "./vault.js";
|
|
23
|
+
export declare class QnspClient {
|
|
24
|
+
readonly vault: VaultClient;
|
|
25
|
+
readonly kms: KmsClient;
|
|
26
|
+
readonly audit: AuditClient;
|
|
27
|
+
readonly auth: AuthClient;
|
|
28
|
+
readonly tenant: TenantClient;
|
|
29
|
+
readonly access: AccessClient;
|
|
30
|
+
readonly billing: BillingClient;
|
|
31
|
+
readonly cryptoInventory: CryptoInventoryClient;
|
|
32
|
+
readonly storage: StorageClient;
|
|
33
|
+
readonly search: SearchClient;
|
|
34
|
+
readonly ai: AiClient;
|
|
35
|
+
private readonly internal;
|
|
36
|
+
constructor(options: QnspClientOptions);
|
|
37
|
+
/**
|
|
38
|
+
* Force the activation handshake to run now. Surfaces invalid-API-key
|
|
39
|
+
* errors at startup rather than on the first service call.
|
|
40
|
+
*/
|
|
41
|
+
ensureActivated(): Promise<SdkActivationResponse>;
|
|
42
|
+
/** Tenant ID resolved by activation. */
|
|
43
|
+
tenantId(): Promise<string>;
|
|
44
|
+
/** Plan tier resolved by activation. */
|
|
45
|
+
tier(): Promise<string>;
|
|
46
|
+
/** Tier limits dict from activation. */
|
|
47
|
+
limits(): Promise<Record<string, unknown>>;
|
|
48
|
+
/** Whether the tenant's plan enables a billing-side boolean feature. */
|
|
49
|
+
hasFeature(feature: string): Promise<boolean>;
|
|
50
|
+
}
|
|
51
|
+
export type { QnspClientOptions } from "./_internal.js";
|
|
52
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,qBAAa,UAAU;IACtB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,OAAO,EAAE,iBAAiB;IAetC;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAIvD,wCAAwC;IAClC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAKjC,wCAAwC;IAClC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7B,wCAAwC;IAClC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKhD,wEAAwE;IAClE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAKnD;AAED,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Top-level QNSP SDK entry point.
|
|
3
|
+
*
|
|
4
|
+
* One client owns one HTTP connection pool and one activation cache;
|
|
5
|
+
* the eleven service sub-clients (`vault`, `kms`, `audit`, `auth`,
|
|
6
|
+
* `tenant`, `access`, `billing`, `cryptoInventory`, `storage`,
|
|
7
|
+
* `search`, `ai`) share both. Mirrors the `qnsp` Python / Go / Rust
|
|
8
|
+
* SDK shape byte-for-byte.
|
|
9
|
+
*/
|
|
10
|
+
import { Internal } from "./_internal.js";
|
|
11
|
+
import { AccessClient } from "./access.js";
|
|
12
|
+
import { AiClient } from "./ai.js";
|
|
13
|
+
import { AuditClient } from "./audit.js";
|
|
14
|
+
import { AuthClient } from "./auth.js";
|
|
15
|
+
import { BillingClient } from "./billing.js";
|
|
16
|
+
import { CryptoInventoryClient } from "./crypto-inventory.js";
|
|
17
|
+
import { KmsClient } from "./kms.js";
|
|
18
|
+
import { SearchClient } from "./search.js";
|
|
19
|
+
import { StorageClient } from "./storage.js";
|
|
20
|
+
import { TenantClient } from "./tenant.js";
|
|
21
|
+
import { VaultClient } from "./vault.js";
|
|
22
|
+
export class QnspClient {
|
|
23
|
+
vault;
|
|
24
|
+
kms;
|
|
25
|
+
audit;
|
|
26
|
+
auth;
|
|
27
|
+
tenant;
|
|
28
|
+
access;
|
|
29
|
+
billing;
|
|
30
|
+
cryptoInventory;
|
|
31
|
+
storage;
|
|
32
|
+
search;
|
|
33
|
+
ai;
|
|
34
|
+
internal;
|
|
35
|
+
constructor(options) {
|
|
36
|
+
this.internal = new Internal(options);
|
|
37
|
+
this.vault = new VaultClient(this.internal);
|
|
38
|
+
this.kms = new KmsClient(this.internal);
|
|
39
|
+
this.audit = new AuditClient(this.internal);
|
|
40
|
+
this.auth = new AuthClient(this.internal);
|
|
41
|
+
this.tenant = new TenantClient(this.internal);
|
|
42
|
+
this.access = new AccessClient(this.internal);
|
|
43
|
+
this.billing = new BillingClient(this.internal);
|
|
44
|
+
this.cryptoInventory = new CryptoInventoryClient(this.internal);
|
|
45
|
+
this.storage = new StorageClient(this.internal);
|
|
46
|
+
this.search = new SearchClient(this.internal);
|
|
47
|
+
this.ai = new AiClient(this.internal);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Force the activation handshake to run now. Surfaces invalid-API-key
|
|
51
|
+
* errors at startup rather than on the first service call.
|
|
52
|
+
*/
|
|
53
|
+
async ensureActivated() {
|
|
54
|
+
return this.internal.ensureActivated();
|
|
55
|
+
}
|
|
56
|
+
/** Tenant ID resolved by activation. */
|
|
57
|
+
async tenantId() {
|
|
58
|
+
const a = await this.internal.ensureActivated();
|
|
59
|
+
return a.tenantId;
|
|
60
|
+
}
|
|
61
|
+
/** Plan tier resolved by activation. */
|
|
62
|
+
async tier() {
|
|
63
|
+
const a = await this.internal.ensureActivated();
|
|
64
|
+
return a.tier;
|
|
65
|
+
}
|
|
66
|
+
/** Tier limits dict from activation. */
|
|
67
|
+
async limits() {
|
|
68
|
+
const a = await this.internal.ensureActivated();
|
|
69
|
+
return a.limits;
|
|
70
|
+
}
|
|
71
|
+
/** Whether the tenant's plan enables a billing-side boolean feature. */
|
|
72
|
+
async hasFeature(feature) {
|
|
73
|
+
const limits = await this.limits();
|
|
74
|
+
const v = limits[feature];
|
|
75
|
+
return v === true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QNSP Crypto-Inventory (CBOM) — asset catalogue, discovery runs,
|
|
3
|
+
* deprecation policies, PQC migration readiness. Wraps
|
|
4
|
+
* `apps/crypto-inventory-service` (`/crypto/v1`).
|
|
5
|
+
*/
|
|
6
|
+
import type { Internal, RequestOptions } from "./_internal.js";
|
|
7
|
+
export interface DiscoverAssetsRequest {
|
|
8
|
+
readonly targets?: readonly string[];
|
|
9
|
+
readonly modes?: readonly string[];
|
|
10
|
+
readonly options?: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export declare class CryptoInventoryClient {
|
|
13
|
+
private readonly internal;
|
|
14
|
+
constructor(internal: Internal);
|
|
15
|
+
listAssets(query?: RequestOptions["query"]): Promise<Record<string, unknown>>;
|
|
16
|
+
getAsset(assetId: string): Promise<Record<string, unknown>>;
|
|
17
|
+
getAssetStats(tenantId: string): Promise<Record<string, unknown>>;
|
|
18
|
+
discoverAssets(req: DiscoverAssetsRequest, opts?: Pick<RequestOptions, "idempotencyKey">): Promise<Record<string, unknown>>;
|
|
19
|
+
getReadinessScore(tenantId: string): Promise<Record<string, unknown>>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=crypto-inventory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-inventory.d.ts","sourceRoot":"","sources":["../src/crypto-inventory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAI/D,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,qBAAa,qBAAqB;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,QAAQ;IAE/C,UAAU,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC;IAI1C,QAAQ,CAAC,OAAO,EAAE,MAAM;IAIxB,aAAa,CAAC,QAAQ,EAAE,MAAM;IAI9B,cAAc,CAAC,GAAG,EAAE,qBAAqB,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAIxF,iBAAiB,CAAC,QAAQ,EAAE,MAAM;CAGlC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QNSP Crypto-Inventory (CBOM) — asset catalogue, discovery runs,
|
|
3
|
+
* deprecation policies, PQC migration readiness. Wraps
|
|
4
|
+
* `apps/crypto-inventory-service` (`/crypto/v1`).
|
|
5
|
+
*/
|
|
6
|
+
const PATH_PREFIX = "/proxy/crypto/v1";
|
|
7
|
+
export class CryptoInventoryClient {
|
|
8
|
+
internal;
|
|
9
|
+
constructor(internal) {
|
|
10
|
+
this.internal = internal;
|
|
11
|
+
}
|
|
12
|
+
listAssets(query) {
|
|
13
|
+
return this.internal.request("GET", `${PATH_PREFIX}/assets`, undefined, { query });
|
|
14
|
+
}
|
|
15
|
+
getAsset(assetId) {
|
|
16
|
+
return this.internal.request("GET", `${PATH_PREFIX}/assets/${assetId}`);
|
|
17
|
+
}
|
|
18
|
+
getAssetStats(tenantId) {
|
|
19
|
+
return this.internal.request("GET", `${PATH_PREFIX}/assets/stats/${tenantId}`);
|
|
20
|
+
}
|
|
21
|
+
discoverAssets(req, opts) {
|
|
22
|
+
return this.internal.request("POST", `${PATH_PREFIX}/discovery/runs`, req, opts);
|
|
23
|
+
}
|
|
24
|
+
getReadinessScore(tenantId) {
|
|
25
|
+
return this.internal.request("GET", `${PATH_PREFIX}/readiness/${tenantId}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=crypto-inventory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-inventory.js","sourceRoot":"","sources":["../src/crypto-inventory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAQvC,MAAM,OAAO,qBAAqB;IACJ;IAA7B,YAA6B,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAG,CAAC;IAEnD,UAAU,CAAC,KAA+B;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,WAAW,SAAS,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,QAAQ,CAAC,OAAe;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,WAAW,WAAW,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,aAAa,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,WAAW,iBAAiB,QAAQ,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,cAAc,CAAC,GAA0B,EAAE,IAA6C;QACvF,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,WAAW,iBAAiB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,iBAAiB,CAAC,QAAgB;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,WAAW,cAAc,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC;CACD"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed error hierarchy for the QNSP SDK.
|
|
3
|
+
*
|
|
4
|
+
* Every method in `@heossi/qnsi` rejects with an instance of one of these
|
|
5
|
+
* classes — never with a bare `Error` or a string. Callers can branch on
|
|
6
|
+
* the failure mode without parsing error messages.
|
|
7
|
+
*/
|
|
8
|
+
/** Base class — all QNSP SDK errors inherit. */
|
|
9
|
+
export declare class QnspError extends Error {
|
|
10
|
+
constructor(message: string, options?: ErrorOptions);
|
|
11
|
+
}
|
|
12
|
+
/** DNS, TLS, timeout, or connection failure reaching the QNSP edge gateway. */
|
|
13
|
+
export declare class QnspNetworkError extends QnspError {
|
|
14
|
+
readonly op: string;
|
|
15
|
+
readonly url: string;
|
|
16
|
+
constructor(op: string, url: string, cause?: unknown);
|
|
17
|
+
}
|
|
18
|
+
/** API key rejected at activation. */
|
|
19
|
+
export declare class QnspAuthError extends QnspError {
|
|
20
|
+
readonly code: string | null;
|
|
21
|
+
constructor(message: string, code?: string | null);
|
|
22
|
+
}
|
|
23
|
+
/** A QNSP service returned a 4xx/5xx with a structured body. */
|
|
24
|
+
export declare class QnspApiError extends QnspError {
|
|
25
|
+
readonly statusCode: number;
|
|
26
|
+
readonly code: string | null;
|
|
27
|
+
readonly body: unknown;
|
|
28
|
+
constructor(message: string, statusCode: number, code?: string | null, body?: unknown);
|
|
29
|
+
}
|
|
30
|
+
/** HMAC mismatch, expired/future timestamp, malformed body, or missing fields. */
|
|
31
|
+
export declare class QnspWebhookError extends QnspError {
|
|
32
|
+
readonly reason: string;
|
|
33
|
+
constructor(reason: string);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gDAAgD;AAChD,qBAAa,SAAU,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAInD;AAED,+EAA+E;AAC/E,qBAAa,gBAAiB,SAAQ,SAAS;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBACT,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAMpD;AAED,sCAAsC;AACtC,qBAAa,aAAc,SAAQ,SAAS;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;gBACjB,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,IAAW;CAKvD;AAED,gEAAgE;AAChE,qBAAa,YAAa,SAAQ,SAAS;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBAEtB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,IAAI,GAAE,OAAc;CAQrB;AAED,kFAAkF;AAClF,qBAAa,gBAAiB,SAAQ,SAAS;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,MAAM,EAAE,MAAM;CAK1B"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed error hierarchy for the QNSP SDK.
|
|
3
|
+
*
|
|
4
|
+
* Every method in `@heossi/qnsi` rejects with an instance of one of these
|
|
5
|
+
* classes — never with a bare `Error` or a string. Callers can branch on
|
|
6
|
+
* the failure mode without parsing error messages.
|
|
7
|
+
*/
|
|
8
|
+
/** Base class — all QNSP SDK errors inherit. */
|
|
9
|
+
export class QnspError extends Error {
|
|
10
|
+
constructor(message, options) {
|
|
11
|
+
super(message, options);
|
|
12
|
+
this.name = "QnspError";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/** DNS, TLS, timeout, or connection failure reaching the QNSP edge gateway. */
|
|
16
|
+
export class QnspNetworkError extends QnspError {
|
|
17
|
+
op;
|
|
18
|
+
url;
|
|
19
|
+
constructor(op, url, cause) {
|
|
20
|
+
super(`qnsp: network error on ${op} ${url}: ${stringifyCause(cause)}`, { cause });
|
|
21
|
+
this.name = "QnspNetworkError";
|
|
22
|
+
this.op = op;
|
|
23
|
+
this.url = url;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** API key rejected at activation. */
|
|
27
|
+
export class QnspAuthError extends QnspError {
|
|
28
|
+
code;
|
|
29
|
+
constructor(message, code = null) {
|
|
30
|
+
super(`qnsp: auth error${code ? ` (${code})` : ""}: ${message}`);
|
|
31
|
+
this.name = "QnspAuthError";
|
|
32
|
+
this.code = code;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** A QNSP service returned a 4xx/5xx with a structured body. */
|
|
36
|
+
export class QnspApiError extends QnspError {
|
|
37
|
+
statusCode;
|
|
38
|
+
code;
|
|
39
|
+
body;
|
|
40
|
+
constructor(message, statusCode, code = null, body = null) {
|
|
41
|
+
super(`qnsp: api error ${statusCode}${code ? ` ${code}` : ""}: ${message}`);
|
|
42
|
+
this.name = "QnspApiError";
|
|
43
|
+
this.statusCode = statusCode;
|
|
44
|
+
this.code = code;
|
|
45
|
+
this.body = body;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** HMAC mismatch, expired/future timestamp, malformed body, or missing fields. */
|
|
49
|
+
export class QnspWebhookError extends QnspError {
|
|
50
|
+
reason;
|
|
51
|
+
constructor(reason) {
|
|
52
|
+
super(`qnsp: webhook error: ${reason}`);
|
|
53
|
+
this.name = "QnspWebhookError";
|
|
54
|
+
this.reason = reason;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function stringifyCause(cause) {
|
|
58
|
+
if (cause instanceof Error)
|
|
59
|
+
return cause.message;
|
|
60
|
+
if (typeof cause === "string")
|
|
61
|
+
return cause;
|
|
62
|
+
return "unknown error";
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gDAAgD;AAChD,MAAM,OAAO,SAAU,SAAQ,KAAK;IACnC,YAAY,OAAe,EAAE,OAAsB;QAClD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IACzB,CAAC;CACD;AAED,+EAA+E;AAC/E,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IACrC,EAAE,CAAS;IACX,GAAG,CAAS;IACrB,YAAY,EAAU,EAAE,GAAW,EAAE,KAAe;QACnD,KAAK,CAAC,0BAA0B,EAAE,IAAI,GAAG,KAAK,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;CACD;AAED,sCAAsC;AACtC,MAAM,OAAO,aAAc,SAAQ,SAAS;IAClC,IAAI,CAAgB;IAC7B,YAAY,OAAe,EAAE,OAAsB,IAAI;QACtD,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;CACD;AAED,gEAAgE;AAChE,MAAM,OAAO,YAAa,SAAQ,SAAS;IACjC,UAAU,CAAS;IACnB,IAAI,CAAgB;IACpB,IAAI,CAAU;IACvB,YACC,OAAe,EACf,UAAkB,EAClB,OAAsB,IAAI,EAC1B,OAAgB,IAAI;QAEpB,KAAK,CAAC,mBAAmB,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;CACD;AAED,kFAAkF;AAClF,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IACrC,MAAM,CAAS;IACxB,YAAY,MAAc;QACzB,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;CACD;AAED,SAAS,cAAc,CAAC,KAAc;IACrC,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,eAAe,CAAC;AACxB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@heossi/qnsi` — official Node.js / TypeScript SDK for the
|
|
3
|
+
* Quantum-Native Security Infrastructure.
|
|
4
|
+
*
|
|
5
|
+
* Single package covering vault, kms, audit, auth, tenant, access,
|
|
6
|
+
* billing, crypto-inventory, storage, search, and ai-orchestrator,
|
|
7
|
+
* plus webhook signature verification. Mirrors the `qnsp` Python /
|
|
8
|
+
* Go / Rust SDK surface byte-for-byte.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { QnspClient } from "@heossi/qnsi";
|
|
13
|
+
*
|
|
14
|
+
* const qnsp = new QnspClient({ apiKey: process.env.QNSP_API_KEY! });
|
|
15
|
+
*
|
|
16
|
+
* // Vault
|
|
17
|
+
* const secret = await qnsp.vault.createSecret({
|
|
18
|
+
* name: "openai-api-key",
|
|
19
|
+
* payloadB64: Buffer.from("sk-...").toString("base64"),
|
|
20
|
+
* algorithm: "ml-kem-768",
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* // KMS
|
|
24
|
+
* const key = await qnsp.kms.createKey({ algorithm: "ml-dsa-65", purpose: "signing" });
|
|
25
|
+
* const sig = await qnsp.kms.sign(key.keyId, new TextEncoder().encode("hello"));
|
|
26
|
+
*
|
|
27
|
+
* // Audit
|
|
28
|
+
* await qnsp.audit.logEvent({
|
|
29
|
+
* eventType: "model.inference",
|
|
30
|
+
* payload: { modelId: "gpt-4o", latencyMs: 412 },
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* Sign up for a free QNSI account at https://cloud.qnsp.cuilabs.io/auth.
|
|
35
|
+
*/
|
|
36
|
+
export { AccessClient, type AssignRoleRequest, type CheckPermissionRequest, type CreateRoleRequest, } from "./access.js";
|
|
37
|
+
export { AiClient, type InferenceRequest, type RegisterArtifactRequest, type RegisterModelRequest, type SubmitWorkloadRequest, } from "./ai.js";
|
|
38
|
+
export { AuditClient, type LogEventRequest } from "./audit.js";
|
|
39
|
+
export { AuthClient, type LoginRequest } from "./auth.js";
|
|
40
|
+
export { BillingClient, type IngestMeterRequest } from "./billing.js";
|
|
41
|
+
export { QnspClient, type QnspClientOptions } from "./client.js";
|
|
42
|
+
export { CryptoInventoryClient, type DiscoverAssetsRequest } from "./crypto-inventory.js";
|
|
43
|
+
export { QnspApiError, QnspAuthError, QnspError, QnspNetworkError, QnspWebhookError, } from "./errors.js";
|
|
44
|
+
export { type CreateKeyRequest, KmsClient } from "./kms.js";
|
|
45
|
+
export { type CreateIndexRequest, type QueryRequest, SearchClient, type Vector, } from "./search.js";
|
|
46
|
+
export { type PutObjectInput, StorageClient } from "./storage.js";
|
|
47
|
+
export { type CreateTenantRequest, TenantClient } from "./tenant.js";
|
|
48
|
+
export { type CreateSecretRequest, VaultClient } from "./vault.js";
|
|
49
|
+
export { MAX_WEBHOOK_SKEW_MS, parseQnspWebhook, type QnspWebhookEvent, verifyQnspWebhookSignature, } from "./webhooks.js";
|
|
50
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EACN,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,QAAQ,EACR,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EACN,YAAY,EACZ,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,YAAY,EACZ,KAAK,MAAM,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,KAAK,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAE,KAAK,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,0BAA0B,GAC1B,MAAM,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@heossi/qnsi` — official Node.js / TypeScript SDK for the
|
|
3
|
+
* Quantum-Native Security Infrastructure.
|
|
4
|
+
*
|
|
5
|
+
* Single package covering vault, kms, audit, auth, tenant, access,
|
|
6
|
+
* billing, crypto-inventory, storage, search, and ai-orchestrator,
|
|
7
|
+
* plus webhook signature verification. Mirrors the `qnsp` Python /
|
|
8
|
+
* Go / Rust SDK surface byte-for-byte.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { QnspClient } from "@heossi/qnsi";
|
|
13
|
+
*
|
|
14
|
+
* const qnsp = new QnspClient({ apiKey: process.env.QNSP_API_KEY! });
|
|
15
|
+
*
|
|
16
|
+
* // Vault
|
|
17
|
+
* const secret = await qnsp.vault.createSecret({
|
|
18
|
+
* name: "openai-api-key",
|
|
19
|
+
* payloadB64: Buffer.from("sk-...").toString("base64"),
|
|
20
|
+
* algorithm: "ml-kem-768",
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* // KMS
|
|
24
|
+
* const key = await qnsp.kms.createKey({ algorithm: "ml-dsa-65", purpose: "signing" });
|
|
25
|
+
* const sig = await qnsp.kms.sign(key.keyId, new TextEncoder().encode("hello"));
|
|
26
|
+
*
|
|
27
|
+
* // Audit
|
|
28
|
+
* await qnsp.audit.logEvent({
|
|
29
|
+
* eventType: "model.inference",
|
|
30
|
+
* payload: { modelId: "gpt-4o", latencyMs: 412 },
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* Sign up for a free QNSI account at https://cloud.qnsp.cuilabs.io/auth.
|
|
35
|
+
*/
|
|
36
|
+
export { AccessClient, } from "./access.js";
|
|
37
|
+
export { AiClient, } from "./ai.js";
|
|
38
|
+
export { AuditClient } from "./audit.js";
|
|
39
|
+
export { AuthClient } from "./auth.js";
|
|
40
|
+
export { BillingClient } from "./billing.js";
|
|
41
|
+
export { QnspClient } from "./client.js";
|
|
42
|
+
export { CryptoInventoryClient } from "./crypto-inventory.js";
|
|
43
|
+
export { QnspApiError, QnspAuthError, QnspError, QnspNetworkError, QnspWebhookError, } from "./errors.js";
|
|
44
|
+
export { KmsClient } from "./kms.js";
|
|
45
|
+
export { SearchClient, } from "./search.js";
|
|
46
|
+
export { StorageClient } from "./storage.js";
|
|
47
|
+
export { TenantClient } from "./tenant.js";
|
|
48
|
+
// Service classes — exported so callers can construct mocks for testing.
|
|
49
|
+
export { VaultClient } from "./vault.js";
|
|
50
|
+
export { MAX_WEBHOOK_SKEW_MS, parseQnspWebhook, verifyQnspWebhookSignature, } from "./webhooks.js";
|
|
51
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EACN,YAAY,GAIZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,QAAQ,GAKR,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAwB,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAqB,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,aAAa,EAA2B,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,UAAU,EAA0B,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAA8B,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EACN,YAAY,EACZ,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAyB,SAAS,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAGN,YAAY,GAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAuB,aAAa,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAA4B,YAAY,EAAE,MAAM,aAAa,CAAC;AACrE,yEAAyE;AACzE,OAAO,EAA4B,WAAW,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAEhB,0BAA0B,GAC1B,MAAM,eAAe,CAAC"}
|
package/dist/kms.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QNSP KMS — server-side PQC keys with sign, verify, wrap, and unwrap.
|
|
3
|
+
* Wraps `apps/kms-service` (`/kms/v1`).
|
|
4
|
+
*/
|
|
5
|
+
import type { Internal, RequestOptions } from "./_internal.js";
|
|
6
|
+
export interface CreateKeyRequest {
|
|
7
|
+
/** Caller key identifier (1-255 chars). Auto-generated (uuid) if omitted. */
|
|
8
|
+
readonly keyId?: string;
|
|
9
|
+
/** Key type per backend schema. Defaults to "data". */
|
|
10
|
+
readonly keyType?: "root" | "master" | "data" | "byok";
|
|
11
|
+
/** Symmetric/PQC algorithm. Backend default: AES-256-GCM. */
|
|
12
|
+
readonly algorithm?: string;
|
|
13
|
+
/** Optional hint (e.g. "signing"/"encryption"/"kem"); folded into metadata. */
|
|
14
|
+
readonly purpose?: string;
|
|
15
|
+
readonly metadata?: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
export declare class KmsClient {
|
|
18
|
+
private readonly internal;
|
|
19
|
+
constructor(internal: Internal);
|
|
20
|
+
createKey(req?: CreateKeyRequest, opts?: Pick<RequestOptions, "idempotencyKey">): Promise<Record<string, unknown>>;
|
|
21
|
+
listKeys(query?: RequestOptions["query"]): Promise<Record<string, unknown>>;
|
|
22
|
+
getKey(keyId: string): Promise<Record<string, unknown>>;
|
|
23
|
+
rotateKey(keyId: string, opts?: Pick<RequestOptions, "idempotencyKey">): Promise<Record<string, unknown>>;
|
|
24
|
+
deleteKey(keyId: string): Promise<Record<string, unknown>>;
|
|
25
|
+
sign(keyId: string, data: Uint8Array, opts?: Pick<RequestOptions, "idempotencyKey">): Promise<Uint8Array>;
|
|
26
|
+
verify(keyId: string, data: Uint8Array, signature: Uint8Array): Promise<boolean>;
|
|
27
|
+
wrap(keyId: string, plaintext: Uint8Array, opts?: Pick<RequestOptions, "idempotencyKey">): Promise<Uint8Array>;
|
|
28
|
+
unwrap(keyId: string, ciphertext: Uint8Array, opts?: Pick<RequestOptions, "idempotencyKey">): Promise<Uint8Array>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=kms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kms.d.ts","sourceRoot":"","sources":["../src/kms.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAK/D,MAAM,WAAW,gBAAgB;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACvD,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAoBD,qBAAa,SAAS;IACT,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,QAAQ;IAE/C,SAAS,CAAC,GAAG,GAAE,gBAAqB,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAkBnF,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC;IAIxC,MAAM,CAAC,KAAK,EAAE,MAAM;IAIpB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAItE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIpD,IAAI,CACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAC3C,OAAO,CAAC,UAAU,CAAC;IAgBhB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAYhF,IAAI,CACT,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,UAAU,EACrB,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAC3C,OAAO,CAAC,UAAU,CAAC;IAmBhB,MAAM,CACX,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAC3C,OAAO,CAAC,UAAU,CAAC;CAkBtB"}
|
package/dist/kms.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QNSP KMS — server-side PQC keys with sign, verify, wrap, and unwrap.
|
|
3
|
+
* Wraps `apps/kms-service` (`/kms/v1`).
|
|
4
|
+
*/
|
|
5
|
+
import { QnspApiError } from "./errors.js";
|
|
6
|
+
const PATH_PREFIX = "/proxy/kms/v1";
|
|
7
|
+
export class KmsClient {
|
|
8
|
+
internal;
|
|
9
|
+
constructor(internal) {
|
|
10
|
+
this.internal = internal;
|
|
11
|
+
}
|
|
12
|
+
createKey(req = {}, opts) {
|
|
13
|
+
// Wire contract: createKeySchema = { tenantId, keyId(req,1-255),
|
|
14
|
+
// keyType(req: root|master|data|byok), algorithm(default AES-256-GCM),
|
|
15
|
+
// metadata }. tenantId auto-injected. Default keyType "data", generate keyId
|
|
16
|
+
// if absent, fold the SDK "purpose" hint into metadata (not a backend field).
|
|
17
|
+
const metadata = {
|
|
18
|
+
...(req.metadata ?? {}),
|
|
19
|
+
...(req.purpose ? { purpose: req.purpose } : {}),
|
|
20
|
+
};
|
|
21
|
+
const body = {
|
|
22
|
+
keyId: req.keyId ?? globalThis.crypto.randomUUID(),
|
|
23
|
+
keyType: req.keyType ?? "data",
|
|
24
|
+
metadata,
|
|
25
|
+
};
|
|
26
|
+
if (req.algorithm)
|
|
27
|
+
body["algorithm"] = req.algorithm;
|
|
28
|
+
return this.internal.request("POST", `${PATH_PREFIX}/keys`, body, opts);
|
|
29
|
+
}
|
|
30
|
+
listKeys(query) {
|
|
31
|
+
return this.internal.request("GET", `${PATH_PREFIX}/keys`, undefined, { query });
|
|
32
|
+
}
|
|
33
|
+
getKey(keyId) {
|
|
34
|
+
return this.internal.request("GET", `${PATH_PREFIX}/keys/${keyId}`);
|
|
35
|
+
}
|
|
36
|
+
rotateKey(keyId, opts) {
|
|
37
|
+
return this.internal.request("POST", `${PATH_PREFIX}/keys/${keyId}/rotate`, undefined, opts);
|
|
38
|
+
}
|
|
39
|
+
deleteKey(keyId) {
|
|
40
|
+
return this.internal.request("DELETE", `${PATH_PREFIX}/keys/${keyId}`);
|
|
41
|
+
}
|
|
42
|
+
async sign(keyId, data, opts) {
|
|
43
|
+
// Wire contract: signDataSchema = { tenantId, data(base64), algorithm? };
|
|
44
|
+
// response SignDataResponse = { keyId, signature(base64), algorithm, provider }.
|
|
45
|
+
const body = { data: encodeB64(data) };
|
|
46
|
+
const resp = await this.internal.request("POST", `${PATH_PREFIX}/keys/${keyId}/sign`, body, opts);
|
|
47
|
+
if (!resp.signature) {
|
|
48
|
+
throw new QnspApiError("kms.sign: response missing signature", 200);
|
|
49
|
+
}
|
|
50
|
+
return decodeB64(resp.signature);
|
|
51
|
+
}
|
|
52
|
+
async verify(keyId, data, signature) {
|
|
53
|
+
// Wire contract: verifySignatureSchema = { tenantId, data(base64),
|
|
54
|
+
// signature(base64), algorithm? }; response { keyId, valid, algorithm }.
|
|
55
|
+
const body = { data: encodeB64(data), signature: encodeB64(signature) };
|
|
56
|
+
const resp = await this.internal.request("POST", `${PATH_PREFIX}/keys/${keyId}/verify`, body);
|
|
57
|
+
return resp.valid === true;
|
|
58
|
+
}
|
|
59
|
+
async wrap(keyId, plaintext, opts) {
|
|
60
|
+
// Wire request contract: wrapKeySchema = { tenantId, dataKey(base64),
|
|
61
|
+
// associatedData? }. tenantId auto-injected; the value to wrap is the dataKey.
|
|
62
|
+
// NOTE: the response field is NOT yet e2e-verified against a wrap-capable key
|
|
63
|
+
// (provable-evidence-mandate) — accept either wrappedKey or ciphertextB64.
|
|
64
|
+
const body = { dataKey: encodeB64(plaintext) };
|
|
65
|
+
const resp = await this.internal.request("POST", `${PATH_PREFIX}/keys/${keyId}/wrap`, body, opts);
|
|
66
|
+
const wrapped = resp.wrappedKey ?? resp.ciphertextB64;
|
|
67
|
+
if (!wrapped) {
|
|
68
|
+
throw new QnspApiError("kms.wrap: response missing wrappedKey/ciphertextB64", 200);
|
|
69
|
+
}
|
|
70
|
+
return decodeB64(wrapped);
|
|
71
|
+
}
|
|
72
|
+
async unwrap(keyId, ciphertext, opts) {
|
|
73
|
+
// Wire request contract: unwrapKeySchema = { tenantId, wrappedKey(base64),
|
|
74
|
+
// associatedData?, providerHint? }. tenantId auto-injected.
|
|
75
|
+
// NOTE: response field NOT yet e2e-verified (provable-evidence-mandate) —
|
|
76
|
+
// accept either dataKey or plaintextB64.
|
|
77
|
+
const body = { wrappedKey: encodeB64(ciphertext) };
|
|
78
|
+
const resp = await this.internal.request("POST", `${PATH_PREFIX}/keys/${keyId}/unwrap`, body, opts);
|
|
79
|
+
const unwrapped = resp.dataKey ?? resp.plaintextB64;
|
|
80
|
+
if (!unwrapped) {
|
|
81
|
+
throw new QnspApiError("kms.unwrap: response missing dataKey/plaintextB64", 200);
|
|
82
|
+
}
|
|
83
|
+
return decodeB64(unwrapped);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function encodeB64(bytes) {
|
|
87
|
+
return Buffer.from(bytes).toString("base64");
|
|
88
|
+
}
|
|
89
|
+
function decodeB64(b64) {
|
|
90
|
+
return new Uint8Array(Buffer.from(b64, "base64"));
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=kms.js.map
|
package/dist/kms.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kms.js","sourceRoot":"","sources":["../src/kms.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @heossi/qnsi-langchain-qnsp
|
|
3
|
+
*
|
|
4
|
+
* LangChain tools for QNSP — governed agents with PQC-encrypted secrets,
|
|
5
|
+
* quantum-safe signing, and immutable audit trails.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { QnspToolkit } from "@heossi/qnsi-langchain-qnsp";
|
|
10
|
+
*
|
|
11
|
+
* const toolkit = new QnspToolkit({ apiKey: process.env.QNSP_API_KEY });
|
|
12
|
+
* const tools = toolkit.getTools();
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export type { QnspToolkitConfig } from "./toolkit.js";
|
|
16
|
+
export { QnspToolkit } from "./toolkit.js";
|
|
17
|
+
export type { QnspAuditToolConfig } from "./tools/audit.js";
|
|
18
|
+
export { QnspLogAgentActionTool } from "./tools/audit.js";
|
|
19
|
+
export type { QnspKmsToolConfig } from "./tools/kms.js";
|
|
20
|
+
export { QnspSignDataTool, QnspVerifySignatureTool } from "./tools/kms.js";
|
|
21
|
+
export { QnspReadSecretTool, QnspRotateSecretTool, QnspWriteSecretTool } from "./tools/vault.js";
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/langchain/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @heossi/qnsi-langchain-qnsp
|
|
3
|
+
*
|
|
4
|
+
* LangChain tools for QNSP — governed agents with PQC-encrypted secrets,
|
|
5
|
+
* quantum-safe signing, and immutable audit trails.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { QnspToolkit } from "@heossi/qnsi-langchain-qnsp";
|
|
10
|
+
*
|
|
11
|
+
* const toolkit = new QnspToolkit({ apiKey: process.env.QNSP_API_KEY });
|
|
12
|
+
* const tools = toolkit.getTools();
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
// Toolkit (recommended entry point)
|
|
16
|
+
export { QnspToolkit } from "./toolkit.js";
|
|
17
|
+
// Individual audit tools
|
|
18
|
+
export { QnspLogAgentActionTool } from "./tools/audit.js";
|
|
19
|
+
// Individual KMS tools
|
|
20
|
+
export { QnspSignDataTool, QnspVerifySignatureTool } from "./tools/kms.js";
|
|
21
|
+
// Individual vault tools
|
|
22
|
+
export { QnspReadSecretTool, QnspRotateSecretTool, QnspWriteSecretTool } from "./tools/vault.js";
|
|
23
|
+
//# sourceMappingURL=index.js.map
|