@h-ai/kit 0.1.0-alpha9 → 1.0.0-beta.1
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/README.en.md +430 -0
- package/README.ja.md +430 -0
- package/README.md +351 -40
- package/dist/adapter/index.d.ts +17 -2
- package/dist/adapter/index.js.map +1 -1
- package/dist/browser.d.ts +19 -8
- package/dist/browser.js +10 -7
- package/dist/browser.js.map +1 -1
- package/dist/chunk-3OHUSKHI.js +175 -0
- package/dist/chunk-3OHUSKHI.js.map +1 -0
- package/dist/chunk-5VWPH7DO.js +126 -0
- package/dist/chunk-5VWPH7DO.js.map +1 -0
- package/dist/chunk-7EH47MTW.js +141 -0
- package/dist/chunk-7EH47MTW.js.map +1 -0
- package/dist/chunk-JRQPMPQC.js +63 -0
- package/dist/chunk-JRQPMPQC.js.map +1 -0
- package/dist/chunk-USFJN7IO.js +187 -0
- package/dist/chunk-USFJN7IO.js.map +1 -0
- package/dist/chunk-YKJRQCWR.js +363 -0
- package/dist/chunk-YKJRQCWR.js.map +1 -0
- package/dist/client/index.d.ts +51 -2
- package/dist/client/index.js +21 -2
- package/dist/client/index.js.map +1 -1
- package/dist/index.d.ts +303 -409
- package/dist/index.js +598 -310
- package/dist/index.js.map +1 -1
- package/dist/kit-a2a-types-4dapztu2.d.ts +136 -0
- package/dist/kit-client-auth-BnhrkzZF.d.ts +422 -0
- package/dist/kit-crypto-types-CXr888wf.d.ts +200 -0
- package/dist/kit-i18n-EBzZKYN-.d.ts +502 -0
- package/dist/kit-types-BkNdyKj8.d.ts +822 -0
- package/dist/modules/a2a/index.d.ts +15 -113
- package/dist/modules/a2a/index.js +2 -55
- package/dist/modules/a2a/index.js.map +1 -1
- package/dist/modules/crypto/index.d.ts +31 -79
- package/dist/modules/crypto/index.js +3 -3
- package/dist/modules/crypto/index.js.map +1 -1
- package/package.json +36 -22
- package/dist/chunk-475WECWK.js +0 -110
- package/dist/chunk-475WECWK.js.map +0 -1
- package/dist/chunk-6TMSXG7J.js +0 -169
- package/dist/chunk-6TMSXG7J.js.map +0 -1
- package/dist/chunk-AD6S473Y.js +0 -137
- package/dist/chunk-AD6S473Y.js.map +0 -1
- package/dist/chunk-FRYJMRTP.js +0 -71
- package/dist/chunk-FRYJMRTP.js.map +0 -1
- package/dist/chunk-PHS7ZD5L.js +0 -274
- package/dist/chunk-PHS7ZD5L.js.map +0 -1
- package/dist/index-BotXLTck.d.ts +0 -203
- package/dist/kit-crypto-types-C-gEvx04.d.ts +0 -253
- package/dist/kit-i18n-CgpNTh9G.d.ts +0 -206
- package/dist/kit-types-BHlDNNpd.d.ts +0 -618
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { core } from '@h-ai/core';
|
|
2
|
+
|
|
3
|
+
// src/kit-i18n.ts
|
|
4
|
+
|
|
5
|
+
// messages/en-US.json
|
|
6
|
+
var en_US_default = {
|
|
7
|
+
kit_transportPlaintextRequired: "This endpoint accepts unencrypted application data. Disable transport encryption for this request and retry over HTTPS.",
|
|
8
|
+
kit_a2aAuthFailed: "A2A authentication failed",
|
|
9
|
+
kit_a2aParseError: "Invalid JSON request body",
|
|
10
|
+
kit_a2aCardUnavailable: "Agent card not available",
|
|
11
|
+
$schema: "https://inlang.com/schema/inlang-message-format",
|
|
12
|
+
kit_unauthorized: "Unauthorized",
|
|
13
|
+
kit_forbidden: "Forbidden: missing {permission} permission",
|
|
14
|
+
kit_authNotConfigured: "kit.auth is not configured: pass auth.operations in kit.createHandle()",
|
|
15
|
+
kit_csrfTokenFailed: "Failed to generate CSRF token",
|
|
16
|
+
kit_csrfVerifyFailed: "CSRF token verification failed",
|
|
17
|
+
kit_csrfValidationFailed: "Invalid CSRF token",
|
|
18
|
+
kit_rateLimitExceeded: "Too many requests, please try again later",
|
|
19
|
+
kit_unsupportedContentType: "Unsupported content type",
|
|
20
|
+
kit_parseBodyFailed: "Failed to parse request body",
|
|
21
|
+
kit_encryptFailed: "Encryption failed",
|
|
22
|
+
kit_transportKeyGenerationFailed: "Transport encryption key generation failed",
|
|
23
|
+
kit_transportClientKeyNotFound: "Client key not found",
|
|
24
|
+
kit_transportEncryptFailed: "Transport encryption failed",
|
|
25
|
+
kit_transportEncryptKeyFailed: "Symmetric key encryption failed",
|
|
26
|
+
kit_transportDecryptKeyFailed: "Symmetric key decryption failed",
|
|
27
|
+
kit_transportDecryptFailed: "Transport decryption failed",
|
|
28
|
+
kit_transportInvalidPayload: "Invalid encrypted payload",
|
|
29
|
+
kit_transportKeyExchangeFailed: "Key exchange failed",
|
|
30
|
+
kit_transportClientIdRequired: "Missing X-Client-Id header, key exchange is required for transport encryption",
|
|
31
|
+
kit_signFailed: "Request signing failed",
|
|
32
|
+
kit_authRequired: "Authentication required",
|
|
33
|
+
kit_accessDenied: "Access denied",
|
|
34
|
+
kit_resourceNotFound: "Resource not found",
|
|
35
|
+
kit_internalError: "Internal server error",
|
|
36
|
+
kit_validationFailed: "Validation failed",
|
|
37
|
+
kit_validationRequired: "This field is required",
|
|
38
|
+
kit_validationInvalid: "Invalid input format",
|
|
39
|
+
kit_validationInvalidType: "Invalid field type",
|
|
40
|
+
kit_validationUnexpectedFields: "The submitted data contains unsupported fields. Refresh the page and try again.",
|
|
41
|
+
kit_validationStringMin: "Enter at least {min} characters",
|
|
42
|
+
kit_validationStringMax: "Enter at most {max} characters",
|
|
43
|
+
kit_validationNumberMin: "Value must be at least {min}",
|
|
44
|
+
kit_validationNumberMax: "Value must be at most {max}",
|
|
45
|
+
kit_validationArrayMin: "Select at least {min} item(s)",
|
|
46
|
+
kit_validationArrayMax: "Select at most {max} item(s)",
|
|
47
|
+
kit_validationTooSmall: "Value must be at least {min}",
|
|
48
|
+
kit_validationTooBig: "Value must be at most {max}",
|
|
49
|
+
kit_validationEmail: "Enter a valid email address",
|
|
50
|
+
kit_validationUrl: "Enter a valid URL",
|
|
51
|
+
kit_validationUuid: "Enter a valid UUID",
|
|
52
|
+
kit_validationEnum: "Select a valid option",
|
|
53
|
+
kit_noGuardsPassed: "No guards passed",
|
|
54
|
+
kit_requiredRoles: "Required roles: {roles}",
|
|
55
|
+
kit_requiredPermissions: "Required permissions: {permissions}",
|
|
56
|
+
kit_idRequired: "ID is required",
|
|
57
|
+
kit_rateLimitWindowInvalid: "The rate limit window must be an integer from 1 to 2147483647 milliseconds",
|
|
58
|
+
kit_rateLimitMemoryCapacity: "The development memory rate limit store is full; use a shared backend",
|
|
59
|
+
kit_transportBusy: "Material processing is busy. Please retry shortly.",
|
|
60
|
+
kit_feedbackUnavailable: "Feedback is temporarily unavailable. Business features remain available."
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// messages/ja-JP.json
|
|
64
|
+
var ja_JP_default = {
|
|
65
|
+
kit_transportPlaintextRequired: "\u3053\u306E\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u306F\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u5C64\u3067\u6697\u53F7\u5316\u3055\u308C\u3066\u3044\u306A\u3044\u30C7\u30FC\u30BF\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u4F1D\u9001\u6697\u53F7\u5316\u3092\u7121\u52B9\u306B\u3057\u3001HTTPS \u3067\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
66
|
+
kit_a2aAuthFailed: "A2A\u8A8D\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
67
|
+
kit_a2aParseError: "\u30EA\u30AF\u30A8\u30B9\u30C8\u672C\u6587\u304C\u6709\u52B9\u306AJSON\u3067\u306F\u3042\u308A\u307E\u305B\u3093",
|
|
68
|
+
kit_a2aCardUnavailable: "\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30AB\u30FC\u30C9\u3092\u5229\u7528\u3067\u304D\u307E\u305B\u3093",
|
|
69
|
+
$schema: "https://inlang.com/schema/inlang-message-format",
|
|
70
|
+
kit_unauthorized: "\u8A8D\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
|
|
71
|
+
kit_forbidden: "\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F: {permission}\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093",
|
|
72
|
+
kit_authNotConfigured: "kit.auth\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002kit.createHandle()\u306Bauth.operations\u3092\u6E21\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
73
|
+
kit_csrfTokenFailed: "CSRF\u30C8\u30FC\u30AF\u30F3\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
74
|
+
kit_csrfVerifyFailed: "CSRF\u30C8\u30FC\u30AF\u30F3\u306E\u691C\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
75
|
+
kit_csrfValidationFailed: "CSRF\u30C8\u30FC\u30AF\u30F3\u304C\u7121\u52B9\u3067\u3059",
|
|
76
|
+
kit_rateLimitExceeded: "\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u3057\u3070\u3089\u304F\u3057\u3066\u304B\u3089\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
77
|
+
kit_unsupportedContentType: "\u672A\u5BFE\u5FDC\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u30BF\u30A4\u30D7\u3067\u3059",
|
|
78
|
+
kit_parseBodyFailed: "\u30EA\u30AF\u30A8\u30B9\u30C8\u672C\u6587\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
79
|
+
kit_encryptFailed: "\u6697\u53F7\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
80
|
+
kit_transportKeyGenerationFailed: "\u901A\u4FE1\u6697\u53F7\u5316\u9375\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
81
|
+
kit_transportClientKeyNotFound: "\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u9375\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
82
|
+
kit_transportEncryptFailed: "\u901A\u4FE1\u306E\u6697\u53F7\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
83
|
+
kit_transportEncryptKeyFailed: "\u5BFE\u79F0\u9375\u306E\u6697\u53F7\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
84
|
+
kit_transportDecryptKeyFailed: "\u5BFE\u79F0\u9375\u306E\u5FA9\u53F7\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
85
|
+
kit_transportDecryptFailed: "\u901A\u4FE1\u306E\u5FA9\u53F7\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
86
|
+
kit_transportInvalidPayload: "\u6697\u53F7\u5316\u30DA\u30A4\u30ED\u30FC\u30C9\u304C\u7121\u52B9\u3067\u3059",
|
|
87
|
+
kit_transportKeyExchangeFailed: "\u9375\u4EA4\u63DB\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
88
|
+
kit_transportClientIdRequired: "X-Client-Id\u30D8\u30C3\u30C0\u30FC\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u901A\u4FE1\u6697\u53F7\u5316\u306B\u306F\u9375\u4EA4\u63DB\u304C\u5FC5\u8981\u3067\u3059",
|
|
89
|
+
kit_signFailed: "\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u7F72\u540D\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
90
|
+
kit_authRequired: "\u8A8D\u8A3C\u304C\u5FC5\u8981\u3067\u3059",
|
|
91
|
+
kit_accessDenied: "\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F",
|
|
92
|
+
kit_resourceNotFound: "\u30EA\u30BD\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
93
|
+
kit_internalError: "\u30B5\u30FC\u30D0\u30FC\u5185\u90E8\u30A8\u30E9\u30FC",
|
|
94
|
+
kit_validationFailed: "\u5165\u529B\u5185\u5BB9\u306E\u691C\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
95
|
+
kit_validationRequired: "\u3053\u306E\u9805\u76EE\u306F\u5FC5\u9808\u3067\u3059",
|
|
96
|
+
kit_validationInvalid: "\u5165\u529B\u5F62\u5F0F\u304C\u7121\u52B9\u3067\u3059",
|
|
97
|
+
kit_validationInvalidType: "\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u578B\u304C\u7121\u52B9\u3067\u3059",
|
|
98
|
+
kit_validationUnexpectedFields: "\u9001\u4FE1\u30C7\u30FC\u30BF\u306B\u3053\u306E\u64CD\u4F5C\u3067\u4F7F\u7528\u3067\u304D\u306A\u3044\u9805\u76EE\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u30DA\u30FC\u30B8\u3092\u66F4\u65B0\u3057\u3066\u518D\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",
|
|
99
|
+
kit_validationStringMin: "{min}\u6587\u5B57\u4EE5\u4E0A\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
100
|
+
kit_validationStringMax: "{max}\u6587\u5B57\u4EE5\u5185\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
101
|
+
kit_validationNumberMin: "{min}\u4EE5\u4E0A\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
102
|
+
kit_validationNumberMax: "{max}\u4EE5\u4E0B\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
103
|
+
kit_validationArrayMin: "{min}\u4EF6\u4EE5\u4E0A\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
104
|
+
kit_validationArrayMax: "{max}\u4EF6\u4EE5\u5185\u3067\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
105
|
+
kit_validationTooSmall: "{min}\u4EE5\u4E0A\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
106
|
+
kit_validationTooBig: "{max}\u4EE5\u4E0B\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
107
|
+
kit_validationEmail: "\u6709\u52B9\u306A\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
108
|
+
kit_validationUrl: "\u6709\u52B9\u306AURL\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
109
|
+
kit_validationUuid: "\u6709\u52B9\u306AUUID\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
110
|
+
kit_validationEnum: "\u6709\u52B9\u306A\u9078\u629E\u80A2\u3092\u9078\u3093\u3067\u304F\u3060\u3055\u3044",
|
|
111
|
+
kit_noGuardsPassed: "\u3069\u306E\u30AC\u30FC\u30C9\u3082\u901A\u904E\u3057\u307E\u305B\u3093\u3067\u3057\u305F",
|
|
112
|
+
kit_requiredRoles: "\u5FC5\u8981\u306A\u30ED\u30FC\u30EB: {roles}",
|
|
113
|
+
kit_requiredPermissions: "\u5FC5\u8981\u306A\u6A29\u9650: {permissions}",
|
|
114
|
+
kit_idRequired: "ID\u306F\u5FC5\u9808\u3067\u3059",
|
|
115
|
+
kit_rateLimitWindowInvalid: "\u30EC\u30FC\u30C8\u5236\u9650\u306E\u671F\u9593\u306F1\u301C2147483647\u30DF\u30EA\u79D2\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
116
|
+
kit_rateLimitMemoryCapacity: "\u958B\u767A\u7528\u30E1\u30E2\u30EA\u30FC\u30EC\u30FC\u30C8\u5236\u9650\u30B9\u30C8\u30A2\u304C\u6E80\u676F\u3067\u3059\u3002\u5171\u6709\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
117
|
+
kit_transportBusy: "\u8CC7\u6599\u306E\u51E6\u7406\u304C\u6DF7\u307F\u5408\u3063\u3066\u3044\u307E\u3059\u3002\u3057\u3070\u3089\u304F\u3057\u3066\u304B\u3089\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
118
|
+
kit_feedbackUnavailable: "\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u306F\u4E00\u6642\u7684\u306B\u5229\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u696D\u52D9\u6A5F\u80FD\u306F\u5F15\u304D\u7D9A\u304D\u5229\u7528\u3067\u304D\u307E\u3059\u3002"
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// messages/zh-CN.json
|
|
122
|
+
var zh_CN_default = {
|
|
123
|
+
kit_transportPlaintextRequired: "\u6B64\u63A5\u53E3\u63A5\u6536\u672A\u52A0\u5BC6\u7684\u5E94\u7528\u6570\u636E\uFF0C\u8BF7\u5173\u95ED\u4F20\u8F93\u52A0\u5BC6\u540E\u901A\u8FC7 HTTPS \u91CD\u8BD5\u3002",
|
|
124
|
+
kit_a2aAuthFailed: "A2A \u8EAB\u4EFD\u8BA4\u8BC1\u5931\u8D25",
|
|
125
|
+
kit_a2aParseError: "\u8BF7\u6C42\u4F53\u4E0D\u662F\u6709\u6548\u7684 JSON",
|
|
126
|
+
kit_a2aCardUnavailable: "Agent Card \u4E0D\u53EF\u7528",
|
|
127
|
+
$schema: "https://inlang.com/schema/inlang-message-format",
|
|
128
|
+
kit_unauthorized: "\u672A\u6388\u6743",
|
|
129
|
+
kit_forbidden: "\u6743\u9650\u4E0D\u8DB3\uFF1A\u7F3A\u5C11 {permission} \u6743\u9650",
|
|
130
|
+
kit_authNotConfigured: "kit.auth \u672A\u914D\u7F6E\uFF1A\u8BF7\u5728 kit.createHandle() \u4E2D\u4F20\u5165 auth.operations",
|
|
131
|
+
kit_csrfTokenFailed: "\u751F\u6210 CSRF Token \u5931\u8D25",
|
|
132
|
+
kit_csrfVerifyFailed: "CSRF Token \u9A8C\u8BC1\u5931\u8D25",
|
|
133
|
+
kit_csrfValidationFailed: "CSRF Token \u65E0\u6548",
|
|
134
|
+
kit_rateLimitExceeded: "\u8BF7\u6C42\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",
|
|
135
|
+
kit_unsupportedContentType: "\u4E0D\u652F\u6301\u7684\u5185\u5BB9\u7C7B\u578B",
|
|
136
|
+
kit_parseBodyFailed: "\u8BF7\u6C42\u4F53\u89E3\u6790\u5931\u8D25",
|
|
137
|
+
kit_encryptFailed: "\u52A0\u5BC6\u5931\u8D25",
|
|
138
|
+
kit_transportKeyGenerationFailed: "\u4F20\u8F93\u52A0\u5BC6\u5BC6\u94A5\u5BF9\u751F\u6210\u5931\u8D25",
|
|
139
|
+
kit_transportClientKeyNotFound: "\u5BA2\u6237\u7AEF\u5BC6\u94A5\u672A\u627E\u5230",
|
|
140
|
+
kit_transportEncryptFailed: "\u4F20\u8F93\u52A0\u5BC6\u5931\u8D25",
|
|
141
|
+
kit_transportEncryptKeyFailed: "\u5BF9\u79F0\u5BC6\u94A5\u52A0\u5BC6\u5931\u8D25",
|
|
142
|
+
kit_transportDecryptKeyFailed: "\u5BF9\u79F0\u5BC6\u94A5\u89E3\u5BC6\u5931\u8D25",
|
|
143
|
+
kit_transportDecryptFailed: "\u4F20\u8F93\u89E3\u5BC6\u5931\u8D25",
|
|
144
|
+
kit_transportInvalidPayload: "\u65E0\u6548\u7684\u52A0\u5BC6\u8F7D\u8377",
|
|
145
|
+
kit_transportKeyExchangeFailed: "\u5BC6\u94A5\u4EA4\u6362\u5931\u8D25",
|
|
146
|
+
kit_transportClientIdRequired: "\u7F3A\u5C11 X-Client-Id \u8BF7\u6C42\u5934\uFF0C\u4F20\u8F93\u52A0\u5BC6\u5FC5\u987B\u5148\u5B8C\u6210\u5BC6\u94A5\u4EA4\u6362",
|
|
147
|
+
kit_signFailed: "\u8BF7\u6C42\u7B7E\u540D\u5931\u8D25",
|
|
148
|
+
kit_authRequired: "\u9700\u8981\u8EAB\u4EFD\u8BA4\u8BC1",
|
|
149
|
+
kit_accessDenied: "\u62D2\u7EDD\u8BBF\u95EE",
|
|
150
|
+
kit_resourceNotFound: "\u8D44\u6E90\u672A\u627E\u5230",
|
|
151
|
+
kit_internalError: "\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF",
|
|
152
|
+
kit_validationFailed: "\u6570\u636E\u9A8C\u8BC1\u5931\u8D25",
|
|
153
|
+
kit_validationRequired: "\u6B64\u5B57\u6BB5\u5FC5\u586B",
|
|
154
|
+
kit_validationInvalid: "\u8F93\u5165\u683C\u5F0F\u65E0\u6548",
|
|
155
|
+
kit_validationInvalidType: "\u5B57\u6BB5\u7C7B\u578B\u4E0D\u6B63\u786E",
|
|
156
|
+
kit_validationUnexpectedFields: "\u63D0\u4EA4\u7684\u6570\u636E\u5305\u542B\u5F53\u524D\u64CD\u4F5C\u4E0D\u652F\u6301\u7684\u5185\u5BB9\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u540E\u91CD\u8BD5\u3002",
|
|
157
|
+
kit_validationStringMin: "\u81F3\u5C11\u8F93\u5165 {min} \u4E2A\u5B57\u7B26",
|
|
158
|
+
kit_validationStringMax: "\u6700\u591A\u8F93\u5165 {max} \u4E2A\u5B57\u7B26",
|
|
159
|
+
kit_validationNumberMin: "\u6570\u503C\u4E0D\u80FD\u5C0F\u4E8E {min}",
|
|
160
|
+
kit_validationNumberMax: "\u6570\u503C\u4E0D\u80FD\u5927\u4E8E {max}",
|
|
161
|
+
kit_validationArrayMin: "\u81F3\u5C11\u9009\u62E9 {min} \u9879",
|
|
162
|
+
kit_validationArrayMax: "\u6700\u591A\u9009\u62E9 {max} \u9879",
|
|
163
|
+
kit_validationTooSmall: "\u4E0D\u80FD\u5C0F\u4E8E {min}",
|
|
164
|
+
kit_validationTooBig: "\u4E0D\u80FD\u5927\u4E8E {max}",
|
|
165
|
+
kit_validationEmail: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740",
|
|
166
|
+
kit_validationUrl: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7F51\u5740",
|
|
167
|
+
kit_validationUuid: "\u8BF7\u8F93\u5165\u6709\u6548\u7684 UUID",
|
|
168
|
+
kit_validationEnum: "\u8BF7\u9009\u62E9\u6709\u6548\u9009\u9879",
|
|
169
|
+
kit_noGuardsPassed: "\u6CA1\u6709\u5B88\u536B\u901A\u8FC7",
|
|
170
|
+
kit_requiredRoles: "\u9700\u8981\u89D2\u8272\uFF1A{roles}",
|
|
171
|
+
kit_requiredPermissions: "\u9700\u8981\u6743\u9650\uFF1A{permissions}",
|
|
172
|
+
kit_idRequired: "ID \u4E0D\u80FD\u4E3A\u7A7A",
|
|
173
|
+
kit_rateLimitWindowInvalid: "\u9650\u6D41\u7A97\u53E3\u5FC5\u987B\u4E3A 1 \u81F3 2147483647 \u7684\u6574\u6570\u6BEB\u79D2",
|
|
174
|
+
kit_rateLimitMemoryCapacity: "\u5F00\u53D1\u5185\u5B58\u9650\u6D41\u5BB9\u91CF\u5DF2\u6EE1\uFF0C\u8BF7\u4F7F\u7528\u5171\u4EAB\u540E\u7AEF",
|
|
175
|
+
kit_transportBusy: "\u6750\u6599\u5904\u7406\u7E41\u5FD9\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",
|
|
176
|
+
kit_feedbackUnavailable: "\u95EE\u9898\u53CD\u9988\u6682\u4E0D\u53EF\u7528\uFF0C\u4E1A\u52A1\u529F\u80FD\u53EF\u7EE7\u7EED\u4F7F\u7528"
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
// src/kit-i18n.ts
|
|
180
|
+
var kitM = core.i18n.createMessageGetter({ "zh-CN": zh_CN_default, "en-US": en_US_default, "ja-JP": ja_JP_default });
|
|
181
|
+
function setAllModulesLocale(locale) {
|
|
182
|
+
core.i18n.setGlobalLocale(locale);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
export { kitM, setAllModulesLocale };
|
|
186
|
+
//# sourceMappingURL=chunk-USFJN7IO.js.map
|
|
187
|
+
//# sourceMappingURL=chunk-USFJN7IO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../messages/en-US.json","../messages/ja-JP.json","../messages/zh-CN.json","../src/kit-i18n.ts"],"names":[],"mappings":"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","file":"chunk-USFJN7IO.js","sourcesContent":["{\n \"kit_transportPlaintextRequired\": \"This endpoint accepts unencrypted application data. Disable transport encryption for this request and retry over HTTPS.\",\n \"kit_a2aAuthFailed\": \"A2A authentication failed\",\n \"kit_a2aParseError\": \"Invalid JSON request body\",\n \"kit_a2aCardUnavailable\": \"Agent card not available\",\n \"$schema\": \"https://inlang.com/schema/inlang-message-format\",\n \"kit_unauthorized\": \"Unauthorized\",\n \"kit_forbidden\": \"Forbidden: missing {permission} permission\",\n \"kit_authNotConfigured\": \"kit.auth is not configured: pass auth.operations in kit.createHandle()\",\n \"kit_csrfTokenFailed\": \"Failed to generate CSRF token\",\n \"kit_csrfVerifyFailed\": \"CSRF token verification failed\",\n \"kit_csrfValidationFailed\": \"Invalid CSRF token\",\n \"kit_rateLimitExceeded\": \"Too many requests, please try again later\",\n \"kit_unsupportedContentType\": \"Unsupported content type\",\n \"kit_parseBodyFailed\": \"Failed to parse request body\",\n \"kit_encryptFailed\": \"Encryption failed\",\n \"kit_transportKeyGenerationFailed\": \"Transport encryption key generation failed\",\n \"kit_transportClientKeyNotFound\": \"Client key not found\",\n \"kit_transportEncryptFailed\": \"Transport encryption failed\",\n \"kit_transportEncryptKeyFailed\": \"Symmetric key encryption failed\",\n \"kit_transportDecryptKeyFailed\": \"Symmetric key decryption failed\",\n \"kit_transportDecryptFailed\": \"Transport decryption failed\",\n \"kit_transportInvalidPayload\": \"Invalid encrypted payload\",\n \"kit_transportKeyExchangeFailed\": \"Key exchange failed\",\n \"kit_transportClientIdRequired\": \"Missing X-Client-Id header, key exchange is required for transport encryption\",\n \"kit_signFailed\": \"Request signing failed\",\n \"kit_authRequired\": \"Authentication required\",\n \"kit_accessDenied\": \"Access denied\",\n \"kit_resourceNotFound\": \"Resource not found\",\n \"kit_internalError\": \"Internal server error\",\n \"kit_validationFailed\": \"Validation failed\",\n \"kit_validationRequired\": \"This field is required\",\n \"kit_validationInvalid\": \"Invalid input format\",\n \"kit_validationInvalidType\": \"Invalid field type\",\n \"kit_validationUnexpectedFields\": \"The submitted data contains unsupported fields. Refresh the page and try again.\",\n \"kit_validationStringMin\": \"Enter at least {min} characters\",\n \"kit_validationStringMax\": \"Enter at most {max} characters\",\n \"kit_validationNumberMin\": \"Value must be at least {min}\",\n \"kit_validationNumberMax\": \"Value must be at most {max}\",\n \"kit_validationArrayMin\": \"Select at least {min} item(s)\",\n \"kit_validationArrayMax\": \"Select at most {max} item(s)\",\n \"kit_validationTooSmall\": \"Value must be at least {min}\",\n \"kit_validationTooBig\": \"Value must be at most {max}\",\n \"kit_validationEmail\": \"Enter a valid email address\",\n \"kit_validationUrl\": \"Enter a valid URL\",\n \"kit_validationUuid\": \"Enter a valid UUID\",\n \"kit_validationEnum\": \"Select a valid option\",\n \"kit_noGuardsPassed\": \"No guards passed\",\n \"kit_requiredRoles\": \"Required roles: {roles}\",\n \"kit_requiredPermissions\": \"Required permissions: {permissions}\",\n \"kit_idRequired\": \"ID is required\",\n \"kit_rateLimitWindowInvalid\": \"The rate limit window must be an integer from 1 to 2147483647 milliseconds\",\n \"kit_rateLimitMemoryCapacity\": \"The development memory rate limit store is full; use a shared backend\",\n \"kit_transportBusy\": \"Material processing is busy. Please retry shortly.\",\n \"kit_feedbackUnavailable\": \"Feedback is temporarily unavailable. Business features remain available.\"\n}\n","{\n \"kit_transportPlaintextRequired\": \"このエンドポイントはアプリケーション層で暗号化されていないデータを受け付けます。リクエストの伝送暗号化を無効にし、HTTPS で再試行してください。\",\n \"kit_a2aAuthFailed\": \"A2A認証に失敗しました\",\n \"kit_a2aParseError\": \"リクエスト本文が有効なJSONではありません\",\n \"kit_a2aCardUnavailable\": \"エージェントカードを利用できません\",\n \"$schema\": \"https://inlang.com/schema/inlang-message-format\",\n \"kit_unauthorized\": \"認証されていません\",\n \"kit_forbidden\": \"アクセスが拒否されました: {permission}権限がありません\",\n \"kit_authNotConfigured\": \"kit.authが設定されていません。kit.createHandle()にauth.operationsを渡してください\",\n \"kit_csrfTokenFailed\": \"CSRFトークンの生成に失敗しました\",\n \"kit_csrfVerifyFailed\": \"CSRFトークンの検証に失敗しました\",\n \"kit_csrfValidationFailed\": \"CSRFトークンが無効です\",\n \"kit_rateLimitExceeded\": \"リクエストが多すぎます。しばらくしてから再試行してください\",\n \"kit_unsupportedContentType\": \"未対応のコンテンツタイプです\",\n \"kit_parseBodyFailed\": \"リクエスト本文の解析に失敗しました\",\n \"kit_encryptFailed\": \"暗号化に失敗しました\",\n \"kit_transportKeyGenerationFailed\": \"通信暗号化鍵の生成に失敗しました\",\n \"kit_transportClientKeyNotFound\": \"クライアント鍵が見つかりません\",\n \"kit_transportEncryptFailed\": \"通信の暗号化に失敗しました\",\n \"kit_transportEncryptKeyFailed\": \"対称鍵の暗号化に失敗しました\",\n \"kit_transportDecryptKeyFailed\": \"対称鍵の復号に失敗しました\",\n \"kit_transportDecryptFailed\": \"通信の復号に失敗しました\",\n \"kit_transportInvalidPayload\": \"暗号化ペイロードが無効です\",\n \"kit_transportKeyExchangeFailed\": \"鍵交換に失敗しました\",\n \"kit_transportClientIdRequired\": \"X-Client-Idヘッダーがありません。通信暗号化には鍵交換が必要です\",\n \"kit_signFailed\": \"リクエストの署名に失敗しました\",\n \"kit_authRequired\": \"認証が必要です\",\n \"kit_accessDenied\": \"アクセスが拒否されました\",\n \"kit_resourceNotFound\": \"リソースが見つかりません\",\n \"kit_internalError\": \"サーバー内部エラー\",\n \"kit_validationFailed\": \"入力内容の検証に失敗しました\",\n \"kit_validationRequired\": \"この項目は必須です\",\n \"kit_validationInvalid\": \"入力形式が無効です\",\n \"kit_validationInvalidType\": \"フィールドの型が無効です\",\n \"kit_validationUnexpectedFields\": \"送信データにこの操作で使用できない項目が含まれています。ページを更新して再度お試しください。\",\n \"kit_validationStringMin\": \"{min}文字以上で入力してください\",\n \"kit_validationStringMax\": \"{max}文字以内で入力してください\",\n \"kit_validationNumberMin\": \"{min}以上の値を入力してください\",\n \"kit_validationNumberMax\": \"{max}以下の値を入力してください\",\n \"kit_validationArrayMin\": \"{min}件以上選択してください\",\n \"kit_validationArrayMax\": \"{max}件以内で選択してください\",\n \"kit_validationTooSmall\": \"{min}以上の値を入力してください\",\n \"kit_validationTooBig\": \"{max}以下の値を入力してください\",\n \"kit_validationEmail\": \"有効なメールアドレスを入力してください\",\n \"kit_validationUrl\": \"有効なURLを入力してください\",\n \"kit_validationUuid\": \"有効なUUIDを入力してください\",\n \"kit_validationEnum\": \"有効な選択肢を選んでください\",\n \"kit_noGuardsPassed\": \"どのガードも通過しませんでした\",\n \"kit_requiredRoles\": \"必要なロール: {roles}\",\n \"kit_requiredPermissions\": \"必要な権限: {permissions}\",\n \"kit_idRequired\": \"IDは必須です\",\n \"kit_rateLimitWindowInvalid\": \"レート制限の期間は1〜2147483647ミリ秒の整数で指定してください\",\n \"kit_rateLimitMemoryCapacity\": \"開発用メモリーレート制限ストアが満杯です。共有バックエンドを使用してください\",\n \"kit_transportBusy\": \"資料の処理が混み合っています。しばらくしてから再試行してください。\",\n \"kit_feedbackUnavailable\": \"フィードバックは一時的に利用できません。業務機能は引き続き利用できます。\"\n}\n","{\n \"kit_transportPlaintextRequired\": \"此接口接收未加密的应用数据,请关闭传输加密后通过 HTTPS 重试。\",\n \"kit_a2aAuthFailed\": \"A2A 身份认证失败\",\n \"kit_a2aParseError\": \"请求体不是有效的 JSON\",\n \"kit_a2aCardUnavailable\": \"Agent Card 不可用\",\n \"$schema\": \"https://inlang.com/schema/inlang-message-format\",\n \"kit_unauthorized\": \"未授权\",\n \"kit_forbidden\": \"权限不足:缺少 {permission} 权限\",\n \"kit_authNotConfigured\": \"kit.auth 未配置:请在 kit.createHandle() 中传入 auth.operations\",\n \"kit_csrfTokenFailed\": \"生成 CSRF Token 失败\",\n \"kit_csrfVerifyFailed\": \"CSRF Token 验证失败\",\n \"kit_csrfValidationFailed\": \"CSRF Token 无效\",\n \"kit_rateLimitExceeded\": \"请求过于频繁,请稍后再试\",\n \"kit_unsupportedContentType\": \"不支持的内容类型\",\n \"kit_parseBodyFailed\": \"请求体解析失败\",\n \"kit_encryptFailed\": \"加密失败\",\n \"kit_transportKeyGenerationFailed\": \"传输加密密钥对生成失败\",\n \"kit_transportClientKeyNotFound\": \"客户端密钥未找到\",\n \"kit_transportEncryptFailed\": \"传输加密失败\",\n \"kit_transportEncryptKeyFailed\": \"对称密钥加密失败\",\n \"kit_transportDecryptKeyFailed\": \"对称密钥解密失败\",\n \"kit_transportDecryptFailed\": \"传输解密失败\",\n \"kit_transportInvalidPayload\": \"无效的加密载荷\",\n \"kit_transportKeyExchangeFailed\": \"密钥交换失败\",\n \"kit_transportClientIdRequired\": \"缺少 X-Client-Id 请求头,传输加密必须先完成密钥交换\",\n \"kit_signFailed\": \"请求签名失败\",\n \"kit_authRequired\": \"需要身份认证\",\n \"kit_accessDenied\": \"拒绝访问\",\n \"kit_resourceNotFound\": \"资源未找到\",\n \"kit_internalError\": \"内部服务器错误\",\n \"kit_validationFailed\": \"数据验证失败\",\n \"kit_validationRequired\": \"此字段必填\",\n \"kit_validationInvalid\": \"输入格式无效\",\n \"kit_validationInvalidType\": \"字段类型不正确\",\n \"kit_validationUnexpectedFields\": \"提交的数据包含当前操作不支持的内容,请刷新页面后重试。\",\n \"kit_validationStringMin\": \"至少输入 {min} 个字符\",\n \"kit_validationStringMax\": \"最多输入 {max} 个字符\",\n \"kit_validationNumberMin\": \"数值不能小于 {min}\",\n \"kit_validationNumberMax\": \"数值不能大于 {max}\",\n \"kit_validationArrayMin\": \"至少选择 {min} 项\",\n \"kit_validationArrayMax\": \"最多选择 {max} 项\",\n \"kit_validationTooSmall\": \"不能小于 {min}\",\n \"kit_validationTooBig\": \"不能大于 {max}\",\n \"kit_validationEmail\": \"请输入有效的邮箱地址\",\n \"kit_validationUrl\": \"请输入有效的网址\",\n \"kit_validationUuid\": \"请输入有效的 UUID\",\n \"kit_validationEnum\": \"请选择有效选项\",\n \"kit_noGuardsPassed\": \"没有守卫通过\",\n \"kit_requiredRoles\": \"需要角色:{roles}\",\n \"kit_requiredPermissions\": \"需要权限:{permissions}\",\n \"kit_idRequired\": \"ID 不能为空\",\n \"kit_rateLimitWindowInvalid\": \"限流窗口必须为 1 至 2147483647 的整数毫秒\",\n \"kit_rateLimitMemoryCapacity\": \"开发内存限流容量已满,请使用共享后端\",\n \"kit_transportBusy\": \"材料处理繁忙,请稍后重试\",\n \"kit_feedbackUnavailable\": \"问题反馈暂不可用,业务功能可继续使用\"\n}\n","/**\n * @h-ai/kit — i18n 工具\n *\n * Kit 模块的国际化消息工具,从 @h-ai/core 调用 i18n API。\n * @module kit-i18n\n */\n\nimport { core } from '@h-ai/core'\nimport messagesEnUS from '../messages/en-US.json'\nimport messagesJaJP from '../messages/ja-JP.json'\nimport messagesZhCN from '../messages/zh-CN.json'\n\n/**\n * Kit 中英日消息字典的合法 key 联合。\n * @example 模块内部上下文\n * ```ts\n * const key: KitMessageKey = 'kit_accessDenied'\n * const message = kitM(key)\n * void message\n * ```\n */\ntype KitMessageKey = keyof typeof messagesZhCN\n\n/**\n * 获取 Kit 模块的 i18n 消息\n * @example 模块内部上下文\n * ```ts\n * const message = kitM('kit_accessDenied', { locale: 'en-US' })\n * void message\n * ```\n */\nexport const kitM\n = core.i18n.createMessageGetter<KitMessageKey>({ 'zh-CN': messagesZhCN, 'en-US': messagesEnUS, 'ja-JP': messagesJaJP })\n\n/**\n * 设置浏览器应用语言或 Node 启动默认语言;请求中只更新当前 runWithLocale 上下文。\n *\n * 通过 @h-ai/core 的集中式 locale 管理器,一次调用即可同步所有模块。\n * 各模块的 createMessageGetter 优先读取当前 Node 请求上下文;SSR 必须包裹实际 resolve。\n * @param locale - 支持的应用默认语言;请求中应使用上下文隔离。\n * @example\n * ```ts\n * import { kit } from '@h-ai/kit'\n *\n * // 应用启动时设置默认语言;请求内使用 runWithLocale。\n * kit.i18n.setLocale('en-US')\n * ```\n */\nexport function setAllModulesLocale(locale: string): void {\n core.i18n.setGlobalLocale(locale)\n}\n"]}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import { normalizeTransportBasePath, resolveTransportPath, DEFAULT_TRANSPORT_KEY_EXCHANGE_PATH, shouldUseTransportForUrl } from './chunk-JRQPMPQC.js';
|
|
2
|
+
import { kitM } from './chunk-USFJN7IO.js';
|
|
3
|
+
import { ok, core, err } from '@h-ai/core';
|
|
4
|
+
import { IamSessionErrorCodeSchema, apiContract, IamReauthenticationProofSchema, IamPublicConfigSchema, IamCaptchaChallengeSchema } from '@h-ai/api-contract';
|
|
5
|
+
import { TRANSPORT_PROTOCOL } from '@h-ai/crypto';
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
|
|
8
|
+
var DEFAULT_TOKEN_COOKIE_NAME = "hai_access_token";
|
|
9
|
+
var authState = {
|
|
10
|
+
cookieName: DEFAULT_TOKEN_COOKIE_NAME,
|
|
11
|
+
operations: null
|
|
12
|
+
};
|
|
13
|
+
function configureAuth(config) {
|
|
14
|
+
if (config.cookieName)
|
|
15
|
+
authState.cookieName = config.cookieName;
|
|
16
|
+
if (config.operations)
|
|
17
|
+
authState.operations = config.operations;
|
|
18
|
+
}
|
|
19
|
+
function createMemoryTokenStore() {
|
|
20
|
+
let token = null;
|
|
21
|
+
return {
|
|
22
|
+
get: () => token,
|
|
23
|
+
set: (value) => {
|
|
24
|
+
token = value;
|
|
25
|
+
},
|
|
26
|
+
clear: () => {
|
|
27
|
+
token = null;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
var defaultBrowserTokenStore = createMemoryTokenStore();
|
|
32
|
+
function getDefaultBrowserTokenStore() {
|
|
33
|
+
return defaultBrowserTokenStore;
|
|
34
|
+
}
|
|
35
|
+
function getBearerTokenFromRequest(request) {
|
|
36
|
+
const authorization = request.headers.get("authorization");
|
|
37
|
+
if (!authorization)
|
|
38
|
+
return null;
|
|
39
|
+
const [scheme, token] = authorization.split(" ");
|
|
40
|
+
if (!scheme || !token)
|
|
41
|
+
return null;
|
|
42
|
+
if (scheme.toLowerCase() !== "bearer")
|
|
43
|
+
return null;
|
|
44
|
+
const trimmed = token.trim();
|
|
45
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
46
|
+
}
|
|
47
|
+
function getAccessToken(request, cookies) {
|
|
48
|
+
return getBearerTokenFromRequest(request) ?? cookies?.get(authState.cookieName) ?? null;
|
|
49
|
+
}
|
|
50
|
+
function setToken(cookies, token, maxAge) {
|
|
51
|
+
const secure = typeof process === "undefined" || process.env.NODE_ENV === "production" || process.env.HAI_CORE_ENV === "production";
|
|
52
|
+
cookies.set(authState.cookieName, token, {
|
|
53
|
+
path: "/",
|
|
54
|
+
httpOnly: true,
|
|
55
|
+
sameSite: "lax",
|
|
56
|
+
// 测试开关仅放宽共享状态要求,不降低生产凭证 Cookie 的传输安全。
|
|
57
|
+
secure,
|
|
58
|
+
maxAge
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function clearToken(cookies) {
|
|
62
|
+
cookies.delete(authState.cookieName, { path: "/" });
|
|
63
|
+
}
|
|
64
|
+
function getAuthOperations() {
|
|
65
|
+
if (!authState.operations)
|
|
66
|
+
return null;
|
|
67
|
+
return typeof authState.operations === "function" ? authState.operations() : authState.operations;
|
|
68
|
+
}
|
|
69
|
+
function authNotConfiguredError() {
|
|
70
|
+
return err({
|
|
71
|
+
code: "KIT_AUTH_NOT_CONFIGURED",
|
|
72
|
+
message: kitM("kit_authNotConfigured")
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
async function runAuthLogin(cookies, credentials, run) {
|
|
76
|
+
const ops = getAuthOperations();
|
|
77
|
+
if (!ops)
|
|
78
|
+
return authNotConfiguredError();
|
|
79
|
+
const result = await run(ops, credentials);
|
|
80
|
+
if (result.success) {
|
|
81
|
+
setToken(cookies, result.data.tokens.accessToken, result.data.tokens.expiresIn);
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
async function login(cookies, credentials, context) {
|
|
86
|
+
return runAuthLogin(cookies, credentials, (ops, input) => ops.login(input, context));
|
|
87
|
+
}
|
|
88
|
+
async function loginWithOtp(cookies, credentials, context) {
|
|
89
|
+
return runAuthLogin(cookies, credentials, (ops, input) => ops.loginWithOtp(input, context));
|
|
90
|
+
}
|
|
91
|
+
async function loginWithLdap(cookies, credentials, context) {
|
|
92
|
+
return runAuthLogin(cookies, credentials, (ops, input) => ops.loginWithLdap(input, context));
|
|
93
|
+
}
|
|
94
|
+
async function loginWithApiKey(cookies, credentials, context) {
|
|
95
|
+
return runAuthLogin(cookies, credentials, (ops, input) => ops.loginWithApiKey(input, context));
|
|
96
|
+
}
|
|
97
|
+
async function registerAndLogin(cookies, options, context) {
|
|
98
|
+
return runAuthLogin(cookies, options, (ops, input) => ops.registerAndLogin(input, context));
|
|
99
|
+
}
|
|
100
|
+
async function logout(cookies, accessToken) {
|
|
101
|
+
try {
|
|
102
|
+
if (!accessToken)
|
|
103
|
+
return ok(void 0);
|
|
104
|
+
const ops = getAuthOperations();
|
|
105
|
+
if (!ops)
|
|
106
|
+
return authNotConfiguredError();
|
|
107
|
+
return await ops.logout(accessToken);
|
|
108
|
+
} finally {
|
|
109
|
+
clearToken(cookies);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function setBrowserToken(token) {
|
|
113
|
+
defaultBrowserTokenStore.set(token);
|
|
114
|
+
}
|
|
115
|
+
function clearBrowserToken() {
|
|
116
|
+
defaultBrowserTokenStore.clear();
|
|
117
|
+
}
|
|
118
|
+
var DEFAULT_KEY_EXCHANGE_URL = `/api${TRANSPORT_PROTOCOL.DEFAULT_KEY_EXCHANGE_PATH}`;
|
|
119
|
+
function getCookie(name) {
|
|
120
|
+
if (typeof document === "undefined")
|
|
121
|
+
return void 0;
|
|
122
|
+
const match = document.cookie.match(new RegExp(`(?:^|;\\s*)${name}=([^;]*)`));
|
|
123
|
+
return match?.[1];
|
|
124
|
+
}
|
|
125
|
+
function canEncryptRequestBody(body) {
|
|
126
|
+
return body === void 0 || body === null || typeof body === "string";
|
|
127
|
+
}
|
|
128
|
+
function canUseTransportForRequest(request) {
|
|
129
|
+
const method = request.method.toUpperCase();
|
|
130
|
+
if (method === "GET" || method === "HEAD") {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
const headers = new Headers(request.headers);
|
|
134
|
+
const contentType = headers.get("Content-Type") ?? "";
|
|
135
|
+
if (contentType.includes("application/json")) {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
return request.body === null;
|
|
139
|
+
}
|
|
140
|
+
function getCurrentOrigin() {
|
|
141
|
+
if (typeof window !== "undefined" && window.location?.origin) {
|
|
142
|
+
return window.location.origin;
|
|
143
|
+
}
|
|
144
|
+
return "http://localhost";
|
|
145
|
+
}
|
|
146
|
+
function toRequest(input, init) {
|
|
147
|
+
if (input instanceof Request)
|
|
148
|
+
return init ? new Request(input, init) : input;
|
|
149
|
+
return new Request(input, init);
|
|
150
|
+
}
|
|
151
|
+
function installBrowserTransportFetch(transportConfig) {
|
|
152
|
+
if (typeof window === "undefined" || !transportConfig)
|
|
153
|
+
return;
|
|
154
|
+
const fetchState = globalThis;
|
|
155
|
+
if (fetchState.__haiKitTransportFetchInstalled)
|
|
156
|
+
return;
|
|
157
|
+
const originalFetch = fetchState.__haiKitOriginalFetch ?? globalThis.fetch.bind(globalThis);
|
|
158
|
+
fetchState.__haiKitOriginalFetch = originalFetch;
|
|
159
|
+
const origin = getCurrentOrigin();
|
|
160
|
+
const basePath = normalizeTransportBasePath(transportConfig.basePath);
|
|
161
|
+
const keyExchangeUrl = new URL(transportConfig.keyExchangeUrl ?? DEFAULT_KEY_EXCHANGE_URL, origin).toString();
|
|
162
|
+
const keyExchangePath = resolveTransportPath(keyExchangeUrl, origin);
|
|
163
|
+
const transportClient = transportConfig.crypto.transport.createClient({
|
|
164
|
+
keyExchangeUrl,
|
|
165
|
+
fetch: originalFetch,
|
|
166
|
+
maxPlaintextBytes: transportConfig.maxPlaintextBytes
|
|
167
|
+
});
|
|
168
|
+
const wrappedFetch = async (input, init) => {
|
|
169
|
+
const request = toRequest(input, init);
|
|
170
|
+
const requestUrl = new URL(request.url, origin);
|
|
171
|
+
const headers = new Headers(request.headers);
|
|
172
|
+
if (!shouldUseTransportForUrl(requestUrl, {
|
|
173
|
+
origin,
|
|
174
|
+
keyExchangePath,
|
|
175
|
+
excludePaths: transportConfig.excludePaths,
|
|
176
|
+
basePath
|
|
177
|
+
})) {
|
|
178
|
+
return originalFetch(input, init);
|
|
179
|
+
}
|
|
180
|
+
if (headers.has(TRANSPORT_PROTOCOL.CLIENT_ID_HEADER))
|
|
181
|
+
return originalFetch(input, init);
|
|
182
|
+
if (!canUseTransportForRequest(request))
|
|
183
|
+
return originalFetch(input, init);
|
|
184
|
+
return transportClient.encryptedFetch(request);
|
|
185
|
+
};
|
|
186
|
+
globalThis.fetch = wrappedFetch;
|
|
187
|
+
window.fetch = wrappedFetch;
|
|
188
|
+
fetchState.__haiKitTransportFetchInstalled = true;
|
|
189
|
+
}
|
|
190
|
+
function installBrowserTransport(config, deps) {
|
|
191
|
+
if (typeof window === "undefined" || config.transport === false)
|
|
192
|
+
return;
|
|
193
|
+
void deps.crypto.init();
|
|
194
|
+
installBrowserTransportFetch({
|
|
195
|
+
crypto: deps.crypto,
|
|
196
|
+
basePath: deps.basePath,
|
|
197
|
+
keyExchangeUrl: config.transport.keyExchangePath,
|
|
198
|
+
excludePaths: [...config.transport.excludePaths]
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
function createKitClient(config = {}) {
|
|
202
|
+
const {
|
|
203
|
+
transport: transportConfig,
|
|
204
|
+
csrfCookieName = "hai_csrf",
|
|
205
|
+
csrfHeaderName = "X-CSRF-Token",
|
|
206
|
+
auth: authConfig
|
|
207
|
+
} = config;
|
|
208
|
+
const authStore = authConfig ? authConfig === true ? getDefaultBrowserTokenStore() : authConfig : null;
|
|
209
|
+
const transportOrigin = getCurrentOrigin();
|
|
210
|
+
const transportBasePath = normalizeTransportBasePath(transportConfig?.basePath);
|
|
211
|
+
const transportKeyExchangeUrl = transportConfig?.keyExchangeUrl ?? DEFAULT_KEY_EXCHANGE_URL;
|
|
212
|
+
const transportKeyExchangePath = transportConfig ? resolveTransportPath(transportKeyExchangeUrl, transportOrigin) : DEFAULT_TRANSPORT_KEY_EXCHANGE_PATH;
|
|
213
|
+
const transportClient = transportConfig ? transportConfig.crypto.transport.createClient({
|
|
214
|
+
keyExchangeUrl: transportKeyExchangeUrl,
|
|
215
|
+
fetch,
|
|
216
|
+
maxPlaintextBytes: transportConfig.maxPlaintextBytes
|
|
217
|
+
}) : null;
|
|
218
|
+
async function performFetch(input, init = {}) {
|
|
219
|
+
const request = input instanceof Request ? input : void 0;
|
|
220
|
+
const method = (init.method ?? request?.method ?? "GET").toUpperCase();
|
|
221
|
+
const isWriteMethod = !["GET", "HEAD", "OPTIONS"].includes(method);
|
|
222
|
+
const headers = new Headers(init.headers ?? request?.headers);
|
|
223
|
+
headers.set("x-hai-terminal", config.terminalType ?? "web");
|
|
224
|
+
const suppliedId = headers.get("x-request-id");
|
|
225
|
+
const traceId = suppliedId && /^[\w.:-]{1,128}$/.test(suppliedId) ? suppliedId : core.id.uuid();
|
|
226
|
+
headers.set("x-request-id", traceId);
|
|
227
|
+
const canUseTransport = request && init.body === void 0 ? canUseTransportForRequest({ method, headers, body: request.body }) : canEncryptRequestBody(init.body);
|
|
228
|
+
if (authStore) {
|
|
229
|
+
const token = authStore.get();
|
|
230
|
+
if (token) {
|
|
231
|
+
headers.set("Authorization", `Bearer ${token}`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (isWriteMethod) {
|
|
235
|
+
const csrfToken = getCookie(csrfCookieName);
|
|
236
|
+
if (csrfToken) {
|
|
237
|
+
headers.set(csrfHeaderName, csrfToken);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (transportClient && canUseTransport && shouldUseTransportForUrl(request?.url ?? (input instanceof URL ? input : String(input)), {
|
|
241
|
+
origin: transportOrigin,
|
|
242
|
+
keyExchangePath: transportKeyExchangePath,
|
|
243
|
+
excludePaths: transportConfig?.excludePaths,
|
|
244
|
+
basePath: transportBasePath
|
|
245
|
+
})) {
|
|
246
|
+
return send(() => transportClient.encryptedFetch(input, { ...init, headers }));
|
|
247
|
+
}
|
|
248
|
+
return send(() => fetch(input, { ...init, headers }));
|
|
249
|
+
async function send(operation) {
|
|
250
|
+
try {
|
|
251
|
+
const response = await operation();
|
|
252
|
+
if (!response.ok)
|
|
253
|
+
core.logger.error("HTTP request failed", { traceId: response.headers.get("x-trace-id") ?? response.headers.get("x-request-id") ?? traceId, method, status: response.status });
|
|
254
|
+
return response;
|
|
255
|
+
} catch (error) {
|
|
256
|
+
core.logger.error("HTTP transport failed", { traceId, method, error });
|
|
257
|
+
throw error;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return {
|
|
262
|
+
async apiFetch(input, init = {}, options) {
|
|
263
|
+
const enabled = config.recoverSession && options?.recoverSession !== false;
|
|
264
|
+
const original = enabled || options?.reauthorize ? new Request(input instanceof Request ? input : new URL(String(input), getCurrentOrigin()), init) : void 0;
|
|
265
|
+
const retry = original?.clone();
|
|
266
|
+
const response = await performFetch(original ?? input, original ? {} : init);
|
|
267
|
+
if (!retry || retry.signal.aborted || new URL(retry.url).origin !== getCurrentOrigin())
|
|
268
|
+
return response;
|
|
269
|
+
if (response.status !== 401 && !options?.reauthorize)
|
|
270
|
+
return response;
|
|
271
|
+
if (response.status !== 401 && !response.headers.get("content-type")?.includes("application/json"))
|
|
272
|
+
return response;
|
|
273
|
+
const failure = await response.clone().json().catch(() => void 0);
|
|
274
|
+
const code = failure && typeof failure === "object" && "success" in failure && failure.success === false && "error" in failure && failure.error && typeof failure.error === "object" && "code" in failure.error ? failure.error.code : void 0;
|
|
275
|
+
const proofRejected = code === "hai:iam:027" && options?.reauthorize;
|
|
276
|
+
if (!proofRejected && (!enabled || response.status !== 401 || typeof code === "string" && code.startsWith("hai:iam:") && !IamSessionErrorCodeSchema.safeParse(code).success))
|
|
277
|
+
return response;
|
|
278
|
+
if (!proofRejected && !await config.recoverSession())
|
|
279
|
+
return response;
|
|
280
|
+
if (retry.headers.has("x-hai-reauthentication") || options?.reauthorize) {
|
|
281
|
+
if (!options?.reauthorize)
|
|
282
|
+
return response;
|
|
283
|
+
const ticket = await options.reauthorize();
|
|
284
|
+
if (ticket === null || retry.signal.aborted)
|
|
285
|
+
return response;
|
|
286
|
+
retry.headers.delete("x-hai-reauthentication");
|
|
287
|
+
if (ticket)
|
|
288
|
+
retry.headers.set("x-hai-reauthentication", ticket);
|
|
289
|
+
}
|
|
290
|
+
return performFetch(retry);
|
|
291
|
+
},
|
|
292
|
+
get ready() {
|
|
293
|
+
return !transportClient || transportClient.ready();
|
|
294
|
+
},
|
|
295
|
+
async init() {
|
|
296
|
+
if (!transportClient)
|
|
297
|
+
return;
|
|
298
|
+
const result = await transportClient.init();
|
|
299
|
+
if (!result.success)
|
|
300
|
+
throw new Error(result.error.message);
|
|
301
|
+
},
|
|
302
|
+
destroy() {
|
|
303
|
+
transportClient?.destroy();
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
function createKitAuthActions(options = {}) {
|
|
308
|
+
const apiFetch = options.apiFetch ?? createKitClient().apiFetch;
|
|
309
|
+
const base = options.basePath ?? "/api/auth";
|
|
310
|
+
async function post(path, input, init = {}) {
|
|
311
|
+
const response = await apiFetch(`${base}/${path}`, { ...init, method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(input) }, { recoverSession: false });
|
|
312
|
+
const result = apiContract.haiResultSchema(z.unknown().optional()).parse(await response.json());
|
|
313
|
+
return result.success ? ok(result.data) : result;
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
bindPageExit(options2 = {}) {
|
|
317
|
+
if (!options2.enabled || typeof window === "undefined")
|
|
318
|
+
return () => {
|
|
319
|
+
};
|
|
320
|
+
const target = window;
|
|
321
|
+
let sent = false;
|
|
322
|
+
const onPageHide = (event) => {
|
|
323
|
+
if (event.persisted || sent)
|
|
324
|
+
return;
|
|
325
|
+
sent = true;
|
|
326
|
+
void post("session/close", {}, { keepalive: true }).then((result) => {
|
|
327
|
+
if (!result.success)
|
|
328
|
+
core.logger.warn("Page exit session revocation failed", { errorCode: result.error.code });
|
|
329
|
+
}).catch(() => core.logger.warn("Page exit session request did not complete"));
|
|
330
|
+
};
|
|
331
|
+
target.addEventListener("pagehide", onPageHide);
|
|
332
|
+
return () => target.removeEventListener("pagehide", onPageHide);
|
|
333
|
+
},
|
|
334
|
+
async createCaptcha(input) {
|
|
335
|
+
const result = await post("captcha", input);
|
|
336
|
+
return result.success ? ok(IamCaptchaChallengeSchema.parse(result.data)) : result;
|
|
337
|
+
},
|
|
338
|
+
async publicConfig() {
|
|
339
|
+
const response = await apiFetch(`${base}/config`, void 0, { recoverSession: false });
|
|
340
|
+
return apiContract.haiResultSchema(IamPublicConfigSchema.nullable()).parse(await response.json());
|
|
341
|
+
},
|
|
342
|
+
login(input) {
|
|
343
|
+
if (input.method === "ldap")
|
|
344
|
+
return post("login/ldap", { username: input.identifier, password: input.password, captcha: input.captcha, expectedUserId: input.expectedUserId });
|
|
345
|
+
if (input.method === "email" || input.method === "sms")
|
|
346
|
+
return post("login/otp", { identifier: input.identifier, code: input.code, captcha: input.captcha, expectedUserId: input.expectedUserId });
|
|
347
|
+
return post("login", { identifier: input.identifier, password: input.password, captcha: input.captcha, expectedUserId: input.expectedUserId });
|
|
348
|
+
},
|
|
349
|
+
register: (input) => post("register", { ...input, confirmPassword: input.password }),
|
|
350
|
+
sendOtp: (identifier, options2) => post("otp/send", { identifier, ...options2 }),
|
|
351
|
+
requestPasswordReset: (identifier, options2) => post("password-reset/request", { identifier, ...options2 }),
|
|
352
|
+
confirmPasswordReset: (token, newPassword) => post("password-reset/confirm", { token, newPassword }),
|
|
353
|
+
renewPassword: (input) => post("password/renew", input),
|
|
354
|
+
async reauthenticate(password, operation) {
|
|
355
|
+
const response = await apiFetch(`${base}/reauthenticate`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ password, operation }) });
|
|
356
|
+
return apiContract.haiResultSchema(IamReauthenticationProofSchema).parse(await response.json());
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
export { clearBrowserToken, configureAuth, createKitAuthActions, createKitClient, getAccessToken, installBrowserTransport, installBrowserTransportFetch, login, loginWithApiKey, loginWithLdap, loginWithOtp, logout, registerAndLogin, setBrowserToken };
|
|
362
|
+
//# sourceMappingURL=chunk-YKJRQCWR.js.map
|
|
363
|
+
//# sourceMappingURL=chunk-YKJRQCWR.js.map
|